From a45296d414e98e5408df05d5bfc6f385a83c14c4 Mon Sep 17 00:00:00 2001 From: Andreas Date: Tue, 3 Dec 2013 12:19:46 +0100 Subject: [PATCH 001/362] Send only songs from library which are available. (cherry picked from commit b5ba1164afe46ef783ef184b54149d982ecf921c) --- src/networkremote/outgoingdatacreator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index 4d85fdc34..bf9884460 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -726,7 +726,7 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { app_->database()->AttachDatabaseOnDbConnection("songs_export", adb, db); // Copy the content of the song table to this temporary database - QSqlQuery q(QString("create table songs_export.songs as SELECT * FROM songs;"), db); + QSqlQuery q(QString("create table songs_export.songs as SELECT * FROM songs where unavailable = 0;"), db); if (app_->database()->CheckErrors(q)) return; From 313ecbc7837d57b4d333c049dfcfa1a34872025b Mon Sep 17 00:00:00 2001 From: Andreas Date: Thu, 5 Dec 2013 16:20:59 +0100 Subject: [PATCH 002/362] Read urls correctly when inserting into playlist. Fixes issue 4003. (cherry picked from commit 3122593ab496de11979392e79852d40f298d09ac) --- src/networkremote/incomingdataparser.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/networkremote/incomingdataparser.cpp b/src/networkremote/incomingdataparser.cpp index 2d6919dbe..83af30466 100644 --- a/src/networkremote/incomingdataparser.cpp +++ b/src/networkremote/incomingdataparser.cpp @@ -249,7 +249,8 @@ void IncomingDataParser::InsertUrls(const pb::remote::Message& msg) { // Extract urls QList urls; for (auto it = request.urls().begin(); it != request.urls().end(); ++it) { - urls << QUrl(QString::fromStdString(*it)); + std::string s = *it; + urls << QUrl(QStringFromStdString(s)); } // Insert the urls From 3a8a88972fd0d27c3568071654f4eeead0ebcfac Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 29 Nov 2013 13:59:48 +0100 Subject: [PATCH 003/362] Calculate chunkcount with the real file size, not the size saved in the database (might be wrong and results in corrupted download). (cherry picked from commit 42d9a86ff09a42d0a70615e1fd7abe32d645c237) --- src/networkremote/outgoingdatacreator.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index bf9884460..a4ef55c1c 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -628,10 +628,6 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, if (!(song.url().scheme() == "file")) return; - // Calculate the number of chunks - int chunk_count = qRound((song.filesize() / kFileChunkSize) + 0.5); - int chunk_number = 1; - // Open the file QFile file(song.url().toLocalFile()); file.open(QIODevice::ReadOnly); @@ -643,6 +639,10 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, QImage null_image; + // Calculate the number of chunks + int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); + int chunk_number = 1; + while (!file.atEnd()) { // Read file chunk data = file.read(kFileChunkSize); From ebcfd7e5d5a9fd9bbe340f2e6533a7c1b6baf4c5 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 8 Dec 2013 20:19:25 +0100 Subject: [PATCH 004/362] Check if track position is valid before sending. Bump protocol version. (cherry picked from commit 03a41450823bf91365339dcf79f6749ea093f98a) --- ext/libclementine-remote/remotecontrolmessages.proto | 2 +- src/networkremote/outgoingdatacreator.cpp | 7 ++++++- src/networkremote/outgoingdatacreator.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ext/libclementine-remote/remotecontrolmessages.proto b/ext/libclementine-remote/remotecontrolmessages.proto index cbce974ae..5501402ca 100644 --- a/ext/libclementine-remote/remotecontrolmessages.proto +++ b/ext/libclementine-remote/remotecontrolmessages.proto @@ -276,7 +276,7 @@ message RequestRateSong { // The message itself message Message { - optional int32 version = 1 [default=12]; + optional int32 version = 1 [default=13]; optional MsgType type = 2 [default=UNKNOWN]; // What data is in the message? optional RequestConnect request_connect = 21; diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index a4ef55c1c..ce28beb4a 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -509,11 +509,16 @@ void OutgoingDataCreator::UpdateTrackPosition() { pb::remote::Message msg; msg.set_type(pb::remote::UPDATE_TRACK_POSITION); - const int position = std::floor( + int position = std::floor( float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); + if (app_->player()->engine()->position_nanosec() > current_song_.length_nanosec()) + position = last_track_position_; + msg.mutable_response_update_track_position()->set_position(position); + last_track_position_ = position; + SendDataToClients(&msg); } diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index cddabca43..270835a0e 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -85,6 +85,7 @@ private: QTimer* track_position_timer_; int keep_alive_timeout_; QMap > download_queue_; + int last_track_position_; boost::scoped_ptr ultimate_reader_; ProviderList provider_list_; From 94aa151f1a21146b25ac40c4cbde018fa7227448 Mon Sep 17 00:00:00 2001 From: asiviero Date: Tue, 14 Jan 2014 03:29:23 -0200 Subject: [PATCH 005/362] Added event handlers to Skip Track --- src/ui/mainwindow.cpp | 13 +++++++++++++ src/ui/mainwindow.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 1aa3bc0a9..0facb87eb 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -491,6 +491,9 @@ MainWindow::MainWindow(Application* app, playlist_queue_ = playlist_menu_->addAction("", this, SLOT(PlaylistQueue())); playlist_queue_->setShortcut(QKeySequence("Ctrl+D")); ui_->playlist->addAction(playlist_queue_); + playlist_skip_ = playlist_menu_->addAction(tr("Skip track"), this, SLOT(PlaylistSkip())); + ui_->playlist->addAction(playlist_skip_); + playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_remove_from_playlist); playlist_undoredo_ = playlist_menu_->addSeparator(); @@ -1957,6 +1960,16 @@ void MainWindow::PlaylistQueue() { app_->playlist_manager()->current()->queue()->ToggleTracks(indexes); } +void MainWindow::PlaylistSkip() { + QModelIndexList indexes; + foreach (const QModelIndex& proxy_index, + ui_->playlist->view()->selectionModel()->selectedRows()) { + indexes << app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + } + + app_->playlist_manager()->current()->queue()->SkipTracks(indexes); +} + void MainWindow::PlaylistCopyToDevice() { QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 9d25ab01e..e0267e02b 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -148,6 +148,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void PlaylistPlay(); void PlaylistStopAfter(); void PlaylistQueue(); + void PlaylistSkip(); void PlaylistRemoveCurrent(); void PlaylistEditFinished(const QModelIndex& index); void EditTracks(); @@ -329,6 +330,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { QAction* playlist_delete_; QAction* playlist_open_in_browser_; QAction* playlist_queue_; + QAction* playlist_skip_; QAction* playlist_add_to_another_; QList playlistitem_actions_; QAction* playlistitem_actions_separator_; From 048c2d9b9c4a5837203cb7a7dfb20799c054802e Mon Sep 17 00:00:00 2001 From: asiviero Date: Tue, 14 Jan 2014 03:30:52 -0200 Subject: [PATCH 006/362] Modified queue to store tracks to skip --- src/playlist/playlist.cpp | 5 +++-- src/playlist/queue.cpp | 31 +++++++++++++++++++++++++++++++ src/playlist/queue.h | 4 ++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index ea07cca42..461baf11b 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -442,8 +442,9 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { ++i; // Advance i until we find any track that is in the filter - while (i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) - ++i; + while ((i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) || queue_->SkipSourceRow(i)) { + ++i; + } return i; } diff --git a/src/playlist/queue.cpp b/src/playlist/queue.cpp index 691402dd2..5b160e34b 100644 --- a/src/playlist/queue.cpp +++ b/src/playlist/queue.cpp @@ -48,6 +48,17 @@ bool Queue::ContainsSourceRow(int source_row) const { return false; } +bool Queue::SkipSourceRow(int source_row) const { + qDebug() << "Entrou aqui"; + qDebug() << source_row; + for (int i=0 ; i& proxy_rows, int pos); void MoveUp(int row); @@ -69,6 +71,8 @@ private slots: private: QList source_indexes_; + QList skipped_indexes_; + }; #endif // QUEUE_H From 1c0a221563ad900ca5d0465ac8f206d5e2f64489 Mon Sep 17 00:00:00 2001 From: asiviero Date: Fri, 17 Jan 2014 04:01:31 -0200 Subject: [PATCH 007/362] Added skip track feature --- src/playlist/playlist.cpp | 12 ++++++++++-- src/playlist/playlist.h | 3 ++- src/playlist/playlistitem.cpp | 6 ++++++ src/playlist/playlistitem.h | 6 +++++- src/ui/mainwindow.cpp | 18 +++++++++++++++++- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 461baf11b..c56d6464d 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -441,8 +441,9 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { if (!album_only) { ++i; - // Advance i until we find any track that is in the filter - while ((i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) || queue_->SkipSourceRow(i)) { + // Advance i until we find any track that is in the filter, skipping + // the selected to be skipped + while ((i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) || items_[virtual_items_[i]]->GetToSkip()) { ++i; } return i; @@ -2017,3 +2018,10 @@ bool Playlist::ApplyValidityOnCurrentSong(const QUrl& url, bool valid) { void Playlist::SetColumnAlignment(const ColumnAlignmentMap& alignment) { column_alignments_ = alignment; } + +void Playlist::SkipTracks(const QModelIndexList &source_indexes) { + foreach (const QModelIndex& source_index, source_indexes) { + PlaylistItemPtr track_to_skip = item_at(source_index.row()); + track_to_skip->SetToSkip(!((track_to_skip)->GetToSkip())); + } +} diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index 8a24ce7f8..ac0a54615 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -84,6 +84,8 @@ class Playlist : public QAbstractListModel { QObject* parent = 0); ~Playlist(); + void SkipTracks(const QModelIndexList &source_indexes); + // Always add new columns to the end of this enum - the values are persisted enum Column { Column_Title = 0, @@ -354,7 +356,6 @@ class Playlist : public QAbstractListModel { void ItemReloadComplete(); void ItemsLoaded(); void SongInsertVetoListenerDestroyed(); - private: bool is_loading_; PlaylistFilter* proxy_; diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index b8c24e0f5..b671351c4 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -123,3 +123,9 @@ QColor PlaylistItem::GetCurrentForegroundColor() const { bool PlaylistItem::HasCurrentForegroundColor() const { return !foreground_colors_.isEmpty(); } +void PlaylistItem::SetToSkip(bool val) { + to_skip_ = val; +} +bool PlaylistItem::GetToSkip() const { + return to_skip_; +} diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 449a1f421..5dce559ba 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -33,7 +33,7 @@ class SqlRow; class PlaylistItem : public boost::enable_shared_from_this { public: PlaylistItem(const QString& type) - : type_(type) {} + : to_skip_(false), type_(type) {} virtual ~PlaylistItem(); static PlaylistItem* NewFromType(const QString& type); @@ -91,8 +91,12 @@ class PlaylistItem : public boost::enable_shared_from_this { // invalid so you might want to check that its id is not equal to -1 // before actually using it. virtual bool IsLocalLibraryItem() const { return false; } + void SetToSkip(bool val); + bool GetToSkip() const; protected: + bool to_skip_; + enum DatabaseColumn { Column_LibraryId, Column_InternetService, diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 0facb87eb..9dc9cfb9a 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1313,6 +1313,8 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& int streams = 0; int in_queue = 0; int not_in_queue = 0; + int in_skipped = 0; + int not_in_skipped = 0; foreach (const QModelIndex& index, selection) { if (index.column() != 0) continue; @@ -1332,6 +1334,12 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& not_in_queue ++; else in_queue ++; + + if(item->GetToSkip()) { + in_skipped++; + } else { + not_in_skipped++; + } } int all = not_in_queue + in_queue; @@ -1366,10 +1374,18 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_queue_->setText(tr("Dequeue track")); else if (in_queue > 1 && not_in_queue == 0) playlist_queue_->setText(tr("Dequeue selected tracks")); + else if (in_skipped == 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip track")); + else if (in_skipped > 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip selected tracks")); else if (in_queue == 0 && not_in_queue == 1) playlist_queue_->setText(tr("Queue track")); else if (in_queue == 0 && not_in_queue > 1) playlist_queue_->setText(tr("Queue selected tracks")); + else if (in_skipped == 0 && not_in_skipped == 1) + playlist_skip_->setText(tr("Skip track")); + else if (in_skipped == 0 && not_in_skipped > 1) + playlist_skip_->setText(tr("Skip selected tracks")); else playlist_queue_->setText(tr("Toggle queue status")); @@ -1967,7 +1983,7 @@ void MainWindow::PlaylistSkip() { indexes << app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); } - app_->playlist_manager()->current()->queue()->SkipTracks(indexes); + app_->playlist_manager()->current()->SkipTracks(indexes); } void MainWindow::PlaylistCopyToDevice() { From 5c21768760d7d0f9644638a66908912d95380d76 Mon Sep 17 00:00:00 2001 From: asiviero Date: Sat, 18 Jan 2014 13:30:12 -0200 Subject: [PATCH 008/362] Minor fixes and label adjustments --- src/playlist/playlist.cpp | 4 ++-- src/ui/mainwindow.cpp | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index c56d6464d..4e0da93f2 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -443,7 +443,7 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { // Advance i until we find any track that is in the filter, skipping // the selected to be skipped - while ((i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) || items_[virtual_items_[i]]->GetToSkip()) { + while (i < virtual_items_.count() && (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetToSkip())) { ++i; } return i; @@ -484,7 +484,7 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { --i; // Decrement i until we find any track that is in the filter - while (i>=0 && !FilterContainsVirtualIndex(i)) + while (i>=0 && (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetToSkip())) --i; return i; } diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 9dc9cfb9a..f804e0b3b 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -491,7 +491,7 @@ MainWindow::MainWindow(Application* app, playlist_queue_ = playlist_menu_->addAction("", this, SLOT(PlaylistQueue())); playlist_queue_->setShortcut(QKeySequence("Ctrl+D")); ui_->playlist->addAction(playlist_queue_); - playlist_skip_ = playlist_menu_->addAction(tr("Skip track"), this, SLOT(PlaylistSkip())); + playlist_skip_ = playlist_menu_->addAction("", this, SLOT(PlaylistSkip())); ui_->playlist->addAction(playlist_skip_); playlist_menu_->addSeparator(); @@ -1374,21 +1374,24 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_queue_->setText(tr("Dequeue track")); else if (in_queue > 1 && not_in_queue == 0) playlist_queue_->setText(tr("Dequeue selected tracks")); - else if (in_skipped == 1 && not_in_skipped == 0) - playlist_skip_->setText(tr("Unskip track")); - else if (in_skipped > 1 && not_in_skipped == 0) - playlist_skip_->setText(tr("Unskip selected tracks")); else if (in_queue == 0 && not_in_queue == 1) playlist_queue_->setText(tr("Queue track")); else if (in_queue == 0 && not_in_queue > 1) playlist_queue_->setText(tr("Queue selected tracks")); - else if (in_skipped == 0 && not_in_skipped == 1) - playlist_skip_->setText(tr("Skip track")); - else if (in_skipped == 0 && not_in_skipped > 1) - playlist_skip_->setText(tr("Skip selected tracks")); else playlist_queue_->setText(tr("Toggle queue status")); + if (in_skipped == 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip track")); + else if (in_skipped > 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip selected tracks")); + else if (in_skipped == 0 && not_in_skipped == 1) + playlist_skip_->setText(tr("Skip track")); + else if (in_skipped == 0 && not_in_skipped > 1) + playlist_skip_->setText(tr("Skip selected tracks")); + + + if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load("go-previous")); else From c8174315933054263e0aee7f2e810f9db37d4cad Mon Sep 17 00:00:00 2001 From: asiviero Date: Mon, 20 Jan 2014 21:42:00 -0200 Subject: [PATCH 009/362] Greying out song and added verification to next on album mode --- src/playlist/playlist.cpp | 13 +++++++++++++ src/playlist/playlist.h | 1 + src/playlist/playlistitem.h | 3 ++- src/playlist/queue.cpp | 31 ------------------------------- src/playlist/queue.h | 4 ---- src/ui/mainwindow.cpp | 6 +++--- 6 files changed, 19 insertions(+), 39 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 4e0da93f2..25284ba9f 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -452,6 +452,9 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { // We need to advance i until we get something else on the same album Song last_song = current_item_metadata(); for (int j=i+1 ; jGetToSkip()) { + continue; + } Song this_song = item_at(virtual_items_[j])->Metadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && @@ -492,6 +495,9 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { // We need to decrement i until we get something else on the same album Song last_song = current_item_metadata(); for (int j=i-1 ; j>=0; --j) { + if (item_at(virtual_items_[j])->GetToSkip()) { + continue; + } Song this_song = item_at(virtual_items_[j])->Metadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && @@ -2023,5 +2029,12 @@ void Playlist::SkipTracks(const QModelIndexList &source_indexes) { foreach (const QModelIndex& source_index, source_indexes) { PlaylistItemPtr track_to_skip = item_at(source_index.row()); track_to_skip->SetToSkip(!((track_to_skip)->GetToSkip())); + // gray out the song if it's now to be skipped; + // otherwise undo the gray color + if (track_to_skip->GetToSkip()) { + track_to_skip->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); + } else { + track_to_skip->RemoveForegroundColor(kInvalidSongPriority); + } } } diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index ac0a54615..0ec99805e 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -356,6 +356,7 @@ class Playlist : public QAbstractListModel { void ItemReloadComplete(); void ItemsLoaded(); void SongInsertVetoListenerDestroyed(); + private: bool is_loading_; PlaylistFilter* proxy_; diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 5dce559ba..1c53d9e01 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -33,7 +33,8 @@ class SqlRow; class PlaylistItem : public boost::enable_shared_from_this { public: PlaylistItem(const QString& type) - : to_skip_(false), type_(type) {} + : to_skip_(false), + type_(type) {} virtual ~PlaylistItem(); static PlaylistItem* NewFromType(const QString& type); diff --git a/src/playlist/queue.cpp b/src/playlist/queue.cpp index 5b160e34b..691402dd2 100644 --- a/src/playlist/queue.cpp +++ b/src/playlist/queue.cpp @@ -48,17 +48,6 @@ bool Queue::ContainsSourceRow(int source_row) const { return false; } -bool Queue::SkipSourceRow(int source_row) const { - qDebug() << "Entrou aqui"; - qDebug() << source_row; - for (int i=0 ; i& proxy_rows, int pos); void MoveUp(int row); @@ -71,8 +69,6 @@ private slots: private: QList source_indexes_; - QList skipped_indexes_; - }; #endif // QUEUE_H diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index f804e0b3b..bfb002c1d 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1386,9 +1386,9 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& else if (in_skipped > 1 && not_in_skipped == 0) playlist_skip_->setText(tr("Unskip selected tracks")); else if (in_skipped == 0 && not_in_skipped == 1) - playlist_skip_->setText(tr("Skip track")); - else if (in_skipped == 0 && not_in_skipped > 1) - playlist_skip_->setText(tr("Skip selected tracks")); + playlist_skip_->setText(tr("Skip track")); + else if (in_skipped == 0 && not_in_skipped > 1) + playlist_skip_->setText(tr("Skip selected tracks")); From cc4cc472fb7f20339ca15b603fc10e53655b7c75 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Mon, 27 Jan 2014 00:07:31 +1100 Subject: [PATCH 010/362] Delete tr_TR (removed on transifex) --- src/translations/tr_TR.po | 5667 ------------------------------------- 1 file changed, 5667 deletions(-) delete mode 100644 src/translations/tr_TR.po diff --git a/src/translations/tr_TR.po b/src/translations/tr_TR.po deleted file mode 100644 index f0bb621fe..000000000 --- a/src/translations/tr_TR.po +++ /dev/null @@ -1,5667 +0,0 @@ -# Clementine. -# Copyright (C) 2010 David Sansome -# This file is distributed under the same license as the Clementine package. -# -# Translators: -# Ahmet Sezgin Duran , 2013 -# apshalasha , 2013 -# arnaudbienner , 2011 -# devingregory , 2012 -# devingregory , 2012 -# emfi , 2013 -# Erhan BURHAN <>, 2012 -# H. İbrahim Güngör , 2011 -# H. İbrahim Güngör , 2010 -# H. İbrahim Güngör , 2011 -# Irfan YAZICI , 2011 -# kadirc , 2012 -# Kardanadam , 2013 -# mutlucan96 , 2013 -# Muhammet Kara , 2012 -# Murat Ikilik <>, 2012 -# Murat Sahin , 2012 -# Necdet Yücel , 2012 -# farukuzun , 2012 -# volkangezer , 2013 -# volkangezer , 2014 -# yusufbesir1 , 2012 -# zeugma , 2012 -msgid "" -msgstr "" -"Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 12:03+0000\n" -"Last-Translator: volkangezer \n" -"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/clementine/language/tr_TR/)\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#: playlist/playlistlistview.cpp:39 -msgid "" -"\n" -"\n" -"You can favorite playlists by clicking the star icon next to a playlist name\n" -"\n" -"Favorited playlists will be saved here" -msgstr "\n\nÇalma listelerini bir çalma listesi adının anındaki yıldız simgesi ile beğenilenlere ekleyebilirsiniz\n\nBeğenilen çalma listeleri buraya kaydedilecek" - -#: ../bin/src/ui_podcastsettingspage.h:246 -msgid " days" -msgstr " günler" - -#: ../bin/src/ui_transcoderoptionsaac.h:130 -#: ../bin/src/ui_transcoderoptionsmp3.h:195 -#: ../bin/src/ui_transcoderoptionsopus.h:81 -#: ../bin/src/ui_transcoderoptionsspeex.h:220 -#: ../bin/src/ui_transcoderoptionsspeex.h:223 -#: ../bin/src/ui_transcoderoptionsvorbis.h:205 -#: ../bin/src/ui_transcoderoptionsvorbis.h:208 -#: ../bin/src/ui_transcoderoptionsvorbis.h:211 -#: ../bin/src/ui_transcoderoptionswma.h:80 -msgid " kbps" -msgstr " kbps" - -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 -msgid " ms" -msgstr " ms" - -#: ../bin/src/ui_songinfosettingspage.h:157 -msgid " pt" -msgstr " pt" - -#: ../bin/src/ui_notificationssettingspage.h:439 -#: ../bin/src/ui_visualisationselector.h:116 -msgid " seconds" -msgstr " saniye" - -#: ../bin/src/ui_querysortpage.h:143 -msgid " songs" -msgstr " şarkılar" - -#: widgets/osd.cpp:193 -#, qt-format -msgid "%1 albums" -msgstr "%1 albüm" - -#: core/utilities.cpp:110 -#, qt-format -msgid "%1 days" -msgstr "%1 gün" - -#: core/utilities.cpp:131 -#, qt-format -msgid "%1 days ago" -msgstr "%1 gün önce" - -#: podcasts/gpoddersync.cpp:79 -#, qt-format -msgid "%1 on %2" -msgstr "%2 üzerinde %1" - -#: playlistparsers/playlistparser.cpp:76 -#, qt-format -msgid "%1 playlists (%2)" -msgstr "%1 çalma listesi (%2)" - -#: playlist/playlistmanager.cpp:413 -#, qt-format -msgid "%1 selected of" -msgstr "%1 seçili" - -#: devices/deviceview.cpp:123 -#, qt-format -msgid "%1 song" -msgstr "%1 şarkı" - -#: devices/deviceview.cpp:125 -#, qt-format -msgid "%1 songs" -msgstr "%1 şarkı" - -#: smartplaylists/searchpreview.cpp:133 -#, qt-format -msgid "%1 songs found" -msgstr "%1 şarkı bulundu" - -#: smartplaylists/searchpreview.cpp:130 -#, qt-format -msgid "%1 songs found (showing %2)" -msgstr "%1 şarkı bulundu (%2 tanesi gösteriliyor)" - -#: playlist/playlistmanager.cpp:419 -#, qt-format -msgid "%1 tracks" -msgstr "%1 parça" - -#: ui/albumcovermanager.cpp:459 -#, qt-format -msgid "%1 transferred" -msgstr "%1 aktarıldı" - -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 -#, qt-format -msgid "%1: Wiimotedev module" -msgstr "%1: Wiimotedev modülü" - -#: songinfo/lastfmtrackinfoprovider.cpp:94 -#, qt-format -msgid "%L1 other listeners" -msgstr "%L1 başka dinleyici" - -#: songinfo/lastfmtrackinfoprovider.cpp:92 -#, qt-format -msgid "%L1 total plays" -msgstr "%L1 toplam çalma" - -#: ../bin/src/ui_notificationssettingspage.h:427 -msgid "%filename%" -msgstr "%filename%" - -#: transcoder/transcodedialog.cpp:207 -#, c-format, qt-plural-format -msgid "%n failed" -msgstr "%n başarısız" - -#: transcoder/transcodedialog.cpp:202 -#, c-format, qt-plural-format -msgid "%n finished" -msgstr "%n tamamlandı" - -#: transcoder/transcodedialog.cpp:197 -#, c-format, qt-plural-format -msgid "%n remaining" -msgstr "%n kaldı" - -#: playlist/playlistheader.cpp:37 -msgid "&Align text" -msgstr "&Metni hizala" - -#: playlist/playlistheader.cpp:40 -msgid "&Center" -msgstr "&Ortala" - -#: ../bin/src/ui_globalshortcutssettingspage.h:178 -msgid "&Custom" -msgstr "&Özel" - -#: ../bin/src/ui_mainwindow.h:730 -msgid "&Extras" -msgstr "Ekler" - -#: ../bin/src/ui_mainwindow.h:729 -msgid "&Help" -msgstr "&Yardım" - -#: playlist/playlistheader.cpp:70 -#, qt-format -msgid "&Hide %1" -msgstr "&Gizle %1" - -#: playlist/playlistheader.cpp:33 -msgid "&Hide..." -msgstr "&Gizle..." - -#: playlist/playlistheader.cpp:39 -msgid "&Left" -msgstr "&Sol" - -#: ../bin/src/ui_mainwindow.h:727 -msgid "&Music" -msgstr "Müzik" - -#: ../bin/src/ui_globalshortcutssettingspage.h:176 -msgid "&None" -msgstr "&Hiçbiri" - -#: ../bin/src/ui_mainwindow.h:728 -msgid "&Playlist" -msgstr "Çalma Listesi" - -#: ../bin/src/ui_mainwindow.h:656 -msgid "&Quit" -msgstr "&Çık" - -#: ../bin/src/ui_mainwindow.h:694 -msgid "&Repeat mode" -msgstr "Tekrar kipi" - -#: playlist/playlistheader.cpp:41 -msgid "&Right" -msgstr "&Sağ" - -#: ../bin/src/ui_mainwindow.h:693 -msgid "&Shuffle mode" -msgstr "Rastgele kipi" - -#: playlist/playlistheader.cpp:34 -msgid "&Stretch columns to fit window" -msgstr "&Sütunları pencereye sığacak şekilde ayarla" - -#: ../bin/src/ui_mainwindow.h:731 -msgid "&Tools" -msgstr "&Araçlar" - -#: ui/edittagdialog.cpp:48 -msgid "(different across multiple songs)" -msgstr "(her şarkı için farklı)" - -#: ui/about.cpp:77 -msgid "...and all the Amarok contributors" -msgstr "...ve tüm Amarok katkıcılarına" - -#: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 -msgid "0" -msgstr "0" - -#: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 -msgid "0:00:00" -msgstr "0:00:00" - -#: ../bin/src/ui_appearancesettingspage.h:289 -msgid "0px" -msgstr "0px" - -#: core/utilities.cpp:110 -msgid "1 day" -msgstr "1 gün" - -#: playlist/playlistmanager.cpp:419 -msgid "1 track" -msgstr "1 parça" - -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - -#: ../bin/src/ui_magnatunedownloaddialog.h:143 -#: ../bin/src/ui_magnatunesettingspage.h:174 -msgid "128k MP3" -msgstr "128k MP3" - -#: ../bin/src/ui_appearancesettingspage.h:291 -msgid "40%" -msgstr "40%" - -#: library/library.cpp:60 -msgid "50 random tracks" -msgstr "50 rastgele parça" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:165 -msgid "Upgrade to Premium now" -msgstr "Şimdi Premium üyeliğine geçin" - -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Bir yeni hesap oluştur veya parolayı sıfırla" - -#: ../bin/src/ui_librarysettingspage.h:195 -msgid "" -"

If not checked, Clementine will try to save your " -"ratings and other statistics only in a separate database and don't modify " -"your files.

If checked, it will save statistics both in database and " -"directly into the file each time they changed.

Please note it might " -"not work for every format and, as there is no standard for doing so, other " -"music players might not be able to read them.

" -msgstr "

Eğer işaretli değilse, Clementine beğenilerinizi ve diğer istatistikleri, sadece ayrı bir veritabanında saklayıp dosyalarınızı değiştirmeyecektir.

İşaretli ise, istatistikler hem veritabanına hem de her dosya değişiminde doğrudan dosyalara kaydedilecektir.

Lütfen, bu işlem için bir standart olmadığından ve bu işlem her biçim için çalışmayabileceğinden, diğer müzik oynatıcılar okuyamayabilir.

" - -#: ../bin/src/ui_librarysettingspage.h:199 -msgid "" -"

This will write songs' ratings and statistics into " -"files tags for all your library's songs.

This is not needed if the " -""Save ratings and statistics in file tags" option has always been " -"activated.

" -msgstr "

Bu şarkının beğenilerini ve isatistiklerini, tüm kütüphanenizin şarkılarındaki dosya etiketlerine yazacaktır.

Eğer "Beğeni ve istatistikleri dosya etiketinde sakla" seçeneği her zaman etkin ise, gerekli değildir.

" - -#: ../bin/src/ui_organisedialog.h:199 -msgid "" -"

Tokens start with %, for example: %artist %album %title

\n" -"\n" -"

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -msgstr "

% ile başlayan özellikler, örneğin: %artist %album %title

\n\n

İşaret içeren metnin bölümlerini süslü parantez ile sarmalarsanız, işaret boşsa o bölüm görünmeyecektir.

" - -#: internet/groovesharksettingspage.cpp:111 -msgid "A Grooveshark Anywhere account is required." -msgstr "Bir Grooveshark Anywhere hesabı gereklidir." - -#: internet/spotifysettingspage.cpp:162 -msgid "A Spotify Premium account is required." -msgstr "Bir Spotify Premium hesabı gereklidir." - -#: ../bin/src/ui_networkremotesettingspage.h:189 -msgid "A client can connect only, if the correct code was entered." -msgstr "Kod doğru girilmişse, yalnızca bir istemciye bağlanabilirsiniz." - -#: smartplaylists/wizard.cpp:78 -msgid "" -"A smart playlist is a dynamic list of songs that come from your library. " -"There are different types of smart playlist that offer different ways of " -"selecting songs." -msgstr "Akıllı çalma listesi, kütüphanenizden gelen şarkıların dinamik bir listesidir. Şarkı seçmenin farklı yollarını sunan farklı akıllı şarkı listesi türleri vardır." - -#: smartplaylists/querywizardplugin.cpp:153 -msgid "" -"A song will be included in the playlist if it matches these conditions." -msgstr "Bir şarkı, eğer bu koşullara uyarsa çalma listesine eklenecektir." - -#: smartplaylists/searchterm.cpp:297 -msgid "A-Z" -msgstr "A-Z" - -#: ../bin/src/ui_transcodersettingspage.h:179 -msgid "AAC" -msgstr "AAC" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:179 -msgid "AAC 128k" -msgstr "AAC 128k" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:171 -msgid "AAC 32k" -msgstr "AAC 32k" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:178 -msgid "AAC 64k" -msgstr "AAC 64k" - -#: core/song.cpp:348 -msgid "AIFF" -msgstr "AIFF" - -#: widgets/nowplayingwidget.cpp:127 -msgid "ALL GLORY TO THE HYPNOTOAD" -msgstr "TÜM ŞEREF HYPNOTOAD'A GİTSİN" - -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 -msgid "Abort" -msgstr "İptal" - -#: ui/about.cpp:32 -#, qt-format -msgid "About %1" -msgstr "%1 Hakkında" - -#: ../bin/src/ui_mainwindow.h:677 -msgid "About Clementine..." -msgstr "Clementine Hakkında..." - -#: ../bin/src/ui_mainwindow.h:712 -msgid "About Qt..." -msgstr "Qt Hakkında..." - -#: ../bin/src/ui_groovesharksettingspage.h:113 -#: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 -#: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 -msgid "Account details" -msgstr "Hesap ayrıntıları" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:161 -msgid "Account details (Premium)" -msgstr "Hesap detayları (Premium)" - -#: ../bin/src/ui_wiimotesettingspage.h:191 -msgid "Action" -msgstr "Eylem" - -#: wiimotedev/wiimotesettingspage.cpp:98 -msgid "Active/deactive Wiiremote" -msgstr "Wiiremote etkinleştir/pasifleştir" - -#: podcasts/addpodcastdialog.cpp:56 -msgid "Add Podcast" -msgstr "Podcast Ekle" - -#: ../bin/src/ui_addstreamdialog.h:113 -msgid "Add Stream" -msgstr "Müzik Yayını Ekle" - -#: ../bin/src/ui_notificationssettingspage.h:425 -msgid "Add a new line if supported by the notification type" -msgstr "Bildirim türü olarak yeni bir satır ekleyin" - -#: ../bin/src/ui_wiimotesettingspage.h:193 -msgid "Add action" -msgstr "Eylem ekle" - -#: internet/savedradio.cpp:103 -msgid "Add another stream..." -msgstr "Başka bir yayın ekle..." - -#: library/librarysettingspage.cpp:68 -msgid "Add directory..." -msgstr "Dizin ekle..." - -#: ui/mainwindow.cpp:1615 -msgid "Add file" -msgstr "Dosya ekle" - -#: ../bin/src/ui_mainwindow.h:723 -msgid "Add file to transcoder" -msgstr "Dosyayı dönüştürücüye ekle" - -#: ../bin/src/ui_mainwindow.h:721 -msgid "Add file(s) to transcoder" -msgstr "Dosyayı/dosyaları dönüştürücüye ekle" - -#: ../bin/src/ui_mainwindow.h:681 -msgid "Add file..." -msgstr "Dosya ekle..." - -#: transcoder/transcodedialog.cpp:219 -msgid "Add files to transcode" -msgstr "Dönüştürülecek dosyaları ekle" - -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 -msgid "Add folder" -msgstr "Klasör ekle" - -#: ../bin/src/ui_mainwindow.h:698 -msgid "Add folder..." -msgstr "Klasör ekle..." - -#: ../bin/src/ui_librarysettingspage.h:188 -msgid "Add new folder..." -msgstr "Yeni klasör ekle..." - -#: ../bin/src/ui_addpodcastdialog.h:179 -msgid "Add podcast" -msgstr "Podcast ekle" - -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 -msgid "Add podcast..." -msgstr "Podcast ekle..." - -#: smartplaylists/searchtermwidget.cpp:341 -msgid "Add search term" -msgstr "Arama terimi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:380 -msgid "Add song album tag" -msgstr "Albüm etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:386 -msgid "Add song albumartist tag" -msgstr "Albüm sanatçısı etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:377 -msgid "Add song artist tag" -msgstr "Sanatçı etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:422 -msgid "Add song auto score" -msgstr "Otomatik şarkı puanı ekle" - -#: ../bin/src/ui_notificationssettingspage.h:392 -msgid "Add song composer tag" -msgstr "Besteci etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:401 -msgid "Add song disc tag" -msgstr "Şarkı diski etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:429 -msgid "Add song filename" -msgstr "Dosya adı ekle" - -#: ../bin/src/ui_notificationssettingspage.h:407 -msgid "Add song genre tag" -msgstr "Şarkı tarzı etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:398 -msgid "Add song grouping tag" -msgstr "Şarkı gruplama etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:410 -msgid "Add song length tag" -msgstr "Şarkı uzunluğu etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:395 -msgid "Add song performer tag" -msgstr "Şarkıyı söyleyen etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:413 -msgid "Add song play count" -msgstr "Şarkı çalma sayısı ekle" - -#: ../bin/src/ui_notificationssettingspage.h:419 -msgid "Add song rating" -msgstr "Şarkı derecelendirmesi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:416 -msgid "Add song skip count" -msgstr "Şarkı atlama sayısı ekle" - -#: ../bin/src/ui_notificationssettingspage.h:383 -msgid "Add song title tag" -msgstr "Şarkı adı etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:404 -msgid "Add song track tag" -msgstr "Şarkıya parça etiketi ekle" - -#: ../bin/src/ui_notificationssettingspage.h:389 -msgid "Add song year tag" -msgstr "Yıl etiketi ekle" - -#: ../bin/src/ui_mainwindow.h:683 -msgid "Add stream..." -msgstr "Yayın ekle..." - -#: internet/groovesharkservice.cpp:1087 -msgid "Add to Grooveshark favorites" -msgstr "Grooveshark'i favorilere ekle" - -#: internet/groovesharkservice.cpp:1099 -msgid "Add to Grooveshark playlists" -msgstr "Grooveshark'i müzik listelerine ekle" - -#: ui/mainwindow.cpp:1440 -msgid "Add to another playlist" -msgstr "Başka bir çalma listesine ekle" - -#: ../bin/src/ui_albumcovermanager.h:218 -msgid "Add to playlist" -msgstr "Çalma listesine ekle" - -#: ../bin/src/ui_behavioursettingspage.h:220 -msgid "Add to the queue" -msgstr "Kuyruğa ekle" - -#: ../bin/src/ui_wiimoteshortcutgrabber.h:123 -msgid "Add wiimotedev action" -msgstr "wiimotedev eylemi ekle" - -#: ../bin/src/ui_transcodedialog.h:209 -msgid "Add..." -msgstr "Ekle..." - -#: ../bin/src/ui_libraryfilterwidget.h:95 -msgid "Added this month" -msgstr "Bu ay eklenenler" - -#: ../bin/src/ui_libraryfilterwidget.h:89 -msgid "Added this week" -msgstr "Bu hafta eklenenler" - -#: ../bin/src/ui_libraryfilterwidget.h:94 -msgid "Added this year" -msgstr "Bu yıl eklenenler" - -#: ../bin/src/ui_libraryfilterwidget.h:88 -msgid "Added today" -msgstr "Bugün eklenenler" - -#: ../bin/src/ui_libraryfilterwidget.h:90 -#: ../bin/src/ui_libraryfilterwidget.h:92 -msgid "Added within three months" -msgstr "Son üç ay içinde eklenenler" - -#: internet/groovesharkservice.cpp:1394 -msgid "Adding song to My Music" -msgstr "Parçayı müziklerime ekliyor" - -#: internet/groovesharkservice.cpp:1371 -msgid "Adding song to favorites" -msgstr "Şarkı favorilere ekleniyor" - -#: library/libraryfilterwidget.cpp:116 -msgid "Advanced grouping..." -msgstr "Gelişmiş gruplama..." - -#: ../bin/src/ui_podcastsettingspage.h:247 -msgid "After " -msgstr "Sonra " - -#: ../bin/src/ui_organisedialog.h:190 -msgid "After copying..." -msgstr "Kopyalandıktan sonra..." - -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 -#: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 -#: ../bin/src/ui_albumcoversearcher.h:111 -#: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 -msgid "Album" -msgstr "Albüm" - -#: ../bin/src/ui_playbacksettingspage.h:315 -msgid "Album (ideal loudness for all tracks)" -msgstr "Albüm (tüm parçalar için ideal ses yüksekliği)" - -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 -#: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 -#: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 -msgid "Album artist" -msgstr "Albüm sanatçısı" - -#: ../bin/src/ui_appearancesettingspage.h:284 -msgid "Album cover" -msgstr "Albüm kapağı" - -#: internet/jamendoservice.cpp:415 -msgid "Album info on jamendo.com..." -msgstr "Jamendo.com'daki albüm bilgileri..." - -#: ui/albumcovermanager.cpp:134 -msgid "Albums with covers" -msgstr "Kapak resmine olan albümler" - -#: ui/albumcovermanager.cpp:135 -msgid "Albums without covers" -msgstr "Kapak resmi olmayan albümler" - -#: ui/mainwindow.cpp:157 -msgid "All Files (*)" -msgstr "Tüm Dosyalar (*)" - -#: ../bin/src/ui_mainwindow.h:689 -msgid "All Glory to the Hypnotoad!" -msgstr "Tüm şeref Hypnotoad'a gitsin!" - -#: ui/albumcovermanager.cpp:133 -msgid "All albums" -msgstr "Tüm albümler" - -#: ui/albumcovermanager.cpp:265 -msgid "All artists" -msgstr "Tüm sanatçılar" - -#: ui/albumcoverchoicecontroller.cpp:47 -msgid "All files (*)" -msgstr "Tüm dosyalar (*)" - -#: playlistparsers/playlistparser.cpp:63 -#, qt-format -msgid "All playlists (%1)" -msgstr "Tüm çalma listeleri (%1)" - -#: ui/about.cpp:74 -msgid "All the translators" -msgstr "Tüm çevirmenler" - -#: library/library.cpp:84 -msgid "All tracks" -msgstr "Tüm parçalar" - -#: ../bin/src/ui_networkremotesettingspage.h:194 -msgid "Allow a client to download music from this computer." -msgstr "Bir istemciye bu bilgisayardan müzik indirmesine izin ver." - -#: ../bin/src/ui_networkremotesettingspage.h:196 -msgid "Allow downloads" -msgstr "İndirmelere izin ver" - -#: ../bin/src/ui_transcoderoptionsaac.h:140 -msgid "Allow mid/side encoding" -msgstr "Mid/side kodlamaya izin ver" - -#: ../bin/src/ui_transcodedialog.h:217 -msgid "Alongside the originals" -msgstr "Orijinallerin yanına" - -#: ../bin/src/ui_behavioursettingspage.h:203 -msgid "Always hide the main window" -msgstr "Ana pencereyi her zaman gizle" - -#: ../bin/src/ui_behavioursettingspage.h:202 -msgid "Always show the main window" -msgstr "Ana pencereyi her zaman göster" - -#: ../bin/src/ui_behavioursettingspage.h:212 -#: ../bin/src/ui_behavioursettingspage.h:226 -msgid "Always start playing" -msgstr "Her zaman çalarak başlat" - -#: internet/spotifyblobdownloader.cpp:60 -msgid "" -"An additional plugin is required to use Spotify in Clementine. Would you " -"like to download and install it now?" -msgstr "Spotify'ın Clementine'de kullanılması için harici bir eklenti gerekmektedir. Şimdi indirmek ve kurulumunu yapmak ister misiniz?" - -#: devices/gpodloader.cpp:61 -msgid "An error occurred loading the iTunes database" -msgstr "iTunes veritabanı yüklenirken hata oluştu" - -#: ui/edittagdialog.cpp:663 -#, qt-format -msgid "An error occurred writing metadata to '%1'" -msgstr "'%1' dosyasına metadata yazarken hata oluştu" - -#: internet/subsonicsettingspage.cpp:103 -msgid "An unspecified error occurred." -msgstr "Belirlenemeyen bir hata oluştu." - -#: ui/about.cpp:78 -msgid "And:" -msgstr "Ve:" - -#: moodbar/moodbarrenderer.cpp:156 -msgid "Angry" -msgstr "Öfkeli" - -#: ../bin/src/ui_songinfosettingspage.h:155 -#: ../bin/src/ui_appearancesettingspage.h:271 -msgid "Appearance" -msgstr "Görünüm" - -#: core/commandlineoptions.cpp:166 -msgid "Append files/URLs to the playlist" -msgstr "Çalma listesine dosya/URL ekle" - -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 -msgid "Append to current playlist" -msgstr "Şu anki çalma listesine ekle" - -#: ../bin/src/ui_behavioursettingspage.h:217 -msgid "Append to the playlist" -msgstr "Çalma listesine ekle" - -#: ../bin/src/ui_playbacksettingspage.h:318 -msgid "Apply compression to prevent clipping" -msgstr "Kesintiyi engellemek için sıkıştırma uygula" - -#: ui/equalizer.cpp:201 -#, qt-format -msgid "Are you sure you want to delete the \"%1\" preset?" -msgstr "\"%1\" ayarını silmek istediğinizden emin misiniz?" - -#: internet/groovesharkservice.cpp:1292 -msgid "Are you sure you want to delete this playlist?" -msgstr "Bu çalan listeyi silmek istediğinizden emin misiniz?" - -#: ui/edittagdialog.cpp:769 -msgid "Are you sure you want to reset this song's statistics?" -msgstr "Bu şarkının istatistik bilgisini sıfırlamak istiyor musunuz?" - -#: library/librarysettingspage.cpp:152 -msgid "" -"Are you sure you want to write song's statistics into song's file for all " -"the songs of your library?" -msgstr "Şarkıların istatistiklerini, kütüphanenizdeki tüm şarkıların kendi dosyalarına yazmak istediğinizden emin misiniz?" - -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 -#: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 -#: ../bin/src/ui_albumcoversearcher.h:107 -#: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 -msgid "Artist" -msgstr "Sanatçı" - -#: ui/mainwindow.cpp:245 -msgid "Artist info" -msgstr "Sanatçı bilgisi" - -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Sanatçı radyosu" - -#: songinfo/echonesttags.cpp:59 -msgid "Artist tags" -msgstr "Sanatçı etiketleri" - -#: ui/organisedialog.cpp:57 -msgid "Artist's initial" -msgstr "Sanatçının kısaltması" - -#: ../bin/src/ui_transcodedialog.h:212 -msgid "Audio format" -msgstr "Ses biçimi" - -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 -msgid "Authentication failed" -msgstr "Kimlik doğrulama başarısız" - -#: ../bin/src/ui_podcastinfowidget.h:192 -msgid "Author" -msgstr "Yazar" - -#: ui/about.cpp:65 -msgid "Authors" -msgstr "Yazarlar" - -#: ../bin/src/ui_transcoderoptionsspeex.h:227 -msgid "Auto" -msgstr "Otomatik" - -#: ../bin/src/ui_librarysettingspage.h:190 -msgid "Automatic updating" -msgstr "Otomatik güncelleme" - -#: ../bin/src/ui_librarysettingspage.h:208 -msgid "Automatically open single categories in the library tree" -msgstr "Kütüphane ağacında tek kategori olanları otomatik olarak aç" - -#: widgets/freespacebar.cpp:45 -msgid "Available" -msgstr "Mevcut" - -#: ../bin/src/ui_transcoderoptionsspeex.h:221 -msgid "Average bitrate" -msgstr "Ortalama bit oranı" - -#: covers/coversearchstatisticsdialog.cpp:70 -msgid "Average image size" -msgstr "Ortalama resim boyutu" - -#: podcasts/addpodcastdialog.cpp:80 -msgid "BBC Podcasts" -msgstr "BBC Podcastları" - -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 -#: ../bin/src/ui_edittagdialog.h:668 -msgid "BPM" -msgstr "BPM" - -#: ../bin/src/ui_backgroundstreamssettingspage.h:56 -msgid "Background Streams" -msgstr "Arkaplan Akışları" - -#: ../bin/src/ui_notificationssettingspage.h:453 -msgid "Background color" -msgstr "Arkaplan rengi" - -#: ../bin/src/ui_appearancesettingspage.h:279 -msgid "Background image" -msgstr "Arkaplan resmi" - -#: ../bin/src/ui_notificationssettingspage.h:452 -msgid "Background opacity" -msgstr "Artalan saydamlığı" - -#: core/database.cpp:648 -msgid "Backing up database" -msgstr "Veritabanını yedekliyor" - -#: ../bin/src/ui_equalizer.h:173 -msgid "Balance" -msgstr "Denge" - -#: ../bin/src/ui_mainwindow.h:662 -msgid "Ban" -msgstr "Yasakla" - -#: analyzers/baranalyzer.cpp:19 -msgid "Bar analyzer" -msgstr "Bar çözümleyici" - -#: ../bin/src/ui_notificationssettingspage.h:456 -msgid "Basic Blue" -msgstr "Temel Mavi" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:167 -msgid "Basic audio type" -msgstr "Temel ses tipi" - -#: ../bin/src/ui_behavioursettingspage.h:191 -msgid "Behavior" -msgstr "Davranış" - -#: ../bin/src/ui_transcoderoptionsflac.h:83 -msgid "Best" -msgstr "En iyi" - -#: songinfo/echonestbiographies.cpp:83 -#, qt-format -msgid "Biography from %1" -msgstr "%1 sitesinden biyografi" - -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 -msgid "Bit rate" -msgstr "Bit oranı" - -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 -#: ../bin/src/ui_transcoderoptionsmp3.h:194 -#: ../bin/src/ui_transcoderoptionsopus.h:80 -#: ../bin/src/ui_transcoderoptionsspeex.h:218 -#: ../bin/src/ui_transcoderoptionswma.h:79 -msgid "Bitrate" -msgstr "Veri Akış Hızı" - -#: analyzers/blockanalyzer.cpp:22 -msgid "Block analyzer" -msgstr "Blok çözümleyici" - -#: ../bin/src/ui_transcoderoptionsaac.h:141 -msgid "Block type" -msgstr "Engelleme türü" - -#: ../bin/src/ui_appearancesettingspage.h:288 -msgid "Blur amount" -msgstr "Bulanıklık miktarı" - -#: ../bin/src/ui_notificationssettingspage.h:449 -msgid "Body" -msgstr "Gövde" - -#: analyzers/boomanalyzer.cpp:8 -msgid "Boom analyzer" -msgstr "Boom çözümleyici" - -#: ../bin/src/ui_boxsettingspage.h:103 -msgid "Box" -msgstr "Kutu" - -#: ../bin/src/ui_magnatunedownloaddialog.h:146 -#: ../bin/src/ui_podcastsettingspage.h:242 -#: ../bin/src/ui_appearancesettingspage.h:287 -msgid "Browse..." -msgstr "Gözat..." - -#: ../bin/src/ui_playbacksettingspage.h:327 -msgid "Buffer duration" -msgstr "Önbellek süresi" - -#: engines/gstengine.cpp:784 -msgid "Buffering" -msgstr "Arabelleğe alınıyor" - -#: ../bin/src/ui_globalsearchview.h:211 -msgid "But these sources are disabled:" -msgstr "Ancak şu kaynaklar pasif:" - -#: ../bin/src/ui_wiimotesettingspage.h:192 -msgid "Buttons" -msgstr "Düğmeler" - -#: core/song.cpp:351 -msgid "CDDA" -msgstr "CDDA" - -#: library/library.cpp:100 -msgid "CUE sheet support" -msgstr "CUE desteği" - -#: internet/spotifyblobdownloader.cpp:44 -msgid "Cancel" -msgstr "İptal" - -#: ../bin/src/ui_edittagdialog.h:664 -msgid "Change cover art" -msgstr "Kapak resmini değiştir" - -#: songinfo/songinfotextview.cpp:83 -msgid "Change font size..." -msgstr "Yazı boyutunu değiştir..." - -#: core/globalshortcuts.cpp:62 -msgid "Change repeat mode" -msgstr "Tekrar kipin değiştir" - -#: ../bin/src/ui_globalshortcutssettingspage.h:179 -msgid "Change shortcut..." -msgstr "Kısayolu değiştir..." - -#: core/globalshortcuts.cpp:61 -msgid "Change shuffle mode" -msgstr "Karıştırma kipini değiştir" - -#: core/commandlineoptions.cpp:172 -msgid "Change the language" -msgstr "Dili değiştir" - -#: ../bin/src/ui_playbacksettingspage.h:330 -msgid "" -"Changing mono playback preference will be effective for the next playing " -"songs" -msgstr "Mono çalma ayarını değiştirmek sonraki şarkılarda da etkili olur" - -#: ../bin/src/ui_podcastsettingspage.h:228 -msgid "Check for new episodes" -msgstr "Yeni bölümler için kontrol et" - -#: ui/mainwindow.cpp:594 -msgid "Check for updates..." -msgstr "Güncellemeleri denetle..." - -#: smartplaylists/wizard.cpp:86 -msgid "Choose a name for your smart playlist" -msgstr "Akıllı çalma listesi için isim seçin" - -#: ../bin/src/ui_playbacksettingspage.h:323 -msgid "Choose automatically" -msgstr "Otomatik seç" - -#: ../bin/src/ui_notificationssettingspage.h:461 -msgid "Choose color..." -msgstr "Rengi seç..." - -#: ../bin/src/ui_notificationssettingspage.h:462 -msgid "Choose font..." -msgstr "Yazı tipi seç..." - -#: ../bin/src/ui_visualisationselector.h:113 -msgid "Choose from the list" -msgstr "Listeden seç" - -#: smartplaylists/querywizardplugin.cpp:155 -msgid "Choose how the playlist is sorted and how many songs it will contain." -msgstr "Çalma listesinin nasıl dizildiğini ve kaç şarkı içereceğini seçin." - -#: podcasts/podcastsettingspage.cpp:132 -msgid "Choose podcast download directory" -msgstr "Podcast indirme dizinini seç" - -#: ../bin/src/ui_songinfosettingspage.h:160 -msgid "" -"Choose the websites you want Clementine to use when searching for lyrics." -msgstr "Şarkı sözü ararken Clementine'in kullanacağı siteleri seçin." - -#: ui/equalizer.cpp:115 -msgid "Classical" -msgstr "Klasik" - -#: ../bin/src/ui_podcastsettingspage.h:243 -msgid "Cleaning up" -msgstr "Temizliyor" - -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 -#: ../bin/src/ui_queuemanager.h:139 -msgid "Clear" -msgstr "Temizle" - -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 -msgid "Clear playlist" -msgstr "Çalma listesini temizle" - -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 -#: visualisations/visualisationcontainer.cpp:211 -#: ../bin/src/ui_visualisationoverlay.h:183 -msgid "Clementine" -msgstr "Clementine" - -#: ../bin/src/ui_errordialog.h:93 -msgid "Clementine Error" -msgstr "Clementine Hatası" - -#: ../bin/src/ui_notificationssettingspage.h:457 -msgid "Clementine Orange" -msgstr "Clementine Turuncu" - -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 -msgid "Clementine Visualization" -msgstr "Clementine Görselleştirme" - -#: ../bin/src/ui_deviceproperties.h:376 -msgid "" -"Clementine can automatically convert the music you copy to this device into " -"a format that it can play." -msgstr "Clementine bu aygıta kopyaladığınız müzikleri, aygıtın çalacağı biçime dönüştürebilir." - -#: ../bin/src/ui_boxsettingspage.h:104 -msgid "Clementine can play music that you have uploaded to Box" -msgstr "Clementine kutu içine yüklediğiniz müziği çalabilir" - -#: ../bin/src/ui_dropboxsettingspage.h:104 -msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "Clementine Dropbox'a yüklediğiniz müzikleri oynatabilir" - -#: ../bin/src/ui_googledrivesettingspage.h:104 -msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "Clementine Google Drive'a yüklediğiniz müzikleri oynatabilir" - -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine Ubuntu One'a yüklediğiniz müzikleri oynatabilir" - -#: ../bin/src/ui_notificationssettingspage.h:431 -msgid "Clementine can show a message when the track changes." -msgstr "Parça değiştiğinde Clementine bir ileti gösterebilir." - -#: ../bin/src/ui_podcastsettingspage.h:250 -msgid "" -"Clementine can synchronize your subscription list with your other computers " -"and podcast applications. Create " -"an account." -msgstr "Clementine, diğer bilgisayarlar ve podcast uygulamaları ile abonelik listesini senkronize edebilirsiniz. bir hesap oluşturun ." - -#: visualisations/projectmvisualisation.cpp:133 -msgid "" -"Clementine could not load any projectM visualisations. Check that you have " -"installed Clementine properly." -msgstr "Clementine projectM görsellerini yükleyemedi. Clementine programını düzgün yüklediğinizi kontrol edin." - -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine bağlantı sorunlarından dolayı abone bilgilerinize ulaşamadı. Çalınan şarkılar ön belleğe kaydedilecek ve daha sonra Last.fm'e gönderilecek." - -#: widgets/prettyimage.cpp:201 -msgid "Clementine image viewer" -msgstr "Clementine resim görüntüleyici" - -#: ../bin/src/ui_trackselectiondialog.h:206 -msgid "Clementine was unable to find results for this file" -msgstr "Clementine bu dosya için sonuç bulamadı" - -#: ../bin/src/ui_globalsearchview.h:210 -msgid "Clementine will find music in:" -msgstr "Clementine müzikleri şurada bulacak:" - -#: library/libraryview.cpp:349 -msgid "Click here to add some music" -msgstr "Parça eklemek için buraya tıklayın" - -#: playlist/playlisttabbar.cpp:293 -msgid "" -"Click here to favorite this playlist so it will be saved and remain " -"accessible through the \"Playlists\" panel on the left side bar" -msgstr "Bu çalma listesini beğenmek için buraya tıkladığınızda, kenar çubuğundaki \"Çalma Listeleri\" panelinde erişilebilir olacaktır." - -#: ../bin/src/ui_trackslider.h:72 -msgid "Click to toggle between remaining time and total time" -msgstr "Toplam zaman ve kalan zaman arasında seçim yapmak için tıklayın" - -#: ../bin/src/ui_googledrivesettingspage.h:106 -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 -msgid "" -"Clicking the Login button will open a web browser. You should return to " -"Clementine after you have logged in." -msgstr "Oturum Aç düğmesini tıklayınca yeni internet sayfası açılır. Oturum açtıktan sonra Clementine'e geri dönmelisiniz" - -#: widgets/didyoumean.cpp:37 -msgid "Close" -msgstr "Kapat" - -#: playlist/playlisttabbar.cpp:54 -msgid "Close playlist" -msgstr "oynatma lis" - -#: visualisations/visualisationcontainer.cpp:127 -msgid "Close visualization" -msgstr "Görselleştirmeyi kapat" - -#: internet/magnatunedownloaddialog.cpp:280 -msgid "Closing this window will cancel the download." -msgstr "Bu pencereyi kapatmak indirme işlemini iptal edecektir." - -#: ui/albumcovermanager.cpp:216 -msgid "Closing this window will stop searching for album covers." -msgstr "Bu pencereyi kapatmak albüm kapakları için yapılan aramayı durduracaktır." - -#: ui/equalizer.cpp:116 -msgid "Club" -msgstr "Kulüp" - -#: ../bin/src/ui_appearancesettingspage.h:272 -msgid "Colors" -msgstr "Renk" - -#: core/commandlineoptions.cpp:175 -msgid "Comma separated list of class:level, level is 0-3" -msgstr "Virgülle ayrılmış sınıf:seviye listesi, sınıf 0-3 arasında olabilir " - -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 -msgid "Comment" -msgstr "Yorum" - -#: ../bin/src/ui_edittagdialog.h:693 -msgid "Complete tags automatically" -msgstr "Etiketleri otomatik tamamla" - -#: ../bin/src/ui_mainwindow.h:716 -msgid "Complete tags automatically..." -msgstr "Etiketleri otomatik tamamla..." - -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 -#: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 -#: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 -msgid "Composer" -msgstr "Besteci" - -#: internet/searchboxwidget.cpp:42 -#, qt-format -msgid "Configure %1..." -msgstr "Düzenle %1..." - -#: internet/groovesharkservice.cpp:552 -msgid "Configure Grooveshark..." -msgstr "Grooveshark'i ayarla" - -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm'i Yapılandır..." - -#: internet/magnatuneservice.cpp:280 -msgid "Configure Magnatune..." -msgstr "Magnatune'u Yapılandır..." - -#: ../bin/src/ui_globalshortcutssettingspage.h:167 -msgid "Configure Shortcuts" -msgstr "Kısayolları Yapılandır" - -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 -msgid "Configure Spotify..." -msgstr "Spotify'ı Yapılandır..." - -#: internet/subsonicservice.cpp:96 -msgid "Configure Subsonic..." -msgstr "Subsonic'i yapılandır..." - -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 -msgid "Configure global search..." -msgstr "Genel aramayı düzenle..." - -#: ui/mainwindow.cpp:475 -msgid "Configure library..." -msgstr "Kütüphaneyi düzenle..." - -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 -msgid "Configure podcasts..." -msgstr "Podcastları ayarla..." - -#: internet/digitallyimportedservicebase.cpp:186 -#: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 -msgid "Configure..." -msgstr "Yapılandır..." - -#: ../bin/src/ui_wiimotesettingspage.h:186 -msgid "Connect Wii Remotes using active/deactive action" -msgstr "Etkinleştir/pasifleştir eylemiyle Wii kumandasına bağlan" - -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 -msgid "Connect device" -msgstr "Aygıtı bağla" - -#: internet/spotifyservice.cpp:253 -msgid "Connecting to Spotify" -msgstr "Spotify'a bağlanılıyor" - -#: internet/subsonicsettingspage.cpp:107 -msgid "" -"Connection refused by server, check server URL. Example: " -"http://localhost:4040/" -msgstr "Bağlantı sunucu tarafından reddedildi, sunucu adresini denetleyin. Örnek: http://localhost:4040/" - -#: internet/subsonicsettingspage.cpp:117 -msgid "" -"Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "Bağlantı zaman aşımına uğradı, sunucu adresini denetleyin. Örnek: http://localhost:4040/" - -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 -msgid "Console" -msgstr "Konsol" - -#: ../bin/src/ui_transcoderoptionsmp3.h:196 -msgid "Constant bitrate" -msgstr "Sabit bit oranı" - -#: ../bin/src/ui_deviceproperties.h:379 -msgid "Convert all music" -msgstr "Tüm müzikleri dönüştür" - -#: ../bin/src/ui_deviceproperties.h:378 -msgid "Convert any music that the device can't play" -msgstr "Aygıtın çalamadığı müzikleri dönüştür" - -#: internet/groovesharkservice.cpp:1172 -msgid "Copy to clipboard" -msgstr "Panoya kopyala" - -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 -#: widgets/fileviewlist.cpp:44 -msgid "Copy to device..." -msgstr "Aygıta kopyala..." - -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 -#: widgets/fileviewlist.cpp:39 -msgid "Copy to library..." -msgstr "Kütüphaneye kopyala..." - -#: ../bin/src/ui_podcastinfowidget.h:194 -msgid "Copyright" -msgstr "Copyright" - -#: internet/subsonicsettingspage.cpp:81 -msgid "" -"Could not connect to Subsonic, check server URL. Example: " -"http://localhost:4040/" -msgstr "Subsonic'e bağlanılamadı, sunucu adresini kontrol edin. Örnek: http://localhost:4040/" - -#: transcoder/transcoder.cpp:64 -#, qt-format -msgid "" -"Could not create the GStreamer element \"%1\" - make sure you have all the " -"required GStreamer plugins installed" -msgstr "GStreamer elementi \"%1\" oluşturulamadı - tüm Gstreamer eklentilerinin kurulu olduğundan emin olun" - -#: transcoder/transcoder.cpp:432 -#, qt-format -msgid "" -"Couldn't find a muxer for %1, check you have the correct GStreamer plugins " -"installed" -msgstr "%1 için ayrıştırıcı bulunamadı, gerekli GStreamer eklentilerinin kurulu olup olmadığını kontrol edin" - -#: transcoder/transcoder.cpp:426 -#, qt-format -msgid "" -"Couldn't find an encoder for %1, check you have the correct GStreamer " -"plugins installed" -msgstr "%1 için kodlayıcı bulunamadı, gerekli GStreamer eklentilerinin yüklü olup olmadığını kontrol edin" - -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Last.fm radyo istasyonu yüklenemedi" - -#: internet/magnatunedownloaddialog.cpp:203 -#, qt-format -msgid "Couldn't open output file %1" -msgstr "%1 çıktı dosyası açılamadı" - -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 -#: internet/googledriveservice.cpp:189 -msgid "Cover Manager" -msgstr "Kapak Yöneticisi" - -#: ui/edittagdialog.cpp:443 -msgid "Cover art from embedded image" -msgstr "Gömülü resimden kapak resmi" - -#: ui/edittagdialog.cpp:445 -#, qt-format -msgid "Cover art loaded automatically from %1" -msgstr "Kapak resmi %1 adresinden otomatik olarak yüklendi" - -#: ui/edittagdialog.cpp:438 -msgid "Cover art manually unset" -msgstr "Kapak resmi elle çıkarıldı" - -#: ui/edittagdialog.cpp:447 -msgid "Cover art not set" -msgstr "Kapak resmi ayarlanmamış" - -#: ui/edittagdialog.cpp:441 -#, qt-format -msgid "Cover art set from %1" -msgstr "Kapak resmi %1 adresinden ayarlandı" - -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 -#, qt-format -msgid "Covers from %1" -msgstr "%1 adresindeki kapak resimleri" - -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 -msgid "Create a new Grooveshark playlist" -msgstr "Yeni bir Grooveshark müzik listesi oluşturun" - -#: ../bin/src/ui_playbacksettingspage.h:302 -msgid "Cross-fade when changing tracks automatically" -msgstr "Parça değiştirirken otomatik olarak çapraz geçiş yap" - -#: ../bin/src/ui_playbacksettingspage.h:301 -msgid "Cross-fade when changing tracks manually" -msgstr "Parça değiştirirken elle çapraz geçiş yap" - -#: ../bin/src/ui_mainwindow.h:659 -msgid "Ctrl+Alt+V" -msgstr "Ctrl+Alt+V" - -#: ../bin/src/ui_mainwindow.h:663 -msgid "Ctrl+B" -msgstr "Ctrl+B" - -#: ../bin/src/ui_queuemanager.h:133 -msgid "Ctrl+Down" -msgstr "Ctrl+Down" - -#: ../bin/src/ui_mainwindow.h:670 -msgid "Ctrl+E" -msgstr "Ctrl+E" - -#: ../bin/src/ui_mainwindow.h:680 -msgid "Ctrl+H" -msgstr "Ctrl+H" - -#: ../bin/src/ui_mainwindow.h:700 -msgid "Ctrl+J" -msgstr "Ctrl+J" - -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 -msgid "Ctrl+K" -msgstr "Ctrl+K" - -#: ../bin/src/ui_mainwindow.h:661 -msgid "Ctrl+L" -msgstr "Ctrl+L" - -#: ../bin/src/ui_mainwindow.h:714 -msgid "Ctrl+M" -msgstr "Ctrl+M" - -#: ../bin/src/ui_mainwindow.h:702 -msgid "Ctrl+N" -msgstr "Ctrl+N" - -#: ../bin/src/ui_mainwindow.h:684 -msgid "Ctrl+O" -msgstr "Ctrl+O" - -#: ../bin/src/ui_mainwindow.h:676 -msgid "Ctrl+P" -msgstr "Ctrl+P" - -#: ../bin/src/ui_mainwindow.h:657 -msgid "Ctrl+Q" -msgstr "Ctrl+Q" - -#: ../bin/src/ui_mainwindow.h:704 -msgid "Ctrl+S" -msgstr "Ctrl+S" - -#: ../bin/src/ui_mainwindow.h:682 -msgid "Ctrl+Shift+A" -msgstr "Ctrl+Shift+A" - -#: ../bin/src/ui_mainwindow.h:706 -msgid "Ctrl+Shift+O" -msgstr "Ctrl+Shift+O" - -#: ../bin/src/ui_mainwindow.h:725 -msgid "Ctrl+Shift+T" -msgstr "Ctrl+Shift+T" - -#: ../bin/src/ui_mainwindow.h:717 -msgid "Ctrl+T" -msgstr "Ctrl+T" - -#: ../bin/src/ui_queuemanager.h:129 -msgid "Ctrl+Up" -msgstr "Ctrl+Up" - -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 -msgid "Custom" -msgstr "Özel" - -#: ../bin/src/ui_appearancesettingspage.h:286 -msgid "Custom image:" -msgstr "Özel resim:" - -#: ../bin/src/ui_notificationssettingspage.h:444 -msgid "Custom message settings" -msgstr "Mesaj ayarlarını özelleştir" - -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Özel radyo" - -#: ../bin/src/ui_notificationssettingspage.h:458 -msgid "Custom..." -msgstr "Özel..." - -#: devices/devicekitlister.cpp:123 -msgid "DBus path" -msgstr "DBus yolu" - -#: ui/equalizer.cpp:117 -msgid "Dance" -msgstr "Dans" - -#: core/database.cpp:602 -msgid "" -"Database corruption detected. Please read https://code.google.com/p" -"/clementine-player/wiki/DatabaseCorruption for instructions on how to " -"recover your database" -msgstr "Veritabanında bozulma tespit edildi. Lütfen https://code.google.com/p/clementine-player/wiki/DatabaseCorruption adresindeki veritabanınızı nasıl kurtaracağınıza ilişkin talimatları okuyun." - -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 -msgid "Date created" -msgstr "Oluşturulduğu tarih" - -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 -msgid "Date modified" -msgstr "Değiştirildiği tarih" - -#: smartplaylists/searchterm.cpp:311 -msgid "Days" -msgstr "Gün" - -#: ../bin/src/ui_globalshortcutssettingspage.h:177 -msgid "De&fault" -msgstr "&Öntanımlı" - -#: core/commandlineoptions.cpp:159 -msgid "Decrease the volume by 4%" -msgstr "Ses seviyesini 4% azalt" - -#: core/commandlineoptions.cpp:161 -msgid "Decrease the volume by percent" -msgstr " oranında sesi azaltın" - -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 -msgid "Decrease volume" -msgstr "Sesi azalt" - -#: ../bin/src/ui_appearancesettingspage.h:280 -msgid "Default background image" -msgstr "Varsayılan arkaplan resmi" - -#: ../bin/src/ui_wiimotesettingspage.h:195 -msgid "Defaults" -msgstr "Öntanımlılar" - -#: ../bin/src/ui_visualisationselector.h:115 -msgid "Delay between visualizations" -msgstr "Görselleştirmeler arasındaki gecikme" - -#: playlist/playlistlistcontainer.cpp:73 -#: ../bin/src/ui_playlistlistcontainer.h:131 -msgid "Delete" -msgstr "Sil" - -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 -msgid "Delete Grooveshark playlist" -msgstr "Grooveshark müzik listesini sil" - -#: podcasts/podcastservice.cpp:274 -msgid "Delete downloaded data" -msgstr "İndirilmiş veriyi sil" - -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 -msgid "Delete files" -msgstr "Dosyaları sil" - -#: devices/deviceview.cpp:220 -msgid "Delete from device..." -msgstr "Aygıttan sil..." - -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 -#: widgets/fileviewlist.cpp:45 -msgid "Delete from disk..." -msgstr "Diskten sil..." - -#: ../bin/src/ui_podcastsettingspage.h:244 -msgid "Delete played episodes" -msgstr "Çalımış bölümleri sil" - -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 -msgid "Delete preset" -msgstr "Ayarı sil" - -#: library/libraryview.cpp:383 -msgid "Delete smart playlist" -msgstr "Akıllı çalma listesini silin" - -#: ../bin/src/ui_organisedialog.h:194 -msgid "Delete the original files" -msgstr "Orijinal dosyaları sil" - -#: core/deletefiles.cpp:50 -msgid "Deleting files" -msgstr "Dosyalar siliniyor" - -#: ui/mainwindow.cpp:1374 -msgid "Dequeue selected tracks" -msgstr "Seçili parçaları kuyruktan çıkar" - -#: ui/mainwindow.cpp:1372 -msgid "Dequeue track" -msgstr "Parçayı kuyruktan çıkar" - -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 -msgid "Destination" -msgstr "Hedef" - -#: ../bin/src/ui_transcodedialog.h:221 -msgid "Details..." -msgstr "Detaylar..." - -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 -msgid "Device" -msgstr "Aygıt" - -#: ../bin/src/ui_deviceproperties.h:368 -msgid "Device Properties" -msgstr "Aygıt Özellikleri" - -#: ../bin/src/ui_podcastsettingspage.h:254 -msgid "Device name" -msgstr "Aygıt adı" - -#: devices/deviceview.cpp:207 -msgid "Device properties..." -msgstr "Aygıt özellikleri..." - -#: ui/mainwindow.cpp:242 -msgid "Devices" -msgstr "Aygıtlar" - -#: widgets/didyoumean.cpp:55 -msgid "Did you mean" -msgstr "Bunu mu demek istediniz" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:160 -msgid "Digitally Imported" -msgstr "Digitally Imported" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:164 -msgid "Digitally Imported password" -msgstr "Digitally Imported parolası" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:162 -msgid "Digitally Imported username" -msgstr "Digitally Imported kullanıcı adı" - -#: ../bin/src/ui_networkproxysettingspage.h:159 -msgid "Direct internet connection" -msgstr "Doğrudan internet bağlantısı" - -#: ../bin/src/ui_magnatunedownloaddialog.h:145 -#: ../bin/src/ui_transcodedialog.h:207 -msgid "Directory" -msgstr "Dizin" - -#: ../bin/src/ui_notificationssettingspage.h:440 -msgid "Disable duration" -msgstr "Süreyi devre dışı bırak" - -#: ../bin/src/ui_appearancesettingspage.h:296 -msgid "Disable moodbar generation" -msgstr "Moodbar oluşturmayı kapat" - -#: globalsearch/searchproviderstatuswidget.cpp:47 -#: ../bin/src/ui_notificationssettingspage.h:433 -msgid "Disabled" -msgstr "Devre Dışı" - -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 -msgid "Disc" -msgstr "Disk" - -#: ../bin/src/ui_transcoderoptionsspeex.h:234 -msgid "Discontinuous transmission" -msgstr "Kesikli aktarma" - -#: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 -msgid "Display options" -msgstr "Gösterim seçenekleri" - -#: core/commandlineoptions.cpp:170 -msgid "Display the on-screen-display" -msgstr "Ekran görselini göster" - -#: ../bin/src/ui_mainwindow.h:715 -msgid "Do a full library rescan" -msgstr "Tüm kütüphaneyi yeniden tara" - -#: ../bin/src/ui_deviceproperties.h:377 -msgid "Do not convert any music" -msgstr "Hiç bir müziği dönüştürme" - -#: ../bin/src/ui_albumcoverexport.h:209 -msgid "Do not overwrite" -msgstr "Üzerine yazma" - -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 -msgid "Don't repeat" -msgstr "Tekrarlama" - -#: library/libraryview.cpp:405 -msgid "Don't show in various artists" -msgstr "Çeşitli sanatçılarda gösterme" - -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 -msgid "Don't shuffle" -msgstr "Karıştırma" - -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 -msgid "Don't stop!" -msgstr "Durma!" - -#: internet/somafmservice.cpp:103 -msgid "Donate" -msgstr "Bağış Yap" - -#: devices/deviceview.cpp:115 -msgid "Double click to open" -msgstr "Açmak için çift tıkla" - -#: ../bin/src/ui_behavioursettingspage.h:214 -msgid "Double clicking a song will..." -msgstr "Bir şarkıyı çift tıklamak..." - -#: podcasts/podcastservice.cpp:350 -#, c-format, qt-plural-format -msgid "Download %n episodes" -msgstr "%n bölüm indir" - -#: internet/magnatunedownloaddialog.cpp:252 -msgid "Download directory" -msgstr "İndirme dizini" - -#: ../bin/src/ui_podcastsettingspage.h:240 -msgid "Download episodes to" -msgstr "Bölümleri şuraya indir" - -#: ../bin/src/ui_magnatunesettingspage.h:161 -msgid "Download membership" -msgstr "İndirme üyeliği" - -#: ../bin/src/ui_podcastsettingspage.h:241 -msgid "Download new episodes automatically" -msgstr "Yeni bölümleri otomatik olarak indir" - -#: podcasts/podcastservice.cpp:187 -msgid "Download queued" -msgstr "Sıradakileri indir" - -#: ../bin/src/ui_networkremotesettingspage.h:202 -msgid "Download the Android app" -msgstr "Android uygulamasını indir" - -#: internet/magnatuneservice.cpp:276 -msgid "Download this album" -msgstr "Bu albümü indir" - -#: internet/jamendoservice.cpp:417 -msgid "Download this album..." -msgstr "Bu albümü indirin..." - -#: podcasts/podcastservice.cpp:352 -msgid "Download this episode" -msgstr "Bu bölümü indir" - -#: ../bin/src/ui_spotifysettingspage.h:215 -msgid "Download..." -msgstr "İndir..." - -#: podcasts/podcastservice.cpp:195 -#, qt-format -msgid "Downloading (%1%)..." -msgstr "İndiriyor (%1%)..." - -#: internet/icecastservice.cpp:101 -msgid "Downloading Icecast directory" -msgstr "Icecast dizini indiriliyor" - -#: internet/jamendoservice.cpp:187 -msgid "Downloading Jamendo catalogue" -msgstr "Jamendo kataloğu indiriliyor" - -#: internet/magnatuneservice.cpp:158 -msgid "Downloading Magnatune catalogue" -msgstr "Magnatune kataloğu indiriliyor" - -#: internet/spotifyblobdownloader.cpp:44 -msgid "Downloading Spotify plugin" -msgstr "Spotify eklentisi indiriliyor" - -#: musicbrainz/tagfetcher.cpp:102 -msgid "Downloading metadata" -msgstr "Üstveri indiriliyor" - -#: ui/notificationssettingspage.cpp:37 -msgid "Drag to reposition" -msgstr "Yeniden konumlandırmak için sürükleyin" - -#: ../bin/src/ui_dropboxsettingspage.h:103 -msgid "Dropbox" -msgstr "Dropbox" - -#: ui/equalizer.cpp:119 -msgid "Dubstep" -msgstr "Dubstep" - -#: ../bin/src/ui_dynamicplaylistcontrols.h:109 -msgid "Dynamic mode is on" -msgstr "Dinamik kip açık" - -#: internet/jamendoservice.cpp:113 library/library.cpp:93 -msgid "Dynamic random mix" -msgstr "Dinamik rastgele karışım" - -#: library/libraryview.cpp:381 -msgid "Edit smart playlist..." -msgstr "Akıllı çalma listesini düzenleyin" - -#: ui/mainwindow.cpp:1407 -#, qt-format -msgid "Edit tag \"%1\"..." -msgstr "\"%1\" etiketini düzenle..." - -#: ../bin/src/ui_mainwindow.h:673 -msgid "Edit tag..." -msgstr "Etiketi düzenle..." - -#: ../bin/src/ui_edittagdialog.h:695 -msgid "Edit tags" -msgstr "Etiketleri düzenle" - -#: ../bin/src/ui_edittagdialog.h:662 -msgid "Edit track information" -msgstr "Parça bilgisini düzenle" - -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 -msgid "Edit track information..." -msgstr "Parça bilgisini düzenle..." - -#: library/libraryview.cpp:397 -msgid "Edit tracks information..." -msgstr "Parça bilgilerini düzenle..." - -#: internet/savedradio.cpp:101 -msgid "Edit..." -msgstr "Düzenle..." - -#: ../bin/src/ui_wiimotesettingspage.h:183 -msgid "Enable Wii Remote support" -msgstr "Wii kumanda desteğini etkinleştir" - -#: ../bin/src/ui_equalizer.h:171 -msgid "Enable equalizer" -msgstr "Ekolayzırı etkinleştir" - -#: ../bin/src/ui_wiimotesettingspage.h:187 -msgid "Enable shortcuts only when Clementine is focused" -msgstr "Kısayolları sadece Clementine odaktayken etkinleştir" - -#: ../bin/src/ui_globalsearchsettingspage.h:147 -msgid "" -"Enable sources below to include them in search results. Results will be " -"displayed in this order." -msgstr "Arama sonuçlarına dahil etmek için aşağıdaki kaynakları aktifleştirin. Sonuçlar bu sırayla gösterilecektir." - -#: core/globalshortcuts.cpp:63 -msgid "Enable/disable Last.fm scrobbling" -msgstr "Last.fm skroplamayı aç/kapa" - -#: ../bin/src/ui_transcoderoptionsspeex.h:235 -msgid "Encoding complexity" -msgstr "Kodlama karmaşıklığı" - -#: ../bin/src/ui_transcoderoptionsmp3.h:197 -msgid "Encoding engine quality" -msgstr "Kodlama motor kalitesi" - -#: ../bin/src/ui_transcoderoptionsspeex.h:224 -msgid "Encoding mode" -msgstr "Kodlama kipi" - -#: ../bin/src/ui_addpodcastbyurl.h:76 -msgid "Enter a URL" -msgstr "Bir URL gir" - -#: ../bin/src/ui_coverfromurldialog.h:103 -msgid "Enter a URL to download a cover from the Internet:" -msgstr "Kapağı Internet'ten indirmek için URL girin:" - -#: ../bin/src/ui_albumcoverexport.h:205 -msgid "Enter a filename for exported covers (no extension):" -msgstr "Dışa aktarılan kapaklar için bir dosya adı girin (uzantı yok):" - -#: playlist/playlisttabbar.cpp:137 -msgid "Enter a new name for this playlist" -msgstr "Bu çalma listesi için yeni bir isim gir" - -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Last.fm radyosunu dinlemeye başlamak için bir sanatçı veya bir etiket girin." - -#: ../bin/src/ui_globalsearchview.h:209 -msgid "" -"Enter search terms above to find music on your computer and on the internet" -msgstr "Bilgisayarınızda ve internette müzik bulmak için yukarıdaki alana arama terimlerinizi girin" - -#: ../bin/src/ui_itunessearchpage.h:77 -msgid "Enter search terms below to find podcasts in the iTunes Store" -msgstr "iTunes Store üzerinde podcastlar bulmak için aşağıya arama terimleri gir" - -#: ../bin/src/ui_gpoddersearchpage.h:77 -msgid "Enter search terms below to find podcasts on gpodder.net" -msgstr "gpodder.net üzerinde podcastlar bulmak için aşağıya arama terimleri gir" - -#: ../bin/src/ui_libraryfilterwidget.h:96 -#: ../bin/src/ui_albumcovermanager.h:219 -msgid "Enter search terms here" -msgstr "Arama terimlerini buraya girin" - -#: ../bin/src/ui_addstreamdialog.h:114 -msgid "Enter the URL of an internet radio stream:" -msgstr "Bir internet radyo yayın akışının URL'sini girin" - -#: playlist/playlistlistcontainer.cpp:172 -msgid "Enter the name of the folder" -msgstr "Klasör ismini girin" - -#: ../bin/src/ui_networkremotesettingspage.h:198 -msgid "Enter this IP in the App to connect to Clementine." -msgstr "App Clementine için bağlanmak için IP girin." - -#: ../bin/src/ui_libraryfilterwidget.h:87 -msgid "Entire collection" -msgstr "Tüm koleksiyon" - -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 -msgid "Equalizer" -msgstr "Ekolayzır" - -#: core/commandlineoptions.cpp:173 -msgid "Equivalent to --log-levels *:1" -msgstr "--log-levels *:1'e eşdeğer" - -#: core/commandlineoptions.cpp:174 -msgid "Equivalent to --log-levels *:3" -msgstr "--log-levels *:3'e eşdeğer" - -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 -msgid "Error" -msgstr "Hata" - -#: devices/mtploader.cpp:56 -msgid "Error connecting MTP device" -msgstr "MTP aygıtına bağlanırken hata" - -#: ui/organiseerrordialog.cpp:55 -msgid "Error copying songs" -msgstr "Şarkılar kopyalanırken hata" - -#: ui/organiseerrordialog.cpp:60 -msgid "Error deleting songs" -msgstr "Şarkılar silinirken hata" - -#: internet/spotifyblobdownloader.cpp:215 -msgid "Error downloading Spotify plugin" -msgstr "Spotify eklentisini indirirken hata" - -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 -#, qt-format -msgid "Error loading %1" -msgstr "%1 yüklenirken hata" - -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 -msgid "Error loading di.fm playlist" -msgstr "di.fm çalma listesi yüklenirken hata oluştu" - -#: transcoder/transcoder.cpp:399 -#, qt-format -msgid "Error processing %1: %2" -msgstr "%1 işlenirken hata: %2" - -#: playlist/songloaderinserter.cpp:100 -msgid "Error while loading audio CD" -msgstr "Ses CD'si yüklenirken hata" - -#: library/library.cpp:63 -msgid "Ever played" -msgstr "Önceden çalınmış" - -#: ../bin/src/ui_podcastsettingspage.h:232 -msgid "Every 10 minutes" -msgstr "Her 10 dakikada" - -#: ../bin/src/ui_podcastsettingspage.h:238 -msgid "Every 12 hours" -msgstr "Her 12 saatte" - -#: ../bin/src/ui_podcastsettingspage.h:236 -msgid "Every 2 hours" -msgstr "Her 2 saatte" - -#: ../bin/src/ui_podcastsettingspage.h:233 -msgid "Every 20 minutes" -msgstr "Her 20 dakikada" - -#: ../bin/src/ui_podcastsettingspage.h:234 -msgid "Every 30 minutes" -msgstr "Her 30 dakikada" - -#: ../bin/src/ui_podcastsettingspage.h:237 -msgid "Every 6 hours" -msgstr "Her 6 saatte" - -#: ../bin/src/ui_podcastsettingspage.h:235 -msgid "Every hour" -msgstr "Her saat" - -#: ../bin/src/ui_playbacksettingspage.h:303 -msgid "Except between tracks on the same album or in the same CUE sheet" -msgstr "Aynı albümde veya aynı CUE dosyasında bulunan parçalar hariç" - -#: ../bin/src/ui_albumcoverexport.h:208 -msgid "Existing covers" -msgstr "Mevcut kapaklar" - -#: ../bin/src/ui_dynamicplaylistcontrols.h:111 -msgid "Expand" -msgstr "Genişlet" - -#: widgets/loginstatewidget.cpp:142 -#, qt-format -msgid "Expires on %1" -msgstr "Bitiş tarihi %1" - -#: ../bin/src/ui_albumcovermanager.h:226 -msgid "Export Covers" -msgstr "Kapakları Aktar" - -#: ../bin/src/ui_albumcoverexport.h:203 -msgid "Export covers" -msgstr "Kapakları aktar" - -#: ../bin/src/ui_albumcoverexport.h:206 -msgid "Export downloaded covers" -msgstr "İndirilen kapakları aktar" - -#: ../bin/src/ui_albumcoverexport.h:207 -msgid "Export embedded covers" -msgstr "Gömülü kapakları aktar" - -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 -msgid "Export finished" -msgstr "Biteni aktar" - -#: ui/albumcovermanager.cpp:786 -#, qt-format -msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "%2 kapağın %1 tanesi aktarıldı (%3 atlandı)" - -#: ../bin/src/ui_mainwindow.h:678 -msgid "F1" -msgstr "F1" - -#: ../bin/src/ui_mainwindow.h:674 -msgid "F2" -msgstr "F2" - -#: ../bin/src/ui_mainwindow.h:649 -msgid "F5" -msgstr "F5" - -#: ../bin/src/ui_mainwindow.h:651 -msgid "F6" -msgstr "F6" - -#: ../bin/src/ui_mainwindow.h:653 -msgid "F7" -msgstr "F7" - -#: ../bin/src/ui_mainwindow.h:655 -msgid "F8" -msgstr "F8" - -#: ../bin/src/ui_magnatunedownloaddialog.h:140 -#: ../bin/src/ui_magnatunesettingspage.h:171 -#: ../bin/src/ui_transcodersettingspage.h:177 -msgid "FLAC" -msgstr "FLAC" - -#: ../bin/src/ui_playbacksettingspage.h:306 -msgid "Fade out on pause / fade in on resume" -msgstr "Bekletmede sesi yavaşça kıs / devam ettiğinde aç" - -#: ../bin/src/ui_playbacksettingspage.h:300 -msgid "Fade out when stopping a track" -msgstr "Bir parça durdurulurken yumuşak geç" - -#: ../bin/src/ui_playbacksettingspage.h:299 -msgid "Fading" -msgstr "Yumuşak geçiş" - -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 -msgid "Fading duration" -msgstr "Yumuşak geçiş süresi" - -#: podcasts/gpoddertoptagspage.cpp:76 -msgid "Failed to fetch directory" -msgstr "Dizin getirme başarısız oldu" - -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 -msgid "Failed to fetch podcasts" -msgstr "Podcastların indirilmesi başarısız oldu" - -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 -msgid "Failed to load podcast" -msgstr "Podcastların yüklenmesi başarısız oldu" - -#: podcasts/podcasturlloader.cpp:167 -msgid "Failed to parse the XML for this RSS feed" -msgstr "Bu RSS beslemesinin XML ayıklaması başarısız oldu" - -#: ../bin/src/ui_transcoderoptionsflac.h:82 -#: ../bin/src/ui_transcoderoptionsmp3.h:200 -msgid "Fast" -msgstr "Hızlı" - -#: internet/groovesharkservice.cpp:617 -msgid "Favorites" -msgstr "Favoriler" - -#: library/library.cpp:77 -msgid "Favourite tracks" -msgstr "Beğenilen parçalar" - -#: ../bin/src/ui_albumcovermanager.h:225 -msgid "Fetch Missing Covers" -msgstr "Eksik Albüm Kapaklarını İndir" - -#: ../bin/src/ui_albumcovermanager.h:216 -msgid "Fetch automatically" -msgstr "Otomatik indir" - -#: ../bin/src/ui_coversearchstatisticsdialog.h:75 -msgid "Fetch completed" -msgstr "Alım tamamlandı" - -#: internet/subsonicservice.cpp:241 -msgid "Fetching Subsonic library" -msgstr "Subsonic kütüphanesi eşleştiriliyor" - -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 -msgid "Fetching cover error" -msgstr "Kapak alınırken bir hata oluştu" - -#: ui/organisedialog.cpp:71 -msgid "File extension" -msgstr "Dosya uzantısı" - -#: ../bin/src/ui_deviceproperties.h:384 -msgid "File formats" -msgstr "Dosya biçimleri" - -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 -msgid "File name" -msgstr "Dosya adı" - -#: playlist/playlist.cpp:1229 -msgid "File name (without path)" -msgstr "Dosya adı (yol hariç)" - -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 -msgid "File size" -msgstr "Dosya boyutu" - -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 -#: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 -#: ../bin/src/ui_edittagdialog.h:676 -msgid "File type" -msgstr "Dosya türü" - -#: ../bin/src/ui_transcodedialog.h:208 -msgid "Filename" -msgstr "Dosya adı" - -#: ui/mainwindow.cpp:239 -msgid "Files" -msgstr "Dosyalar" - -#: ../bin/src/ui_transcodedialog.h:205 -msgid "Files to transcode" -msgstr "Dönüştürülecek dosyalar" - -#: smartplaylists/querywizardplugin.cpp:90 -msgid "Find songs in your library that match the criteria you specify." -msgstr "Kütüphanenizde belirttiğiniz kriterlerle eşleşen şarkıları bulun." - -#: musicbrainz/tagfetcher.cpp:55 -msgid "Fingerprinting song" -msgstr "Şarkının parmak izi çıkartılıyor" - -#: smartplaylists/wizard.cpp:85 -msgid "Finish" -msgstr "Bitir" - -#: ../bin/src/ui_groupbydialog.h:125 -msgid "First level" -msgstr "İlk Seviye" - -#: core/song.cpp:340 -msgid "Flac" -msgstr "Flac" - -#: ../bin/src/ui_songinfosettingspage.h:156 -msgid "Font size" -msgstr "Yazı tipi boyutu" - -#: ../bin/src/ui_spotifysettingspage.h:213 -msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "Lisans sebepleri dolayısıyla Spotify desteği ayrı bir eklentidir." - -#: ../bin/src/ui_transcoderoptionsmp3.h:204 -msgid "Force mono encoding" -msgstr "Mono kodlamaya zorla" - -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 -msgid "Forget device" -msgstr "Aygıtı unut" - -#: devices/deviceview.cpp:311 -msgid "" -"Forgetting a device will remove it from this list and Clementine will have " -"to rescan all the songs again next time you connect it." -msgstr "Bir aygıtı unuttuğunuzda listeden silinecek ve bu aygıtı tekrar bağladığızda, Clementine tüm şarkıları tekrar taramak zorunda kalacak." - -#: ../bin/src/ui_deviceviewcontainer.h:98 -#: ../bin/src/ui_searchproviderstatuswidget.h:94 -#: ../bin/src/ui_suggestionwidget.h:70 ../bin/src/ui_icecastfilterwidget.h:74 -#: ../bin/src/ui_internetviewcontainer.h:71 ../bin/src/ui_searchboxwidget.h:62 -#: ../bin/src/ui_libraryfilterwidget.h:86 -#: ../bin/src/ui_libraryviewcontainer.h:59 -#: ../bin/src/ui_playlistcontainer.h:143 -#: ../bin/src/ui_playlistlistcontainer.h:126 -#: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 -#: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 -#: ../bin/src/ui_songkickconcertwidget.h:100 -#: ../bin/src/ui_transcoderoptionsaac.h:128 -#: ../bin/src/ui_transcoderoptionsflac.h:80 -#: ../bin/src/ui_transcoderoptionsmp3.h:190 -#: ../bin/src/ui_transcoderoptionsopus.h:79 -#: ../bin/src/ui_transcoderoptionsspeex.h:216 -#: ../bin/src/ui_transcoderoptionsvorbis.h:201 -#: ../bin/src/ui_transcoderoptionswma.h:78 ../bin/src/ui_equalizerslider.h:82 -#: ../bin/src/ui_fileview.h:107 ../bin/src/ui_loginstatewidget.h:171 -#: ../bin/src/ui_trackslider.h:69 ../bin/src/ui_visualisationoverlay.h:182 -msgid "Form" -msgstr "Biçim" - -#: ../bin/src/ui_magnatunedownloaddialog.h:136 -msgid "Format" -msgstr "Biçim" - -#: analyzers/analyzercontainer.cpp:46 -#: visualisations/visualisationcontainer.cpp:104 -msgid "Framerate" -msgstr "Kare oranı" - -#: ../bin/src/ui_transcoderoptionsspeex.h:236 -msgid "Frames per buffer" -msgstr "Tampon başına kare" - -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Arkadaşlar" - -#: moodbar/moodbarrenderer.cpp:157 -msgid "Frozen" -msgstr "Soğuk" - -#: ui/equalizer.cpp:120 -msgid "Full Bass" -msgstr "Full Bass" - -#: ui/equalizer.cpp:122 -msgid "Full Bass + Treble" -msgstr "Full Bass + Tiz" - -#: ui/equalizer.cpp:121 -msgid "Full Treble" -msgstr "Yüksek tiz" - -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer ses motoru" - -#: ui/settingsdialog.cpp:131 -msgid "General" -msgstr "Genel" - -#: ../bin/src/ui_notificationssettingspage.h:437 -msgid "General settings" -msgstr "Genel ayarlar" - -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 -#: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 -#: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 -msgid "Genre" -msgstr "Tür" - -#: internet/groovesharkservice.cpp:542 -msgid "Get a URL to share this Grooveshark playlist" -msgstr "Bu Grooveshark çalma listesini paylaşmak için bir URL al" - -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 -msgid "Get a URL to share this Grooveshark song" -msgstr "Bu Grooveshark şarkısını paylaşmak için bir URL al" - -#: internet/groovesharkservice.cpp:790 -msgid "Getting Grooveshark popular songs" -msgstr "Grooveshark popüler şarkılar alınıyor" - -#: internet/somafmservice.cpp:114 -msgid "Getting channels" -msgstr "Kanallar alınıyor" - -#: internet/digitallyimportedservicebase.cpp:108 -msgid "Getting streams" -msgstr "Akışlar alınıyor" - -#: ../bin/src/ui_addstreamdialog.h:116 -msgid "Give it a name:" -msgstr "Bir isim verin:" - -#: ../bin/src/ui_addpodcastbyurl.h:78 -msgid "Go" -msgstr "Git" - -#: ../bin/src/ui_mainwindow.h:707 -msgid "Go to next playlist tab" -msgstr "Sıradaki listeye git" - -#: ../bin/src/ui_mainwindow.h:708 -msgid "Go to previous playlist tab" -msgstr "Önceki listeye git" - -#: ../bin/src/ui_googledrivesettingspage.h:103 -msgid "Google Drive" -msgstr "Google Drive" - -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 -#: ../bin/src/ui_coversearchstatisticsdialog.h:76 -#, qt-format -msgid "Got %1 covers out of %2 (%3 failed)" -msgstr "%2 kapaktan %1 tanesi alındı (%3 tanesi başarısız)" - -#: ../bin/src/ui_behavioursettingspage.h:206 -msgid "Grey out non existent songs in my playlists" -msgstr "Çalma listemde olmayan şarkıları gri göster" - -#: ../bin/src/ui_groovesharksettingspage.h:112 -msgid "Grooveshark" -msgstr "Grooveshark" - -#: internet/groovesharkservice.cpp:408 -msgid "Grooveshark login error" -msgstr "Grooveshark giriş hatası" - -#: internet/groovesharkservice.cpp:1162 -msgid "Grooveshark playlist's URL" -msgstr "Grooveshark çalma listesinin URL adresi" - -#: internet/groovesharkservice.cpp:603 -msgid "Grooveshark radio" -msgstr "Grooveshark radyo" - -#: internet/groovesharkservice.cpp:1140 -msgid "Grooveshark song's URL" -msgstr "Grooveshark şarkısının adresi" - -#: ../bin/src/ui_groupbydialog.h:124 -msgid "Group Library by..." -msgstr "Kütüpheneyi şuna göre grupla..." - -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 -msgid "Group by" -msgstr "Grupla" - -#: library/libraryfilterwidget.cpp:110 -msgid "Group by Album" -msgstr "Albüme göre grupla" - -#: library/libraryfilterwidget.cpp:104 -msgid "Group by Artist" -msgstr "Sanatçıya göre grupla" - -#: library/libraryfilterwidget.cpp:106 -msgid "Group by Artist/Album" -msgstr "Sanatçı/Albüme göre grupla" - -#: library/libraryfilterwidget.cpp:108 -msgid "Group by Artist/Year - Album" -msgstr "Sanatçı/Yıl - Albüme göre grupla" - -#: library/libraryfilterwidget.cpp:112 -msgid "Group by Genre/Album" -msgstr "Tür/Albüme göre grupla" - -#: library/libraryfilterwidget.cpp:114 -msgid "Group by Genre/Artist/Album" -msgstr "Tür/Sanatçı/Albüme göre grupla" - -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 -#: ../bin/src/ui_edittagdialog.h:691 -msgid "Grouping" -msgstr "Gruplandırma" - -#: podcasts/podcasturlloader.cpp:196 -msgid "HTML page did not contain any RSS feeds" -msgstr "HTML sayfası herhangi bir RSS beslemesi içermiyor" - -#: internet/subsonicsettingspage.cpp:135 -msgid "" -"HTTP 3xx status code received without URL, verify server configuration." -msgstr "HTTP 3xx durum kodu adressiz alındı, sunucu yapılandırmasını doğrulayın." - -#: ../bin/src/ui_networkproxysettingspage.h:163 -msgid "HTTP proxy" -msgstr "HTTP vekil sunucu" - -#: moodbar/moodbarrenderer.cpp:158 -msgid "Happy" -msgstr "Mutlu" - -#: ../bin/src/ui_deviceproperties.h:371 -msgid "Hardware information" -msgstr "Donanım bilgisi" - -#: ../bin/src/ui_deviceproperties.h:372 -msgid "Hardware information is only available while the device is connected." -msgstr "Donanım bilgisine sadece aygıt bağlıyken erişilebilir." - -#: ../bin/src/ui_transcoderoptionsmp3.h:202 -msgid "High" -msgstr "Yüksek" - -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 -#, qt-format -msgid "High (%1 fps)" -msgstr "Yüksek (%1 fps)" - -#: visualisations/visualisationcontainer.cpp:119 -msgid "High (1024x1024)" -msgstr "Yüksek (1024x1024)" - -#: internet/subsonicsettingspage.cpp:112 -msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "Sunucu bulunamadı, sunucu adresini denetleyin. Örnek: http://localhost:4040/" - -#: smartplaylists/searchterm.cpp:310 -msgid "Hours" -msgstr "Saat" - -#: core/backgroundstreams.cpp:30 -msgid "Hypnotoad" -msgstr "Hypnotoad" - -#: ../bin/src/ui_magnatunesettingspage.h:159 -msgid "I don't have a Magnatune account" -msgstr "Magnatune hesabım yok" - -#: ../bin/src/ui_deviceproperties.h:370 -msgid "Icon" -msgstr "Simge" - -#: widgets/fancytabwidget.cpp:674 -msgid "Icons on top" -msgstr "Üstteki simgeler" - -#: musicbrainz/tagfetcher.cpp:86 -msgid "Identifying song" -msgstr "Şarkı teşhis ediliyor" - -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 -msgid "" -"If you continue, this device will work slowly and songs copied to it may not" -" work." -msgstr "Devam ederseniz, aygıt yavaş çalışacak ve kopyaladığınız şarkılar düzgün çalışmayacak." - -#: ../bin/src/ui_addpodcastbyurl.h:77 -msgid "If you know the URL of a podcast, enter it below and press Go." -msgstr "Eğer bir podcast'ın URL adresini biliyorsanız, aşağıya yazın ve Git'e basın." - -#: ../bin/src/ui_organisedialog.h:204 -msgid "Ignore \"The\" in artist names" -msgstr "Sanatçı isimlerinde \"The\" kelimesini önemseme" - -#: ui/albumcoverchoicecontroller.cpp:43 -msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -msgstr "Resimler (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" - -#: ui/albumcoverchoicecontroller.cpp:45 -msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -msgstr "Resimler (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" - -#: core/utilities.cpp:147 -#, qt-format -msgid "In %1 days" -msgstr "%1 günde" - -#: core/utilities.cpp:151 -#, qt-format -msgid "In %1 weeks" -msgstr "%1 haftada" - -#: ../bin/src/ui_wizardfinishpage.h:86 -msgid "" -"In dynamic mode new tracks will be chosen and added to the playlist every " -"time a song finishes." -msgstr "Dinamik kipte yeni şarkılar seçilerek, her şarkı bittiğinde çalma listesine eklenecektir." - -#: internet/spotifyservice.cpp:360 -msgid "Inbox" -msgstr "Gelen Kutusu" - -#: ../bin/src/ui_notificationssettingspage.h:443 -msgid "Include album art in the notification" -msgstr "Bildirimde albüm resimlendirmesini göster" - -#: ../bin/src/ui_querysearchpage.h:118 -msgid "Include all songs" -msgstr "Tüm şarkıları içer" - -#: internet/subsonicsettingspage.cpp:90 -msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "Uyumsuz Subsonic REST protokol sürümü. İstemci yükseltilmeli." - -#: internet/subsonicsettingspage.cpp:94 -msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "Uyumsuz Subsonic REST protokol sürümü. Sunucu yükseltilmeli." - -#: internet/subsonicsettingspage.cpp:127 -msgid "Incomplete configuration, please ensure all fields are populated." -msgstr "Tamamlanmamış yapılandırma, lütfen tüm alanların dolduğundan emin olun" - -#: core/commandlineoptions.cpp:158 -msgid "Increase the volume by 4%" -msgstr "Ses seviyesini 4% arttır" - -#: core/commandlineoptions.cpp:160 -msgid "Increase the volume by percent" -msgstr " oranında sesi artırın" - -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 -msgid "Increase volume" -msgstr "Sesi arttır" - -#: internet/cloudfileservice.cpp:136 -#, qt-format -msgid "Indexing %1" -msgstr "%1 İndekslendi" - -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 -msgid "Information" -msgstr "Bilgi" - -#: ../bin/src/ui_organisedialog.h:203 -msgid "Insert..." -msgstr "Ekle..." - -#: internet/spotifysettingspage.cpp:75 -msgid "Installed" -msgstr "Kuruldu" - -#: core/database.cpp:587 -msgid "Integrity check" -msgstr "Bütünlük doğrulaması" - -#: ui/mainwindow.cpp:241 -msgid "Internet" -msgstr "Internet" - -#: ui/settingsdialog.cpp:153 -msgid "Internet providers" -msgstr "İnternet sağlayıcılar" - -#: internet/lastfmservice.cpp:433 -msgid "Invalid API key" -msgstr "Geçersiz API anahtarı" - -#: internet/lastfmservice.cpp:428 -msgid "Invalid format" -msgstr "Geçersiz biçim" - -#: internet/lastfmservice.cpp:426 -msgid "Invalid method" -msgstr "Geçersiz metod" - -#: internet/lastfmservice.cpp:429 -msgid "Invalid parameters" -msgstr "Geçersiz parametreler" - -#: internet/lastfmservice.cpp:430 -msgid "Invalid resource specified" -msgstr "Geçersiz kaynak belirtildi" - -#: internet/lastfmservice.cpp:425 -msgid "Invalid service" -msgstr "Geçersiz servis" - -#: internet/lastfmservice.cpp:432 -msgid "Invalid session key" -msgstr "Geçersiz oturum anahtarı" - -#: internet/groovesharkservice.cpp:401 -msgid "Invalid username and/or password" -msgstr "Geçersiz kullanici adi yada şifre" - -#: internet/jamendoservice.cpp:127 -msgid "Jamendo" -msgstr "Jamendo" - -#: internet/jamendoservice.cpp:109 -msgid "Jamendo Most Listened Tracks" -msgstr "Jamendo En Çok Dinlenen Parçalar" - -#: internet/jamendoservice.cpp:107 -msgid "Jamendo Top Tracks" -msgstr "Jamendo Zirvedeki Parçalar" - -#: internet/jamendoservice.cpp:103 -msgid "Jamendo Top Tracks of the Month" -msgstr "Jamendo Ayın Zirvedeki Parçaları" - -#: internet/jamendoservice.cpp:105 -msgid "Jamendo Top Tracks of the Week" -msgstr "Jamendo Haftanın Zirvedeki Parçaları" - -#: internet/jamendoservice.cpp:171 -msgid "Jamendo database" -msgstr "Jamendo veritabanı" - -#: ../bin/src/ui_mainwindow.h:699 -msgid "Jump to the currently playing track" -msgstr "Şu anda çalınan parçaya atla" - -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 -#, qt-format -msgid "Keep buttons for %1 second..." -msgstr "Düğmeleri %1 saniye tut..." - -#: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 -#, qt-format -msgid "Keep buttons for %1 seconds..." -msgstr "Düğmeleri %1 saniye tut..." - -#: ../bin/src/ui_behavioursettingspage.h:193 -msgid "Keep running in the background when the window is closed" -msgstr "Pencere kapandığında arkaplanda çalışmaya devam et" - -#: ../bin/src/ui_organisedialog.h:193 -msgid "Keep the original files" -msgstr "Orijinal dosyaları sakla" - -#: ../bin/src/ui_mainwindow.h:691 -msgid "Kittens" -msgstr "Kedicikler" - -#: ../bin/src/ui_behavioursettingspage.h:195 -msgid "Language" -msgstr "Dil" - -#: ui/equalizer.cpp:123 -msgid "Laptop/Headphones" -msgstr "Dizüstü/Kulaklık" - -#: ui/equalizer.cpp:124 -msgid "Large Hall" -msgstr "Geniş Salon" - -#: widgets/nowplayingwidget.cpp:94 -msgid "Large album cover" -msgstr "Geniş albüm kapağı" - -#: widgets/fancytabwidget.cpp:670 -msgid "Large sidebar" -msgstr "Büyük kenar çubuğu" - -#: library/library.cpp:71 playlist/playlist.cpp:1222 -#: ../bin/src/ui_edittagdialog.h:671 -msgid "Last played" -msgstr "Son çalınan" - -#: ../bin/src/ui_lastfmsettingspage.h:150 -msgid "Last.fm" -msgstr "Last.fm" - -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Las.fm Kişisel Radyo: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Kütüphanesi - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Karışık Radyo - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Komşu Radyo - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radyo İstasyonu - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm %1 ile Benzer Sanatçılar" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Etiket Radyosu: %1" - -#: internet/lastfmservice.cpp:437 -msgid "Last.fm is currently busy, please try again in a few minutes" -msgstr "Last.fm şu anda meşgul, lütfen birkaç dakika içinde tekrar deneyin" - -#: ../bin/src/ui_lastfmsettingspage.h:154 -msgid "Last.fm password" -msgstr "Last.fm parolası" - -#: songinfo/lastfmtrackinfoprovider.cpp:78 -msgid "Last.fm play counts" -msgstr "Last.fm çalma sayısı" - -#: songinfo/lastfmtrackinfoprovider.cpp:131 -msgid "Last.fm tags" -msgstr "Last.fm etiketleri" - -#: ../bin/src/ui_lastfmsettingspage.h:152 -msgid "Last.fm username" -msgstr "Last.fm kullanıcı adı" - -#: songinfo/lastfmtrackinfoprovider.cpp:111 -msgid "Last.fm wiki" -msgstr "Last.fm wiki" - -#: library/library.cpp:87 -msgid "Least favourite tracks" -msgstr "Az beğenilen parçalar" - -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Öntanımlıların kullanılması için boş bırakın. Örnekler: \"/dev/dsp\", \"front\" vs." - -#: ../bin/src/ui_equalizer.h:172 -msgid "Left" -msgstr "So" - -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 -msgid "Length" -msgstr "Süre" - -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 -msgid "Library" -msgstr "Kütüphane" - -#: ../bin/src/ui_groupbydialog.h:122 -msgid "Library advanced grouping" -msgstr "Kütüphane gelişmiş gruplama" - -#: ui/mainwindow.cpp:2121 -msgid "Library rescan notice" -msgstr "Kütüphane yeniden tarama bildirisi" - -#: smartplaylists/querywizardplugin.cpp:86 -msgid "Library search" -msgstr "Kütüphane araması" - -#: ../bin/src/ui_querysortpage.h:140 -msgid "Limits" -msgstr "Limitler" - -#: internet/groovesharkservice.cpp:604 -msgid "" -"Listen to Grooveshark songs based on what you've listened to previously" -msgstr "Daha önceden dinlediğiniz şarkılar temel alınarak Grooveshark şarkıları dinleyin" - -#: ui/equalizer.cpp:125 -msgid "Live" -msgstr "Canlı" - -#: ../bin/src/ui_albumcovermanager.h:217 -msgid "Load" -msgstr "Yükle" - -#: ../bin/src/ui_coverfromurldialog.h:102 -msgid "Load cover from URL" -msgstr "Bağlantıdan kapak al" - -#: ui/albumcoverchoicecontroller.cpp:61 -msgid "Load cover from URL..." -msgstr "Kapağı bu URL'den yükle..." - -#: ui/albumcoverchoicecontroller.cpp:98 -msgid "Load cover from disk" -msgstr "Diskten kapak yükle" - -#: ui/albumcoverchoicecontroller.cpp:59 -msgid "Load cover from disk..." -msgstr "Albüm kapağını diskten yükle..." - -#: playlist/playlistcontainer.cpp:286 -msgid "Load playlist" -msgstr "Çalma listesini yükle" - -#: ../bin/src/ui_mainwindow.h:705 -msgid "Load playlist..." -msgstr "Çalma listesi yükle..." - -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm radyosu yükleniyor" - -#: devices/mtploader.cpp:42 -msgid "Loading MTP device" -msgstr "MTP aygıtı yükleniyor" - -#: devices/gpodloader.cpp:46 -msgid "Loading iPod database" -msgstr "iPod veritabanı yükleniyor" - -#: smartplaylists/generatorinserter.cpp:52 -msgid "Loading smart playlist" -msgstr "Akıllı çalma listesi yükleniyor" - -#: library/librarymodel.cpp:139 -msgid "Loading songs" -msgstr "Şarkılar yükleniyor" - -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 -msgid "Loading stream" -msgstr "Yayın akışı yükleniyor" - -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 -msgid "Loading tracks" -msgstr "Parçalar yükleniyor" - -#: playlist/songloaderinserter.cpp:139 -msgid "Loading tracks info" -msgstr "Parça bilgileri yükleniyor" - -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 -#: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 -msgid "Loading..." -msgstr "Yükleniyor..." - -#: core/commandlineoptions.cpp:167 -msgid "Loads files/URLs, replacing current playlist" -msgstr "Dosyaları/URLleri yükler, mevcut çalma listesinin yerine koyar" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 -#: ../bin/src/ui_magnatunesettingspage.h:164 -#: ../bin/src/ui_spotifysettingspage.h:211 -#: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_lastfmsettingspage.h:153 -#: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 -msgid "Login" -msgstr "Oturum aç" - -#: podcasts/podcastsettingspage.cpp:119 -msgid "Login failed" -msgstr "Giriş başarısız oldu." - -#: ../bin/src/ui_transcoderoptionsaac.h:137 -msgid "Long term prediction profile (LTP)" -msgstr "Long term prediction profile (LTP)" - -#: ../bin/src/ui_mainwindow.h:660 -msgid "Love" -msgstr "Beğen" - -#: analyzers/analyzercontainer.cpp:62 -#: visualisations/visualisationcontainer.cpp:107 -#, qt-format -msgid "Low (%1 fps)" -msgstr "Düşük (%1 fps)" - -#: visualisations/visualisationcontainer.cpp:117 -msgid "Low (256x256)" -msgstr "Düşük (256x256)" - -#: ../bin/src/ui_transcoderoptionsaac.h:135 -msgid "Low complexity profile (LC)" -msgstr "Düşük karmaşıklık profili (LC)" - -#: ../bin/src/ui_songinfosettingspage.h:159 -msgid "Lyrics" -msgstr "Şarkı sözleri" - -#: songinfo/ultimatelyricsprovider.cpp:156 -#, qt-format -msgid "Lyrics from %1" -msgstr "%1 sitesinden şarkı sözleri" - -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 -msgid "MP3" -msgstr "MP3" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:177 -msgid "MP3 256k" -msgstr "MP3 256k" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:170 -msgid "MP3 96k" -msgstr "MP3 96k" - -#: core/song.cpp:341 -msgid "MP4 AAC" -msgstr "MP4 AAC" - -#: core/song.cpp:342 -msgid "MPC" -msgstr "MPC" - -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 -msgid "Magnatune" -msgstr "Magnatune" - -#: ../bin/src/ui_magnatunedownloaddialog.h:131 -msgid "Magnatune Download" -msgstr "Magnatune İndir" - -#: widgets/osd.cpp:195 -msgid "Magnatune download finished" -msgstr "Magnatune indirme bitti" - -#: ../bin/src/ui_transcoderoptionsaac.h:134 -msgid "Main profile (MAIN)" -msgstr "Ana profil (MAIN)" - -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 -msgid "Make it so!" -msgstr "Yap gitsin!" - -#: internet/spotifyservice.cpp:533 -msgid "Make playlist available offline" -msgstr "Çalma listesini çevrim dışındayken kullanılabilir yap" - -#: internet/lastfmservice.cpp:444 -msgid "Malformed response" -msgstr "Bozuk yanıt" - -#: ../bin/src/ui_networkproxysettingspage.h:160 -msgid "Manual proxy configuration" -msgstr "Elle vekil sunucu yapılandırma" - -#: ../bin/src/ui_podcastsettingspage.h:231 -#: ../bin/src/ui_podcastsettingspage.h:245 -msgid "Manually" -msgstr "El ile" - -#: devices/deviceproperties.cpp:153 -msgid "Manufacturer" -msgstr "Üretici" - -#: podcasts/podcastservice.cpp:284 -msgid "Mark as listened" -msgstr "Dinlenmiş olarak işaretle" - -#: podcasts/podcastservice.cpp:282 -msgid "Mark as new" -msgstr "Yeni olarak işaretle" - -#: ../bin/src/ui_querysearchpage.h:116 -msgid "Match every search term (AND)" -msgstr "Her arama terimiyle eşleştir (VE)" - -#: ../bin/src/ui_querysearchpage.h:117 -msgid "Match one or more search terms (OR)" -msgstr "Bir veya daha fazla arama terimiyle eşleştir (VEYA)" - -#: ../bin/src/ui_transcoderoptionsvorbis.h:209 -msgid "Maximum bitrate" -msgstr "Maksimum bit oranı" - -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 -#, qt-format -msgid "Medium (%1 fps)" -msgstr "Orta (%1 fps)" - -#: visualisations/visualisationcontainer.cpp:118 -msgid "Medium (512x512)" -msgstr "Orta (512x512)" - -#: ../bin/src/ui_magnatunesettingspage.h:156 -msgid "Membership type" -msgstr "Üyelik türü" - -#: ../bin/src/ui_transcoderoptionsvorbis.h:206 -msgid "Minimum bitrate" -msgstr "Minimum bit oranı" - -#: visualisations/projectmvisualisation.cpp:132 -msgid "Missing projectM presets" -msgstr "Eksik projectM ayarları" - -#: devices/deviceproperties.cpp:152 -msgid "Model" -msgstr "Model" - -#: ../bin/src/ui_librarysettingspage.h:192 -msgid "Monitor the library for changes" -msgstr "Kütüphanede olacak değişiklikleri izle" - -#: ../bin/src/ui_playbacksettingspage.h:332 -msgid "Mono playback" -msgstr "Tekli oynat" - -#: smartplaylists/searchterm.cpp:313 -msgid "Months" -msgstr "Ay" - -#: playlist/playlist.cpp:1237 -msgid "Mood" -msgstr "Atmosfer" - -#: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 -msgid "Moodbar style" -msgstr "Atmosfer çubuğu tasarımı" - -#: ../bin/src/ui_appearancesettingspage.h:292 -msgid "Moodbars" -msgstr "Atmosfer çubukları" - -#: library/library.cpp:74 -msgid "Most played" -msgstr "En fazla çalınan" - -#: devices/giolister.cpp:159 -msgid "Mount point" -msgstr "Bağlama noktası" - -#: devices/devicekitlister.cpp:125 -msgid "Mount points" -msgstr "Bağlama noktaları" - -#: ../bin/src/ui_globalsearchsettingspage.h:149 -#: ../bin/src/ui_queuemanager.h:131 ../bin/src/ui_songinfosettingspage.h:162 -msgid "Move down" -msgstr "Aşağı taşı" - -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 -msgid "Move to library..." -msgstr "Kütüphaneye taşı..." - -#: ../bin/src/ui_globalsearchsettingspage.h:148 -#: ../bin/src/ui_queuemanager.h:127 ../bin/src/ui_songinfosettingspage.h:161 -msgid "Move up" -msgstr "Yukarı taşı" - -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 -msgid "Music" -msgstr "Müzik" - -#: ../bin/src/ui_librarysettingspage.h:186 -msgid "Music Library" -msgstr "Müzik Kütüphanesi" - -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 -#: wiimotedev/wiimotesettingspage.cpp:105 -msgid "Mute" -msgstr "Sessiz" - -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Last.fm Kütüphanem" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Last.fm Karışık Radyom" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Last.fm Komşularım" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Last.fm Önerilen Radyom" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Karışık Radyom" - -#: internet/groovesharkservice.cpp:608 -msgid "My Music" -msgstr "Müziğim" - -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Komşularım" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Radyom" - -#: internet/lastfmservice.cpp:187 -msgid "My Recommendations" -msgstr "Önerdiklerim" - -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 -#: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 -msgid "Name" -msgstr "İsim" - -#: ../bin/src/ui_organisedialog.h:197 -msgid "Naming options" -msgstr "İsimlendirme seçenekleri" - -#: ../bin/src/ui_transcoderoptionsspeex.h:230 -msgid "Narrow band (NB)" -msgstr "Dar band (NB)" - -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Komşular" - -#: ../bin/src/ui_networkproxysettingspage.h:157 -msgid "Network Proxy" -msgstr "Vekil Sunucu" - -#: ../bin/src/ui_networkremotesettingspage.h:177 -msgid "Network Remote" -msgstr "Ağ Denetimi" - -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 -msgid "Never" -msgstr "Hiçbir zaman" - -#: library/library.cpp:67 -msgid "Never played" -msgstr "Hiç çalınmamış" - -#: ../bin/src/ui_behavioursettingspage.h:210 -#: ../bin/src/ui_behavioursettingspage.h:224 -msgid "Never start playing" -msgstr "Asla çalarak başlama" - -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 -#: ../bin/src/ui_playlistlistcontainer.h:128 -msgid "New folder" -msgstr "Yeni klasör" - -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 -msgid "New playlist" -msgstr "Yeni çalma listesi" - -#: library/libraryview.cpp:379 -msgid "New smart playlist..." -msgstr "Yeni akıllı çalma listesi..." - -#: widgets/freespacebar.cpp:46 -msgid "New songs" -msgstr "Yeni şarkılar" - -#: ../bin/src/ui_dynamicplaylistcontrols.h:110 -msgid "New tracks will be added automatically." -msgstr "Yeni parçalar otomatik olarak eklenecektir." - -#: library/library.cpp:80 -msgid "Newest tracks" -msgstr "En yeni parçalar" - -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 -msgid "Next" -msgstr "İleri" - -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:99 -msgid "Next track" -msgstr "Sonraki parça" - -#: core/utilities.cpp:149 -msgid "Next week" -msgstr "Gelecek hafta" - -#: analyzers/analyzercontainer.cpp:80 -msgid "No analyzer" -msgstr "Çözümleyici yok" - -#: ../bin/src/ui_appearancesettingspage.h:285 -msgid "No background image" -msgstr "Arkaplan resmi yok" - -#: ui/albumcovermanager.cpp:778 -msgid "No covers to export." -msgstr "Aktarılacak kapak yok." - -#: ../bin/src/ui_transcoderoptionsaac.h:146 -msgid "No long blocks" -msgstr "Uzun blok yok" - -#: playlist/playlistcontainer.cpp:366 -msgid "" -"No matches found. Clear the search box to show the whole playlist again." -msgstr "Eşleşen bulunmadı. Çalma listesini tekrar görmek için arama çubuğunu temizleyin." - -#: ../bin/src/ui_transcoderoptionsaac.h:145 -msgid "No short blocks" -msgstr "Kısa blok yok" - -#: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 -#: ../bin/src/ui_groupbydialog.h:156 -msgid "None" -msgstr "Hiçbiri" - -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 -msgid "None of the selected songs were suitable for copying to a device" -msgstr "Seçili şarkıların hiçbiri aygıta yüklemeye uygun değil" - -#: moodbar/moodbarrenderer.cpp:155 -msgid "Normal" -msgstr "Normal" - -#: ../bin/src/ui_transcoderoptionsaac.h:144 -msgid "Normal block type" -msgstr "Normal blok tipi" - -#: playlist/playlistsequence.cpp:170 -msgid "Not available while using a dynamic playlist" -msgstr "Dinamik şarkı listesi kullanırken geçerli değil" - -#: devices/deviceview.cpp:107 -msgid "Not connected" -msgstr "Bağlı Değil" - -#: internet/lastfmservice.cpp:439 -msgid "Not enough content" -msgstr "Yeterli içerik yok" - -#: internet/lastfmservice.cpp:441 -msgid "Not enough fans" -msgstr "Yeterli hayran yok" - -#: internet/lastfmservice.cpp:440 -msgid "Not enough members" -msgstr "Yeterli üye yok" - -#: internet/lastfmservice.cpp:442 -msgid "Not enough neighbors" -msgstr "Yeterli komşu yok" - -#: internet/spotifysettingspage.cpp:75 -msgid "Not installed" -msgstr "Kurulu değil" - -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 -msgid "Not logged in" -msgstr "Giriş yapmadınız" - -#: devices/deviceview.cpp:111 -msgid "Not mounted - double click to mount" -msgstr "Bağlı değil - bağlamak için çift tıklayın" - -#: ../bin/src/ui_notificationssettingspage.h:432 -msgid "Notification type" -msgstr "Bildirim türü" - -#: ../bin/src/ui_notificationssettingspage.h:375 -msgid "Notifications" -msgstr "Bildirimler" - -#: ui/macsystemtrayicon.mm:64 -msgid "Now Playing" -msgstr "Şimdi Çalıyor" - -#: ui/notificationssettingspage.cpp:37 -msgid "OSD Preview" -msgstr "OSD Önizleme" - -#: widgets/osd.cpp:171 -msgid "Off" -msgstr "Kapalı" - -#: core/song.cpp:344 -msgid "Ogg Flac" -msgstr "Ogg Flac" - -#: core/song.cpp:347 -msgid "Ogg Opus" -msgstr "Ogg Opus" - -#: core/song.cpp:345 -msgid "Ogg Speex" -msgstr "Ogg Speex" - -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 -#: ../bin/src/ui_magnatunesettingspage.h:170 -msgid "Ogg Vorbis" -msgstr "Ogg Vorbis" - -#: widgets/osd.cpp:171 -msgid "On" -msgstr "Açık" - -#: ../bin/src/ui_networkremotesettingspage.h:182 -msgid "" -"Only accept connections from clients within the ip ranges:\n" -"10.x.x.x\n" -"172.16.0.0 - 172.31.255.255\n" -"192.168.x.x" -msgstr "Sadece bu IP aralıklarındaki istemcilerden bağlantı kabul et:\\n 10.x.x.x\\n 172.16.0.0 - 172.31.255.255\\n 192.168.x.x" - -#: ../bin/src/ui_networkremotesettingspage.h:187 -msgid "Only allow connections from the local network" -msgstr "Sadece yerel ağdan bağlantılara izin ver" - -#: ../bin/src/ui_querysortpage.h:142 -msgid "Only show the first" -msgstr "Sadece ilki göster" - -#: ../bin/src/ui_appearancesettingspage.h:290 -msgid "Opacity" -msgstr "Opaklık" - -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 -#, qt-format -msgid "Open %1 in browser" -msgstr "Tarayıcıda aç: %1" - -#: ../bin/src/ui_mainwindow.h:686 -msgid "Open &audio CD..." -msgstr "&Ses CD'si aç..." - -#: podcasts/addpodcastdialog.cpp:230 -msgid "Open OPML file" -msgstr "OPML dosyası aç" - -#: podcasts/addpodcastdialog.cpp:73 -msgid "Open OPML file..." -msgstr "OPML dosyasını aç..." - -#: ../bin/src/ui_deviceproperties.h:382 -msgid "Open device" -msgstr "Aygıtı aç" - -#: ../bin/src/ui_mainwindow.h:685 -msgid "Open file..." -msgstr "Dosya aç..." - -#: internet/googledriveservice.cpp:184 -msgid "Open in Google Drive" -msgstr "Google Drive'da aç" - -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 -msgid "Open in new playlist" -msgstr "Yeni çalma listesinde aç" - -#: songinfo/echonestbiographies.cpp:96 -msgid "Open in your browser" -msgstr "Tarayınızda açın" - -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 -msgid "Open..." -msgstr "Aç..." - -#: internet/lastfmservice.cpp:431 -msgid "Operation failed" -msgstr "İşlem başarısız" - -#: ../bin/src/ui_transcoderoptionsmp3.h:193 -msgid "Optimize for bitrate" -msgstr "Bit oranı için eniyileştir" - -#: ../bin/src/ui_transcoderoptionsmp3.h:191 -msgid "Optimize for quality" -msgstr "Kalite için eniyileştir" - -#: ../bin/src/ui_transcodedialog.h:213 -msgid "Options..." -msgstr "Seçenekler..." - -#: ../bin/src/ui_transcodersettingspage.h:181 -msgid "Opus" -msgstr "Opus" - -#: ../bin/src/ui_organisedialog.h:188 -msgid "Organise Files" -msgstr "Dosyaları Düzenle" - -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 -msgid "Organise files..." -msgstr "Dosyaları düzenle..." - -#: core/organise.cpp:65 -msgid "Organising files" -msgstr "Dosyalar düzenleniyor" - -#: ui/trackselectiondialog.cpp:167 -msgid "Original tags" -msgstr "Özgün etiketler" - -#: core/commandlineoptions.cpp:169 -msgid "Other options" -msgstr "Diğer seçenekler" - -#: ../bin/src/ui_albumcoverexport.h:204 -msgid "Output" -msgstr "Çıktı" - -#: ../bin/src/ui_playbacksettingspage.h:325 -msgid "Output device" -msgstr "Çıktı aygıtı" - -#: ../bin/src/ui_transcodedialog.h:211 -msgid "Output options" -msgstr "Çıktı seçenekleri" - -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Çıktı eklentisi" - -#: ../bin/src/ui_albumcoverexport.h:210 -msgid "Overwrite all" -msgstr "Tümünün üzerine yaz" - -#: ../bin/src/ui_organisedialog.h:207 -msgid "Overwrite existing files" -msgstr "Mevcut dosyaların üzerine yaz" - -#: ../bin/src/ui_albumcoverexport.h:211 -msgid "Overwrite smaller ones only" -msgstr "Sadece daha küçük olanların üzerine yaz" - -#: ../bin/src/ui_podcastinfowidget.h:195 -msgid "Owner" -msgstr "Sahibi" - -#: internet/jamendoservice.cpp:214 -msgid "Parsing Jamendo catalogue" -msgstr "Jamendo kataloğu ayrıştırılıyor" - -#: ui/equalizer.cpp:126 -msgid "Party" -msgstr "Parti" - -#: ../bin/src/ui_groovesharksettingspage.h:115 -#: ../bin/src/ui_magnatunesettingspage.h:165 -#: ../bin/src/ui_spotifysettingspage.h:210 -#: ../bin/src/ui_subsonicsettingspage.h:128 -#: ../bin/src/ui_podcastsettingspage.h:253 -#: ../bin/src/ui_networkproxysettingspage.h:169 -msgid "Password" -msgstr "Parola" - -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 -msgid "Pause" -msgstr "Duraklat" - -#: core/commandlineoptions.cpp:153 -msgid "Pause playback" -msgstr "Beklet" - -#: widgets/osd.cpp:156 -msgid "Paused" -msgstr "Duraklatıldı" - -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 -#: ../bin/src/ui_edittagdialog.h:690 -msgid "Performer" -msgstr "Sanatçı" - -#: ../bin/src/ui_albumcoverexport.h:215 -msgid "Pixel" -msgstr "Piksel" - -#: widgets/fancytabwidget.cpp:672 -msgid "Plain sidebar" -msgstr "Düz kenar çubuğu" - -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 -#: wiimotedev/wiimotesettingspage.cpp:101 -msgid "Play" -msgstr "Çal" - -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Sanatçı veya Etiket Çal" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Sanatçı radyosu çal..." - -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 -msgid "Play count" -msgstr "Çalma sayısı" - -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Özel radyo çal..." - -#: core/commandlineoptions.cpp:152 -msgid "Play if stopped, pause if playing" -msgstr "Duraklatılmışsa çal, çalıyorsa beklet" - -#: ../bin/src/ui_behavioursettingspage.h:211 -#: ../bin/src/ui_behavioursettingspage.h:225 -msgid "Play if there is nothing already playing" -msgstr "Çalan bir şey yoksa çal" - -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Etiket radyosu çal..." - -#: core/commandlineoptions.cpp:168 -msgid "Play the th track in the playlist" -msgstr "Listedeki numaralı parçayı çal" - -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 -msgid "Play/Pause" -msgstr "Çal/Duraklat" - -#: ../bin/src/ui_playbacksettingspage.h:297 -msgid "Playback" -msgstr "Oynat" - -#: core/commandlineoptions.cpp:150 -msgid "Player options" -msgstr "Oynatıcı seçenekleri" - -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 -msgid "Playlist" -msgstr "Çalma Listesi" - -#: widgets/osd.cpp:178 -msgid "Playlist finished" -msgstr "Parça listesi tamamlandı" - -#: core/commandlineoptions.cpp:165 -msgid "Playlist options" -msgstr "Çalma listesi seçenekleri" - -#: smartplaylists/wizard.cpp:77 -msgid "Playlist type" -msgstr "Çalma listesi türü" - -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 -msgid "Playlists" -msgstr "Çalma listeleri" - -#: ../data/oauthsuccess.html:38 -msgid "Please close your browser and return to Clementine." -msgstr "Lütfen tarayıcınızı kapatıp Clementine'e geri dönün." - -#: ../bin/src/ui_spotifysettingspage.h:214 -msgid "Plugin status:" -msgstr "Eklenti durumu:" - -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 -msgid "Podcasts" -msgstr "Podcastlar" - -#: ui/equalizer.cpp:127 -msgid "Pop" -msgstr "Pop" - -#: internet/groovesharkservice.cpp:577 -msgid "Popular songs" -msgstr "Popüler şarkılar" - -#: internet/groovesharkservice.cpp:580 -msgid "Popular songs of the Month" -msgstr "Bu ayın popüler şarkıları" - -#: internet/groovesharkservice.cpp:587 -msgid "Popular songs today" -msgstr "Bugünün popüler şarkıları" - -#: ../bin/src/ui_notificationssettingspage.h:438 -msgid "Popup duration" -msgstr "Açılır pencere süresi" - -#: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 -msgid "Port" -msgstr "Port" - -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 -msgid "Pre-amp" -msgstr "Ön yükseltici" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:166 -#: ../bin/src/ui_magnatunesettingspage.h:166 -#: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 -msgid "Preferences" -msgstr "Tercihler" - -#: ../bin/src/ui_mainwindow.h:675 -msgid "Preferences..." -msgstr "Tercihler..." - -#: ../bin/src/ui_librarysettingspage.h:202 -msgid "Preferred album art filenames (comma separated)" -msgstr "Tercih edilen albüm kapağı dosya adları (virgülle ayırın)" - -#: ../bin/src/ui_magnatunesettingspage.h:167 -msgid "Preferred audio format" -msgstr "Tercih edilen ses biçimleri" - -#: ../bin/src/ui_spotifysettingspage.h:217 -msgid "Preferred bitrate" -msgstr "Tercih edilen bit oranı" - -#: ../bin/src/ui_deviceproperties.h:380 -msgid "Preferred format" -msgstr "Tercih edilen biçim" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:174 -msgid "Premium audio type" -msgstr "Premium ses tipi" - -#: ../bin/src/ui_equalizer.h:164 -msgid "Preset:" -msgstr "Ayar:" - -#: ../bin/src/ui_wiimoteshortcutgrabber.h:124 -msgid "Press a button combination to use for" -msgstr "Kullanmak için bir tuş kombinasyonuna basın" - -#: ../bin/src/ui_globalshortcutgrabber.h:73 -msgid "Press a key" -msgstr "Bir tuşa basın" - -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 -#, qt-format -msgid "Press a key combination to use for %1..." -msgstr "%1 için kullanmak için bir tuş kombinasyonun basın..." - -#: ../bin/src/ui_notificationssettingspage.h:451 -msgid "Pretty OSD options" -msgstr "OSD seçenekleri" - -#: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 -#: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 -msgid "Preview" -msgstr "Önizleme" - -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 -msgid "Previous" -msgstr "Önceki" - -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 -#: wiimotedev/wiimotesettingspage.cpp:100 -msgid "Previous track" -msgstr "Önceki parça" - -#: core/commandlineoptions.cpp:176 -msgid "Print out version information" -msgstr "Sürüm bilgisini bastır" - -#: ../bin/src/ui_transcoderoptionsaac.h:131 -msgid "Profile" -msgstr "Profil" - -#: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 -msgid "Progress" -msgstr "İlerleme" - -#: ui/equalizer.cpp:129 -msgid "Psychedelic" -msgstr "Psikodelik" - -#: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 -msgid "Push Wiiremote button" -msgstr "Wiiremote düğmesine basın" - -#: ../bin/src/ui_querysortpage.h:138 -msgid "Put songs in a random order" -msgstr "Şarkıları rastgele sırala" - -#: ../bin/src/ui_transcoderoptionsflac.h:81 -#: ../bin/src/ui_transcoderoptionsmp3.h:192 -#: ../bin/src/ui_transcoderoptionsspeex.h:217 -#: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 -msgid "Quality" -msgstr "Kalite" - -#: ../bin/src/ui_deviceproperties.h:383 -msgid "Querying device..." -msgstr "Aygıt sorgulanıyor..." - -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 -msgid "Queue Manager" -msgstr "Kuyruk Yöneticisi" - -#: ui/mainwindow.cpp:1378 -msgid "Queue selected tracks" -msgstr "Seçili parçaları kuyruğa ekle" - -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 -msgid "Queue track" -msgstr "Parçayı kuyruğa ekle" - -#: ../bin/src/ui_playbacksettingspage.h:314 -msgid "Radio (equal loudness for all tracks)" -msgstr "Radyo (tüm parçalar için eşit ses seviyesi)" - -#: internet/groovesharkservice.cpp:595 -msgid "Radios" -msgstr "Radyolar" - -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 -msgid "Rain" -msgstr "Yağmur" - -#: ../bin/src/ui_visualisationselector.h:112 -msgid "Random visualization" -msgstr "Karışık görseller" - -#: core/globalshortcuts.cpp:65 -msgid "Rate the current song 0 stars" -msgstr "Geçerli şarkıyı 0 yıldızla oyla" - -#: core/globalshortcuts.cpp:66 -msgid "Rate the current song 1 star" -msgstr "Geçerli şarkıyı 1 yıldızla oyla" - -#: core/globalshortcuts.cpp:67 -msgid "Rate the current song 2 stars" -msgstr "Geçerli şarkıyı 2 yıldızla oyla" - -#: core/globalshortcuts.cpp:68 -msgid "Rate the current song 3 stars" -msgstr "Geçerli şarkıyı 3 yıldızla oyla" - -#: core/globalshortcuts.cpp:69 -msgid "Rate the current song 4 stars" -msgstr "Geçerli şarkıyı 4 yıldızla oyla" - -#: core/globalshortcuts.cpp:70 -msgid "Rate the current song 5 stars" -msgstr "Geçerli şarkıyı 5 yıldızla oyla" - -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 -msgid "Rating" -msgstr "Beğeni" - -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 -msgid "Really cancel?" -msgstr "Gerçekten iptal edeyim mi?" - -#: internet/subsonicsettingspage.cpp:131 -msgid "Redirect limit exceeded, verify server configuration." -msgstr "Yönlendirme limiti aşıldı, sunucu yapılandırmasını doğrulayın." - -#: internet/groovesharkservice.cpp:549 -msgid "Refresh" -msgstr "Yenile" - -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 -msgid "Refresh catalogue" -msgstr "Kataloğu yenile" - -#: internet/somafmservice.cpp:106 -msgid "Refresh channels" -msgstr "Kanalları yenile" - -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Arkadaş listesini yenile" - -#: internet/icecastservice.cpp:297 -msgid "Refresh station list" -msgstr "İstasyon listesini yenile" - -#: internet/digitallyimportedservicebase.cpp:182 -msgid "Refresh streams" -msgstr "Akışları yenile" - -#: ui/equalizer.cpp:130 -msgid "Reggae" -msgstr "Reggae" - -#: ../bin/src/ui_wiimoteshortcutgrabber.h:126 -msgid "Remember Wii remote swing" -msgstr "Wii kumanda sallamayı hatırla" - -#: ../bin/src/ui_behavioursettingspage.h:204 -msgid "Remember from last time" -msgstr "Son seferkinden hatırla" - -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 -msgid "Remove" -msgstr "Kaldır" - -#: ../bin/src/ui_wiimotesettingspage.h:194 -msgid "Remove action" -msgstr "Eylemi kaldır" - -#: ../bin/src/ui_mainwindow.h:720 -msgid "Remove duplicates from playlist" -msgstr "Şarkı listesindeki çiftleri birleştir" - -#: ../bin/src/ui_librarysettingspage.h:189 -msgid "Remove folder" -msgstr "Klasörü kaldır..." - -#: internet/groovesharkservice.cpp:536 -msgid "Remove from My Music" -msgstr "Müziklerimden sil" - -#: internet/groovesharkservice.cpp:533 -msgid "Remove from favorites" -msgstr "Favorilerden kaldır" - -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 -msgid "Remove from playlist" -msgstr "Çalma listesinden kaldır" - -#: playlist/playlisttabbar.cpp:174 -msgid "Remove playlist" -msgstr "Çalma listesini kaldır" - -#: playlist/playlistlistcontainer.cpp:315 -msgid "Remove playlists" -msgstr "Çalma listesini kaldır" - -#: internet/groovesharkservice.cpp:1539 -msgid "Removing songs from My Music" -msgstr "Parçalar müziklerimden siliniyor" - -#: internet/groovesharkservice.cpp:1489 -msgid "Removing songs from favorites" -msgstr "Parçalar favorilerimden siliniyor" - -#: internet/groovesharkservice.cpp:1337 -#, qt-format -msgid "Rename \"%1\" playlist" -msgstr "\"%1\" çalma listesini yeniden adlandır" - -#: internet/groovesharkservice.cpp:526 -msgid "Rename Grooveshark playlist" -msgstr "Grooveshark çalma listesini yeniden adlandır" - -#: playlist/playlisttabbar.cpp:137 -msgid "Rename playlist" -msgstr "Çalma listesini yeniden adlandır" - -#: playlist/playlisttabbar.cpp:55 -msgid "Rename playlist..." -msgstr "Çalma listesini yeniden adlandır..." - -#: ../bin/src/ui_mainwindow.h:671 -msgid "Renumber tracks in this order..." -msgstr "Parçaları bu sırada hatırla..." - -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 -msgid "Repeat" -msgstr "Tekrarla" - -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 -msgid "Repeat album" -msgstr "Albümü tekrarla" - -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 -msgid "Repeat playlist" -msgstr "Çalma listesini tekrarla" - -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 -msgid "Repeat track" -msgstr "Parçayı tekrarla" - -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 -#: widgets/fileviewlist.cpp:34 -msgid "Replace current playlist" -msgstr "Şu anki çalma listesinin yerine geç" - -#: ../bin/src/ui_behavioursettingspage.h:218 -msgid "Replace the playlist" -msgstr "Çalma listesinin yerine geç" - -#: ../bin/src/ui_organisedialog.h:205 -msgid "Replaces spaces with underscores" -msgstr "Boşlukları alt çizgiyle değiştirir" - -#: ../bin/src/ui_playbacksettingspage.h:309 -msgid "Replay Gain" -msgstr "Replay Gain" - -#: ../bin/src/ui_playbacksettingspage.h:311 -msgid "Replay Gain mode" -msgstr "Yeniden Oynatma Kazanç kipi" - -#: ../bin/src/ui_dynamicplaylistcontrols.h:112 -msgid "Repopulate" -msgstr "Yeniden doldur" - -#: ../bin/src/ui_networkremotesettingspage.h:191 -msgid "Require authentication code" -msgstr "Doğrulama kodu iste" - -#: widgets/lineedit.cpp:52 -msgid "Reset" -msgstr "Sıfırla" - -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 -msgid "Reset play counts" -msgstr "Çalma sayısını sıfırla" - -#: core/commandlineoptions.cpp:164 -msgid "" -"Restart the track, or play the previous track if within 8 seconds of start." -msgstr "Eğer başlangıçtan en fazla 8 saniye geçmişse parçayı yeniden başlat veya önceki parçayı çal." - -#: ../bin/src/ui_organisedialog.h:206 -msgid "Restrict to ASCII characters" -msgstr "ASCII karakterler olarak kısıtla" - -#: ../bin/src/ui_behavioursettingspage.h:205 -msgid "Resume playback on start" -msgstr "Başlarken çalmaya devam et" - -#: internet/groovesharkservice.cpp:758 -msgid "Retrieving Grooveshark My Music songs" -msgstr "Grooveshark'tan My Music şakıları çekiliyor" - -#: internet/groovesharkservice.cpp:726 -msgid "Retrieving Grooveshark favorites songs" -msgstr "Grooveşark favori şarkılar alınıyor" - -#: internet/groovesharkservice.cpp:663 -msgid "Retrieving Grooveshark playlists" -msgstr "Grooveshark çalma listeleri alınıyor" - -#: ../data/oauthsuccess.html:5 -msgid "Return to Clementine" -msgstr "Clementine'e Geri Dön" - -#: ../bin/src/ui_equalizer.h:174 -msgid "Right" -msgstr "Sağ" - -#: ui/equalizer.cpp:131 -msgid "Rock" -msgstr "Rock" - -#: ../bin/src/ui_console.h:81 -msgid "Run" -msgstr "Çalıştır" - -#: ../bin/src/ui_networkproxysettingspage.h:164 -msgid "SOCKS proxy" -msgstr "SOCKS vekil sunucu" - -#: internet/subsonicsettingspage.cpp:122 -msgid "" -"SSL handshake error, verify server configuration. SSLv3 option below may " -"workaround some issues." -msgstr "SSL anlaşma hatası, sunucu yapılandırmasını doğrulayın. SSLv3 seçeneği bazı durumlarda sorunu çözebilir." - -#: devices/deviceview.cpp:202 -msgid "Safely remove device" -msgstr "Aygıtı güvenli kaldır" - -#: ../bin/src/ui_organisedialog.h:196 -msgid "Safely remove the device after copying" -msgstr "Kopyalama işleminden sonra aygıtı güvenli kaldır" - -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 -msgid "Sample rate" -msgstr "Örnekleme oranı" - -#: ui/organisedialog.cpp:70 -msgid "Samplerate" -msgstr "Örneklemeoranı" - -#: ../bin/src/ui_appearancesettingspage.h:295 -msgid "Save .mood files in your music library" -msgstr ".mood dosyalarını müzik kütüphaneme kaydet" - -#: ui/albumcoverchoicecontroller.cpp:121 -msgid "Save album cover" -msgstr "Kapağı kaydet" - -#: ui/albumcoverchoicecontroller.cpp:60 -msgid "Save cover to disk..." -msgstr "Kapağı diske kaydet..." - -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 -msgid "Save image" -msgstr "Görüntüyü kaydet" - -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 -msgid "Save playlist" -msgstr "Çalma listesini kaydet" - -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 -msgid "Save playlist..." -msgstr "Çalma listesini kaydet..." - -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 -msgid "Save preset" -msgstr "Ayarı kaydet" - -#: ../bin/src/ui_librarysettingspage.h:193 -msgid "Save ratings in file tags when possible" -msgstr "Mümkün olduğunda beğenileri dosya etiketlerine kaydet" - -#: ../bin/src/ui_librarysettingspage.h:197 -msgid "Save statistics in file tags when possible" -msgstr "Mümkün olduğunda istatistikleri dosya etiketlerine kaydet" - -#: ../bin/src/ui_addstreamdialog.h:115 -msgid "Save this stream in the Internet tab" -msgstr "Bu akışı Internet sekmesine kaydet" - -#: library/library.cpp:164 -msgid "Saving songs statistics into songs files" -msgstr "Şarkı istatistikleri şarkı dosyalarına kaydediliyor" - -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 -msgid "Saving tracks" -msgstr "Parçalar kaydediliyor" - -#: ../bin/src/ui_transcoderoptionsaac.h:136 -msgid "Scalable sampling rate profile (SSR)" -msgstr "Ölçeklenebilir örnekleme oranı profili (SSR)" - -#: ../bin/src/ui_albumcoverexport.h:213 -msgid "Scale size" -msgstr "ÖLçek boyutu" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 -msgid "Score" -msgstr "Puan" - -#: ../bin/src/ui_lastfmsettingspage.h:156 -msgid "Scrobble tracks that I listen to" -msgstr "Dinlediğim parçaları skropla" - -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 -msgid "Search" -msgstr "Ara" - -#: ../bin/src/ui_icecastfilterwidget.h:78 -msgid "Search Icecast stations" -msgstr "Icecast istasyonları ara" - -#: internet/jamendoservice.cpp:426 -msgid "Search Jamendo" -msgstr "Jamendo'da ara" - -#: internet/magnatuneservice.cpp:285 -msgid "Search Magnatune" -msgstr "Magnatune'da Ara" - -#: internet/subsonicservice.cpp:75 -msgid "Search Subsonic" -msgstr "Subsonic'de Ara" - -#: ui/albumcoverchoicecontroller.cpp:66 -msgid "Search automatically" -msgstr "Otomatik ara" - -#: ui/albumcoverchoicecontroller.cpp:62 -msgid "Search for album covers..." -msgstr "Albüm kapaklarını ara..." - -#: ../bin/src/ui_globalsearchview.h:208 -msgid "Search for anything" -msgstr "Herhangi bir şey ara" - -#: ../bin/src/ui_gpoddersearchpage.h:76 -msgid "Search gpodder.net" -msgstr "gpodder.net'i ara" - -#: ../bin/src/ui_itunessearchpage.h:76 -msgid "Search iTunes" -msgstr "iTunes'u ara" - -#: ../bin/src/ui_querysearchpage.h:113 -msgid "Search mode" -msgstr "Arama kipi" - -#: smartplaylists/querywizardplugin.cpp:154 -msgid "Search options" -msgstr "Arama seçenekleri" - -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 -msgid "Search results" -msgstr "Arama sonuçları" - -#: smartplaylists/querywizardplugin.cpp:152 -#: ../bin/src/ui_querysearchpage.h:120 -msgid "Search terms" -msgstr "Arama terimleri" - -#: internet/groovesharkservice.cpp:270 -msgid "Searching on Grooveshark" -msgstr "Grooveshark'da Ara" - -#: ../bin/src/ui_groupbydialog.h:139 -msgid "Second level" -msgstr "İkinci seviye" - -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 -msgid "Seek backward" -msgstr "Geriye doğru ara" - -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 -msgid "Seek forward" -msgstr "İleri doğru ara" - -#: core/commandlineoptions.cpp:163 -msgid "Seek the currently playing track by a relative amount" -msgstr "Çalan parçayı görece miktara göre ara" - -#: core/commandlineoptions.cpp:162 -msgid "Seek the currently playing track to an absolute position" -msgstr "Çalan parçayı kesin bir konuma göre ara" - -#: visualisations/visualisationselector.cpp:40 -msgid "Select All" -msgstr "Tümünü Seç" - -#: visualisations/visualisationselector.cpp:42 -msgid "Select None" -msgstr "Hiçbirini Seçme" - -#: ../bin/src/ui_appearancesettingspage.h:277 -msgid "Select background color:" -msgstr "Arkaplan rengini seçin:" - -#: ui/appearancesettingspage.cpp:247 -msgid "Select background image" -msgstr "Arkaplan resmini seçin" - -#: ../bin/src/ui_trackselectiondialog.h:207 -msgid "Select best possible match" -msgstr "En uygun eşleşmeyi seç" - -#: ../bin/src/ui_appearancesettingspage.h:275 -msgid "Select foreground color:" -msgstr "Ön plan rengi seçin:" - -#: ../bin/src/ui_visualisationselector.h:108 -msgid "Select visualizations" -msgstr "Görsel seç" - -#: visualisations/visualisationcontainer.cpp:124 -msgid "Select visualizations..." -msgstr "Görselleştirmeleri seç..." - -#: ../bin/src/ui_transcodedialog.h:219 -msgid "Select..." -msgstr "Seç..." - -#: devices/devicekitlister.cpp:124 -msgid "Serial number" -msgstr "Seri numarası" - -#: ../bin/src/ui_subsonicsettingspage.h:126 -msgid "Server URL" -msgstr "Sunucu URL'si" - -#: ../bin/src/ui_subsonicsettingspage.h:125 -msgid "Server details" -msgstr "Sunucu ayrıntıları" - -#: internet/lastfmservice.cpp:434 -msgid "Service offline" -msgstr "Hizmet çevrim dışı" - -#: ui/mainwindow.cpp:1405 -#, qt-format -msgid "Set %1 to \"%2\"..." -msgstr "%1'i \"%2\" olarak ayarla" - -#: core/commandlineoptions.cpp:157 -msgid "Set the volume to percent" -msgstr "Ses seviyesini yüzde yap" - -#: ../bin/src/ui_mainwindow.h:672 -msgid "Set value for all selected tracks..." -msgstr "Seçili tüm parçalar için değeri ayarla..." - -#: ../bin/src/ui_networkremotesettingspage.h:179 -msgid "Settings" -msgstr "Ayarlar" - -#: ../bin/src/ui_globalshortcutssettingspage.h:173 -msgid "Shortcut" -msgstr "Kısayol" - -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 -#, qt-format -msgid "Shortcut for %1" -msgstr "%1 için kısayol" - -#: wiimotedev/wiimotesettingspage.cpp:124 -#, qt-format -msgid "Shortcut for %1 already exists" -msgstr "%1 için kısayol zaten tanımlı" - -#: library/libraryfilterwidget.cpp:61 -msgid "Show" -msgstr "Göster" - -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 -msgid "Show OSD" -msgstr "OSD göster" - -#: ../bin/src/ui_playbacksettingspage.h:298 -msgid "Show a glowing animation on the current track" -msgstr "Mevcut parçada parlayan bir animasyon göster" - -#: ../bin/src/ui_appearancesettingspage.h:293 -msgid "Show a moodbar in the track progress bar" -msgstr "Parça ilerleme çubuğunda bir atmosfer çubuğu göster." - -#: ../bin/src/ui_notificationssettingspage.h:434 -msgid "Show a native desktop notification" -msgstr "Masaüstü bildirimi göster" - -#: ../bin/src/ui_notificationssettingspage.h:442 -msgid "Show a notification when I change the repeat/shuffle mode" -msgstr "Tekrarla/Karıştır kipini değiştirdiğimde bir bildirim göster" - -#: ../bin/src/ui_notificationssettingspage.h:441 -msgid "Show a notification when I change the volume" -msgstr "Ses düzeyini değiştirdiğimde bir bildirim göster" - -#: ../bin/src/ui_notificationssettingspage.h:436 -msgid "Show a popup from the system tray" -msgstr "Sistem tepsisinden bir açılır pencere göster" - -#: ../bin/src/ui_notificationssettingspage.h:435 -msgid "Show a pretty OSD" -msgstr "Şirin bir OSD göster" - -#: widgets/nowplayingwidget.cpp:121 -msgid "Show above status bar" -msgstr "Durum çubuğunun üzerinde göster" - -#: ui/mainwindow.cpp:463 -msgid "Show all songs" -msgstr "Tüm şarkıları göster" - -#: ../bin/src/ui_querysortpage.h:141 -msgid "Show all the songs" -msgstr "Tüm şarkıları göster" - -#: ../bin/src/ui_librarysettingspage.h:209 -msgid "Show cover art in library" -msgstr "Kapak resmini kütüphanede göster" - -#: ../bin/src/ui_librarysettingspage.h:210 -msgid "Show dividers" -msgstr "Ayırıcıları göster" - -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 -msgid "Show fullsize..." -msgstr "Tam boyutta göster" - -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 -#: widgets/fileviewlist.cpp:52 -msgid "Show in file browser..." -msgstr "Dosya gözatıcısında göster..." - -#: ui/mainwindow.cpp:512 -msgid "Show in library..." -msgstr "Kütüphanede göster..." - -#: library/libraryview.cpp:403 -msgid "Show in various artists" -msgstr "Çeşitli sanatçılarda göster" - -#: moodbar/moodbarproxystyle.cpp:337 -msgid "Show moodbar" -msgstr "Atmosfer çubuğunu göster" - -#: ui/mainwindow.cpp:464 -msgid "Show only duplicates" -msgstr "Sadece aynı olanları göster" - -#: ui/mainwindow.cpp:465 -msgid "Show only untagged" -msgstr "Sadece etiketi olmayanları göster" - -#: ../bin/src/ui_globalsearchsettingspage.h:153 -msgid "Show search suggestions" -msgstr "Arama önerilerini göster" - -#: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"Beğen\" ve \"Yasakla\" tuşlarını göster" - -#: ../bin/src/ui_lastfmsettingspage.h:158 -msgid "Show the scrobble button in the main window" -msgstr "Ana pencerede skroplama düğmesini göster" - -#: ../bin/src/ui_behavioursettingspage.h:192 -msgid "Show tray icon" -msgstr "Sistem çekmecesi simgesini göster" - -#: ../bin/src/ui_globalsearchsettingspage.h:152 -msgid "Show which sources are enabled and disabled" -msgstr "Hangi kaynakların aktif ya da pasif olduğunu göster" - -#: core/globalshortcuts.cpp:58 -msgid "Show/Hide" -msgstr "Göster/Gizle" - -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 -msgid "Shuffle" -msgstr "Karışık" - -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 -msgid "Shuffle albums" -msgstr "Albümleri karıştır" - -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 -msgid "Shuffle all" -msgstr "Hepsini karıştır" - -#: ../bin/src/ui_mainwindow.h:679 -msgid "Shuffle playlist" -msgstr "Çalma listesini karıştır" - -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 -msgid "Shuffle tracks in this album" -msgstr "Bu albümdeki şarkıları karıştır" - -#: ../bin/src/ui_podcastsettingspage.h:252 -msgid "Sign in" -msgstr "Giriş yap" - -#: ../bin/src/ui_loginstatewidget.h:173 -msgid "Sign out" -msgstr "Çıkış yap" - -#: ../bin/src/ui_loginstatewidget.h:175 -msgid "Signing in..." -msgstr "Oturum açılıyor..." - -#: songinfo/echonestsimilarartists.cpp:57 -msgid "Similar artists" -msgstr "Benzer sanatçılar" - -#: ../bin/src/ui_albumcoverexport.h:212 -msgid "Size" -msgstr "Boyut" - -#: ../bin/src/ui_albumcoverexport.h:214 -msgid "Size:" -msgstr "Boyut:" - -#: ui/equalizer.cpp:133 -msgid "Ska" -msgstr "Ska" - -#: core/commandlineoptions.cpp:155 -msgid "Skip backwards in playlist" -msgstr "Parça listesinde geri git" - -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 -msgid "Skip count" -msgstr "Atlama sayısı" - -#: core/commandlineoptions.cpp:156 -msgid "Skip forwards in playlist" -msgstr "Parça listesinde ileri git" - -#: widgets/nowplayingwidget.cpp:93 -msgid "Small album cover" -msgstr "Küçük albüm kapağı" - -#: widgets/fancytabwidget.cpp:671 -msgid "Small sidebar" -msgstr "Küçük kenar çubuğu" - -#: smartplaylists/wizard.cpp:68 -msgid "Smart playlist" -msgstr "Akıllı çalma listesi" - -#: library/librarymodel.cpp:1207 -msgid "Smart playlists" -msgstr "Akıllı çalma listeleri" - -#: ui/equalizer.cpp:132 -msgid "Soft" -msgstr "Hafif" - -#: ui/equalizer.cpp:134 -msgid "Soft Rock" -msgstr "Hafif Rock" - -#: ../bin/src/ui_songinfosettingspage.h:154 -msgid "Song Information" -msgstr "Şarkı Bilgisi" - -#: ui/mainwindow.cpp:244 -msgid "Song info" -msgstr "Şarkı bilgisi" - -#: analyzers/sonogram.cpp:18 -msgid "Sonogram" -msgstr "Sonogram" - -#: ../bin/src/ui_trackselectiondialog.h:205 -msgid "Sorry" -msgstr "Üzgünüm" - -#: ../bin/src/ui_icecastfilterwidget.h:75 -msgid "Sort by genre (alphabetically)" -msgstr "Türe göre sırala (alfabetik)" - -#: ../bin/src/ui_icecastfilterwidget.h:76 -msgid "Sort by genre (by popularity)" -msgstr "Türe göre sırala (popülarite)" - -#: ../bin/src/ui_icecastfilterwidget.h:77 -msgid "Sort by station name" -msgstr "İstasyon adına göre sırala" - -#: ../bin/src/ui_querysortpage.h:139 -msgid "Sort songs by" -msgstr "Şarkıları şuna göre diz" - -#: ../bin/src/ui_querysortpage.h:137 -msgid "Sorting" -msgstr "Dizim" - -#: playlist/playlist.cpp:1236 -msgid "Source" -msgstr "Kaynak" - -#: ../bin/src/ui_globalsearchsettingspage.h:146 -msgid "Sources" -msgstr "Kaynaklar" - -#: ../bin/src/ui_transcodersettingspage.h:178 -msgid "Speex" -msgstr "Speex" - -#: ../bin/src/ui_spotifysettingspage.h:207 -msgid "Spotify" -msgstr "Spotify" - -#: internet/spotifyservice.cpp:184 -msgid "Spotify login error" -msgstr "Spotify giriş hatası" - -#: ../bin/src/ui_spotifysettingspage.h:212 -msgid "Spotify plugin" -msgstr "Spotify eklentisi" - -#: internet/spotifyblobdownloader.cpp:59 -msgid "Spotify plugin not installed" -msgstr "Spotify eklentisi kurulu değil" - -#: ../bin/src/ui_transcoderoptionsmp3.h:201 -msgid "Standard" -msgstr "Standart" - -#: internet/spotifyservice.cpp:354 -msgid "Starred" -msgstr "Yıldızlı" - -#: core/commandlineoptions.cpp:151 -msgid "Start the playlist currently playing" -msgstr "Çalma listesini mevcut çalınanla başlat" - -#: transcoder/transcodedialog.cpp:90 -msgid "Start transcoding" -msgstr "Dönüştürmeye başla" - -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 -msgid "" -"Start typing something on the search box above to fill this search results " -"list" -msgstr "Arama sonucunu görmek için arama kutusuna bir şeyler yazmaya başlayın." - -#: transcoder/transcoder.cpp:405 -#, qt-format -msgid "Starting %1" -msgstr "%1 Başlatılıyor" - -#: internet/magnatunedownloaddialog.cpp:120 -msgid "Starting..." -msgstr "Başlatılıyor..." - -#: internet/groovesharkservice.cpp:598 -msgid "Stations" -msgstr "İstasyonlar" - -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:102 -msgid "Stop" -msgstr "Durdur" - -#: wiimotedev/wiimotesettingspage.cpp:110 -msgid "Stop after" -msgstr "Şundan sonra durdur" - -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 -msgid "Stop after this track" -msgstr "Bu parçadan sonra durdur" - -#: core/commandlineoptions.cpp:154 -msgid "Stop playback" -msgstr "Duraklat" - -#: core/globalshortcuts.cpp:50 -msgid "Stop playing after current track" -msgstr "Bu parçadan sonra durdur" - -#: widgets/osd.cpp:171 -#, qt-format -msgid "Stop playing after track: %1" -msgstr "Parçadan sonra çalmayı durdur: %1" - -#: widgets/osd.cpp:166 -msgid "Stopped" -msgstr "Durduruldu" - -#: core/song.cpp:353 -msgid "Stream" -msgstr "Akış" - -#: internet/subsonicsettingspage.cpp:30 -msgid "" -"Streaming from a Subsonic server requires a valid server license after the " -"30-day trial period." -msgstr "Bir Subsonik sunucudan Stream 30 günlük deneme süresinden sonra geçerli bir sunucu lisansı gerektirir." - -#: ../bin/src/ui_magnatunesettingspage.h:160 -msgid "Streaming membership" -msgstr "Yayın akış üyeliği" - -#: internet/groovesharkservice.cpp:629 -msgid "Subscribed playlists" -msgstr "Abone olunan çalma listeleri" - -#: ../bin/src/ui_podcastinfowidget.h:196 -msgid "Subscribers" -msgstr "Aboneler" - -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 -msgid "Subsonic" -msgstr "Subsonic" - -#: ../data/oauthsuccess.html:36 -msgid "Success!" -msgstr "Başarılı!" - -#: transcoder/transcoder.cpp:200 -#, qt-format -msgid "Successfully written %1" -msgstr "%1 başarıyla yazıldı" - -#: ui/trackselectiondialog.cpp:171 -msgid "Suggested tags" -msgstr "Önerilen etiketler" - -#: ../bin/src/ui_edittagdialog.h:681 -#: ../bin/src/ui_notificationssettingspage.h:448 -msgid "Summary" -msgstr "Özet" - -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 -#, qt-format -msgid "Super high (%1 fps)" -msgstr "Süper yüksek (%1 fps)" - -#: visualisations/visualisationcontainer.cpp:120 -msgid "Super high (2048x2048)" -msgstr "Çok yüksek çözünürlük (2048x2048)" - -#: ../bin/src/ui_deviceproperties.h:374 -msgid "Supported formats" -msgstr "Desteklenen biçimler" - -#: ../bin/src/ui_librarysettingspage.h:201 -msgid "Synchronize statistics to files now" -msgstr "İstatistikleri dosyalara şimdi eşleştir" - -#: internet/spotifyservice.cpp:561 -msgid "Syncing Spotify inbox" -msgstr "Spotify gelen kutusu eşleniyor" - -#: internet/spotifyservice.cpp:556 -msgid "Syncing Spotify playlist" -msgstr "Spotify çalma listesi eşleniyor" - -#: internet/spotifyservice.cpp:565 -msgid "Syncing Spotify starred tracks" -msgstr "Spotify yıldızlı şarkılar eşleniyor" - -#: moodbar/moodbarrenderer.cpp:159 -msgid "System colors" -msgstr "Sistem renkleri" - -#: widgets/fancytabwidget.cpp:673 -msgid "Tabs on top" -msgstr "Üstteki sekmeler" - -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiket" - -#: ../bin/src/ui_trackselectiondialog.h:204 -msgid "Tag fetcher" -msgstr "Etiket getirici" - -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Etiket radyosu" - -#: ../bin/src/ui_transcoderoptionsvorbis.h:204 -msgid "Target bitrate" -msgstr "Hedeflenen bit oranı" - -#: ui/equalizer.cpp:135 -msgid "Techno" -msgstr "Tekno" - -#: ../bin/src/ui_notificationssettingspage.h:460 -msgid "Text options" -msgstr "Metin seçenekleri" - -#: ui/about.cpp:70 -msgid "Thanks to" -msgstr "Teşekkürler" - -#: ui/globalshortcutssettingspage.cpp:177 -#, qt-format -msgid "The \"%1\" command could not be started." -msgstr "\"%1\" komutu başlatılamadı." - -#: ../bin/src/ui_appearancesettingspage.h:282 -msgid "The album cover of the currently playing song" -msgstr "Şu anda çalan şarkının albüm kapağı" - -#: internet/magnatunedownloaddialog.cpp:90 -#, qt-format -msgid "The directory %1 is not valid" -msgstr "%1 dizini geçersiz" - -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Çalma listesi '%1' boş veya yüklenemiyor." - -#: smartplaylists/searchtermwidget.cpp:330 -msgid "The second value must be greater than the first one!" -msgstr "İkinci değer ilk değerden büyük olmak zorunda!" - -#: ui/coverfromurldialog.cpp:71 -msgid "The site you requested does not exist!" -msgstr "İstediğiniz site mevcut değil!" - -#: ui/coverfromurldialog.cpp:82 -msgid "The site you requested is not an image!" -msgstr "İstediğiniz site bir resim değil!" - -#: internet/subsonicsettingspage.cpp:98 -msgid "" -"The trial period for the Subsonic server is over. Please donate to get a " -"license key. Visit subsonic.org for details." -msgstr "Subsonic sunucusunun deneme süresi bitti. Lisans anahtarı almak için lütfen bağış yapın. Ayrıntılar için subsonic.org'u ziyaret edin." - -#: ui/mainwindow.cpp:2114 -msgid "" -"The version of Clementine you've just updated to requires a full library " -"rescan because of the new features listed below:" -msgstr "Güncellediğiniz Clementine sürümü, aşağıda listelenen yeni özellikler nedeniyle kütüphanenizin baştan taranmasını gerektiriyor:" - -#: library/libraryview.cpp:529 -msgid "There are other songs in this album" -msgstr "Bu albümde başka şarkılar da var" - -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 -msgid "There was a problem communicating with gpodder.net" -msgstr "gpodder.net ile iletişimde bir sorun oluştu." - -#: internet/magnatunedownloaddialog.cpp:158 -msgid "There was a problem fetching the metadata from Magnatune" -msgstr "Magnatude servisinden veri alınırken hata oluştu" - -#: podcasts/itunessearchpage.cpp:76 -msgid "There was a problem parsing the response from the iTunes Store" -msgstr "iTunes Store'dan gelen yanıtı ayıklamada bir sorun oluştu" - -#: ui/organiseerrordialog.cpp:56 -msgid "" -"There were problems copying some songs. The following files could not be " -"copied:" -msgstr "Bazı şarkılar kopyalanırken hata oluştu. Şu dosyalar kopyalanamadı:" - -#: ui/organiseerrordialog.cpp:61 -msgid "" -"There were problems deleting some songs. The following files could not be " -"deleted:" -msgstr "Bazı şarkılar silinirken hata oluştu. Şu dosyalar silinemedi:" - -#: devices/deviceview.cpp:389 -msgid "" -"These files will be deleted from the device, are you sure you want to " -"continue?" -msgstr "Bu dosyalar aygıttan silinecek, devam etmek istiyor musunuz?" - -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 -msgid "" -"These files will be permanently deleted from disk, are you sure you want to " -"continue?" -msgstr "Bu dosyalar diskten kalıcı olarak silinecek, devam etmek istiyor musunuz?" - -#: ../bin/src/ui_librarysettingspage.h:187 -msgid "These folders will be scanned for music to make up your library" -msgstr "Bu klasörler, kütüphaneyi oluşturacak müzikler için taranacak" - -#: ../bin/src/ui_transcodersettingspage.h:174 -msgid "" -"These settings are used in the \"Transcode Music\" dialog, and when " -"converting music before copying it to a device." -msgstr "Bu seçenekler \"Müzik Dönüştür\" penceresinde ve aygıta müzik kopyalamadan önce dönüştürme işleminde kullanılır." - -#: ../bin/src/ui_groupbydialog.h:153 -msgid "Third level" -msgstr "Üçüncü seviye" - -#: internet/jamendoservice.cpp:171 -msgid "" -"This action will create a database which could be as big as 150 MB.\n" -"Do you want to continue anyway?" -msgstr "Bu eylem 150 MB kadar büyüklükte olabilecek bir veri tabanı oluşturacak.\nYine de devam etmek istiyor musunuz?" - -#: internet/magnatunedownloaddialog.cpp:175 -msgid "This album is not available in the requested format" -msgstr "Bu albüm istenilen biçimde mevcut değil" - -#: ../bin/src/ui_deviceproperties.h:381 -msgid "" -"This device must be connected and opened before Clementine can see what file" -" formats it supports." -msgstr "Bu aygıt Clementine başlamadan önce bağlanmalı ve açılmalıdır aksi takdirde hangi dosya biçimleri desteklendiği algılanamaz." - -#: ../bin/src/ui_deviceproperties.h:375 -msgid "This device supports the following file formats:" -msgstr "Bu aygıt aşağıdaki dosya biçimlerini destekler:" - -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 -msgid "This device will not work properly" -msgstr "Bu aygıt düzgün çalışmayacak" - -#: devices/devicemanager.cpp:567 -msgid "" -"This is an MTP device, but you compiled Clementine without libmtp support." -msgstr "Bu bir MTP aygıtı fakat Clementine libmtp desteği olmadan derlenmiş." - -#: devices/devicemanager.cpp:575 -msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "Bu bir iPod fakat Clementine libgpod desteği olmadan derlenmiş." - -#: devices/devicemanager.cpp:324 -msgid "" -"This is the first time you have connected this device. Clementine will now " -"scan the device to find music files - this may take some time." -msgstr "Bu aygıtı ilk defa bağlıyorsunuz. Clementine müzik dosyalarını bulmak için aygıtı tarayacak - bu işlem biraz zaman alabilir." - -#: playlist/playlisttabbar.cpp:186 -msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "Bu seçenek \"Davranış\" tercihlerinden değiştirilebilir" - -#: internet/lastfmservice.cpp:435 -msgid "This stream is for paid subscribers only" -msgstr "Bu yayın sadece abone olan kullanıcılar içindir" - -#: devices/devicemanager.cpp:587 -#, qt-format -msgid "This type of device is not supported: %1" -msgstr "Bu tür bir aygıt desteklenmiyor: %1" - -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 -#: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 -msgid "Title" -msgstr "Başlık" - -#: internet/groovesharkservice.cpp:1018 -msgid "" -"To start Grooveshark radio, you should first listen to a few other " -"Grooveshark songs" -msgstr "Grooveshark radyosu dinleyebilmeniz için öncelikle birkaç tane Grooveshark şarkısı dinlemelisiniz." - -#: core/utilities.cpp:127 core/utilities.cpp:143 -msgid "Today" -msgstr "Bugün" - -#: core/globalshortcuts.cpp:60 -msgid "Toggle Pretty OSD" -msgstr "Şirin OSD'yi Aç/Kapa" - -#: visualisations/visualisationcontainer.cpp:101 -msgid "Toggle fullscreen" -msgstr "Tam ekran göster/gizle" - -#: ui/mainwindow.cpp:1380 -msgid "Toggle queue status" -msgstr "Kuyruk durumunu göster/gizle" - -#: ../bin/src/ui_mainwindow.h:718 -msgid "Toggle scrobbling" -msgstr "Skroplamayı aç/kapa" - -#: core/commandlineoptions.cpp:171 -msgid "Toggle visibility for the pretty on-screen-display" -msgstr "Şirin OSD görünürlüğünü aç/kapa" - -#: core/utilities.cpp:145 -msgid "Tomorrow" -msgstr "Yarın" - -#: podcasts/podcasturlloader.cpp:116 -msgid "Too many redirects" -msgstr "Çok fazla yeniden yönlendirme" - -#: internet/spotifyservice.cpp:366 -msgid "Top tracks" -msgstr "En çok dinlenen parçalar" - -#: ../bin/src/ui_albumcovermanager.h:221 -msgid "Total albums:" -msgstr "Toplam albüm:" - -#: covers/coversearchstatisticsdialog.cpp:71 -msgid "Total bytes transferred" -msgstr "Aktarılan toplam bayt" - -#: covers/coversearchstatisticsdialog.cpp:68 -msgid "Total network requests made" -msgstr "Yapılmış toplam ağ istemi" - -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 -#: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 -msgid "Track" -msgstr "Parça" - -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 -msgid "Transcode Music" -msgstr "Müzik Dönüştür" - -#: ../bin/src/ui_transcodelogdialog.h:63 -msgid "Transcoder Log" -msgstr "Dönüştürücü Kaydı" - -#: ../bin/src/ui_transcodersettingspage.h:173 -msgid "Transcoding" -msgstr "Kod çevrimi" - -#: transcoder/transcoder.cpp:312 -#, qt-format -msgid "Transcoding %1 files using %2 threads" -msgstr "%1 adet dosya %2 adet thread ile dönüştürülüyor" - -#: ../bin/src/ui_transcoderoptionsdialog.h:54 -msgid "Transcoding options" -msgstr "Kod çevrimi seçenekleri" - -#: core/song.cpp:350 -msgid "TrueAudio" -msgstr "TrueAudio" - -#: analyzers/turbine.cpp:15 -msgid "Turbine" -msgstr "Türbin" - -#: ../bin/src/ui_dynamicplaylistcontrols.h:113 -msgid "Turn off" -msgstr "Kapat" - -#: devices/giolister.cpp:161 -msgid "URI" -msgstr "URI" - -#: core/commandlineoptions.cpp:150 -msgid "URL(s)" -msgstr "URL(ler)" - -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One parolası" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One kullanıcı adı" - -#: ../bin/src/ui_transcoderoptionsspeex.h:228 -msgid "Ultra wide band (UWB)" -msgstr "Engin frekans bandı (UWB)" - -#: internet/magnatunedownloaddialog.cpp:144 -#, qt-format -msgid "Unable to download %1 (%2)" -msgstr "%1 indirilemedi (%2)" - -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 -msgid "Unknown" -msgstr "Bilinmeyen" - -#: podcasts/podcasturlloader.cpp:198 -msgid "Unknown content-type" -msgstr "Bilinmeyen içerik türü" - -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 -msgid "Unknown error" -msgstr "Bilinmeyen hata" - -#: ui/albumcoverchoicecontroller.cpp:63 -msgid "Unset cover" -msgstr "Albüm kapağını çıkar" - -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 -msgid "Unsubscribe" -msgstr "Abonelikten çık" - -#: songinfo/songkickconcerts.cpp:168 -msgid "Upcoming Concerts" -msgstr "Yaklaşan Konserler" - -#: internet/groovesharkservice.cpp:1200 -msgid "Update Grooveshark playlist" -msgstr "Grooveshark çalma listesini güncelle" - -#: podcasts/podcastservice.cpp:260 -msgid "Update all podcasts" -msgstr "Bütün podcastları güncelle" - -#: ../bin/src/ui_mainwindow.h:709 -msgid "Update changed library folders" -msgstr "Değişen kütüphane klasörlerini güncelle" - -#: ../bin/src/ui_librarysettingspage.h:191 -msgid "Update the library when Clementine starts" -msgstr "Clementine başladığında kütüphaneyi güncelle" - -#: podcasts/podcastservice.cpp:268 -msgid "Update this podcast" -msgstr "Bu podcast'ı güncelle" - -#: ../bin/src/ui_podcastsettingspage.h:227 -msgid "Updating" -msgstr "Güncelliyor" - -#: library/librarywatcher.cpp:92 -#, qt-format -msgid "Updating %1" -msgstr "%1 Güncelleniyor" - -#: devices/deviceview.cpp:103 -#, qt-format -msgid "Updating %1%..." -msgstr "%1% Güncelleniyor..." - -#: library/librarywatcher.cpp:90 -msgid "Updating library" -msgstr "Kütüphane güncelleniyor" - -#: core/commandlineoptions.cpp:150 -msgid "Usage" -msgstr "Kullanım" - -#: ../bin/src/ui_lastfmsettingspage.h:159 -msgid "Use Album Artist tag when available" -msgstr "Varsa Albüm sanatçısı etiketini kullan" - -#: ../bin/src/ui_globalshortcutssettingspage.h:168 -msgid "Use Gnome's shortcut keys" -msgstr "Gnome kısayol tuşlarını kullan" - -#: ../bin/src/ui_playbacksettingspage.h:310 -msgid "Use Replay Gain metadata if it is available" -msgstr "Varsa Replay Gain verisini kullan" - -#: ../bin/src/ui_subsonicsettingspage.h:129 -msgid "Use SSLv3" -msgstr "SSLv3 kullan" - -#: ../bin/src/ui_wiimotesettingspage.h:189 -msgid "Use Wii Remote" -msgstr "Wii kumandasını kullan" - -#: ../bin/src/ui_appearancesettingspage.h:274 -msgid "Use a custom color set" -msgstr "Özel bir renk düzeni kullan" - -#: ../bin/src/ui_notificationssettingspage.h:445 -msgid "Use a custom message for notifications" -msgstr "Bildirimler için özel bir mesaj kullan" - -#: ../bin/src/ui_networkremotesettingspage.h:178 -msgid "Use a network remote control" -msgstr "Bir ağ uzak denetimi kullan" - -#: ../bin/src/ui_networkproxysettingspage.h:167 -msgid "Use authentication" -msgstr "Kimlik denetimi kullan" - -#: ../bin/src/ui_transcoderoptionsvorbis.h:203 -msgid "Use bitrate management engine" -msgstr "Bi oranı kontrolü yönetimini kullan" - -#: ../bin/src/ui_wizardfinishpage.h:85 -msgid "Use dynamic mode" -msgstr "Dinamik kip kullan" - -#: ../bin/src/ui_wiimotesettingspage.h:188 -msgid "Use notifications to report Wii Remote status" -msgstr "Wii kumanda durumunu raporlamak için bildirimleri kullan" - -#: ../bin/src/ui_transcoderoptionsaac.h:139 -msgid "Use temporal noise shaping" -msgstr "Temporal noise shaping kullan" - -#: ../bin/src/ui_behavioursettingspage.h:198 -msgid "Use the system default" -msgstr "Sistem öntanımlısını kullan" - -#: ../bin/src/ui_appearancesettingspage.h:273 -msgid "Use the system default color set" -msgstr "Varsayılan sistem renk düzenini kullan" - -#: ../bin/src/ui_networkproxysettingspage.h:158 -msgid "Use the system proxy settings" -msgstr "Sistem vekil sunucu ayarlarını kullan" - -#: ../bin/src/ui_spotifysettingspage.h:218 -msgid "Use volume normalisation" -msgstr "Ses normalleştirme kullan" - -#: widgets/freespacebar.cpp:47 -msgid "Used" -msgstr "Kullanılan" - -#: internet/groovesharkservice.cpp:404 -#, qt-format -msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "%1 Kullanicinin Grooveshark Anywhere hasabi yok" - -#: ui/settingsdialog.cpp:145 -msgid "User interface" -msgstr "Kullanıcı arayüzü" - -#: ../bin/src/ui_groovesharksettingspage.h:114 -#: ../bin/src/ui_magnatunesettingspage.h:163 -#: ../bin/src/ui_spotifysettingspage.h:209 -#: ../bin/src/ui_subsonicsettingspage.h:127 -#: ../bin/src/ui_podcastsettingspage.h:251 -#: ../bin/src/ui_networkproxysettingspage.h:168 -msgid "Username" -msgstr "Kullanıcı Adı" - -#: ../bin/src/ui_behavioursettingspage.h:207 -msgid "Using the menu to add a song will..." -msgstr "Menü kullanarak şarkı eklemek..." - -#: ../bin/src/ui_magnatunedownloaddialog.h:142 -#: ../bin/src/ui_magnatunesettingspage.h:173 -msgid "VBR MP3" -msgstr "VBR MP3" - -#: ../bin/src/ui_transcoderoptionsspeex.h:232 -msgid "Variable bit rate" -msgstr "Değişken bit oranı" - -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 -msgid "Various artists" -msgstr "Çeşitli sanatçılar" - -#: ui/about.cpp:34 -#, qt-format -msgid "Version %1" -msgstr "Sürüm %1" - -#: ../bin/src/ui_albumcovermanager.h:220 -msgid "View" -msgstr "Görünüm" - -#: ../bin/src/ui_visualisationselector.h:109 -msgid "Visualization mode" -msgstr "Görüntüleme kipi" - -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 -msgid "Visualizations" -msgstr "Görseller" - -#: ../bin/src/ui_visualisationoverlay.h:185 -msgid "Visualizations Settings" -msgstr "Görüntüleme Ayarları" - -#: ../bin/src/ui_transcoderoptionsspeex.h:233 -msgid "Voice activity detection" -msgstr "Ses aktivitesi algılama" - -#: widgets/osd.cpp:185 -#, qt-format -msgid "Volume %1%" -msgstr "Ses %1%" - -#: ../bin/src/ui_transcodersettingspage.h:176 -msgid "Vorbis" -msgstr "Vorbis" - -#: ../bin/src/ui_magnatunedownloaddialog.h:141 -#: ../bin/src/ui_magnatunesettingspage.h:172 -msgid "WAV" -msgstr "WAV" - -#: ../bin/src/ui_transcodersettingspage.h:180 -msgid "WMA" -msgstr "WMA" - -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 -msgid "Warn me when closing a playlist tab" -msgstr "Bir çalma listesi sekmesini kapatırken beni uyar" - -#: core/song.cpp:349 -msgid "Wav" -msgstr "Wav" - -#: ../bin/src/ui_podcastinfowidget.h:193 -msgid "Website" -msgstr "İnternet sitesi" - -#: smartplaylists/searchterm.cpp:312 -msgid "Weeks" -msgstr "Haftalar" - -#: ../bin/src/ui_behavioursettingspage.h:201 -msgid "When Clementine starts" -msgstr "Clementine başladığında" - -#: ../bin/src/ui_librarysettingspage.h:204 -msgid "" -"When looking for album art Clementine will first look for picture files that contain one of these words.\n" -"If there are no matches then it will use the largest image in the directory." -msgstr "Clementine albüm kapağı ararken ilk önce dosya adında şu kelimelerden birini içeren resim dosyasına bakacak.\nEğer eşleşen bir dosya bulamazsa, bulunduğu dizindeki en büyük resmi kullanacak." - -#: ../bin/src/ui_globalsearchsettingspage.h:151 -msgid "When the list is empty..." -msgstr "Liste boş olduğunda..." - -#: ../bin/src/ui_globalsearchview.h:212 -msgid "Why not try..." -msgstr "Neden denemeyelim..." - -#: ../bin/src/ui_transcoderoptionsspeex.h:229 -msgid "Wide band (WB)" -msgstr "Geniş Bant (WB)" - -#: widgets/osd.cpp:244 -#, qt-format -msgid "Wii Remote %1: actived" -msgstr "Wii Kumanda %1: etkin" - -#: widgets/osd.cpp:254 -#, qt-format -msgid "Wii Remote %1: connected" -msgstr "Wii Kumanda %1: bağlandı" - -#: widgets/osd.cpp:269 -#, qt-format -msgid "Wii Remote %1: critical battery (%2%) " -msgstr "Wii Kumanda %1: kritik pil seviyesi (%2%) " - -#: widgets/osd.cpp:249 -#, qt-format -msgid "Wii Remote %1: disactived" -msgstr "Wii Kumanda %1: etkin değil" - -#: widgets/osd.cpp:259 -#, qt-format -msgid "Wii Remote %1: disconnected" -msgstr "Wii Kumanda %1: çıkarıldı" - -#: widgets/osd.cpp:264 -#, qt-format -msgid "Wii Remote %1: low battery (%2%)" -msgstr "Wii Kumanda %1: düşük pil seviyesi (%2%)" - -#: ../bin/src/ui_wiimotesettingspage.h:182 -msgid "Wiimotedev" -msgstr "Wiimotedev" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:181 -msgid "Windows Media 128k" -msgstr "Windows Medya 128k" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:172 -msgid "Windows Media 40k" -msgstr "Windows Media 40k" - -#: ../bin/src/ui_digitallyimportedsettingspage.h:180 -msgid "Windows Media 64k" -msgstr "Windows Medya 64k" - -#: core/song.cpp:339 -msgid "Windows Media audio" -msgstr "Windows Media audio" - -#: ../bin/src/ui_albumcovermanager.h:222 -msgid "Without cover:" -msgstr "Kapak resmi olmayan:" - -#: library/libraryview.cpp:530 -msgid "" -"Would you like to move the other songs in this album to Various Artists as " -"well?" -msgstr "Bu albümdeki diğer şarkıları da Çeşitli Sanatçılar'a taşımak ister misiniz?" - -#: ui/mainwindow.cpp:2119 -msgid "Would you like to run a full rescan right now?" -msgstr "Şu anda tam bir yeniden tarama çalıştırmak ister misiniz?" - -#: library/librarysettingspage.cpp:151 -msgid "Write all songs statistics into songs' files" -msgstr "Tüm şarkı istatistiklerini şarkı dosyalarına yaz" - -#: internet/subsonicsettingspage.cpp:86 -msgid "Wrong username or password." -msgstr "Yanlış kullanıcı adı veya parola." - -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 -#: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 -#: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 -msgid "Year" -msgstr "Yıl" - -#: ../bin/src/ui_groupbydialog.h:136 ../bin/src/ui_groupbydialog.h:150 -#: ../bin/src/ui_groupbydialog.h:164 -msgid "Year - Album" -msgstr "Yıl - Albüm" - -#: smartplaylists/searchterm.cpp:314 -msgid "Years" -msgstr "Yıl" - -#: core/utilities.cpp:129 -msgid "Yesterday" -msgstr "Dün" - -#: ../bin/src/ui_magnatunedownloaddialog.h:132 -msgid "You are about to download the following albums" -msgstr "Aşağıdaki albümleri indirmek üzeresiniz" - -#: playlist/playlistlistcontainer.cpp:316 -#, qt-format -msgid "" -"You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "Beğenilenlerinizden %1 oynatma listesini kaldırmak üzeresiniz. Emin misiniz?" - -#: playlist/playlisttabbar.cpp:177 -msgid "" -"You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" -"Are you sure you want to continue?" -msgstr "Beğenilen çalma listelerinizin bir parçası olmayan bir çalma listesini kaldırmak üzeresiniz: çalma listesi silinecektir (bu işlem geri alınamaz).\nDevam etmek istediğinizden emin misiniz?" - -#: ../bin/src/ui_loginstatewidget.h:172 -msgid "You are not signed in." -msgstr "Oturum açmadınız." - -#: widgets/loginstatewidget.cpp:75 -#, qt-format -msgid "You are signed in as %1." -msgstr "%1 olarak oturum açtınız." - -#: widgets/loginstatewidget.cpp:73 -msgid "You are signed in." -msgstr "Oturum açtınız." - -#: ../bin/src/ui_groupbydialog.h:123 -msgid "You can change the way the songs in the library are organised." -msgstr "Kütüphanedeki parçalarını farklı şekilde organize edebilirsiniz." - -#: internet/digitallyimportedsettingspage.cpp:46 -msgid "" -"You can listen for free without an account, but Premium members can listen " -"to higher quality streams without advertisements." -msgstr "Hesabınız olmadan ücretsiz dinleyebilirsiniz fakat Premium üyeler reklamsız ve daha yüksek kalitedeki akışları dinleyebilir." - -#: internet/magnatunesettingspage.cpp:53 -msgid "" -"You can listen to Magnatune songs for free without an account. Purchasing a" -" membership removes the messages at the end of each track." -msgstr "Bir hesabınız olmadan ücretsiz olarak Magnatude'dan şarkı dinleyebilirsiniz. Üyelik alırsanız her şarkının sonunda görünen bu mesajı kaldırabilirsiniz." - -#: ../bin/src/ui_backgroundstreamssettingspage.h:57 -msgid "You can listen to background streams at the same time as other music." -msgstr "Arkaplan akışlarını diğer müzikler gibi aynı anda dinleyebilirsiniz." - -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Parçaları ücretsiz olarak skroplayabilirsiniz, fakat sadece ücretli aboneler Last.fm radyosunu dinleyebilir." - -#: ../bin/src/ui_wiimotesettingspage.h:184 -msgid "" -"You can use your Wii Remote as a remote control for Clementine. See the page on the " -"Clementine wiki for more information.\n" -msgstr "Wii kumandanızı kullanarak Clementine'ı uzaktan kumanda edebilirsiniz. Daha fazla bilgi için Clementine wikideki ilgili sayfayı ziyaret edin.\n" - -#: internet/groovesharksettingspage.cpp:103 -msgid "You do not have a Grooveshark Anywhere account." -msgstr "Bir Grooveshark Anywhere hesabınız yok" - -#: internet/spotifysettingspage.cpp:149 -msgid "You do not have a Spotify Premium account." -msgstr "Spotify Premium hesabınız yok." - -#: internet/digitallyimportedclient.cpp:89 -msgid "You do not have an active subscription" -msgstr "Aktif bir aboneliğiniz yok" - -#: internet/spotifyservice.cpp:170 -msgid "" -"You have been logged out of Spotify, please re-enter your password in the " -"Settings dialog." -msgstr "Spotify servisinden çıktınız, lütfen Ayarlar ekranında parolanızı yeniden girin." - -#: internet/spotifysettingspage.cpp:158 -msgid "You have been logged out of Spotify, please re-enter your password." -msgstr "Spotify servisinden çıktınız, lütfen parolanızı yeniden girin." - -#: songinfo/lastfmtrackinfoprovider.cpp:87 -msgid "You love this track" -msgstr "Bu şarkıyı seviyorsunuz" - -#: ../bin/src/ui_globalshortcutssettingspage.h:170 -msgid "" -"You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " -"shortcuts in Clementine." -msgstr "Clementine'da genel kısayolları kullanabilmek için Sistem Ayarlarına girin ve \"Yardımcı aygıtlara erişimi etkinleştir\" seçeneğini açın." - -#: ../bin/src/ui_behavioursettingspage.h:200 -msgid "You will need to restart Clementine if you change the language." -msgstr "Dili değiştirdiyseniz programı yeniden başlatmanız gerekmektedir." - -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Last.fm abonesi olmadığınız için Last.fm kanallarını dinleyemeyeceksiniz." - -#: ../bin/src/ui_networkremotesettingspage.h:200 -msgid "Your IP address:" -msgstr "IP adresiniz:" - -#: internet/lastfmsettingspage.cpp:80 -msgid "Your Last.fm credentials were incorrect" -msgstr "Last.fm giriş bilgileriniz doğru değil" - -#: internet/magnatunesettingspage.cpp:113 -msgid "Your Magnatune credentials were incorrect" -msgstr "Magnatune kimlik bilgileriniz hatalı" - -#: library/libraryview.cpp:343 -msgid "Your library is empty!" -msgstr "Kütüphaneniz boş!" - -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 -msgid "Your radio streams" -msgstr "Radyo yayın akışlarınız" - -#: songinfo/lastfmtrackinfoprovider.cpp:88 -#, qt-format -msgid "Your scrobbles: %1" -msgstr "Skroplarınız: %1" - -#: visualisations/visualisationcontainer.cpp:152 -msgid "Your system is missing OpenGL support, visualizations are unavailable." -msgstr "Sisteminizde OpenGL desteği yok, görselleştirmeler çalışmayacak." - -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 -msgid "Your username or password was incorrect." -msgstr "Kullanıcı adı veya parolanız yanlış." - -#: smartplaylists/searchterm.cpp:297 -msgid "Z-A" -msgstr "Z-A" - -#: ui/equalizer.cpp:136 -msgid "Zero" -msgstr "Sıfır" - -#: playlist/playlistundocommands.cpp:37 -#, c-format, qt-plural-format -msgid "add %n songs" -msgstr "%n şarkıyı ekle" - -#: smartplaylists/searchterm.cpp:205 -msgid "after" -msgstr "sonra" - -#: ../bin/src/ui_searchtermwidget.h:270 -msgid "ago" -msgstr "önce" - -#: ../bin/src/ui_searchtermwidget.h:269 -msgid "and" -msgstr "ve" - -#: ../bin/src/ui_transcoderoptionsspeex.h:219 -msgid "automatic" -msgstr "otomatik" - -#: smartplaylists/searchterm.cpp:206 -msgid "before" -msgstr "önce" - -#: smartplaylists/searchterm.cpp:211 -msgid "between" -msgstr "arasında" - -#: smartplaylists/searchterm.cpp:301 -msgid "biggest first" -msgstr "ilk önce en büyüğü" - -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 -msgid "bpm" -msgstr "bpm" - -#: smartplaylists/searchterm.cpp:217 -msgid "contains" -msgstr "şunu içeriyor" - -#: ../bin/src/ui_transcoderoptionsspeex.h:222 -#: ../bin/src/ui_transcoderoptionsvorbis.h:207 -#: ../bin/src/ui_transcoderoptionsvorbis.h:210 -msgid "disabled" -msgstr "devre dışı" - -#: widgets/osd.cpp:114 -#, qt-format -msgid "disc %1" -msgstr "disk %1" - -#: smartplaylists/searchterm.cpp:218 -msgid "does not contain" -msgstr "şunu içermiyor" - -#: smartplaylists/searchterm.cpp:220 -msgid "ends with" -msgstr "şununla bitiyor" - -#: smartplaylists/searchterm.cpp:223 -msgid "equals" -msgstr "eşittir" - -#: ../bin/src/ui_podcastsettingspage.h:249 -msgid "gpodder.net" -msgstr "gpodder.net" - -#: podcasts/gpoddertoptagspage.cpp:34 -msgid "gpodder.net directory" -msgstr "gpodder.net dizini" - -#: smartplaylists/searchterm.cpp:221 -msgid "greater than" -msgstr "büyüktür" - -#: ../bin/src/ui_deviceviewcontainer.h:99 -msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "iPod'lar ve USB aygıtları şimdilik Windows'ta çalışmıyor. Üzgünüz!" - -#: smartplaylists/searchterm.cpp:209 -msgid "in the last" -msgstr "Sonuncu" - -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 -msgid "kbps" -msgstr "kbps" - -#: smartplaylists/searchterm.cpp:222 -msgid "less than" -msgstr "küçüktür" - -#: smartplaylists/searchterm.cpp:299 -msgid "longest first" -msgstr "ilk önce en uzunu" - -#: playlist/playlistundocommands.cpp:99 -#, c-format, qt-plural-format -msgid "move %n songs" -msgstr "%n şarkıyı taşı" - -#: smartplaylists/searchterm.cpp:298 -msgid "newest first" -msgstr "ilk önce en yenisi" - -#: smartplaylists/searchterm.cpp:224 -msgid "not equals" -msgstr "eşit değiller" - -#: smartplaylists/searchterm.cpp:210 -msgid "not in the last" -msgstr "şu süreden beri değil:" - -#: smartplaylists/searchterm.cpp:208 -msgid "not on" -msgstr "değil" - -#: smartplaylists/searchterm.cpp:298 -msgid "oldest first" -msgstr "ilk önce en eskisi" - -#: smartplaylists/searchterm.cpp:207 -msgid "on" -msgstr "açık" - -#: core/commandlineoptions.cpp:150 -msgid "options" -msgstr "seçenekler" - -#: ../bin/src/ui_networkremotesettingspage.h:203 -msgid "or scan the QR code!" -msgstr "veya QR kodunu tara!" - -#: widgets/didyoumean.cpp:56 -msgid "press enter" -msgstr "enter'a basın" - -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 -#, c-format, qt-plural-format -msgid "remove %n songs" -msgstr "%n şarkıyı kaldır" - -#: smartplaylists/searchterm.cpp:299 -msgid "shortest first" -msgstr "ilk önce en kısası" - -#: playlist/playlistundocommands.cpp:138 -msgid "shuffle songs" -msgstr "Parçaları karıştır" - -#: smartplaylists/searchterm.cpp:301 -msgid "smallest first" -msgstr "ilk önce en küçüğü" - -#: playlist/playlistundocommands.cpp:131 -msgid "sort songs" -msgstr "şarkıları sırala" - -#: smartplaylists/searchterm.cpp:219 -msgid "starts with" -msgstr "şununla başlıyor" - -#: playlist/playlistdelegates.cpp:185 -msgid "stop" -msgstr "durdur" - -#: widgets/osd.cpp:116 -#, qt-format -msgid "track %1" -msgstr "parça %1" From 96e6252fcadf6c09cc0158a51d5a97b79fc4b5cc Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Sun, 26 Jan 2014 16:51:19 +0100 Subject: [PATCH 011/362] Style the Rip cd dialog Set a specific tab order in the dialog. Add a Clementine window icon. Add a header for the first column in the table widget. Change the button box to a cancel and a close button and make these behave as in the transcoder dialog. Move the rip button to the button box. Hide the progress bar if no cd has been ripped. --- src/ui/ripcd.cpp | 25 +++++- src/ui/ripcd.h | 3 + src/ui/ripcd.ui | 201 ++++++++++++++++++++++------------------------- 3 files changed, 119 insertions(+), 110 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 81d64bacd..0542d0aa4 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -76,10 +76,20 @@ RipCD::RipCD(QWidget* parent) : // Init ui_->setupUi(this); - cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); - connect(ui_->ripButton, SIGNAL(clicked()), this, SLOT(ClickedRipButton())); + // Add a rip button + rip_button_ = ui_->button_box->addButton( + tr("Start ripping"), QDialogButtonBox::ActionRole); + cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); + close_button_ = ui_->button_box->button(QDialogButtonBox::Close); + + // Hide elements + cancel_button_->hide(); + ui_->progress_group->hide(); + + connect(rip_button_, SIGNAL(clicked()), SLOT(ClickedRipButton())); connect(cancel_button_, SIGNAL(clicked()), SLOT(Cancel())); + connect(close_button_, SIGNAL(clicked()), SLOT(hide())); connect(transcoder_, SIGNAL(JobComplete(QString, bool)), SLOT(JobComplete(QString, bool))); connect(transcoder_, SIGNAL(AllJobsComplete()), SLOT(AllJobsComplete())); @@ -303,6 +313,7 @@ void RipCD::ThreadedTranscoding() { } void RipCD::ClickedRipButton() { + SetWorking(true); QtConcurrent::run(this, &RipCD::ThreadClickedRipButton); } @@ -333,6 +344,8 @@ void RipCD::AllJobsComplete() { // Resets lists generated_files_.clear(); tracks_to_rip_.clear(); + + SetWorking(false); } void RipCD::AppendOutput(const QString& filename) { @@ -381,8 +394,16 @@ void RipCD::AddDestination() { void RipCD::Cancel() { transcoder_->Cancel(); + SetWorking(false); } bool RipCD::CDIOIsValid() const { return (cdio_); } + +void RipCD::SetWorking(bool working) { + rip_button_->setVisible(!working); + cancel_button_->setVisible(working); + close_button_->setVisible(!working); + ui_->progress_group->setVisible(true); +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index bc998ab22..060e7956d 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -55,6 +55,8 @@ class RipCD: public QDialog { QList track_names_; QString last_add_dir_; QPushButton* cancel_button_; + QPushButton* close_button_; + QPushButton* rip_button_; void WriteWAVHeader(QFile *stream, int32_t i_bytecount); int NumTracksToRip(); @@ -63,6 +65,7 @@ class RipCD: public QDialog { QString GetOutputFileName(const QString& input, const TranscoderPreset& preset) const; QString ParseFileFormatString(const QString& file_format, int track_no) const; + void SetWorking(bool working); signals: void RippingComplete(); diff --git a/src/ui/ripcd.ui b/src/ui/ripcd.ui index 149e0e681..22f0f53fc 100644 --- a/src/ui/ripcd.ui +++ b/src/ui/ripcd.ui @@ -16,6 +16,10 @@ Dialog + + + :/icon.png:/icon.png + @@ -29,7 +33,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Cancel|QDialogButtonBox::Close @@ -133,7 +137,7 @@ - + Rip @@ -155,29 +159,6 @@ - - - - 10 - 480 - 98 - 27 - - - - &Rip - - - - - - 120 - 480 - 455 - 25 - - - @@ -191,55 +172,6 @@ Output options - - - - Audio format - - - - - - - - 0 - 0 - - - - - - - - Options... - - - - - - - Destination - - - - - - - true - - - - 0 - 0 - - - - - Alongside the originals - - - - @@ -261,42 +193,95 @@ + + + + Destination + + + + + + + + 0 + 0 + + + + + + + + true + + + + 0 + 0 + + + + + Alongside the originals + + + + + + + + Options... + + + + + + + Audio format + + + + + + + 10 + 450 + 571 + 41 + + + + Progress + + + + + 10 + 20 + 551 + 23 + + + + + + tableWidget + albumLineEdit + artistLineEdit + genreLineEdit + yearLineEdit + discLineEdit + format_filename + format + options + destination + select + button_box + - - - button_box - accepted() - RipCD - accept() - - - 248 - 254 - - - 157 - 274 - - - - - button_box - rejected() - RipCD - reject() - - - 316 - 260 - - - 286 - 274 - - - - + From 27b1bf7014240a88143874759c08f7f6309b7aa6 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Sun, 26 Jan 2014 19:12:05 +0100 Subject: [PATCH 012/362] Add buttons 'select all', 'select none' and 'invert selection' buttons to the rip cd dialog. --- src/ui/ripcd.cpp | 26 ++++++++++++++++++++++++ src/ui/ripcd.h | 3 +++ src/ui/ripcd.ui | 51 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 0542d0aa4..5aaccec5c 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -87,6 +87,10 @@ RipCD::RipCD(QWidget* parent) : cancel_button_->hide(); ui_->progress_group->hide(); + connect(ui_->select_all_button, SIGNAL(clicked()), SLOT(SelectAll())); + connect(ui_->select_none_button, SIGNAL(clicked()), SLOT(SelectNone())); + connect(ui_->invert_selection_button, SIGNAL(clicked()), + SLOT(InvertSelection())); connect(rip_button_, SIGNAL(clicked()), SLOT(ClickedRipButton())); connect(cancel_button_, SIGNAL(clicked()), SLOT(Cancel())); connect(close_button_, SIGNAL(clicked()), SLOT(hide())); @@ -407,3 +411,25 @@ void RipCD::SetWorking(bool working) { close_button_->setVisible(!working); ui_->progress_group->setVisible(true); } + +void RipCD::SelectAll() { + foreach (QCheckBox* checkbox, checkboxes_) { + checkbox->setCheckState(Qt::Checked); + } +} + +void RipCD::SelectNone() { + foreach (QCheckBox* checkbox, checkboxes_) { + checkbox->setCheckState(Qt::Unchecked); + } +} + +void RipCD::InvertSelection() { + foreach (QCheckBox* checkbox, checkboxes_) { + if (checkbox->isChecked()) { + checkbox->setCheckState(Qt::Unchecked); + } else { + checkbox->setCheckState(Qt::Checked); + } + } +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 060e7956d..06f9370e8 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -80,6 +80,9 @@ class RipCD: public QDialog { void Options(); void AddDestination(); void Cancel(); + void SelectAll(); + void SelectNone(); + void InvertSelection(); }; #endif // SRC_UI_RIPCD_H_ diff --git a/src/ui/ripcd.ui b/src/ui/ripcd.ui index 22f0f53fc..e70330f78 100644 --- a/src/ui/ripcd.ui +++ b/src/ui/ripcd.ui @@ -40,7 +40,7 @@ 10 - 197 + 210 571 101 @@ -267,9 +267,58 @@ + + + + 10 + 180 + 571 + 31 + + + + + + + Select All + + + + + + + Select None + + + + + + + Invert Selection + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + tableWidget + select_all_button + select_none_button + invert_selection_button albumLineEdit artistLineEdit genreLineEdit From 76a91ded887fc6a9382cd5226c78bca55736ba01 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Sun, 26 Jan 2014 20:34:38 +0100 Subject: [PATCH 013/362] Remove the 'Alongside the originals' destination in the CD rip dialog since it doesn't make sense in this context. Use the home directory as initial destination instead. --- src/ui/ripcd.cpp | 27 ++++++++++++++++----------- src/ui/ripcd.h | 1 + src/ui/ripcd.ui | 5 ----- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 5aaccec5c..7113555dc 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -106,6 +106,7 @@ RipCD::RipCD(QWidget* parent) : connect(ui_->select, SIGNAL(clicked()), SLOT(AddDestination())); setWindowTitle(tr("Rip CD")); + AddDestinationDirectory(QDir::homePath()); cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); if(!cdio_) { @@ -380,19 +381,23 @@ void RipCD::AddDestination() { if (!dir.isEmpty()) { // Keep only a finite number of items in the box. while (ui_->destination->count() >= kMaxDestinationItems) { - ui_->destination->removeItem(1); // The oldest folder item. + ui_->destination->removeItem(0); // The oldest item. } + AddDestinationDirectory(dir); + } +} - QIcon icon = IconLoader::Load("folder"); - QVariant data = QVariant::fromValue(dir); - // Do not insert duplicates. - int duplicate_index = ui_->destination->findData(data); - if (duplicate_index == -1) { - ui_->destination->addItem(icon, dir, data); - ui_->destination->setCurrentIndex(ui_->destination->count() - 1); - } else { - ui_->destination->setCurrentIndex(duplicate_index); - } +// Adds a directory to the 'destination' combo box. +void RipCD::AddDestinationDirectory(QString dir) { + QIcon icon = IconLoader::Load("folder"); + QVariant data = QVariant::fromValue(dir); + // Do not insert duplicates. + int duplicate_index = ui_->destination->findData(data); + if (duplicate_index == -1) { + ui_->destination->addItem(icon, dir, data); + ui_->destination->setCurrentIndex(ui_->destination->count() - 1); + } else { + ui_->destination->setCurrentIndex(duplicate_index); } } diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 06f9370e8..0203ed37c 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -66,6 +66,7 @@ class RipCD: public QDialog { const TranscoderPreset& preset) const; QString ParseFileFormatString(const QString& file_format, int track_no) const; void SetWorking(bool working); + void AddDestinationDirectory(QString dir); signals: void RippingComplete(); diff --git a/src/ui/ripcd.ui b/src/ui/ripcd.ui index e70330f78..555e2b304 100644 --- a/src/ui/ripcd.ui +++ b/src/ui/ripcd.ui @@ -221,11 +221,6 @@ 0 - - - Alongside the originals - - From a31223e45c51123080661b24ce31cc39e8d958fe Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Sun, 26 Jan 2014 21:14:42 +0100 Subject: [PATCH 014/362] Group the input options in the rip cd dialog. Disable input and output groups when there is a ripping in progress. --- src/ui/ripcd.cpp | 2 + src/ui/ripcd.ui | 550 ++++++++++++++++++++++------------------------- 2 files changed, 262 insertions(+), 290 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 7113555dc..592721d1f 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -414,6 +414,8 @@ void RipCD::SetWorking(bool working) { rip_button_->setVisible(!working); cancel_button_->setVisible(working); close_button_->setVisible(!working); + ui_->input_group->setEnabled(!working); + ui_->output_group->setEnabled(!working); ui_->progress_group->setVisible(true); } diff --git a/src/ui/ripcd.ui b/src/ui/ripcd.ui index 555e2b304..a6831d95b 100644 --- a/src/ui/ripcd.ui +++ b/src/ui/ripcd.ui @@ -9,8 +9,8 @@ 0 0 - 601 - 575 + 522 + 563 @@ -20,294 +20,264 @@ :/icon.png:/icon.png - - - - 240 - 530 - 341 - 32 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Close - - - - - - 10 - 210 - 571 - 101 - - - - - 0 - - - - - Year - - - - - - - Disc - - - - - - - Album - - - - - - - - - - - 0 - 0 - - - - - - - - - - - Artist - - - - - - - - - - Genre - - - - - - - - - - - - 10 - 10 - 571 - 171 - - - - - - - 4 - - - true - - - 10 - - - false - - - false - - - - Rip - - - - - Track - - - - - Title - - - - - Duration - - - - - - - - - - 10 - 320 - 571 - 131 - - - - Output options - - - - - - Select... - - - - - - - File Format - - - - - - - %tracknum% - %artist% - %track% - - - - - - - Destination - - - - - - - - 0 - 0 - - - - - - - - true - - - - 0 - 0 - - - - - - - - Options... - - - - - - - Audio format - - - - - - - - - 10 - 450 - 571 - 41 - - - - Progress - - - - - 10 - 20 - 551 - 23 - - - - - - - - 10 - 180 - 571 - 31 - - - - - - - Select All - - - - - - - Select None - - - - - - - Invert Selection - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - + + + + + Input options + + + + + + + + + 0 + 0 + + + + 4 + + + true + + + 10 + + + false + + + false + + + + Rip + + + + + Track + + + + + Title + + + + + Duration + + + + + + + + + + Select All + + + + + + + Select None + + + + + + + Invert Selection + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + + + + + Year + + + + + + + Disc + + + + + + + Album + + + + + + + + + + + 0 + 0 + + + + + + + + + + + Artist + + + + + + + + + + Genre + + + + + + + + + + + + + + + Output options + + + + + + Select... + + + + + + + File Format + + + + + + + %tracknum% - %artist% - %track% + + + + + + + Destination + + + + + + + + 0 + 0 + + + + + + + + true + + + + 0 + 0 + + + + + + + + Options... + + + + + + + Audio format + + + + + + + + + + Progress + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Close + + + + tableWidget From 333b1636fa5884042f69c4912d344374ed7c30b4 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Mon, 27 Jan 2014 00:13:33 +0100 Subject: [PATCH 015/362] Adjust column widths. --- src/ui/ripcd.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 592721d1f..2146bd228 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -77,6 +77,14 @@ RipCD::RipCD(QWidget* parent) : // Init ui_->setupUi(this); + // Set column widths in the QTableWidget. + ui_->tableWidget->horizontalHeader()->setResizeMode( + kCheckboxColumn, QHeaderView::ResizeToContents); + ui_->tableWidget->horizontalHeader()->setResizeMode( + kTrackNumberColumn, QHeaderView::ResizeToContents); + ui_->tableWidget->horizontalHeader()->setResizeMode( + kTrackTitleColumn, QHeaderView::Stretch); + // Add a rip button rip_button_ = ui_->button_box->addButton( tr("Start ripping"), QDialogButtonBox::ActionRole); From c0132b2ed3c850106782a3c6009c7fccd0df53b7 Mon Sep 17 00:00:00 2001 From: asiviero Date: Mon, 27 Jan 2014 00:26:00 -0200 Subject: [PATCH 016/362] Renaming skip properties, strike out track when it is to be skipped --- src/playlist/playlist.cpp | 28 +++++++++++++++------------- src/playlist/playlistitem.cpp | 8 ++++---- src/playlist/playlistitem.h | 8 ++++---- src/ui/mainwindow.cpp | 4 +--- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 25284ba9f..265ccd155 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -342,6 +342,14 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { } return QVariant(); + case Qt::FontRole: + if (items_[index.row()]->GetShouldSkip()) { + QFont track_font; + track_font.setStrikeOut(true); + return track_font; + } + return QVariant(); + default: return QVariant(); } @@ -443,8 +451,9 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { // Advance i until we find any track that is in the filter, skipping // the selected to be skipped - while (i < virtual_items_.count() && (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetToSkip())) { - ++i; + while (i < virtual_items_.count() && + (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetShouldSkip())) { + ++i; } return i; } @@ -452,7 +461,7 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { // We need to advance i until we get something else on the same album Song last_song = current_item_metadata(); for (int j=i+1 ; jGetToSkip()) { + if (item_at(virtual_items_[j])->GetShouldSkip()) { continue; } Song this_song = item_at(virtual_items_[j])->Metadata(); @@ -487,7 +496,7 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { --i; // Decrement i until we find any track that is in the filter - while (i>=0 && (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetToSkip())) + while (i>=0 && (!FilterContainsVirtualIndex(i) || item_at(virtual_items_[i])->GetShouldSkip())) --i; return i; } @@ -495,7 +504,7 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { // We need to decrement i until we get something else on the same album Song last_song = current_item_metadata(); for (int j=i-1 ; j>=0; --j) { - if (item_at(virtual_items_[j])->GetToSkip()) { + if (item_at(virtual_items_[j])->GetShouldSkip()) { continue; } Song this_song = item_at(virtual_items_[j])->Metadata(); @@ -2028,13 +2037,6 @@ void Playlist::SetColumnAlignment(const ColumnAlignmentMap& alignment) { void Playlist::SkipTracks(const QModelIndexList &source_indexes) { foreach (const QModelIndex& source_index, source_indexes) { PlaylistItemPtr track_to_skip = item_at(source_index.row()); - track_to_skip->SetToSkip(!((track_to_skip)->GetToSkip())); - // gray out the song if it's now to be skipped; - // otherwise undo the gray color - if (track_to_skip->GetToSkip()) { - track_to_skip->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); - } else { - track_to_skip->RemoveForegroundColor(kInvalidSongPriority); - } + track_to_skip->SetShouldSkip(!((track_to_skip)->GetShouldSkip())); } } diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index b671351c4..c03ec7f02 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -123,9 +123,9 @@ QColor PlaylistItem::GetCurrentForegroundColor() const { bool PlaylistItem::HasCurrentForegroundColor() const { return !foreground_colors_.isEmpty(); } -void PlaylistItem::SetToSkip(bool val) { - to_skip_ = val; +void PlaylistItem::SetShouldSkip(bool val) { + should_skip_ = val; } -bool PlaylistItem::GetToSkip() const { - return to_skip_; +bool PlaylistItem::GetShouldSkip() const { + return should_skip_; } diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 1c53d9e01..fcfa00628 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -33,7 +33,7 @@ class SqlRow; class PlaylistItem : public boost::enable_shared_from_this { public: PlaylistItem(const QString& type) - : to_skip_(false), + : should_skip_(false), type_(type) {} virtual ~PlaylistItem(); @@ -92,11 +92,11 @@ class PlaylistItem : public boost::enable_shared_from_this { // invalid so you might want to check that its id is not equal to -1 // before actually using it. virtual bool IsLocalLibraryItem() const { return false; } - void SetToSkip(bool val); - bool GetToSkip() const; + void SetShouldSkip(bool val); + bool GetShouldSkip() const; protected: - bool to_skip_; + bool should_skip_; enum DatabaseColumn { Column_LibraryId, diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index bfb002c1d..e57a12244 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1335,7 +1335,7 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& else in_queue ++; - if(item->GetToSkip()) { + if(item->GetShouldSkip()) { in_skipped++; } else { not_in_skipped++; @@ -1390,8 +1390,6 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& else if (in_skipped == 0 && not_in_skipped > 1) playlist_skip_->setText(tr("Skip selected tracks")); - - if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load("go-previous")); else From c90fc638223c48c5c8b3d550b19d36ead7ad83f0 Mon Sep 17 00:00:00 2001 From: Clementine Buildbot Date: Mon, 27 Jan 2014 10:01:54 +0100 Subject: [PATCH 017/362] Automatic merge of translations from Transifex (https://www.transifex.net/projects/p/clementine/resource/clementineplayer) --- src/translations/af.po | 388 ++- src/translations/ar.po | 392 +-- src/translations/be.po | 388 ++- src/translations/bg.po | 388 ++- src/translations/bn.po | 388 ++- src/translations/br.po | 388 ++- src/translations/bs.po | 388 ++- src/translations/ca.po | 390 ++- src/translations/cs.po | 388 ++- src/translations/cy.po | 388 ++- src/translations/da.po | 390 ++- src/translations/de.po | 700 +++-- src/translations/el.po | 388 ++- src/translations/en_CA.po | 388 ++- src/translations/en_GB.po | 388 ++- src/translations/eo.po | 388 ++- src/translations/es.po | 392 +-- src/translations/et.po | 388 ++- src/translations/eu.po | 388 ++- src/translations/fa.po | 388 ++- src/translations/fi.po | 388 ++- src/translations/fr.po | 391 ++- src/translations/ga.po | 388 ++- src/translations/gl.po | 388 ++- src/translations/he.po | 388 ++- src/translations/he_IL.po | 388 ++- src/translations/hi.po | 388 ++- src/translations/hr.po | 390 ++- src/translations/hu.po | 421 +-- src/translations/hy.po | 388 ++- src/translations/ia.po | 388 ++- src/translations/id.po | 388 ++- src/translations/is.po | 388 ++- src/translations/it.po | 390 ++- src/translations/ja.po | 388 ++- src/translations/ka.po | 388 ++- src/translations/kk.po | 388 ++- src/translations/ko.po | 388 ++- src/translations/lt.po | 388 ++- src/translations/lv.po | 388 ++- src/translations/mk_MK.po | 388 ++- src/translations/mr.po | 388 ++- src/translations/ms.po | 388 ++- src/translations/my.po | 394 +-- src/translations/nb.po | 388 ++- src/translations/nl.po | 388 ++- src/translations/oc.po | 388 ++- src/translations/pa.po | 388 ++- src/translations/pl.po | 388 ++- src/translations/pt.po | 390 ++- src/translations/pt_BR.po | 391 ++- src/translations/ro.po | 388 ++- src/translations/ru.po | 388 ++- src/translations/si_LK.po | 388 ++- src/translations/sk.po | 390 ++- src/translations/sl.po | 388 ++- src/translations/sr.po | 388 ++- src/translations/sr@latin.po | 388 ++- src/translations/sv.po | 388 ++- src/translations/te.po | 388 ++- src/translations/tr.po | 390 ++- src/translations/tr_TR.po | 5711 ++++++++++++++++++++++++++++++++++ src/translations/uk.po | 388 ++- src/translations/uz.po | 388 ++- src/translations/vi.po | 388 ++- src/translations/zh_CN.po | 390 ++- src/translations/zh_TW.po | 388 ++- 67 files changed, 20159 insertions(+), 11541 deletions(-) create mode 100644 src/translations/tr_TR.po diff --git a/src/translations/af.po b/src/translations/af.po index 710ee1d06..4a3c1c9f7 100644 --- a/src/translations/af.po +++ b/src/translations/af.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Afrikaans (http://www.transifex.com/projects/p/clementine/language/af/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "&Sentreer" msgid "&Custom" msgstr "&Eie keuse" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Ekstras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Hulp" @@ -189,7 +189,7 @@ msgstr "&Steek weg..." msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musiek" @@ -197,15 +197,15 @@ msgstr "&Musiek" msgid "&None" msgstr "&Geen" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Afspeellys" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Maak toe" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Herhaal tipe" @@ -213,7 +213,7 @@ msgstr "&Herhaal tipe" msgid "&Right" msgstr "&Regs" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Skommel tipe" @@ -221,7 +221,7 @@ msgstr "&Skommel tipe" msgid "&Stretch columns to fit window" msgstr "&Rek kolomme om in venster te pas" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Gereedskap" @@ -366,11 +366,11 @@ msgstr "Staak" msgid "About %1" msgstr "Meer oor %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Meer oor Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Meer oor QT..." @@ -418,19 +418,19 @@ msgstr "Voeg nog 'n stroom by..." msgid "Add directory..." msgstr "Voeg gids by..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Voeg lêer by" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Voeg lêer by..." @@ -438,11 +438,11 @@ msgstr "Voeg lêer by..." msgid "Add files to transcode" msgstr "Voeg lêers by om te transkodeer" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Voeg vouer by" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Voeg vouer by..." @@ -454,7 +454,7 @@ msgstr "Voeg nuwe vouer by..." msgid "Add podcast" msgstr "Voeg potgooi by" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Voeg potgooi by..." @@ -530,7 +530,7 @@ msgstr "Voeg liedjie se snitnommer as 'n etiket by" msgid "Add song year tag" msgstr "Voeg liedjie se jaar by as 'n etiket" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Voeg stroom by..." @@ -542,7 +542,7 @@ msgstr "Voeg toe aan Grooveshark gunstelinge" msgid "Add to Grooveshark playlists" msgstr "Voeg toe aan Grooveshark afspeellys" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Voeg by 'n ander afspeellys by" @@ -603,12 +603,12 @@ msgstr "Na" msgid "After copying..." msgstr "Na kopiëring..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideale hardheid vir alle snitte)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "Albums met omslagte" msgid "Albums without covers" msgstr "Albums sonder omslagte" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alle lêers (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Alle glorie aan die Hypnopadda!" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kunstenaar" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Kunstenaar" @@ -795,7 +795,7 @@ msgstr "Kunstenaarsetikette" msgid "Artist's initial" msgstr "Kunstenaar se voorletters" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Oudioformaat" @@ -841,7 +841,7 @@ msgstr "Gemiddelde beeldgrootte" msgid "BBC Podcasts" msgstr "BBC potgooi" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "SPM" @@ -870,7 +870,7 @@ msgstr "Databasis word gerugsteun" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Verban" @@ -899,7 +899,7 @@ msgstr "Beste" msgid "Biography from %1" msgstr "Biografie vanaf %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bistempo" @@ -1005,7 +1005,7 @@ msgstr "Verandering in Mono-afspeel instellings sal eers aktief wees by die afsp msgid "Check for new episodes" msgstr "Soek vir nuwe episodes" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Kyk vir nuwer weergawes..." @@ -1055,11 +1055,11 @@ msgstr "Daar word skoongemaak" msgid "Clear" msgstr "Wis" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Wis afspeellys" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kliek hier om te wissel tussen oorblywende en totale tyd" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "Kleure" msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma geskeide lys van klas:vlak, vlak is 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentaar" @@ -1198,11 +1198,11 @@ msgstr "Kommentaar" msgid "Complete tags automatically" msgstr "Voltooi etikette outomaties" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Voltooi etikette outomaties..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "Stel Subsonic op..." msgid "Configure global search..." msgstr "Globale soek instellings..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Stel my versameling in..." @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1298,12 +1298,12 @@ msgstr "Skakel alle musiek wat die toestel nie kan speel nie om" msgid "Copy to clipboard" msgstr "Kopiëer na knipbord" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiëer na die toestel..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiëer na my versameling" @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Kan nie die GStreamer element \"%1\" skep nie - maak seker jy het alle nodige GStreamer uitbreidings installeer" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kan nie 'n multiplekser vir %1 vind nie. Maak seker jy het die korrekte GStreamer uitbreidings installeer." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "Kan nie die uittreelêer %1 oopmaak nie" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Omslagbestuurder" @@ -1393,11 +1393,11 @@ msgstr "Pas oorgangsdowing toe wanneer snitte outomaties verander word" msgid "Cross-fade when changing tracks manually" msgstr "Pas oorgangsdowing toe wanneer snitte per hand verander word" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Af" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "Databasiskorrupsie ontdek. Lees asseblief https://code.google.com/p/clementine-player/wiki/DatabaseCorruption vir instruksies hoe om dit reg te maak." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum geskep" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum verander" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "Vee afgelaaide data uit" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Skrap lêers" @@ -1566,7 +1566,7 @@ msgstr "Skrap lêers" msgid "Delete from device..." msgstr "Skrap van toestel..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Skrap van skyf..." @@ -1591,15 +1591,16 @@ msgstr "Skrap die oorspronklike lêers" msgid "Deleting files" msgstr "Lêers word geskrap" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Verwyder gekose snitte uit die tou" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Verwyder snit uit die tou" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Bestemming" @@ -1623,10 +1624,14 @@ msgstr "Toestelsnaam" msgid "Device properties..." msgstr "Toestelseienskappe..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Toestelle" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Het jy bedoel" @@ -1665,8 +1670,8 @@ msgstr "Skakel berekening van die 'moodbar' af" msgid "Disabled" msgstr "Steek weg" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skyf" @@ -1683,7 +1688,7 @@ msgstr "Vertoon keuses" msgid "Display the on-screen-display" msgstr "Toon skermbeeld" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Gaan my hele versameling weer na" @@ -1805,6 +1810,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Tans in dinamiese modus" @@ -1817,12 +1826,12 @@ msgstr "Dinamiese skommeling" msgid "Edit smart playlist..." msgstr "Verander slimspeellys" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Verander etiket" @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "Verander snit se inligting" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Verander snit se inligting" @@ -1936,7 +1945,7 @@ msgstr "Voer hierdie IP-adres in die programetjie in om met Clementine te verbin msgid "Entire collection" msgstr "Hele versameling" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Grafiese effenaar" @@ -1950,7 +1959,7 @@ msgstr "Ekwivalent aan --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fout" @@ -1970,7 +1979,7 @@ msgstr "Fout tydens verwydering van liedjies" msgid "Error downloading Spotify plugin" msgstr "Fout tydens aflaai van die Spotify uitbreiding" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Fout tydens laai van %1" @@ -1980,12 +1989,12 @@ msgstr "Fout tydens laai van %1" msgid "Error loading di.fm playlist" msgstr "Fout tydens laai van di.fm afspeellys" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Fout tydens verwerking van %1:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Fout tydens laai van musiek CD" @@ -2063,27 +2072,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2110,6 +2119,10 @@ msgstr "Uitdowing" msgid "Fading duration" msgstr "Duur van uitdowing" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Gids kon nie gehaal word nie" @@ -2161,6 +2174,10 @@ msgstr "Laai die Subsonic-biblioteek" msgid "Fetching cover error" msgstr "Fout met haal van omslae" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Lêeruitsbreiding" @@ -2169,19 +2186,19 @@ msgstr "Lêeruitsbreiding" msgid "File formats" msgstr "Lêer formate" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Lêernaam" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Lêernaam (sonder pad)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Lêergrootte" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "Lêertipe" msgid "Filename" msgstr "Lêernaam" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Lêers" @@ -2311,9 +2328,10 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellings" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2345,11 +2363,11 @@ msgstr "Gee dit 'n naam:" msgid "Go" msgstr "Gaan" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Gaan na volgende afspeellys oortjie" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Gaan na vorige afspeellys oortjie" @@ -2419,7 +2437,7 @@ msgstr "Groeppeer volgens Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Groeppeer volgens Genre/Kunstenaar/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2574,6 +2592,10 @@ msgstr "%1 word geïndeks" msgid "Information" msgstr "Inligting" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Voeg in..." @@ -2586,7 +2608,7 @@ msgstr "Geïnstalleer" msgid "Integrity check" msgstr "Integriteitstoets" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2626,6 +2648,10 @@ msgstr "Ongeldige sessiesleutel" msgid "Invalid username and/or password" msgstr "Ongeldige gebruikersnaam en/of wagwoord" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2650,7 +2676,7 @@ msgstr "Jamendo se top snitte vir die week" msgid "Jamendo database" msgstr "Jamendo databasis" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Spring na die snit wat tans speel" @@ -2674,7 +2700,7 @@ msgstr "Hou aan uitvoer in die agtergrond al word die venster gesluit" msgid "Keep the original files" msgstr "Hou die oorspronklike lêers" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Katjies" @@ -2698,7 +2724,7 @@ msgstr "Groot album omslag" msgid "Large sidebar" msgstr "Groot kantlyn-kieslys" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Laaste afgespeel" @@ -2781,12 +2807,12 @@ msgstr "Laat leeg vir standaardwaarde. Voorbeelde: \"/dev/dsp\", \"front\", ens msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengte" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Versameling" @@ -2794,7 +2820,7 @@ msgstr "Versameling" msgid "Library advanced grouping" msgstr "Gevorderde groeppering van versameling" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Versameling hernagaan kennisgewing" @@ -2839,7 +2865,7 @@ msgstr "Verkry omslag van skyf..." msgid "Load playlist" msgstr "Laai afspeellys" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Laai afspeellys..." @@ -2868,11 +2894,11 @@ msgstr "Liedjies word gelaai" msgid "Loading stream" msgstr "Stroom word gelaai" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Snitte word gelaai" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Snitinligting word gelaai" @@ -2891,10 +2917,10 @@ msgstr "Laai lêers/URLs en vervang huidige afspeellys" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Teken aan" @@ -2906,7 +2932,7 @@ msgstr "Aanteken onsuksesvol" msgid "Long term prediction profile (LTP)" msgstr "Langtermyn voorspellingsmodel (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Luister graag" @@ -2969,7 +2995,7 @@ msgstr "Klaar afgelaai vanaf Magnatune" msgid "Main profile (MAIN)" msgstr "Hoofprofiel (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Maak dit so!" @@ -3052,7 +3078,7 @@ msgstr "Speel in Mono af" msgid "Months" msgstr "Maande" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Stemming" @@ -3082,7 +3108,7 @@ msgstr "Monteringsadresse" msgid "Move down" msgstr "Skuid af" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Skuif na my versameling..." @@ -3091,7 +3117,7 @@ msgstr "Skuif na my versameling..." msgid "Move up" msgstr "Skuid op" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musiek" @@ -3099,7 +3125,7 @@ msgstr "Musiek" msgid "Music Library" msgstr "Musiekversameling" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Maak stil" @@ -3187,7 +3213,7 @@ msgstr "Nooit begin afspeel" msgid "New folder" msgstr "Nuwe gids" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nuwe afspeellys" @@ -3211,7 +3237,7 @@ msgstr "Nuutste snitte" msgid "Next" msgstr "Volgende" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Volgende snit" @@ -3250,7 +3276,7 @@ msgstr "Geen kort blokke" msgid "None" msgstr "Geen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Geen van die gekose liedjies is geskik om na die toestel te kopiëer nie." @@ -3368,7 +3394,7 @@ msgstr "Ondeursigtigheid" msgid "Open %1 in browser" msgstr "Maak %1 in webblaaier oop" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Maak &oudio CD oop..." @@ -3384,7 +3410,7 @@ msgstr "Maak OPML lêer oop..." msgid "Open device" msgstr "Open device" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Lêer..." @@ -3419,7 +3445,7 @@ msgstr "Fokus op bistempo" msgid "Optimize for quality" msgstr "Fokus op kwaliteit" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Keuses..." @@ -3431,7 +3457,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Sorteer Lêers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Sorteer Lêers..." @@ -3455,7 +3481,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Uittree keuses" @@ -3496,7 +3522,7 @@ msgstr "Partytjie" msgid "Password" msgstr "Wagwoord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3509,7 +3535,7 @@ msgstr "Afspeel is gepauseer" msgid "Paused" msgstr "Gepauseerd" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3522,9 +3548,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Gewone sykieslys" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Speel" @@ -3537,7 +3563,7 @@ msgstr "Speel kunstenaar of etiket" msgid "Play artist radio..." msgstr "Speel kunstenaar radio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Afspeeltelling" @@ -3592,7 +3618,7 @@ msgstr "Afspeellys keuses" msgid "Playlist type" msgstr "Afspeellys tipe" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Afspeellys" @@ -3644,7 +3670,7 @@ msgstr "Voorversterker" msgid "Preferences" msgstr "Instellings" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Instellings..." @@ -3699,7 +3725,7 @@ msgstr "Voorskou" msgid "Previous" msgstr "Vorige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Vorige snit" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "Profiel" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Vordering" @@ -3742,16 +3768,16 @@ msgstr "Kwaliteit" msgid "Querying device..." msgstr "Toestel word ondervra..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Tou bestuurder" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Plaas geselekteerde snitte in die tou" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Plaas snit in die tou" @@ -3763,7 +3789,7 @@ msgstr "Radio (selfde hardheid vir alle snitte)" msgid "Radios" msgstr "Radio's" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Rëen" @@ -3795,7 +3821,7 @@ msgstr "Gee die huidige liedjie 4 sterre" msgid "Rate the current song 5 stars" msgstr "Gee die huidige liedjie 5 sterre" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Aantal sterre" @@ -3853,7 +3879,7 @@ msgstr "Verwyder" msgid "Remove action" msgstr "Verwyder aksie" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Verwyder duplikate vanuit die afspeellys" @@ -3869,7 +3895,7 @@ msgstr "Verwyder vanuit My Musiek" msgid "Remove from favorites" msgstr "Verwyder van gunstelinge" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Verwyder vanuit afspeellys" @@ -3906,7 +3932,7 @@ msgstr "Herbenoem afspeellys" msgid "Rename playlist..." msgstr "Herbenoem afspeellys..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Hernommer snitte in hierdie volgorde..." @@ -3997,6 +4023,18 @@ msgstr "Gaan terug na Clementine." msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4023,7 +4061,7 @@ msgstr "Veilige verwydering van toestel" msgid "Safely remove the device after copying" msgstr "Verwyder toestel veilig na kopiëring" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Monstertempo" @@ -4051,7 +4089,7 @@ msgstr "Stoor beeld" msgid "Save playlist" msgstr "Stoor afspeellys" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Stoor afspeellys" @@ -4087,7 +4125,7 @@ msgstr "Skaleerbare monstertempo profiel (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Telling" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Noteer snitte wat ek na luister op" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "Streef 'n relatiewe hoeveelheid deur die huidige snit" msgid "Seek the currently playing track to an absolute position" msgstr "Streef na 'n spesifieke posisie in die huidige snit" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Kies Almal" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Kies geen" @@ -4212,7 +4250,7 @@ msgstr "Kies visualisasie" msgid "Select visualizations..." msgstr "Kies visualisasie..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4232,7 +4270,7 @@ msgstr "Bedienerbesonderhede" msgid "Service offline" msgstr "Diens aflyn" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Stel %1 na \"%2\"..." @@ -4241,7 +4279,7 @@ msgstr "Stel %1 na \"%2\"..." msgid "Set the volume to percent" msgstr "Stel die volume na persent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Stel waarde vir alle geselekteerde snitte" @@ -4304,7 +4342,7 @@ msgstr "Wys 'n mooi skermbeeld" msgid "Show above status bar" msgstr "Wys bo toestandsbalk" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Wys alle liedjies" @@ -4324,12 +4362,12 @@ msgstr "Wys verdelers" msgid "Show fullsize..." msgstr "Wys volgrootte..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Wys in lêerblaaier..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4341,11 +4379,11 @@ msgstr "Wys tussen verkeie kunstenaars" msgid "Show moodbar" msgstr "Wys stemmingsbalk" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Wys slegs duplikate" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Wys slegs sonder etikette" @@ -4385,7 +4423,7 @@ msgstr "Skommel albums" msgid "Shuffle all" msgstr "Skommel alles" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Skommel speellys" @@ -4425,7 +4463,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Spring terugwaarts in afspeellys" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Aantal keer oorgeslaan" @@ -4461,7 +4499,7 @@ msgstr "Sagte Rock" msgid "Song Information" msgstr "Liedjie Inligting" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Liedjie" @@ -4493,7 +4531,7 @@ msgstr "Sorteer liedjies volgens" msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Bron" @@ -4529,6 +4567,10 @@ msgstr "Standaard" msgid "Starred" msgstr "Gegradeer" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Begin die huidige afspeellys speel" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "Begin iets bo in die soekblokkie te tik om resultate hier te sien" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 word begin" @@ -4557,7 +4599,7 @@ msgstr "In aanvang..." msgid "Stations" msgstr "Stasies" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stop" @@ -4566,7 +4608,7 @@ msgstr "Stop" msgid "Stop after" msgstr "Stop na" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stop na hierdie snit" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "Hierdie lêers sal vanaf die toestel verwyder word. Is jy seker?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "Hierdie stroom is slegs vir betalende lede." msgid "This type of device is not supported: %1" msgstr "Hierdie tipe toestel word nie ondersteun nie: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" @@ -4871,11 +4914,11 @@ msgstr "Skakel mooi skermbeeld aan/af" msgid "Toggle fullscreen" msgstr "Skakel volskerm aan/af" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Skakel tou-status aan/af" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Skakel log van geluisterde musiek aanlyn aan/af" @@ -4907,12 +4950,13 @@ msgstr "Totale aantal grepe oorgedra" msgid "Total network requests made" msgstr "Totale aantal versoeke oor die netwerk gemaak" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Snit" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transkodeer musiek" @@ -5010,7 +5054,7 @@ msgstr "Dateer Grooveshark afspeellys op" msgid "Update all podcasts" msgstr "Dateer alle potgooie op" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Gaan versameling na vir veranderinge" @@ -5165,7 +5209,7 @@ msgstr "Bekyk" msgid "Visualization mode" msgstr "Visualisasie modus" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisasies" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "Wil jy die ander liedjies in hierdie album ook na Verskeie Kunstenaars skuif?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Wil jy alles van voor af deursoek?" @@ -5305,10 +5349,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Jaar" diff --git a/src/translations/ar.po b/src/translations/ar.po index 36ecbb7a1..26b38c48b 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -8,13 +8,13 @@ # khire aldin kajjan , 2012 # Storm Al Ghussein , 2013 # simohamed , 2013-2014 -# Mohamed Tayeh , 2013 +# Mohamed Tayeh , 2013-2014 # newstyle20 , 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-20 00:39+0000\n" -"Last-Translator: simohamed \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/clementine/language/ar/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -172,11 +172,11 @@ msgstr "&وسط" msgid "&Custom" msgstr "&تخصيص" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&إضافات" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&مساعدة" @@ -193,7 +193,7 @@ msgstr "إخفاء..." msgid "&Left" msgstr "&يسار" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&موسيقى" @@ -201,15 +201,15 @@ msgstr "&موسيقى" msgid "&None" msgstr "&لا شيئ" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&قائمة التشغيل" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&خروج" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&نمط التكرار" @@ -217,7 +217,7 @@ msgstr "&نمط التكرار" msgid "&Right" msgstr "&يمين" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&نمط الخلط" @@ -225,7 +225,7 @@ msgstr "&نمط الخلط" msgid "&Stretch columns to fit window" msgstr "&تمديد الأعمدة لتتناسب مع الناقدة" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&أدوات" @@ -370,11 +370,11 @@ msgstr "ألغ" msgid "About %1" msgstr "عن %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "عن كليمنتاين..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "عن QT..." @@ -422,19 +422,19 @@ msgstr "إضافة Stream أخر" msgid "Add directory..." msgstr "أضف مجلد..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "أضف ملفا" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "أضف ملفا للتحويل" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "أضف ملف(s) للتحويل" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "أضافة ملف..." @@ -442,11 +442,11 @@ msgstr "أضافة ملف..." msgid "Add files to transcode" msgstr "أضف ملفات للتحويل" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "إضافة مجلد" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "إضافة مجلد..." @@ -458,7 +458,7 @@ msgstr "أضف مجلد جديد..." msgid "Add podcast" msgstr "إضافة بودكاست" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "إضافة بودكاست..." @@ -534,7 +534,7 @@ msgstr "أضف وسم للمقطع" msgid "Add song year tag" msgstr "أضف وسم سنة المقطع" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "أضف رابط انترنت..." @@ -546,7 +546,7 @@ msgstr "أضف إلى المفضلة في Grooveshark" msgid "Add to Grooveshark playlists" msgstr "أضف إلى قوائم التشغيل في Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "أضف إلى قائمة تشغيل أخرى" @@ -607,12 +607,12 @@ msgstr "بعد" msgid "After copying..." msgstr "بعد النسخ..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "الألبوم" @@ -620,7 +620,7 @@ msgstr "الألبوم" msgid "Album (ideal loudness for all tracks)" msgstr "ألبوم (شدة صوت مثلى لجميع المقاطع)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -642,11 +642,11 @@ msgstr "ألبومات بغلاف" msgid "Albums without covers" msgstr "ألبومات بدون غلاف" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "جميع الملفات (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -773,17 +773,17 @@ msgid "" "the songs of your library?" msgstr "هل أنت متأكد من رغبتك بكتابة احصائيات المقاطع في ملفات المقاطع بالنسبة لكل المقاطع التي في مكتبتك الصوتية؟" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "الفنان" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "معلومات الفنان" @@ -799,7 +799,7 @@ msgstr "وسومات الفنان" msgid "Artist's initial" msgstr "بداية الفنان" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "صيغة الصوت" @@ -845,7 +845,7 @@ msgstr "القياس المتوسط للصور" msgid "BBC Podcasts" msgstr "بودكاست BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -874,7 +874,7 @@ msgstr "استعادة قاعدة البيانات" msgid "Balance" msgstr "توازن" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "حظر" @@ -903,7 +903,7 @@ msgstr "الأفضل" msgid "Biography from %1" msgstr "السيرة الذاتية من %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "معدل البت" @@ -1009,7 +1009,7 @@ msgstr "تغيير إعدادات تشغيل مونو سيأخذ بعين الا msgid "Check for new episodes" msgstr "التمس حلقات جديدة" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "التمس التحديثات" @@ -1059,11 +1059,11 @@ msgstr "تنضيف" msgid "Clear" msgstr "امسح" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "امسح قائمة التشغيل" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1154,8 +1154,8 @@ msgstr "اضغط هنا لتفضيل هذه القائمة. هكذا سيتم ح msgid "Click to toggle between remaining time and total time" msgstr "اضغط للتبديل بين الوقت المتبقي والوقت الكلي." -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1193,7 +1193,7 @@ msgstr "الألوان" msgid "Comma separated list of class:level, level is 0-3" msgstr "لائحة عناصر مفروقة بفاصلة لـ \"class:level\"، قيمة Level بين 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "تعليق" @@ -1202,11 +1202,11 @@ msgstr "تعليق" msgid "Complete tags automatically" msgstr "أكمل الوسوم تلقائيا" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "أكمل الوسوم تلقائيا..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "إعدادات Subsonic..." msgid "Configure global search..." msgstr "إعدادات البحث العامة..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "إعدادات المكتبة" @@ -1282,7 +1282,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "تم تجاوز مدة الانتظار، تأكد من رابط الخادم. مثال: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "طرفية" @@ -1302,12 +1302,12 @@ msgstr "حول جميع المقاطع التي لا يستطيع الجهاز msgid "Copy to clipboard" msgstr "نسخ إلى المكتبة..." -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "نسخ إلى جهاز..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "نسخ إلى المكتبة..." @@ -1329,14 +1329,14 @@ msgid "" "required GStreamer plugins installed" msgstr "تعذر إنشاء عنصر Gstreamer \"%1\" - تأكد أن جميع ملحقات GStreamer الضرورية مثبتة" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "تعذر العثور على معدد من أجل %1، تأكد أن ملحقات GStreamer الضرورية مثبتة" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1353,7 +1353,7 @@ msgid "Couldn't open output file %1" msgstr "تعذر فتح الملف %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "مدير الغلاف" @@ -1397,11 +1397,11 @@ msgstr "أخفت الصوت تدريجيا عند التبديل تلقائيا msgid "Cross-fade when changing tracks manually" msgstr "أخفت الصوت تدريجيا عند التبديل يدويا بين المقاطع" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1409,63 +1409,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1508,11 +1508,11 @@ msgid "" "recover your database" msgstr "تم كشف قاعدة بيانات فاسدة. الرجاء قراءة https://code.google.com/p/clementine-player/wiki/DatabaseCorruption ففيها تعليمات لكيفية استعادة قاعدة البيانات." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "تاريخ الإنشاء" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "حُرِرَ بِتاريخ" @@ -1562,7 +1562,7 @@ msgid "Delete downloaded data" msgstr "حذف البيانات المحملة" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "احذف الملفات" @@ -1570,7 +1570,7 @@ msgstr "احذف الملفات" msgid "Delete from device..." msgstr "احذف من الجهاز" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "احذف من القرص..." @@ -1595,15 +1595,16 @@ msgstr "احذف الملفات الأصلية" msgid "Deleting files" msgstr "حذف الملفات" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "أزل المختارة من لائحة الانتظار" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "أزل المقطع من لائحة الانتظار" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "الوجهة" @@ -1627,10 +1628,14 @@ msgstr "اسم الجهاز" msgid "Device properties..." msgstr "خصائص الجهاز..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "أجهزة" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "الحوار" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "هل قصدت" @@ -1669,8 +1674,8 @@ msgstr "ألغ إنشاء شريط المزاج" msgid "Disabled" msgstr "غير مفعل" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "قرص مدمج" @@ -1687,7 +1692,7 @@ msgstr "خيارات العرض" msgid "Display the on-screen-display" msgstr "أظهر قائمة الشاشة" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "افحص المكتبة كاملة" @@ -1809,6 +1814,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "المدة" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "النمط النشيط مفعل" @@ -1821,12 +1830,12 @@ msgstr "مزج عشوائي تلقائيا" msgid "Edit smart playlist..." msgstr "حرر قائمة التشغيل الذكية" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "حرر الوسم \"%1\"" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "حرر الوسم..." @@ -1839,7 +1848,7 @@ msgid "Edit track information" msgstr "تعديل معلومات المقطع" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "تعديل معلومات المقطع..." @@ -1940,7 +1949,7 @@ msgstr "أدخل عنوان الايبي - IP - في التطبيق للاتصا msgid "Entire collection" msgstr "كامل المجموعة" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "معدل الصوت" @@ -1954,7 +1963,7 @@ msgstr "يكافئ --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "خطأ" @@ -1974,7 +1983,7 @@ msgstr "خطأ في حذف المقاطع" msgid "Error downloading Spotify plugin" msgstr "خطأ أثناء تحميل ملحق Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "خطأ في تحميل %1" @@ -1984,12 +1993,12 @@ msgstr "خطأ في تحميل %1" msgid "Error loading di.fm playlist" msgstr "خطأ في تحميل قائمة تشغيل di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "حدث خطأ بتطبيق %1:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "حدث خطأ أثناء تحميل القرص الصوتي" @@ -2067,27 +2076,27 @@ msgstr "تم الانتهاء من التصدير" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "تم تصدير %1 أغلفة من إجمالي %2 (تم تخطي %3)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2114,6 +2123,10 @@ msgstr "تلاشي" msgid "Fading duration" msgstr "مدة التلاشي" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "فشل في قراءة القرص CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "فشل جلب المسار" @@ -2165,6 +2178,10 @@ msgstr "جلب مكتبة Subsonic..." msgid "Fetching cover error" msgstr "خطأ أثناء جلب الغلاف" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "صيغة الملف" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "امتداد الملف" @@ -2173,19 +2190,19 @@ msgstr "امتداد الملف" msgid "File formats" msgstr "صيغ الملف" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "اسم الملف" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "اسم الملف (من دون المسار)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "حجم الملف" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2195,7 +2212,7 @@ msgstr "نوع الملف" msgid "Filename" msgstr "اسم الملف" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "الملفات" @@ -2315,9 +2332,10 @@ msgstr "عام" msgid "General settings" msgstr "إعدادات عامة" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "النوع" @@ -2349,11 +2367,11 @@ msgstr "أعط اسما:" msgid "Go" msgstr "اذهب" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "انتقل للسان قائمة التشغيل التالي" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "انتقل للسان قائمة التشغيل السابق" @@ -2423,7 +2441,7 @@ msgstr "تجميع حسب النوع/الألبوم" msgid "Group by Genre/Artist/Album" msgstr "تجميع حسب النوع/الفنان/الألبوم" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "تجميع" @@ -2578,6 +2596,10 @@ msgstr "فهرسة %1" msgid "Information" msgstr "معلومات" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "إدارج..." @@ -2590,7 +2612,7 @@ msgstr "مثبت" msgid "Integrity check" msgstr "فحص شامل" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "انترنت" @@ -2630,6 +2652,10 @@ msgstr "مفتاح جلسة غير صالح" msgid "Invalid username and/or password" msgstr "اسم مستخدم أو كلمة سر غير صالحة." +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2654,7 +2680,7 @@ msgstr "أفضل مقاطع الأسبوع على Jamendo" msgid "Jamendo database" msgstr "قاعدة بيانات Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "اقفز إلى المقطع الجاري تشغيله" @@ -2678,7 +2704,7 @@ msgstr "تابع التشغيل في الخلفية عند إغلاق الناف msgid "Keep the original files" msgstr "أبقي على الملفات الأصلية" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "قطط" @@ -2702,7 +2728,7 @@ msgstr "غلاف كبير لـ الألبوم" msgid "Large sidebar" msgstr "عارضة جانبية عريضة" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "المشغلة مؤخرا" @@ -2785,12 +2811,12 @@ msgstr "اتركه فارغا لاعتماد التفضيلات البدئية. msgid "Left" msgstr "يسار" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "المدة" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "المكتبة" @@ -2798,7 +2824,7 @@ msgstr "المكتبة" msgid "Library advanced grouping" msgstr "إعدادات متقدمة لتجميع المكتبة" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "إشعار إعادة فحص المكتبة" @@ -2843,7 +2869,7 @@ msgstr "تحميل الغلاف من القرص..." msgid "Load playlist" msgstr "تحميل قائمة تشغيل" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "تحميل قائمة تشغيل..." @@ -2872,11 +2898,11 @@ msgstr "تحميل المقاطع" msgid "Loading stream" msgstr "تحميل تيار الانترنت" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "جاري تحميل المقاطع" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "جاري تحميل معلومات المقاطع" @@ -2895,10 +2921,10 @@ msgstr "تحميل ملفات/روابط، استبدال قائمة التشغ #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "تسجيل الدخول" @@ -2910,7 +2936,7 @@ msgstr "فشل الولوج" msgid "Long term prediction profile (LTP)" msgstr "ملف تعريف لتوقعات بعيدة المدى (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "إعجاب" @@ -2973,7 +2999,7 @@ msgstr "تم تحميل Magnatude" msgid "Main profile (MAIN)" msgstr "ملف التعريف القياسي (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "فلتكن هكذا!" @@ -3056,7 +3082,7 @@ msgstr "تشغيل مونو" msgid "Months" msgstr "الأشهر" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "المزاج" @@ -3086,7 +3112,7 @@ msgstr "نقط الوصل" msgid "Move down" msgstr "أسفل" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "انقل إلى المكتبة" @@ -3095,7 +3121,7 @@ msgstr "انقل إلى المكتبة" msgid "Move up" msgstr "أعلى" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "موسيقى" @@ -3103,7 +3129,7 @@ msgstr "موسيقى" msgid "Music Library" msgstr "مكتبة الصوتيات" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "كتم الصوت" @@ -3191,7 +3217,7 @@ msgstr "لم يبدأ تشغيلها أبدا" msgid "New folder" msgstr "مجلد جديد" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "قائمة تشغيل جديدة" @@ -3215,7 +3241,7 @@ msgstr "أحدث المقاطع" msgid "Next" msgstr "التالي" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "المقطع التالي" @@ -3254,7 +3280,7 @@ msgstr "بدون أجزاء قصيرة" msgid "None" msgstr "لا شيء" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "لا مقطع من المقاطع المختارة مناسب لنسخه لجهاز." @@ -3372,7 +3398,7 @@ msgstr "الشفافية" msgid "Open %1 in browser" msgstr "فتح %1 في المتصفح" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "فتح &قرص CD..." @@ -3388,7 +3414,7 @@ msgstr "فتح ملف OPML..." msgid "Open device" msgstr "فتح جهاز" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "فتح ملف..." @@ -3423,7 +3449,7 @@ msgstr "تحسين لصبيب أفضل" msgid "Optimize for quality" msgstr "تحسين لجودة أفضل" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "الإعدادات..." @@ -3435,7 +3461,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "ترتيب الملفات" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "ترتيب الملفات..." @@ -3459,7 +3485,7 @@ msgstr "مخرج" msgid "Output device" msgstr "جهاز الإخراج" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "خيارات المخرج" @@ -3500,7 +3526,7 @@ msgstr "حفلة" msgid "Password" msgstr "كلمة السر" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "إيقاف مؤقت" @@ -3513,7 +3539,7 @@ msgstr "أوقف التشغيل مؤقتا" msgid "Paused" msgstr "تم الإيقاف مؤقتا" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "المؤدي" @@ -3526,9 +3552,9 @@ msgstr "بكسل" msgid "Plain sidebar" msgstr "شريط جانبي عريض" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "تشغيل" @@ -3541,7 +3567,7 @@ msgstr "شغل الفنان أو الوسم" msgid "Play artist radio..." msgstr "شغل راديو الفنان" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "عدد مرات التشغيل" @@ -3596,7 +3622,7 @@ msgstr "خيارات قائمة التشغيل" msgid "Playlist type" msgstr "نوع قائمة التشغيل" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "قوائم التشغيل" @@ -3648,7 +3674,7 @@ msgstr "تقوية استباقية" msgid "Preferences" msgstr "التفضيلات" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "التفضيلات..." @@ -3703,7 +3729,7 @@ msgstr "المعاينة" msgid "Previous" msgstr "السابق" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "المقطع السابق" @@ -3717,7 +3743,7 @@ msgid "Profile" msgstr "ملف التعريف" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "التقدم" @@ -3746,16 +3772,16 @@ msgstr "الجودة" msgid "Querying device..." msgstr "الاستعلام عن الجهاز..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "مدير لائحة الانتظار" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "أضف المختارة للائحة الانتظار" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "أضف للائحة الانتظار" @@ -3767,7 +3793,7 @@ msgstr "راديو (شدة صوت متساوية لجمع المقاطع)" msgid "Radios" msgstr "راديو" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "مطر" @@ -3799,7 +3825,7 @@ msgstr "قيم المقطع الحالي ب 4 نجوم" msgid "Rate the current song 5 stars" msgstr "قيم المقطع الحالي ب 5 نجوم" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "تقييم" @@ -3857,7 +3883,7 @@ msgstr "احذف" msgid "Remove action" msgstr "احذف العملية" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "احذف المقاطع المكررة من قائمة التشغيل" @@ -3873,7 +3899,7 @@ msgstr "حذف من مقاطعي" msgid "Remove from favorites" msgstr "احذف من المفضلة" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "احذف من قائمة التشغيل" @@ -3910,7 +3936,7 @@ msgstr "أعد تسمية قائمة التشغيل" msgid "Rename playlist..." msgstr "أعد تسمية قائمة التشغيل" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "أعد ترقيم المقاطع في هذا الترتيب..." @@ -4001,6 +4027,18 @@ msgstr "ارجع لكلمنتاين" msgid "Right" msgstr "يمين" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "قرص RIP" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "قرص صوتي Rip" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4027,7 +4065,7 @@ msgstr "احذف الجهاز بأمان" msgid "Safely remove the device after copying" msgstr "احذف الجهاز بأمان بعد انتهاء النسخ" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "معدل العينة" @@ -4055,7 +4093,7 @@ msgstr "احفظ الصورة" msgid "Save playlist" msgstr "حفظ قائمة التشغيل" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "حفظ قائمة التشغيل..." @@ -4091,7 +4129,7 @@ msgstr "ملف التعريف Scalable sampling rate (SSR)" msgid "Scale size" msgstr "غيّر الحجم" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "النتيجة" @@ -4100,7 +4138,7 @@ msgid "Scrobble tracks that I listen to" msgstr "أرسل معلومات المقاطع التي استمع إليها" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4184,11 +4222,11 @@ msgstr "انتقل في المقطع الحالي إلى موضع نسبي" msgid "Seek the currently playing track to an absolute position" msgstr "انتقل في المقطع الحالي إلى موضع محدد" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "اختر الكل" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "لا تختر شيئا" @@ -4216,7 +4254,7 @@ msgstr "اختر التأثيرات المرئية" msgid "Select visualizations..." msgstr "اختر التأثيرات المرئية..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "اختر..." @@ -4236,7 +4274,7 @@ msgstr "معلومات الخادم" msgid "Service offline" msgstr "خدمة غير متصلة" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "غير %1 إلى %2" @@ -4245,7 +4283,7 @@ msgstr "غير %1 إلى %2" msgid "Set the volume to percent" msgstr "اجعل درجة الصوت بنسبة " -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "اجعل هذه القيمة لجميع المقاطع المختارة" @@ -4308,7 +4346,7 @@ msgstr "أظهر تنبيهات كلمنتاين" msgid "Show above status bar" msgstr "أظهر فوق شريط الحالة" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "أظهر جميع المقاطع" @@ -4328,12 +4366,12 @@ msgstr "أظهر الفواصل" msgid "Show fullsize..." msgstr "أظهر الحجم الأصلي..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "أظهر في متصفح الملفات..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "أظهر في المكتبة..." @@ -4345,11 +4383,11 @@ msgstr "أظهر في فنانين متنوعين" msgid "Show moodbar" msgstr "أظهر عارضة المزاج" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "أظهر المقاطع المكررة فقط" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "أظهر المقطاع غير الموسومة فقط" @@ -4389,7 +4427,7 @@ msgstr "اخلط الألبومات" msgid "Shuffle all" msgstr "اخلط الكل" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "اخلط قائمة التشغيل" @@ -4429,7 +4467,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "تجاهل السابق في قائمة التشغيل" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "تخطى العد" @@ -4465,7 +4503,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "معلومات المقطع" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "معلومات المقطع" @@ -4497,7 +4535,7 @@ msgstr "رتب المقاطع حسب" msgid "Sorting" msgstr "ترتيب" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "المصدر" @@ -4533,6 +4571,10 @@ msgstr "قياسي" msgid "Starred" msgstr "مميز" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "ابدأ قئمة التشغيل اللتي تعمل حالياً" @@ -4548,7 +4590,7 @@ msgid "" "list" msgstr "ابدأ بكتابة شيء ما في خانة البحث أعلاه لملء هذه اللائحة من النتائج" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "بدأ %1" @@ -4561,7 +4603,7 @@ msgstr "بدأ..." msgid "Stations" msgstr "محطات" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "إيقاف" @@ -4570,7 +4612,7 @@ msgstr "إيقاف" msgid "Stop after" msgstr "إيقاف بعد" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "أوقف بعد هذا المقطع" @@ -4738,7 +4780,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "لقد انتهت المدة التجريبية لخادم Subsonic. الرجاء التبرع للحصول على مفتاح رخصة. لمزيد من التفاصيل زر subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4779,7 +4821,7 @@ msgid "" "continue?" msgstr "سيتم حذف هذه الملفات من الجهاز. هل أنت متأكد من رغبتك بالاستمرار؟" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4851,9 +4893,10 @@ msgstr "هذا التيار للاشتراكات المدفوعة فقط" msgid "This type of device is not supported: %1" msgstr "هذا النوع من الأجهزة غير مدعوم: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "العنوان" @@ -4875,11 +4918,11 @@ msgstr "بدّل تنبيهات كلمنتاين" msgid "Toggle fullscreen" msgstr "بدّل نمط ملء الشاشة" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "بدّل حالة لائحة الانتظار" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "بدّل حالة نقل المعلومات المستمع إليها" @@ -4911,12 +4954,13 @@ msgstr "إجمالي البايتات المرسلة" msgid "Total network requests made" msgstr "إجمالي طلبات الشبكة " -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "المقطوعة" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "تحويل الصوتيات" @@ -5014,7 +5058,7 @@ msgstr "حدّث قائمة تشغيل Grooveshark" msgid "Update all podcasts" msgstr "حدّث جميع البودكاست" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "حدّث المجلدات التي تغيرت في المكتبة" @@ -5169,7 +5213,7 @@ msgstr "عرض" msgid "Visualization mode" msgstr "نمط التأثيرات المرئية" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "التأثيرات المرئية" @@ -5297,7 +5341,7 @@ msgid "" "well?" msgstr "هل ترغب بنقل المقاطع الأخرى في هذا الألبوم لفئة فنانون متنوعون؟" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "هل ترغب بالقيام بفحص شامل الآن؟" @@ -5309,10 +5353,10 @@ msgstr "أكتب جميع إحصائيات المقاطع في ملفات الم msgid "Wrong username or password." msgstr "اسم مستخدم أو كلمة سر خاطئة." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "السنة" diff --git a/src/translations/be.po b/src/translations/be.po index 7ee958377..ed2e8a1ca 100644 --- a/src/translations/be.po +++ b/src/translations/be.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/clementine/language/be/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "Па &цэнтры" msgid "&Custom" msgstr "&Іншы" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Пашырэньні" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Даведка" @@ -190,7 +190,7 @@ msgstr "&Схаваць..." msgid "&Left" msgstr "&Зьлева" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Музыка" @@ -198,15 +198,15 @@ msgstr "Музыка" msgid "&None" msgstr "&Няма" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Плэйліст" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Выйсьці" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Рэжым паўтору" @@ -214,7 +214,7 @@ msgstr "Рэжым паўтору" msgid "&Right" msgstr "&Справа" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Рэжым мяшаньня" @@ -222,7 +222,7 @@ msgstr "Рэжым мяшаньня" msgid "&Stretch columns to fit window" msgstr "&Выраўнаць слупкі па памеры вакна" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Iнструмэнты" @@ -367,11 +367,11 @@ msgstr "Адмена" msgid "About %1" msgstr "Пра %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Пра праграму Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Пра Qt..." @@ -419,19 +419,19 @@ msgstr "Дадаць іншае струменевае вяшчанне" msgid "Add directory..." msgstr "Дадаць каталёг" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Дадаць файл" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Дадаць файл..." @@ -439,11 +439,11 @@ msgstr "Дадаць файл..." msgid "Add files to transcode" msgstr "Дадаць файлы для перакадаваньня" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Дадаць каталёг" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Дадаць каталёг..." @@ -455,7 +455,7 @@ msgstr "Дадаць новы каталёг..." msgid "Add podcast" msgstr "Дадаць подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Дадаць подкаст..." @@ -531,7 +531,7 @@ msgstr "Дадаць тэг \"Нумар трэку\"" msgid "Add song year tag" msgstr "Дадаць тэг \"Год\"" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Дадаць струмень..." @@ -543,7 +543,7 @@ msgstr "Дадаць у абранае Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Дадаць у плэйлісты Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Дадаць у іншы плэйліст" @@ -604,12 +604,12 @@ msgstr "Пасьля" msgid "After copying..." msgstr "Пасьля капіяваньня..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Альбом" @@ -617,7 +617,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідэальная гучнасьць для ўсіх трэкаў)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "Альбомы з вокладкамі" msgid "Albums without covers" msgstr "Альбомы бяз вокладак" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Усе файлы (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Уся слава Гіпнажабе!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Выканаўца" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Пра Артыста" @@ -796,7 +796,7 @@ msgstr "Тэгі выканаўцы" msgid "Artist's initial" msgstr "Ініцыялы выканаўцы" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Фармат аўдыё" @@ -842,7 +842,7 @@ msgstr "Прыкладны памер выявы" msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "Рэзэрвнае капіяваньне базы дадзеных" msgid "Balance" msgstr "Балянс" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Забараніць" @@ -900,7 +900,7 @@ msgstr "Найлепшая" msgid "Biography from %1" msgstr "Біяграфія з %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Бітрэйт" @@ -1006,7 +1006,7 @@ msgstr "Зьмяненьне наладаў прайграваньня мона msgid "Check for new episodes" msgstr "Праверыць новыя выпускі" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Праверыць абнаўленьні..." @@ -1056,11 +1056,11 @@ msgstr "Ачыстка" msgid "Clear" msgstr "Ачысьціць" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Ачысьціць плэйліст" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Націсьніце для пераключэньня паміж часам, які застаецца і поўнай працягласьцю" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "Колеры" msgid "Comma separated list of class:level, level is 0-3" msgstr "Падзелены коскамі сьпіс \"кляс:узровень\", дзе ўзровень ад 0 да 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Камэнтар" @@ -1199,11 +1199,11 @@ msgstr "Камэнтар" msgid "Complete tags automatically" msgstr "Аўтаматычна запоўніць тэгі" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Аўтаматычна запоўніць тэгі..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "Наладзіць Subsonic..." msgid "Configure global search..." msgstr "Наладзіць глябальны пошук..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Наладзіць калекцыю..." @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Кансоль" @@ -1299,12 +1299,12 @@ msgstr "Канвэртаваць ўсю музыку, якую можа прай msgid "Copy to clipboard" msgstr "Скапіяваць у буфэр" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Капіяваць на прыладу..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Капіяваць у калекцыю..." @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Немагчыма стварыць элемент GStreamer \"%1\" - пераканайцеся, што ў вас усталяваныя ўсе неабходныя плагіны GStreamer" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Немагчыма знайсці мультыплексар для %1. Пераканайцеся, што ў вас усталяваныя неабходныя плагіны GStreamer." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "Немагчыма адкрыць выходны файл %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Мэнэджэр вокладак" @@ -1394,11 +1394,11 @@ msgstr "Кросфэйд пры аўтаматычнай зьмене трэку msgid "Cross-fade when changing tracks manually" msgstr "Кросфэйд пры ручной змене трэку" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "База дадзеных пашкоджаная. Калі ласка прачытайце https://code.google.com/p/clementine-player/wiki/DatabaseCorruption для інструкцыяў па аднаўленьню." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата стварэньня" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата зьмены" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "Выдаліць спампаваныя дадзеныя" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Выдаліць файлы" @@ -1567,7 +1567,7 @@ msgstr "Выдаліць файлы" msgid "Delete from device..." msgstr "Выдаліць з прылады" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Выдаліць з дыску..." @@ -1592,15 +1592,16 @@ msgstr "Выдаліць арыгінальныя файлы" msgid "Deleting files" msgstr "Выдаленьне файлаў" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Прыбраць з чаргі абраныя трэкі" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Прыбраць трэк з чаргі " #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Назначэньне" @@ -1624,10 +1625,14 @@ msgstr "Імя прылады" msgid "Device properties..." msgstr "Уласьцівасьці прылады..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Прылады" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Магчыма, вы мелі на ўвазе" @@ -1666,8 +1671,8 @@ msgstr "Выключыць генэрацыю панэлі настрою" msgid "Disabled" msgstr "Выключана" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Дыск" @@ -1684,7 +1689,7 @@ msgstr "Налады адлюстраваньня" msgid "Display the on-screen-display" msgstr "Паказваць экраннае апавяшчэньне" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Перасканаваць бібліятэку" @@ -1806,6 +1811,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Дынамічны рэжым уключаны" @@ -1818,12 +1827,12 @@ msgstr "Выпадковы дынамічны мікс" msgid "Edit smart playlist..." msgstr "Рэдагаваць смарт-плэйліст" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Рэдагаваць тэг..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "Рэдагаваньне інфарамацыі аб кампазыцыі" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Рэдагаваць інфармацыю аб кампазыцыі..." @@ -1937,7 +1946,7 @@ msgstr "Уведзьце гэты IP у Прыкладаньні для падл msgid "Entire collection" msgstr "Уся калекцыя" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Эквалайзэр" @@ -1951,7 +1960,7 @@ msgstr "Аналягічна --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Памылка" @@ -1971,7 +1980,7 @@ msgstr "Памылка выдаленьня песень" msgid "Error downloading Spotify plugin" msgstr "Памылка запампоўкі плагіна Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Памылка загрузкі %1" @@ -1981,12 +1990,12 @@ msgstr "Памылка загрузкі %1" msgid "Error loading di.fm playlist" msgstr "Памылка пры загрузке плэйлісту di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Памылка пры апрацоўке %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Памылка пры загрузке Аўдыё CD" @@ -2064,27 +2073,27 @@ msgstr "Экспартаваньне скончана" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Экспартавана %1 вокладак(кі) з %2 (%3 прапушчана)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "Згасаньне" msgid "Fading duration" msgstr "Працягласьць згасаньня" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Памылка атрыманьне каталёгу" @@ -2162,6 +2175,10 @@ msgstr "Складаньне бібліятэкі Subsonic" msgid "Fetching cover error" msgstr "Памылка пошуку вокладкі" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Пашырэньне файлу" @@ -2170,19 +2187,19 @@ msgstr "Пашырэньне файлу" msgid "File formats" msgstr "Фарматы файлаў" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Імя файла" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Імя файла (без указаньня шляху)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Памер файлу" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "Тып файлу" msgid "Filename" msgstr "Имя файлу" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Файлы" @@ -2312,9 +2329,10 @@ msgstr "Агульныя" msgid "General settings" msgstr "Агульныя налады" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" @@ -2346,11 +2364,11 @@ msgstr "Даць імя:" msgid "Go" msgstr "Перайсьці" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Перайсьці да наступнага сьпісу прайграваньня" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Перайсьці да папярэдняга сьпісу прайграваньня" @@ -2420,7 +2438,7 @@ msgstr "Сартаваць па Жанр/Альбом" msgid "Group by Genre/Artist/Album" msgstr "Сартаваць па Жанр/Выканаўца/Альбом" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групаваньне" @@ -2575,6 +2593,10 @@ msgstr "Індэксуем %1" msgid "Information" msgstr "Сьведкі" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Устаўка" @@ -2587,7 +2609,7 @@ msgstr "Усталявана" msgid "Integrity check" msgstr "Праверка цельнасьці" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Інтэрнэт" @@ -2627,6 +2649,10 @@ msgstr "Няправільны ключ сэсіі" msgid "Invalid username and/or password" msgstr "Няверныя імя карыстальніка і/ці пароль" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Самыя папулярныя трэкі тыдня на Jamendo" msgid "Jamendo database" msgstr "База Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Перайсьці да бягучага трэку" @@ -2675,7 +2701,7 @@ msgstr "Працягваць працу ў фонавым рэжыме, калі msgid "Keep the original files" msgstr "Захаваць арыгінальныя файлы" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Кацяняты" @@ -2699,7 +2725,7 @@ msgstr "Вялікая вокладка альбому" msgid "Large sidebar" msgstr "Шырокая бакавая панэль" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Апошняе праслуханае" @@ -2782,12 +2808,12 @@ msgstr "Пакіньце пустым для змоўчаньня. Напрык msgid "Left" msgstr "Левы" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Працягласьць" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Бібліятэка" @@ -2795,7 +2821,7 @@ msgstr "Бібліятэка" msgid "Library advanced grouping" msgstr "Пашыраная сартоўка калекцыі" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Апавяшчэньне сканіраваньня бібліятэкі" @@ -2840,7 +2866,7 @@ msgstr "Загрузіць вокладку з дыску..." msgid "Load playlist" msgstr "Загрузіць плэйліст" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Загрузіць плэйліст..." @@ -2869,11 +2895,11 @@ msgstr "Загрузка песень" msgid "Loading stream" msgstr "Загрузка струменю" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Загрузка трэкаў" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Загрузка інфармацыі пра трэк" @@ -2892,10 +2918,10 @@ msgstr "Загрузіць файлы/URLs, замяняючы бягучы пл #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Уваход" @@ -2907,7 +2933,7 @@ msgstr "Памылка ўваходу" msgid "Long term prediction profile (LTP)" msgstr "Профіль Long term prediction (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Упадабаць" @@ -2970,7 +2996,7 @@ msgstr "Загрузка Magnatune скончаная" msgid "Main profile (MAIN)" msgstr "Асноўны профіль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Да будзе так!" @@ -3053,7 +3079,7 @@ msgstr "Прайграваньне мона" msgid "Months" msgstr "Месяцаў" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Настрой" @@ -3083,7 +3109,7 @@ msgstr "Пункты мантаваньня" msgid "Move down" msgstr "Перамясьціць долу" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Перамясьціць у бібліятэку" @@ -3092,7 +3118,7 @@ msgstr "Перамясьціць у бібліятэку" msgid "Move up" msgstr "Перамясьціць вышэй" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Музыка" @@ -3100,7 +3126,7 @@ msgstr "Музыка" msgid "Music Library" msgstr "Музычная Бібліятэка" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Бязгучна" @@ -3188,7 +3214,7 @@ msgstr "Ніколі не пачынаць прайграваць" msgid "New folder" msgstr "Новая тэчка" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Новы плэйліст" @@ -3212,7 +3238,7 @@ msgstr "Новыя трэкі" msgid "Next" msgstr "Далей" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Наступны трэк" @@ -3251,7 +3277,7 @@ msgstr "Без кароткіх блёкаў" msgid "None" msgstr "Нічога" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ніводная з абраных песень ня будзе скапіяваная на прыладу" @@ -3369,7 +3395,7 @@ msgstr "Непразрыстасьць" msgid "Open %1 in browser" msgstr "Адчыніць %1 у браўзэры" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Адкрыць аўдыё CD..." @@ -3385,7 +3411,7 @@ msgstr "Адкрыць файл OPML..." msgid "Open device" msgstr "Адкрыць прыладу" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Адкрыць файл..." @@ -3420,7 +3446,7 @@ msgstr "Аптымізаваць па бітрэйце" msgid "Optimize for quality" msgstr "Аптымізаваць па якасьці" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Опцыі..." @@ -3432,7 +3458,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Упарадкаваць файлы" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Упарадкаваць файлы..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "Вывадная прылада" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Опцыі вываду" @@ -3497,7 +3523,7 @@ msgstr "Party" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Прыпыніць" @@ -3510,7 +3536,7 @@ msgstr "Прыпыніць прайграваньне" msgid "Paused" msgstr "Прыпынены" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Нармальная бакавая панэль" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Прайграць" @@ -3538,7 +3564,7 @@ msgstr "Прайграць выканаўцу ці тэг" msgid "Play artist radio..." msgstr "Прайграць радыё артыста..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Колькасць прайграваньняў" @@ -3593,7 +3619,7 @@ msgstr "Налады плэйлісту" msgid "Playlist type" msgstr "Тып плэйлісту" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Плэйлісты" @@ -3645,7 +3671,7 @@ msgstr "Прадузмацненьне" msgid "Preferences" msgstr "Налады" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Налады..." @@ -3700,7 +3726,7 @@ msgstr "Перадагляд" msgid "Previous" msgstr "Папярэдні" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Папярэдні трэк" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "Профіль" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Прагрэс" @@ -3743,16 +3769,16 @@ msgstr "Якасьць" msgid "Querying device..." msgstr "Апытваньне прылады..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Мэнэджэр Чаргі" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Дадаць абраныя трэкі ў чаргу" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Дадаць у чаргу" @@ -3764,7 +3790,7 @@ msgstr "Радыё (аднолькавая гучнасьць для ўсіх т msgid "Radios" msgstr "Радыё" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Дождж" @@ -3796,7 +3822,7 @@ msgstr "Ацаніць бягучую кампазыцыю ў 4 зоркі" msgid "Rate the current song 5 stars" msgstr "Ацаніць бягучую кампазыцыю ў 5 зорак" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рэйтынг" @@ -3854,7 +3880,7 @@ msgstr "Выдаліць" msgid "Remove action" msgstr "Выдаліць дзеяньне" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Прыбраць паўторы з плэйлісту" @@ -3870,7 +3896,7 @@ msgstr "Прыбраць з Маёй Музыкі" msgid "Remove from favorites" msgstr "Прыбраць з абраных" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Прыбраць з плэйлісту" @@ -3907,7 +3933,7 @@ msgstr "Пераназваць плэйліст" msgid "Rename playlist..." msgstr "Пераназваць плэйліст..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Перанумараваць трэкі ў такім парадку..." @@ -3998,6 +4024,18 @@ msgstr "Вярнуцца ў Clementine." msgid "Right" msgstr "Правы" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4024,7 +4062,7 @@ msgstr "Бясьпечна выняць прыладу" msgid "Safely remove the device after copying" msgstr "Бясьпечна выняць прыладу пасьля капіяваньня" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Чашчыня" @@ -4052,7 +4090,7 @@ msgstr "Захаваць выяву" msgid "Save playlist" msgstr "Захаваць плэйліст" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Захаваць плэйліст..." @@ -4088,7 +4126,7 @@ msgstr "Профіль Scalable sampling rate (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Лік" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Скробліць трэкі, якія я слухаю" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "Крыху пераматаць быгучы трэк" msgid "Seek the currently playing track to an absolute position" msgstr "Пераматаць бягучы трэк на абсалютную пазыцыю" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Абраць усё" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Адмяніць выбар" @@ -4213,7 +4251,7 @@ msgstr "Выбраць візуалізацыі" msgid "Select visualizations..." msgstr "Выбраць візуалізацыі..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "Дэталі сэрвэру" msgid "Service offline" msgstr "Служба не працуе" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Усталяваць %1 у \"%2\"..." @@ -4242,7 +4280,7 @@ msgstr "Усталяваць %1 у \"%2\"..." msgid "Set the volume to percent" msgstr "Усталяваць гучнасьць у адсоткаў" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Усталяваць значэньне для вызначаных трэкаў..." @@ -4305,7 +4343,7 @@ msgstr "Паказваць OSD" msgid "Show above status bar" msgstr "Паказаць над радком стану" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Паказаць усе кампазыцыі" @@ -4325,12 +4363,12 @@ msgstr "Паказваць падзяляльнікі" msgid "Show fullsize..." msgstr "Паказаць поўны памер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Паказаць ў аглядчыку файлаў" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "Паказаць ў \"Розных выканаўцах\"" msgid "Show moodbar" msgstr "Паказаць панэль настрою" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Паказваць толькі дубляваныя" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Паказваць толькі бяз тэгаў" @@ -4386,7 +4424,7 @@ msgstr "Перамяшаць альбомы" msgid "Shuffle all" msgstr "Перамяшаць усё" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Перамяшаць плэйліст" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Перамясьціць назад у плэйлісьце" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Прапусьціць падлік" @@ -4462,7 +4500,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Інфармацыя аб кампазыцыі" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Пра Песьню" @@ -4494,7 +4532,7 @@ msgstr "Сартаваць песьні па" msgid "Sorting" msgstr "Сартаваць" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Крыніца" @@ -4530,6 +4568,10 @@ msgstr "Стандартны" msgid "Starred" msgstr "Ацэненыя" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Запусьціць бягучы плэйліст" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "Пачніце друкаваць штосьці ў пошукавым радку" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Запуск %1" @@ -4558,7 +4600,7 @@ msgstr "Запуск..." msgid "Stations" msgstr "Станцыі" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Спыніць" @@ -4567,7 +4609,7 @@ msgstr "Спыніць" msgid "Stop after" msgstr "Спыніць пасьля" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Спыніць пасьля гэтага трэку" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Скончыўся пробны пэрыяд сэрвэру Subsonic. Калі ласка заплаціце каб атрымаць ліцэнзыйны ключ. Наведайце subsonic.org для падрабязнасьцяў." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "Гэтыя файлы будуць выдаленыя з прылады, вы дакладна жадаеце працягнуць?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "Гэты струмень толькі для платных падпі msgid "This type of device is not supported: %1" msgstr "Гэты тып прылады не падтрымліваецца: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Назва" @@ -4872,11 +4915,11 @@ msgstr "Уключыць" msgid "Toggle fullscreen" msgstr "Укл/Выкл поўнаэкранны рэжым" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Пераключыць стан чаргі" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Укл/Выкл скроблінг" @@ -4908,12 +4951,13 @@ msgstr "Перадана байтаў увогуле" msgid "Total network requests made" msgstr "Выканана сеткавых запытаў увогуле" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Трэк" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Перакадаваньне Музыкі" @@ -5011,7 +5055,7 @@ msgstr "Абнавіць плэйліст Grooveshark" msgid "Update all podcasts" msgstr "Абнавіць усе подкасты" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Абнавіць зьмененыя тэчкі бібліятэкі" @@ -5166,7 +5210,7 @@ msgstr "Прагляд" msgid "Visualization mode" msgstr "Рэжым візуалізацыі" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Візуалізацыі" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "Перасунуць іншыя песьні з гэтага альбому ў Розныя Выканаўцы?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Ці жадаеце запусьціць паўторнае сканіраваньне?" @@ -5306,10 +5350,10 @@ msgstr "Запісваць усю статыстыку песень ў іх фа msgid "Wrong username or password." msgstr "Няправільнае імя ці пароль." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Год" diff --git a/src/translations/bg.po b/src/translations/bg.po index 8a1e72179..7389a0f39 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/clementine/language/bg/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -172,11 +172,11 @@ msgstr "&Център" msgid "&Custom" msgstr "&Потребителски" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Допълнения" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Помо&щ" @@ -193,7 +193,7 @@ msgstr "&Скриване..." msgid "&Left" msgstr "&Ляво" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Музика" @@ -201,15 +201,15 @@ msgstr "Музика" msgid "&None" msgstr "&Никакъв" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Списък с песни" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Изход" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Режим „Повторение“" @@ -217,7 +217,7 @@ msgstr "Режим „Повторение“" msgid "&Right" msgstr "&Дясно" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Режим „Случаен ред“" @@ -225,7 +225,7 @@ msgstr "Режим „Случаен ред“" msgid "&Stretch columns to fit window" msgstr "&Разтегли колоните да се вместят в прозореца" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Инструменти" @@ -370,11 +370,11 @@ msgstr "Отхвърляне" msgid "About %1" msgstr "Относно %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Относно Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Относно QT..." @@ -422,19 +422,19 @@ msgstr "Добавяне на друг поток..." msgid "Add directory..." msgstr "Добавяне на папка..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Добавяне на файл" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Добавяне на файл..." @@ -442,11 +442,11 @@ msgstr "Добавяне на файл..." msgid "Add files to transcode" msgstr "Добавяне на файлове за прекодиране" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Добавяне на папка" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Добавяне на папка..." @@ -458,7 +458,7 @@ msgstr "Добавяне на нова папка..." msgid "Add podcast" msgstr "Добавя движещ се текст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Добавяне на подкаст..." @@ -534,7 +534,7 @@ msgstr "Добавяне на етикет за номер на песен" msgid "Add song year tag" msgstr "Добавяне на етикет за година на песен" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Добавяне на поток..." @@ -546,7 +546,7 @@ msgstr "Добавяне към Grooveshark любими" msgid "Add to Grooveshark playlists" msgstr "Добавяне към Grooveshark списък с песни" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Добави в друг списък с песни" @@ -607,12 +607,12 @@ msgstr "След " msgid "After copying..." msgstr "След копиране..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Албум" @@ -620,7 +620,7 @@ msgstr "Албум" msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална сила на звука за всички песни)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -642,11 +642,11 @@ msgstr "Албуми с обложки" msgid "Albums without covers" msgstr "Албуми без обложки" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Всички файлове (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Славният хипножабок!" @@ -773,17 +773,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Изпълнител" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Информация за изпълнителя" @@ -799,7 +799,7 @@ msgstr "Етикети за изпълнителя" msgid "Artist's initial" msgstr "Инициали на изпълнителя" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Аудио формат" @@ -845,7 +845,7 @@ msgstr "Среден размер на изображение" msgid "BBC Podcasts" msgstr "BBC подкасти" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Темпо" @@ -874,7 +874,7 @@ msgstr "Архивиране на базата данни" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Забрана" @@ -903,7 +903,7 @@ msgstr "Най-добро" msgid "Biography from %1" msgstr "Биография от %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Поток в битове" @@ -1009,7 +1009,7 @@ msgstr "" msgid "Check for new episodes" msgstr "Провери за нови епизоди" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Проверка за обновления..." @@ -1059,11 +1059,11 @@ msgstr "Почистване" msgid "Clear" msgstr "Изчистване" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Изчистване на списъка с песни" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1154,8 +1154,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Цъкнете за да превключите между оставащо и пълно време" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1193,7 +1193,7 @@ msgstr "Цветове" msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделен със запетаи списък с class:level, level (ниво) е 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" @@ -1202,11 +1202,11 @@ msgstr "Коментар" msgid "Complete tags automatically" msgstr "Автоматично довършване на етикетите" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Автоматично довършване на етикетите..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Configure global search..." msgstr "Конфигурирай глобално търсене" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Настройване на библиотека..." @@ -1282,7 +1282,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Конзола" @@ -1302,12 +1302,12 @@ msgstr "Конвертиране само музиката, която това msgid "Copy to clipboard" msgstr "Копиране в буфера" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копирай в устройство..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Копиране в библиотека..." @@ -1329,14 +1329,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Не мога да създам GStreamer елемент \"%1\" - уверете се, че всички необходими приставки на GStreamer са инсталирани" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не мога да намеря миксер за %1, проверете дали имате инсталирани правилните GStreamer плъгини." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1353,7 +1353,7 @@ msgid "Couldn't open output file %1" msgstr "Не мога да отворя изходен файл %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Мениджър за обложки" @@ -1397,11 +1397,11 @@ msgstr "Плавен преход при автоматична смяна на msgid "Cross-fade when changing tracks manually" msgstr "Плавен преход при ръчна смяна на песни" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1409,63 +1409,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1508,11 +1508,11 @@ msgid "" "recover your database" msgstr "Забелязана е повреда в базата данни. Моля, вижте https://code.google.com/p/clementine-player/wiki/DatabaseCorruption за инструкции за възстановяването на Вашата база данни" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата на създаване" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата на променяне" @@ -1562,7 +1562,7 @@ msgid "Delete downloaded data" msgstr "Изтрий свалените данни" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Изтриване на файлове" @@ -1570,7 +1570,7 @@ msgstr "Изтриване на файлове" msgid "Delete from device..." msgstr "Изтриване от устройство" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Изтриване от диска..." @@ -1595,15 +1595,16 @@ msgstr "Изтрий оригиналните файлове" msgid "Deleting files" msgstr "Изтриване на файлове" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Махни от опашката избраните парчета" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Махни от опашката парчето" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Местоположение" @@ -1627,10 +1628,14 @@ msgstr "Име на устройство" msgid "Device properties..." msgstr "Свойства на устройство..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Устройства" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Може би имахте предвид" @@ -1669,8 +1674,8 @@ msgstr "" msgid "Disabled" msgstr "Изключено" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1687,7 +1692,7 @@ msgstr "Настройки на показването" msgid "Display the on-screen-display" msgstr "Показване на екранно уведомление" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Пусни пълно повторно сканиране на библиотеката" @@ -1809,6 +1814,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Динамичния режим е включен" @@ -1821,12 +1830,12 @@ msgstr "Динамичен случаен микс" msgid "Edit smart playlist..." msgstr "Редактиране умен списък с песни..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Редактиране на етикет..." @@ -1839,7 +1848,7 @@ msgid "Edit track information" msgstr "Редактиране на информацията за песента" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Редактиране на информацията за песента..." @@ -1940,7 +1949,7 @@ msgstr "Въведето този IP в App за да се свържете с C msgid "Entire collection" msgstr "Цялата колекция" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Еквалайзер" @@ -1954,7 +1963,7 @@ msgstr "Еквивалентно на --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Грешка" @@ -1974,7 +1983,7 @@ msgstr "Грешка при изтриване на песни" msgid "Error downloading Spotify plugin" msgstr "Грешка при изтеглянето на приставка за Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Грешка при зареждане на %1" @@ -1984,12 +1993,12 @@ msgstr "Грешка при зареждане на %1" msgid "Error loading di.fm playlist" msgstr "Грешка при зареждане на di.fm списък с песни" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Грешка при обработване на %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Грешка при зареждането на аудио CD" @@ -2067,27 +2076,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2114,6 +2123,10 @@ msgstr "Заглушаване" msgid "Fading duration" msgstr "Продължителност на заглушаване" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Неуспех при извличане на директория" @@ -2165,6 +2178,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Грешка по време на свалянето на обложката" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Файлово разширение" @@ -2173,19 +2190,19 @@ msgstr "Файлово разширение" msgid "File formats" msgstr "Файлови формати" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Име на файл" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Име на файл (без път)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Размер на файла" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2195,7 +2212,7 @@ msgstr "Тип на файла" msgid "Filename" msgstr "Име на файл" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Файлове" @@ -2315,9 +2332,10 @@ msgstr "Общи" msgid "General settings" msgstr "Общи настройки" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" @@ -2349,11 +2367,11 @@ msgstr "Въведете име:" msgid "Go" msgstr "Давай" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Отиване към подпрозореца със следващия списък с песни" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Отиване към подпрозореца с предишния списък с песни" @@ -2423,7 +2441,7 @@ msgstr "Групиране по Жанр/Албум" msgid "Group by Genre/Artist/Album" msgstr "Групиране по Жанр/Изпълнител/Албум" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2578,6 +2596,10 @@ msgstr "Индексиране %1" msgid "Information" msgstr "Информация" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Вмъкване..." @@ -2590,7 +2612,7 @@ msgstr "Инсталирани" msgid "Integrity check" msgstr "Проверка на интегритета" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Интернет" @@ -2630,6 +2652,10 @@ msgstr "Невалиден ключ за сесия" msgid "Invalid username and/or password" msgstr "Невалидно потебителско име и/или парола" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2654,7 +2680,7 @@ msgstr "Най-високо класираните парчета в Jamendo т msgid "Jamendo database" msgstr "Jamendo база от данни" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Отиване до песента, изпълнявана в момента" @@ -2678,7 +2704,7 @@ msgstr "Продължи ипзълнението и във фонов режи msgid "Keep the original files" msgstr "Запази оригиналните файлове" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Котенца" @@ -2702,7 +2728,7 @@ msgstr "Голяма обложка" msgid "Large sidebar" msgstr "Голяма странична лента" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Последно изпълнение" @@ -2785,12 +2811,12 @@ msgstr "Оставете празно за данни по подразбира msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Дължина" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Библиотека" @@ -2798,7 +2824,7 @@ msgstr "Библиотека" msgid "Library advanced grouping" msgstr "Разширено групиране на Библиотеката" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Известие за повторно сканиране на библиотеката" @@ -2843,7 +2869,7 @@ msgstr "Зареждане на обложката от диска..." msgid "Load playlist" msgstr "Зареждане на списък с песни" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Зареждане на списък с песни..." @@ -2872,11 +2898,11 @@ msgstr "Зареждане на песни" msgid "Loading stream" msgstr "Зареждане на поток..." -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Зареждане на песни" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Зареждане на информация за песните" @@ -2895,10 +2921,10 @@ msgstr "Зареждане на файлове/URL адреси, заместв #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Влизане" @@ -2910,7 +2936,7 @@ msgstr "Влизането не успя" msgid "Long term prediction profile (LTP)" msgstr "Long term prediction profile (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Любима" @@ -2973,7 +2999,7 @@ msgstr "Изтеглянето от Magnatune завършено" msgid "Main profile (MAIN)" msgstr "Main profile (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Направи го така!" @@ -3056,7 +3082,7 @@ msgstr "" msgid "Months" msgstr "Месеца" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Статус" @@ -3086,7 +3112,7 @@ msgstr "Точки за монтиране" msgid "Move down" msgstr "Преместване надолу" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Преместване в библиотека..." @@ -3095,7 +3121,7 @@ msgstr "Преместване в библиотека..." msgid "Move up" msgstr "Преместване нагоре" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Музика" @@ -3103,7 +3129,7 @@ msgstr "Музика" msgid "Music Library" msgstr "Музикална Библиотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Без звук" @@ -3191,7 +3217,7 @@ msgstr "Никога да не се пуска възпроизвежданет msgid "New folder" msgstr "Нова папка" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Нов списък с песни" @@ -3215,7 +3241,7 @@ msgstr "Най-нови парчета" msgid "Next" msgstr "Следваща" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Следваща песен" @@ -3254,7 +3280,7 @@ msgstr "No short blocks" msgid "None" msgstr "Никаква" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Никоя от избраните песни бяха сподобни да бъдат копирани на устройството" @@ -3372,7 +3398,7 @@ msgstr "Непрозрачност" msgid "Open %1 in browser" msgstr "Отвори %1 в браузъра" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Отваряне на &аудио CD..." @@ -3388,7 +3414,7 @@ msgstr "" msgid "Open device" msgstr "Отворено устройство" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Отваряне на файл..." @@ -3423,7 +3449,7 @@ msgstr "Оптимизиране на битов поток" msgid "Optimize for quality" msgstr "Оптимизиране за качество" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Настройки…" @@ -3435,7 +3461,7 @@ msgstr "" msgid "Organise Files" msgstr "Организиране на Файлове" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Организиране на файлове..." @@ -3459,7 +3485,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Изходни настройки" @@ -3500,7 +3526,7 @@ msgstr "Парти" msgid "Password" msgstr "Парола" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Пауза" @@ -3513,7 +3539,7 @@ msgstr "На пауза" msgid "Paused" msgstr "На пауза" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3526,9 +3552,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Стандартна странична лента" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Възпроизвеждане" @@ -3541,7 +3567,7 @@ msgstr "Възпроизвеждане на изпълнител или етик msgid "Play artist radio..." msgstr "Възпроизвеждане радиото на изпълнителя" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Брой изпълнения" @@ -3596,7 +3622,7 @@ msgstr "Настройки на списъка с песни" msgid "Playlist type" msgstr "Тип на списъка с песни" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Списъци с песни" @@ -3648,7 +3674,7 @@ msgstr "Предусилвател" msgid "Preferences" msgstr "Настройки" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Настройки..." @@ -3703,7 +3729,7 @@ msgstr "Преглед" msgid "Previous" msgstr "Предишна" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Предишна песен" @@ -3717,7 +3743,7 @@ msgid "Profile" msgstr "Профил" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Напредък" @@ -3746,16 +3772,16 @@ msgstr "Качество" msgid "Querying device..." msgstr "Заявящо устойство..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Мениджър на опашката" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Пратете избраните песни на опашката" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Прати избрана песен на опашката" @@ -3767,7 +3793,7 @@ msgstr "Радио (еднаква сила на звука за всички п msgid "Radios" msgstr "Радиа" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Дъжд" @@ -3799,7 +3825,7 @@ msgstr "Задай рейтинг на текущата песен 4 звезд msgid "Rate the current song 5 stars" msgstr "Задай рейтинг на текущата песен 5 звезди" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" @@ -3857,7 +3883,7 @@ msgstr "Премахване" msgid "Remove action" msgstr "Премахване на действието" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Премахни дублиранията от плейлиста" @@ -3873,7 +3899,7 @@ msgstr "Премахни от Моята музика" msgid "Remove from favorites" msgstr "Премахване от любими" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Премахване от списъка с песни" @@ -3910,7 +3936,7 @@ msgstr "Преименуване на списъка с песни" msgid "Rename playlist..." msgstr "Преименуване на списъка с песни..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Преномерирай песните в този ред..." @@ -4001,6 +4027,18 @@ msgstr "Назад към Clementine" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Рок" @@ -4027,7 +4065,7 @@ msgstr "Безопасно премахване на устройството" msgid "Safely remove the device after copying" msgstr "Безопасно премахване на устройството след приключване на копирането" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Дискретизация" @@ -4055,7 +4093,7 @@ msgstr "Запазване на изображение" msgid "Save playlist" msgstr "Запазване на списъка с песни" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Запазване на списъка с песни..." @@ -4091,7 +4129,7 @@ msgstr "Scalable sampling rate profile (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Резултат" @@ -4100,7 +4138,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Запази песните, които слушам" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4184,11 +4222,11 @@ msgstr "Следене на текущата песен с относителн msgid "Seek the currently playing track to an absolute position" msgstr "Следене на текущата песен с абсолютно позиция" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Избиране на всички" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Изчистване на избора" @@ -4216,7 +4254,7 @@ msgstr "Избери визуализации" msgid "Select visualizations..." msgstr "Избери визуализации..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4236,7 +4274,7 @@ msgstr "Подробности за сървъра" msgid "Service offline" msgstr "Услугата е недостъпна" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Задай %1 да е %2\"..." @@ -4245,7 +4283,7 @@ msgstr "Задай %1 да е %2\"..." msgid "Set the volume to percent" msgstr "Ниво на звука - процента" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Избери стойност за всички песни" @@ -4308,7 +4346,7 @@ msgstr "Показване на красиво OSD" msgid "Show above status bar" msgstr "Покажи над status bar-а" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Показвай всички песни" @@ -4328,12 +4366,12 @@ msgstr "Покажи разделители" msgid "Show fullsize..." msgstr "Покажи в пълен размер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Покажи във файловия мениджър..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4345,11 +4383,11 @@ msgstr "Показване в смесени изпълнители" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Показвай само дубликати" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Показване само на неотбелязани" @@ -4389,7 +4427,7 @@ msgstr "Случаен ред на албуми" msgid "Shuffle all" msgstr "Случаен ред на изпълнение на всички" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Разбъркване на списъка с песни" @@ -4429,7 +4467,7 @@ msgstr "Ска" msgid "Skip backwards in playlist" msgstr "Прескачане назад в списъка с песни" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Презключи броя" @@ -4465,7 +4503,7 @@ msgstr "Лек рок" msgid "Song Information" msgstr "Информация за песен" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Информация за песен" @@ -4497,7 +4535,7 @@ msgstr "Сортиране на песните по" msgid "Sorting" msgstr "Сортиране" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Източник" @@ -4533,6 +4571,10 @@ msgstr "Стандартно" msgid "Starred" msgstr "Със звезда" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Стартиране на текущо възпроизвеждания списък с песни" @@ -4548,7 +4590,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Стартиране на %1" @@ -4561,7 +4603,7 @@ msgstr "Стартиране..." msgid "Stations" msgstr "Станции" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Спиране" @@ -4570,7 +4612,7 @@ msgstr "Спиране" msgid "Stop after" msgstr "Спиране след" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Спри след тази песен" @@ -4738,7 +4780,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4779,7 +4821,7 @@ msgid "" "continue?" msgstr "Тези файлове ще бъдат изтрити от устройството,сигурни ли сте че искате да продължите?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4851,9 +4893,10 @@ msgstr "Този поток е само за платени регистраци msgid "This type of device is not supported: %1" msgstr "Този тип устройство не е подържано:%1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Заглавие" @@ -4875,11 +4918,11 @@ msgstr "Вкл./Изкл. на красиво екранно меню" msgid "Toggle fullscreen" msgstr "Превключване на пълен екран" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Покажи статус на опашката" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Включаване на скроблинга" @@ -4911,12 +4954,13 @@ msgstr "Общо прехвърлени байта" msgid "Total network requests made" msgstr "Общ брой направени мрежови заявки" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Песен" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Прекодирай музиката" @@ -5014,7 +5058,7 @@ msgstr "Обновяване на Grooveshark списъците с песни" msgid "Update all podcasts" msgstr "Обнови всички подкасти" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Обнови папките с промени в библиотеката" @@ -5169,7 +5213,7 @@ msgstr "Изглед" msgid "Visualization mode" msgstr "Режим \"Визуализация\"" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Визуализации" @@ -5297,7 +5341,7 @@ msgid "" "well?" msgstr "Искате ли да преместим другите песни от този албум в Различни изпълнители?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Искате ли да изпълните пълно повторно сканиране сега?" @@ -5309,10 +5353,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Година" diff --git a/src/translations/bn.po b/src/translations/bn.po index 4686ae83c..71c5f2622 100644 --- a/src/translations/bn.po +++ b/src/translations/bn.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bengali (http://www.transifex.com/projects/p/clementine/language/bn/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "&সেন্টার" msgid "&Custom" msgstr "&কাস্টম" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&অতিরিক্ত" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&সহায়িকা" @@ -189,7 +189,7 @@ msgstr "&গোপন" msgid "&Left" msgstr "বাঁদিকে (&ব)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -197,15 +197,15 @@ msgstr "" msgid "&None" msgstr "কিছু &নয়" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "প্রস্থান করো" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -213,7 +213,7 @@ msgstr "" msgid "&Right" msgstr "ডানদিকে (&ড)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -221,7 +221,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "& সামঞ্জস্য পূর্ণ প্রসারণ - উইন্ডো অনুপাতে" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&সরঞ্জামসমূহ" @@ -366,11 +366,11 @@ msgstr "" msgid "About %1" msgstr "%1-এর সম্বন্ধে" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "ক্লেমেন্টাইন সন্মন্ধে" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "কিউ টি সন্মন্ধে" @@ -418,19 +418,19 @@ msgstr "অন্য এক্ টি সঙ্গীত যোগ করুন" msgid "Add directory..." msgstr "ডাইরেকট রি যোগ করুন" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "ফাইল যোগ করুন" @@ -438,11 +438,11 @@ msgstr "ফাইল যোগ করুন" msgid "Add files to transcode" msgstr "অনুবাদ এর জন্য ফাইল যোগ করুন" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "ফোল্ডার যোগ করুন" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "ফোল্ডার যুক্ত করুন..." @@ -454,7 +454,7 @@ msgstr "এক টি নতুন ফোল্ডার যোগ করুন" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -530,7 +530,7 @@ msgstr "সঙ্গীত এর ট্র্যাক ট্যাগ যু msgid "Add song year tag" msgstr "সঙ্গীত এর প্রকাশ কাল ট্যাগ যুক্ত করুন" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "সঙ্গীত এর ধারা যুক্ত করুন" @@ -542,7 +542,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "অন্য প্লে লিস্ট যুক্ত করুন" @@ -603,12 +603,12 @@ msgstr "" msgid "After copying..." msgstr "কপি হওয়ার পর" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "অ্যালবাম" @@ -616,7 +616,7 @@ msgstr "অ্যালবাম" msgid "Album (ideal loudness for all tracks)" msgstr "অ্যালবাম (পরিচ্ছন্ন আওয়াজ সমস্ত সঙ্গীত এর জন্য)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "অ্যালবাম কভার" msgid "Albums without covers" msgstr "কভারবিহীন অ্যালবাম" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "সব ফাইল (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "শিল্পী" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "শিল্পী সম্পকিত তথ্য" @@ -795,7 +795,7 @@ msgstr "" msgid "Artist's initial" msgstr "শিল্পীর অদ্যাক্ষর" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "বিপিএম" @@ -870,7 +870,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -899,7 +899,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1005,7 +1005,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1055,11 +1055,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1198,11 +1198,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1298,12 +1298,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "প্রচ্ছদ সংগঠক" @@ -1393,11 +1393,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1566,7 +1566,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1591,15 +1591,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1623,10 +1624,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1665,8 +1670,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1683,7 +1688,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1805,6 +1810,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1817,12 +1826,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "গানের তথ্য পরিবর্তন" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "গানের তথ্য পরিবর্তন..." @@ -1936,7 +1945,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1950,7 +1959,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1970,7 +1979,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1980,12 +1989,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2063,27 +2072,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2110,6 +2119,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2161,6 +2174,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2169,19 +2186,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2311,9 +2328,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2345,11 +2363,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2419,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2574,6 +2592,10 @@ msgstr "" msgid "Information" msgstr "তথ্য" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2586,7 +2608,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2626,6 +2648,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2650,7 +2676,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2674,7 +2700,7 @@ msgstr "উইন্ডো বন্ধ করা হলেও পেছনে msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2698,7 +2724,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2781,12 +2807,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "দৈর্ঘ্য" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2794,7 +2820,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2839,7 +2865,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2868,11 +2894,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2891,10 +2917,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2906,7 +2932,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2969,7 +2995,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "তাই হোক!" @@ -3052,7 +3078,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3082,7 +3108,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3091,7 +3117,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "সঙ্গীত" @@ -3099,7 +3125,7 @@ msgstr "সঙ্গীত" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3187,7 +3213,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3211,7 +3237,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3250,7 +3276,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3368,7 +3394,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3384,7 +3410,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3419,7 +3445,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3431,7 +3457,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3455,7 +3481,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3496,7 +3522,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3509,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3522,9 +3548,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3537,7 +3563,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3592,7 +3618,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3644,7 +3670,7 @@ msgstr "" msgid "Preferences" msgstr "পছন্দসমূহ" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "পছন্দসমূহ..." @@ -3699,7 +3725,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3742,16 +3768,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "ক্রম সংগঠক" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3763,7 +3789,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "বৃষ্টি" @@ -3795,7 +3821,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3853,7 +3879,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3869,7 +3895,7 @@ msgstr "আমার সংগীত থেকে মুছে ফেলুন" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3906,7 +3932,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3997,6 +4023,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4023,7 +4061,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4051,7 +4089,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4087,7 +4125,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4212,7 +4250,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4232,7 +4270,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4241,7 +4279,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4304,7 +4342,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4324,12 +4362,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4341,11 +4379,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4385,7 +4423,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4425,7 +4463,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4461,7 +4499,7 @@ msgstr "" msgid "Song Information" msgstr "গানের তথ্য" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "গানের তথ্য" @@ -4493,7 +4531,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "উৎস" @@ -4529,6 +4567,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4557,7 +4599,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4566,7 +4608,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "শিরনাম" @@ -4871,11 +4914,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4907,12 +4950,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5010,7 +5054,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5165,7 +5209,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5305,10 +5349,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/br.po b/src/translations/br.po index d664cfdb3..91f8c00c4 100644 --- a/src/translations/br.po +++ b/src/translations/br.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Breton (http://www.transifex.com/projects/p/clementine/language/br/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "E K&reiz" msgid "&Custom" msgstr "&Personelaat" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Ouzhpenn" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Sikour" @@ -190,7 +190,7 @@ msgstr "K&uzhat" msgid "&Left" msgstr "&Kleiz" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Sonerezh" @@ -198,15 +198,15 @@ msgstr "Sonerezh" msgid "&None" msgstr "&Hini ebet" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Roll Seniñ" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Kuitaat" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Doare adlenn" @@ -214,7 +214,7 @@ msgstr "Doare adlenn" msgid "&Right" msgstr "&Dehou" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Doare meskañ" @@ -222,7 +222,7 @@ msgstr "Doare meskañ" msgid "&Stretch columns to fit window" msgstr "&Astenn ar bannoù evit klotañ gant ar prenestr" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Ostilhoù" @@ -367,11 +367,11 @@ msgstr "Dilezel" msgid "About %1" msgstr "A-zivout %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "A-zivout Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "A-zivout Qt..." @@ -419,19 +419,19 @@ msgstr "Ouzhpennañ ul lanv all..." msgid "Add directory..." msgstr "Ouzhpennañ un teuliad..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Ouzhpennañ ur restr" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Ouzhpennañ ur restr d'an treuzkemmer" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Ouzhpennañ ur restr pe muioc'h d'an treuzkemmer" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Ouzhpennañ ur restr..." @@ -439,11 +439,11 @@ msgstr "Ouzhpennañ ur restr..." msgid "Add files to transcode" msgstr "Ouzhpennañ restroù da" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Ouzhpennañ un teuliad" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Ouzhpennañ un teuliad..." @@ -455,7 +455,7 @@ msgstr "Ouzhpennañ un teuliad nevez..." msgid "Add podcast" msgstr "Ouzhpennañ ar podkast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Ouzhpennañ ur podkast..." @@ -531,7 +531,7 @@ msgstr "Ouzhpennañ klav niverenn an ton" msgid "Add song year tag" msgstr "Ouzhpennañ klav bloavezh an ton" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Ouzhpennan ul lanv..." @@ -543,7 +543,7 @@ msgstr "Ouzhpennañ da tonioù karetañ Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Ouzhpennañ da rolloù seniñ Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Ouzhpennañ d'ur roll seniñ all" @@ -604,12 +604,12 @@ msgstr "Goude " msgid "After copying..." msgstr "Goude an eiladur..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albom" @@ -617,7 +617,7 @@ msgstr "Albom" msgid "Album (ideal loudness for all tracks)" msgstr "Albom (Ampled peurvat evit an holl roud)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "Albomoù gant ur golo" msgid "Albums without covers" msgstr "Albomoù hep golo" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Holl restroù (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "Ha sur oc'h da gaout c'hoant enrollañ an stadegoù an ton e-barzh restr an ton evit kement ton en ho sonaoueg ?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Arzour" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Titouroù war an arzour" @@ -796,7 +796,7 @@ msgstr "Klavioù an arzour" msgid "Artist's initial" msgstr "Lizherennoù-tal an arzour" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Mentrezh Aodio" @@ -842,7 +842,7 @@ msgstr "Ment keidennek ar skeudenn" msgid "BBC Podcasts" msgstr "Podkastoù BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "Enrolladenn ar stlennvon" msgid "Balance" msgstr "Kempouez ar son" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Skarzhañ" @@ -900,7 +900,7 @@ msgstr "Gwell" msgid "Biography from %1" msgstr "Buhezskrid %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Fonnder" @@ -1006,7 +1006,7 @@ msgstr "Cheñchamantoù an doare lenn mono a vo gweredekaet evit an tonioù a ze msgid "Check for new episodes" msgstr "Klask pennadoù nevez" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Klask hizivadurioù..." @@ -1056,11 +1056,11 @@ msgstr "O naetaat" msgid "Clear" msgstr "Goullonderiñ" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Skarzhañ ar roll seniñ" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "Klikit aze evit merkañ ar roll seniñ-mañ evit ma vefe enrollet hag e msgid "Click to toggle between remaining time and total time" msgstr "Klikit evit kemmañ etre an amzer a chom hag an amzer total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "Livioù" msgid "Comma separated list of class:level, level is 0-3" msgstr "Listenn dispartiet gant ur virgulenn eus klas:live, live etre 0 ha 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Evezhiadenn" @@ -1199,11 +1199,11 @@ msgstr "Evezhiadenn" msgid "Complete tags automatically" msgstr "Leuniañ ar c'hlavioù ent emgefreek" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Leuniañ ar c'hlavioù ent emgefreek..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "Kefluniañ Subsonic..." msgid "Configure global search..." msgstr "Kefluniañ an enklsak hollek..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Kefluniañ ar sonaoueg..." @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Ar c'hennask a lak re a amzer, gwiriekait URL ar servijer. Da skouer : http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Letrin" @@ -1299,12 +1299,12 @@ msgstr "Treuzkemm ar sonerezh ne c'hell ket an drobarzhell lenn" msgid "Copy to clipboard" msgstr "Kopiañ d'ar golver" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiañ war an drobarzhell" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Eilañ er sonaoueg..." @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Dibosubl eo krouiñ an elfenn GStreamer \"%1\" - gwiriekait ez eo staliet an enlugadelloù GStreamer diavaez" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Dibosupl eo kavout ur multiplekser evit %1, gwiriekait ez eo staliet an enlugelladoù a-zere evit GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "Dibosubl eo digeriñ ar restr ec'hankañ %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Merour ar godeligoù" @@ -1394,11 +1394,11 @@ msgstr "Lakaat un treveuz pa vez kemmet ar roud ent emgefreek" msgid "Cross-fade when changing tracks manually" msgstr "Lakaat un treveuz pa vez kemmet ar roudoù gant an dorn" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "Goubrenet eo ar stlennvon. Lennit https://code.google.com/p/clementine-player/wiki/DatabaseCorruption evit kaout titouroù a-benn adkavout ho stlennvon." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Deizad krouadur" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Deizad kemmadur" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "Diverkañ ar roadennoù pellgarget" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Diverkañ restroù" @@ -1567,7 +1567,7 @@ msgstr "Diverkañ restroù" msgid "Delete from device..." msgstr "Diverkañ eus an drobarzhell" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Diverkañ eus ar bladenn" @@ -1592,15 +1592,16 @@ msgstr "Diverkañ ar restroù orin" msgid "Deleting files" msgstr "O tiverkañ restroù" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Dilemel ar roudoù diuzet diwar al listenn c'hortoz" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Dilemel ar roud-mañ diwar al listenn c'hortoz" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Pal" @@ -1624,10 +1625,14 @@ msgstr "Anv an drobarzhell" msgid "Device properties..." msgstr "Oerzhioù an drobarzhell..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Trobarzhelloù" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "C'hoant ho poa lavar" @@ -1666,8 +1671,8 @@ msgstr "Diweredekaat ar varenn-imor" msgid "Disabled" msgstr "Diwederakaet" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Pladenn" @@ -1684,7 +1689,7 @@ msgstr "Dibarzhioù ar skrammañ" msgid "Display the on-screen-display" msgstr "Diskouez ar roll war ar skramm" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Ober un adc'hwilervadur eus ar sonaoueg a-bezh" @@ -1806,6 +1811,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Ar stumm dinamikel a zo aktivet" @@ -1818,12 +1827,12 @@ msgstr "Meskaj dargouezhek dialuskel" msgid "Edit smart playlist..." msgstr "Kemmañ ar roll seniñ speredek..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Cheñch ar c'hlav..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "Cheñch deskrivadur ar roud" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Cheñch deskrivadur ar roud..." @@ -1937,7 +1946,7 @@ msgstr "Lakait an IP-mañ er poellad evit kennaskañ da Clementine" msgid "Entire collection" msgstr "Dastumadeg hollek" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Kevataler" @@ -1951,7 +1960,7 @@ msgstr "Kenkoulz a --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fazi" @@ -1971,7 +1980,7 @@ msgstr "Ur gudenn a zo savet e-kerzh dilamidigezh an tonioù" msgid "Error downloading Spotify plugin" msgstr "Ur gudenn a zo savet o pellgargañ enlugellad Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Ur gudenn a zo savet e-pad kargadur %1" @@ -1981,12 +1990,12 @@ msgstr "Ur gudenn a zo savet e-pad kargadur %1" msgid "Error loading di.fm playlist" msgstr "Kudenn o kargañ roll seniñ di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Ur gudenn a zo savet e-pad treterezh %1 : %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Kudenn e-pad kargadenn ar CD audio" @@ -2064,27 +2073,27 @@ msgstr "Ezporzhiadur echuet" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Ezporzhiet %1 golo war %2 (%3 tremenet)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "Arveuz" msgid "Fading duration" msgstr "Padelezh an arveuz" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "C'hwited eo bet adtapadenn an teuliad" @@ -2162,6 +2175,10 @@ msgstr "O tapout sonaoueg Subsonic" msgid "Fetching cover error" msgstr "Ur gudenn a zo savet e-pad pellgargadur ar golo" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Askouzehadenn ar restr" @@ -2170,19 +2187,19 @@ msgstr "Askouzehadenn ar restr" msgid "File formats" msgstr "Mentrezhoù restroù" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Anv ar restr" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Anv ar restr (hep an hent)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Ment ar restr" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "Stumm ar restr" msgid "Filename" msgstr "Anv ar restr" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Restroù" @@ -2312,9 +2329,10 @@ msgstr "Hollek" msgid "General settings" msgstr "Kefluniadur hollek" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Doare" @@ -2346,11 +2364,11 @@ msgstr "Reiñ un anv:" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Mont d'ar roll seniñ o tont" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Mont d'ar roll seniñ a-raok" @@ -2420,7 +2438,7 @@ msgstr "Strollañ dre Zoare/Albom" msgid "Group by Genre/Artist/Album" msgstr "Strollañ dre Zoare/Arzour/Albom" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Strolladenn" @@ -2575,6 +2593,10 @@ msgstr "Menegeradur %1" msgid "Information" msgstr "Titouroù" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Enlakaat..." @@ -2587,7 +2609,7 @@ msgstr "Staliaet" msgid "Integrity check" msgstr "O gwiriañ an anterinder" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2627,6 +2649,10 @@ msgstr "Kudenn gant alc'hwez an dalc'h" msgid "Invalid username and/or password" msgstr "Kudenn gant an anv implijer pe ar ger-tremen" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Top ar sizhun roudoù Jamendo" msgid "Jamendo database" msgstr "Stlennvon Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Mont d'ar roud lennet bremañ" @@ -2675,7 +2701,7 @@ msgstr "Leuskel da dreiñ pa 'z eo serret ar prenstr" msgid "Keep the original files" msgstr "Dec'hel ar restroù orin" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Bisig" @@ -2699,7 +2725,7 @@ msgstr "Golo albom tev" msgid "Large sidebar" msgstr "Barenn gostez ledan" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Selaouet e ziwezhañ" @@ -2782,12 +2808,12 @@ msgstr "Laoskit goullo evit an arventennoù dre ziouer" msgid "Left" msgstr "Kleiz" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Padelezh" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Sonaoueg" @@ -2795,7 +2821,7 @@ msgstr "Sonaoueg" msgid "Library advanced grouping" msgstr "Strolladur ar sonaoueg kemplesoc'h" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Kemenn hizivadur ar sonaoueg" @@ -2840,7 +2866,7 @@ msgstr "Kargañ ar golo adalek ur bladenn..." msgid "Load playlist" msgstr "Kargañ ar roll seniñ" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Kargañ ar roll seniñ..." @@ -2869,11 +2895,11 @@ msgstr "O kargañ tonioù" msgid "Loading stream" msgstr "O kargañ al lanv" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "O kargan roudoù" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "O kargañ titouroù ar roud" @@ -2892,10 +2918,10 @@ msgstr "Kargañ restroù pe liammoù internet, hag eilec'hiañ ar roll seniñ" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Kennaskañ" @@ -2907,7 +2933,7 @@ msgstr "C'hwitet eo bet ar c'hennaskañ" msgid "Long term prediction profile (LTP)" msgstr "Aelad Diougan Padus (ADP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Karout" @@ -2970,7 +2996,7 @@ msgstr "Pellgargadenn Magnatune echuet" msgid "Main profile (MAIN)" msgstr "Aelad pennañ (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Ober evel-se !" @@ -3053,7 +3079,7 @@ msgstr "Lenn e mono" msgid "Months" msgstr "Mizioù" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Imor" @@ -3083,7 +3109,7 @@ msgstr "Poentoù staliañ" msgid "Move down" msgstr "Dindan" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Dilec'hiañ davit ar sonaoueg..." @@ -3092,7 +3118,7 @@ msgstr "Dilec'hiañ davit ar sonaoueg..." msgid "Move up" msgstr "A-us" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Sonerezh" @@ -3100,7 +3126,7 @@ msgstr "Sonerezh" msgid "Music Library" msgstr "Sonaoueg" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mut" @@ -3188,7 +3214,7 @@ msgstr "Morse kregiñ da lenn" msgid "New folder" msgstr "Teuliad nevez" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Roll seniñ nevez" @@ -3212,7 +3238,7 @@ msgstr "Roudoù nevesañ" msgid "Next" msgstr "Da-heul" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Roud o tont" @@ -3251,7 +3277,7 @@ msgstr "Bloc'h berr ebet" msgid "None" msgstr "Hini ebet" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ton ebet eus ar reoù diuzet a oa mat evit bezañ kopiet war an drobarzhell" @@ -3369,7 +3395,7 @@ msgstr "Demerez" msgid "Open %1 in browser" msgstr "Digeriñ %1 er merdeer" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Lenn ur CD &audio" @@ -3385,7 +3411,7 @@ msgstr "Digeriñ ur restr OPML..." msgid "Open device" msgstr "Digeriñ an drobarzhell" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Digeriñ ur restr..." @@ -3420,7 +3446,7 @@ msgstr "Gwelladenn ar fonnder" msgid "Optimize for quality" msgstr "Gwelladenn ar perzhded" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Dibarzhioù..." @@ -3432,7 +3458,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Aozañ ar restroù" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Aozañ ar restroù..." @@ -3456,7 +3482,7 @@ msgstr "Ezkas" msgid "Output device" msgstr "Trobarzhell ezkas" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Dibarzhioù ezkas" @@ -3497,7 +3523,7 @@ msgstr "Fest" msgid "Password" msgstr "Ger-tremen" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Ehan" @@ -3510,7 +3536,7 @@ msgstr "Ehan al lenn" msgid "Paused" msgstr "Ehanet" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Soner" @@ -3523,9 +3549,9 @@ msgstr "Piksel" msgid "Plain sidebar" msgstr "Bareen gostez simpl" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Lenn" @@ -3538,7 +3564,7 @@ msgstr "Seniñ an Arzour pe ar c'hlav" msgid "Play artist radio..." msgstr "Seniñ skingomz an arzour..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Konter selaouadennoù" @@ -3593,7 +3619,7 @@ msgstr "Dibarzhioù ar roll seniñ" msgid "Playlist type" msgstr "Doare ar roll seniñ" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Rolloù seniñ" @@ -3645,7 +3671,7 @@ msgstr "Rak-ampled" msgid "Preferences" msgstr "Gwellvezioù" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Gwellvezioù..." @@ -3700,7 +3726,7 @@ msgstr "Rakwel" msgid "Previous" msgstr "A-raok" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Roud a-raok" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "Aelad" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Enraog" @@ -3743,16 +3769,16 @@ msgstr "Perzhded" msgid "Querying device..." msgstr "Goulennadeg trobarzhell" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Merour listenn c'hortoz" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Lakaat ar roudoù da heul" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Lakaat ar roud da heul" @@ -3764,7 +3790,7 @@ msgstr "Skingomz (Ampled kevatal evit an holl roudoù)" msgid "Radios" msgstr "Skingomzoù" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Glav" @@ -3796,7 +3822,7 @@ msgstr "Lakaat 4 steredenn evit an ton lennet" msgid "Rate the current song 5 stars" msgstr "Lakaat 5 steredenn evit an ton lennet" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Notenn" @@ -3854,7 +3880,7 @@ msgstr "Tennañ" msgid "Remove action" msgstr "Tennañ an oberiadenn" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Tennañ an tonioù doubl eus ar roll seniñ" @@ -3870,7 +3896,7 @@ msgstr "Tennañ eus va sonerezh" msgid "Remove from favorites" msgstr "Tennañ eus an tonioù karetañ" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Tennañ kuit eus ar roll seniñ" @@ -3907,7 +3933,7 @@ msgstr "Adenvel ar roll seniñ" msgid "Rename playlist..." msgstr "Adenvel ar roll seniñ..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Adniverenniñ ar roudoù en urzh-mañ..." @@ -3998,6 +4024,18 @@ msgstr "Distreiñ war Clementine" msgid "Right" msgstr "Dehou" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4024,7 +4062,7 @@ msgstr "Tennañ an drobarzhell diarvar" msgid "Safely remove the device after copying" msgstr "Tennañ an drobarzhell diarvar goude an eilañ" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Standilhonañ" @@ -4052,7 +4090,7 @@ msgstr "Enrollañ ar skeudenn" msgid "Save playlist" msgstr "Enrollañ ar roll seniñ" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Enrollañ ar roll seniñ..." @@ -4088,7 +4126,7 @@ msgstr "Aelad ar feur standilhonañ (SSR)" msgid "Scale size" msgstr "Cheñch ar ment" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Poentoù" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble ar roudoù selaouet ganin" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "Klask ar roud lennet gant ur sammad relativel" msgid "Seek the currently playing track to an absolute position" msgstr "Klask ar roud lennet gant ul lec'hiadur absolud" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Diuzañ an holl" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Diuzañ hini ebet" @@ -4213,7 +4251,7 @@ msgstr "Diuzañ heweladurioù" msgid "Select visualizations..." msgstr "Diuzañ heweladurioù..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "Munudoù ar servijer" msgid "Service offline" msgstr "Servij ezlinenn" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Termeniñ %1 d'an talvoud %2..." @@ -4242,7 +4280,7 @@ msgstr "Termeniñ %1 d'an talvoud %2..." msgid "Set the volume to percent" msgstr "Termeniñ an ampled da dre gant" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Lakaat un talvoud evit an holll roudoù diuzet" @@ -4305,7 +4343,7 @@ msgstr "Diskouez un OSD brav" msgid "Show above status bar" msgstr "Diskouez a-us d'ar varenn stad" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Diskouez an holl tonioù" @@ -4325,12 +4363,12 @@ msgstr "Diskouez an dispartierien" msgid "Show fullsize..." msgstr "Diskouez er ment gwirion..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Diskouez er merdeer retroù" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "Diskouez e \"Arzourien Liesseurt\"" msgid "Show moodbar" msgstr "Diskouez ar varenn imor" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Diskouez an doublennoù nemetken" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Diskouez an tonioù hep klav nemetken" @@ -4386,7 +4424,7 @@ msgstr "Meskañ an albomoù" msgid "Shuffle all" msgstr "Meskañ an holl" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Meskañ ar roll seniñ" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Mont a-drek er roll seniñ" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Konter tonioù lammet" @@ -4462,7 +4500,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Titouroù an ton" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Titouroù an ton" @@ -4494,7 +4532,7 @@ msgstr "Urzhiañ an tonioù gant" msgid "Sorting" msgstr "Urzhiañ" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Mammenn" @@ -4530,6 +4568,10 @@ msgstr "Boaz" msgid "Starred" msgstr "Karetañ" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Kregiñ ar roll seniñ" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "Krogit da skrivañ un dra bennak er boest enklask a-us evit leuniañ listenn an disoc'hoù." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "O kregiñ %1" @@ -4558,7 +4600,7 @@ msgstr "O kregiñ..." msgid "Stations" msgstr "Savlec'hioù" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Paouez" @@ -4567,7 +4609,7 @@ msgstr "Paouez" msgid "Stop after" msgstr "Paouez goude" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Paouez goude ar roud-mañ" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Ar mare amprouiñ evit ar servijer Subsonic a zo echuet. Roit arc'hant evit kaout un alc'hwez lañvaz mar plij. KIt war subsonic.org evit ar munudoù." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "Ar restroù-mañ a vo diverket eus an drobarzhell, sur oc'h da gaout c'hoant kenderc'hel ?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "Al lanv-mañ a zo evit an izili o deus paet." msgid "This type of device is not supported: %1" msgstr "An doare trobarzhell-mañ n'eo ket meret :%1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titl" @@ -4872,11 +4915,11 @@ msgstr "Gweredekaat/Diweredekaat an OSD brav" msgid "Toggle fullscreen" msgstr "Tremen e skramm leun" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Cheñch stad al listenn c'hortoz" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Cheñch ar scrobbling" @@ -4908,12 +4951,13 @@ msgstr "Niver a eizhbit treuzkaset" msgid "Total network requests made" msgstr "Niver a atersadennoù rouedad" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Roud" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Treuzkodañ Sonerezh" @@ -5011,7 +5055,7 @@ msgstr "O hizivaat roll seniñ Grooveshark" msgid "Update all podcasts" msgstr "Hizivaat ar podkastoù" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Hizivaat teuliadoù kemmet ar sonaoueg" @@ -5166,7 +5210,7 @@ msgstr "Gwelout" msgid "Visualization mode" msgstr "Doare heweladur" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Heweladurioù" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "Ha c'hoant ho peus lakaat tonioù all an albom-mañ e Arzourien Liesseurt ?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "C'hoant ho peus d'ober ur c'hwilervadenn eus al levraoueg bremañ ?" @@ -5306,10 +5350,10 @@ msgstr "Skrivañ stadegoù an holl tonioù e restroù an tonioù" msgid "Wrong username or password." msgstr "Anv-implijer pe ger-tremen fall." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Bloaz" diff --git a/src/translations/bs.po b/src/translations/bs.po index 101ecb672..ca8b13b49 100644 --- a/src/translations/bs.po +++ b/src/translations/bs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bosnian (http://www.transifex.com/projects/p/clementine/language/bs/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "&Sredina" msgid "&Custom" msgstr "&Vlastito" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Pomoć" @@ -187,7 +187,7 @@ msgstr "&Sakrij..." msgid "&Left" msgstr "&Lijevo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "&Nijedan" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Izlaz" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "&Razvuci red da odgovara veličini prozora" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt-u..." @@ -416,19 +416,19 @@ msgstr "Dodaj još jedan tok..." msgid "Add directory..." msgstr "Dodaj fasciklu..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Dodaj datoteku..." @@ -436,11 +436,11 @@ msgstr "Dodaj datoteku..." msgid "Add files to transcode" msgstr "Dodaj datoteke za pretvorbu" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Dodaj fasciklu" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Dodaj fasciklu..." @@ -452,7 +452,7 @@ msgstr "Dodaj novu fasciklu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Dodaj tok..." @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Dodaj drugoj listi pjesama" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "Poslije kopiranja..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna jačina za sve pjesme)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "Albumi sa omotom" msgid "Albums without covers" msgstr "Albumi bez omota" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Sve datoteke (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Sva slava Hipno-žabi!" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvođač" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Informacije o izvođaču" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "Izvođačevi inicijali" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio format" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Zabrana" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "Biografija od %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Protok bitova" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Provjeri za nadogradnje..." @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "Čisto" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Isprazni listu pjesama" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kliknite da mjenjate između ukupnog i preostalog vremena" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1196,11 +1196,11 @@ msgstr "Komentar" msgid "Complete tags automatically" msgstr "Automatski završi oznake" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Automatski završi oznake..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Podesi biblioteku..." @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "Pretvori svu muziku koju ovaj uređaje ne podržava" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiraj na uređaj..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiraj u biblioteku..." @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nije moguće napraviti GStreamer element \"%1\" - provjerite da li imate sve potrebne GStreamer dodatke instalirane." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nemoguće pronaći muxer za %1, provjerite da li imate sve potrebne GStreamer dodatke instalirane." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "Nemoguće otvoriti izlaznu datoteku %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Menadžer omota" @@ -1391,11 +1391,11 @@ msgstr "Glatki prelaz sa pjesme na pjesmu, prilikom automatskog prelaženja." msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum stvaranja" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum izmjenje" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Obriši datoteke" @@ -1564,7 +1564,7 @@ msgstr "Obriši datoteke" msgid "Delete from device..." msgstr "Obriši sa uređaja" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Obriši sa diska..." @@ -1589,15 +1589,16 @@ msgstr "Obriši orginalne datoteke" msgid "Deleting files" msgstr "Brišem datoteke" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Makni sa liste čekanja označene pjesme" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Makni sa liste čekanja označenu pjesmu" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Odredište" @@ -1621,10 +1622,14 @@ msgstr "Ime uređaja" msgid "Device properties..." msgstr "Osobine uređaja..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Uređaji" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "Onemogućeno" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1681,7 +1686,7 @@ msgstr "Opcije prikazivanje" msgid "Display the on-screen-display" msgstr "Prikaži prikaz na ekranu" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Uradi ponovni pregled biblioteke" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/ca.po b/src/translations/ca.po index 4630bb972..6da383e26 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-13 11:02+0000\n" -"Last-Translator: Adolfo Jayme Barrientos \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/clementine/language/ca/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -171,11 +171,11 @@ msgstr "&Centre" msgid "&Custom" msgstr "&Personalitzades" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Extres" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Aj&uda" @@ -192,7 +192,7 @@ msgstr "&Amaga…" msgid "&Left" msgstr "&Esquerra" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Música" @@ -200,15 +200,15 @@ msgstr "Música" msgid "&None" msgstr "&Cap" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Llista de reproducció" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Surt" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Mode de repetició" @@ -216,7 +216,7 @@ msgstr "Mode de repetició" msgid "&Right" msgstr "&Dreta" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mode aleatori" @@ -224,7 +224,7 @@ msgstr "Mode aleatori" msgid "&Stretch columns to fit window" msgstr "&Encabeix les columnes a la finestra" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "E&ines" @@ -369,11 +369,11 @@ msgstr "Interromp" msgid "About %1" msgstr "Quant al %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Quant al Clementine…" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Quant al Qt…" @@ -421,19 +421,19 @@ msgstr "Afegeix un altre flux…" msgid "Add directory..." msgstr "Afegeix un directori…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Afegeix un fitxer" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Afegeix un fitxer al convertidor" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Afegeix fitxer(s) al convertidor" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Afegeix un fitxer…" @@ -441,11 +441,11 @@ msgstr "Afegeix un fitxer…" msgid "Add files to transcode" msgstr "Afegeix fitxers per convertir-los" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Afegeix una carpeta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Afegeix una carpeta…" @@ -457,7 +457,7 @@ msgstr "Afegeix una carpeta nova…" msgid "Add podcast" msgstr "Afegeix un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Afegeix un podcast…" @@ -533,7 +533,7 @@ msgstr "Afegeix l’etiqueta de número de pista a la cançó" msgid "Add song year tag" msgstr "Afegeix l’etiqueta d’any a la cançó" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Afegeix un flux…" @@ -545,7 +545,7 @@ msgstr "Afegeix als favorits del Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Afegeix a les llistes de reproducció de Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Afegeix a una altra llista de reproducció" @@ -606,12 +606,12 @@ msgstr "Després de" msgid "After copying..." msgstr "Després de copiar…" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Àlbum" @@ -619,7 +619,7 @@ msgstr "Àlbum" msgid "Album (ideal loudness for all tracks)" msgstr "Àlbum (volum ideal per a totes les pistes)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -641,11 +641,11 @@ msgstr "Àlbums amb caràtules" msgid "Albums without covers" msgstr "Àlbums sense caràtules" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Tots els fitxers (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Lloem l’Hipnogripau!" @@ -772,17 +772,17 @@ msgid "" "the songs of your library?" msgstr "Esteu segur que voleu escriure les estadístiques de les cançons en tots els fitxers de la vostra col·lecció?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Inf.artista" @@ -798,7 +798,7 @@ msgstr "Etiquetes de l’artista" msgid "Artist's initial" msgstr "Inicials de l’artista" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format d’àudio" @@ -844,7 +844,7 @@ msgstr "Mida d’imatge mitjà" msgid "BBC Podcasts" msgstr "Podcasts de la BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -873,7 +873,7 @@ msgstr "S’està fent una còpia de seguretat de la base de dades" msgid "Balance" msgstr "Balanç" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Veta" @@ -902,7 +902,7 @@ msgstr "Millor" msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" @@ -1008,7 +1008,7 @@ msgstr "El canvi en el paràmetre de reproducció monofònic serà efectiu per a msgid "Check for new episodes" msgstr "Comprova si hi ha nous episodis" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Comprova si hi ha actualitzacions…" @@ -1058,11 +1058,11 @@ msgstr "S’està netejant" msgid "Clear" msgstr "Neteja" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Neteja la llista de reproducció" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1153,8 +1153,8 @@ msgstr "Feu clic aquí per marcar aquesta llista com a favorita i afegir-la al p msgid "Click to toggle between remaining time and total time" msgstr "Feu clic aquí per alternar entre el temps de reproducció restant i total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1192,7 +1192,7 @@ msgstr "Colors" msgid "Comma separated list of class:level, level is 0-3" msgstr "Llista separada per comes de classe:nivell, el nivell és 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" @@ -1201,11 +1201,11 @@ msgstr "Comentari" msgid "Complete tags automatically" msgstr "Completa les etiquetes automàticament" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Completa les etiquetes automàticament…" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "Configura Subsonic…" msgid "Configure global search..." msgstr "Configura la cerca global…" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configura la col·lecció…" @@ -1281,7 +1281,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "S’ha esgotat el temps d’espera de la connexió, comproveu l’URL del servidor. Exemple: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Terminal" @@ -1301,12 +1301,12 @@ msgstr "Convertir qualsevol música que el dispositiu no pugui reproduir" msgid "Copy to clipboard" msgstr "Copiar al porta-retalls" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Còpia al dispositiu…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Còpia a la col·lecció…" @@ -1328,14 +1328,14 @@ msgid "" "required GStreamer plugins installed" msgstr "No s’ha pogut crear l’element «%1» de GStreamer. Comproveu que teniu tots els connectors requerits de GStramer instal·lats" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "No s’ha pogut trobar un muxer per %1. Comproveu que teniu els connectors adequats de GStreamer instal·lats" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1352,7 +1352,7 @@ msgid "Couldn't open output file %1" msgstr "No s’ha pogut obrir el fitxer de sortida %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestor de caràtules" @@ -1396,11 +1396,11 @@ msgstr "Fusiona el so quan es canviï la pista automàticament" msgid "Cross-fade when changing tracks manually" msgstr "Fusiona el so quan es canviï la pista manualment" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1408,63 +1408,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Baix" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maj+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maj+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Maj+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1507,11 +1507,11 @@ msgid "" "recover your database" msgstr "S’ha detectat un dany en la base de dades. Consulteu https://code.google.com/p/clementine-player/wiki/DatabaseCorruption per obtenir instruccions per recuperar la base de dades" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de creació" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificació" @@ -1561,7 +1561,7 @@ msgid "Delete downloaded data" msgstr "Esborra les dades baixades" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Suprimeix els fitxers" @@ -1569,7 +1569,7 @@ msgstr "Suprimeix els fitxers" msgid "Delete from device..." msgstr "Suprimeix del dispositiu…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Suprimeix del disc…" @@ -1594,15 +1594,16 @@ msgstr "Suprimeix els fitxers originals" msgid "Deleting files" msgstr "S’estan suprimint els fitxers" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Treure de la cua les pistes seleccionades" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Treure de la cua la pista" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destí" @@ -1626,10 +1627,14 @@ msgstr "Nom de dispositiu" msgid "Device properties..." msgstr "Propietats del dispositiu…" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositius" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Diàleg" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Potser volíeu dir" @@ -1668,8 +1673,8 @@ msgstr "Desactiva la generació de barres d’ànim" msgid "Disabled" msgstr "Deshabilitat" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1686,7 +1691,7 @@ msgstr "Opcions de visualització" msgid "Display the on-screen-display" msgstr "Mostrar la indicació-a-pantalla" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Analitza tota la col·lecció de nou" @@ -1808,6 +1813,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Durada" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "S’ha activat el mode dinàmic" @@ -1820,12 +1829,12 @@ msgstr "Mescla dinàmica aleatòria" msgid "Edit smart playlist..." msgstr "Edita la llista de reproducció intel·ligent" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Edita l’etiqueta «%1»…" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Edita l’etiqueta…" @@ -1838,7 +1847,7 @@ msgid "Edit track information" msgstr "Edita la informació de la pista" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Edita la informació de la pista…" @@ -1939,7 +1948,7 @@ msgstr "Escriviu aquesta IP en l’aplicació per connectar amb Clementine." msgid "Entire collection" msgstr "Tota la col·lecció" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalitzador" @@ -1953,7 +1962,7 @@ msgstr "Equivalent a --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Error" @@ -1973,7 +1982,7 @@ msgstr "S’ha produït un error en suprimir les cançons" msgid "Error downloading Spotify plugin" msgstr "S’ha produït un error en baixar el connector d’Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "S’ha produït un error en carregar %1" @@ -1983,12 +1992,12 @@ msgstr "S’ha produït un error en carregar %1" msgid "Error loading di.fm playlist" msgstr "S’ha produït un error en carregar la llista de reproducció del di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "S’ha produït un error en processar %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "S’ha produït un error en carregar el CD d’àudio" @@ -2066,27 +2075,27 @@ msgstr "Ha finalitzat l’exportació" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "S’han exportat %1 caràtules de %2 (s’han omès %3)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2113,6 +2122,10 @@ msgstr "Esvaïment" msgid "Fading duration" msgstr "Durada de l’esvaïment" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Ha fallat la lectura de la unitat de CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "No s'ha pogut obtenir el directori" @@ -2164,6 +2177,10 @@ msgstr "S’està recollint la col·lecció de l’Subsonic" msgid "Fetching cover error" msgstr "S’ha produït un error en obtenir la caràtula" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Format del fitxer" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensió del fitxer" @@ -2172,19 +2189,19 @@ msgstr "Extensió del fitxer" msgid "File formats" msgstr "Format dels fitxers" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nom del fitxer" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nom del fitxer (sense camí)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Mida del fitxer" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2194,7 +2211,7 @@ msgstr "Tipus de fitxer" msgid "Filename" msgstr "Nom de fitxer" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fitxers" @@ -2314,9 +2331,10 @@ msgstr "General" msgid "General settings" msgstr "Configuració general" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Estil" @@ -2348,11 +2366,11 @@ msgstr "Doneu-li un nom:" msgid "Go" msgstr "Vés-hi" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Vés a la pestanya de la següent llista de reproducció" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Vés a la pestanya de l'anterior llista de reproducció" @@ -2422,7 +2440,7 @@ msgstr "Agrupa per gènere/àlbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupa per gènere/artista/àlbum" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupació" @@ -2577,6 +2595,10 @@ msgstr "S’està indexant %1" msgid "Information" msgstr "Informació" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Insereix…" @@ -2589,7 +2611,7 @@ msgstr "Instal·lat" msgid "Integrity check" msgstr "Comprovació d’integritat" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2629,6 +2651,10 @@ msgstr "La clau de sessió no és vàlida" msgid "Invalid username and/or password" msgstr "El nom d’usuari i/o la contrasenya no és vàlid" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2653,7 +2679,7 @@ msgstr "Les millors cançons de la setmana al Jamendo" msgid "Jamendo database" msgstr "Base de dades de Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Vés a la pista que s’està reproduïnt" @@ -2677,7 +2703,7 @@ msgstr "Conserva l’aplicació executant-se en segon pla quan tanqueu la finest msgid "Keep the original files" msgstr "Conserva els fitxers originals" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Gatets" @@ -2701,7 +2727,7 @@ msgstr "Caràtula de l’àlbum gran" msgid "Large sidebar" msgstr "Barra lateral gran" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Últim reproduït" @@ -2784,12 +2810,12 @@ msgstr "Deixeu-ho buit per assignar el valor predeterminat. Exemples: «/dev/dsp msgid "Left" msgstr "Esquerra" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durada" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Col·lecció" @@ -2797,7 +2823,7 @@ msgstr "Col·lecció" msgid "Library advanced grouping" msgstr "Agrupació avançada de la col·lecció" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Avís de reescaneig de la col·lecció" @@ -2842,7 +2868,7 @@ msgstr "Carrega la caràtula des del disc…" msgid "Load playlist" msgstr "Carrega la llista de reproducció" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Carrega la llista de reproducció..." @@ -2871,11 +2897,11 @@ msgstr "S’estan carregant les cançons" msgid "Loading stream" msgstr "S’està carregant el flux" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "S’estan carregant les pistes" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "S’està carregant la informació de les pistes" @@ -2894,10 +2920,10 @@ msgstr "Carregar fitxers/URLs, substituïnt l'actual llista de reproducció" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Entra" @@ -2909,7 +2935,7 @@ msgstr "Ha fallat l'inici de sessió" msgid "Long term prediction profile (LTP)" msgstr "Perfil de predicció a llarg termini (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "M’encanta" @@ -2972,7 +2998,7 @@ msgstr "Baixada de Magnatune finalitzada" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Fes-ho doncs!" @@ -3055,7 +3081,7 @@ msgstr "Reproducció monofònica" msgid "Months" msgstr "Mesos" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Estat d’ànim" @@ -3085,7 +3111,7 @@ msgstr "Punts de muntatge" msgid "Move down" msgstr "Mou cap avall" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mou a la col·lecció…" @@ -3094,7 +3120,7 @@ msgstr "Mou a la col·lecció…" msgid "Move up" msgstr "Mou cap amunt" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Música" @@ -3102,7 +3128,7 @@ msgstr "Música" msgid "Music Library" msgstr "Col·lecció de música" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Silenci" @@ -3190,7 +3216,7 @@ msgstr "Mai comencis a reproduir" msgid "New folder" msgstr "Carpeta nova" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Llista de reproducció nova" @@ -3214,7 +3240,7 @@ msgstr "Pistes més noves" msgid "Next" msgstr "Següent" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Pista següent" @@ -3253,7 +3279,7 @@ msgstr "No utilitzis blocs curs" msgid "None" msgstr "Cap" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Cap de les cançons seleccionades són adequades per copiar-les a un dispositiu" @@ -3371,7 +3397,7 @@ msgstr "Opacitat" msgid "Open %1 in browser" msgstr "Obre %1 en un navegador" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Obre un &CD d’àudio…" @@ -3387,7 +3413,7 @@ msgstr "Obre un fitxer OPML…" msgid "Open device" msgstr "Obrir dispositiu" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Obre un fitxer..." @@ -3422,7 +3448,7 @@ msgstr "Optimitza la taxa de bits" msgid "Optimize for quality" msgstr "Optimitza la qualitat" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opcions..." @@ -3434,7 +3460,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organitza fitxers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organitza fitxers..." @@ -3458,7 +3484,7 @@ msgstr "Sortida" msgid "Output device" msgstr "Perifèric de sortida" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opcions de sortida" @@ -3499,7 +3525,7 @@ msgstr "Festa" msgid "Password" msgstr "Contrasenya" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausa" @@ -3512,7 +3538,7 @@ msgstr "Pausa la reproducció" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intèrpret" @@ -3525,9 +3551,9 @@ msgstr "Píxel" msgid "Plain sidebar" msgstr "Barra lateral senzilla" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Reprodueix" @@ -3540,7 +3566,7 @@ msgstr "Reprodueix Artista o Etiqueta" msgid "Play artist radio..." msgstr "Reprodueix la ràdio de l’artista…" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Comptador de reproduccions" @@ -3595,7 +3621,7 @@ msgstr "Opcions de la llista de reproducció" msgid "Playlist type" msgstr "Tipus de llista de reproducció" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Llistes rep." @@ -3647,7 +3673,7 @@ msgstr "Preamplificador" msgid "Preferences" msgstr "Preferències" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferències…" @@ -3702,7 +3728,7 @@ msgstr "Previsualitza" msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Pista anterior" @@ -3716,7 +3742,7 @@ msgid "Profile" msgstr "Perfil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progrés" @@ -3745,16 +3771,16 @@ msgstr "Qualitat" msgid "Querying device..." msgstr "S'està consultant el dispositiu..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestor de la cua" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Afegeix les pistes seleccionades a la cua" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Afegeix la pista a la cua" @@ -3766,7 +3792,7 @@ msgstr "Ràdio (mateix volum per a totes les peces)" msgid "Radios" msgstr "Ràdios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Pluja" @@ -3798,7 +3824,7 @@ msgstr "Puntua la cançó actual amb 4 estrelles" msgid "Rate the current song 5 stars" msgstr "Puntua la cançó actual amb 5 estrelles" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Puntuació" @@ -3856,7 +3882,7 @@ msgstr "Suprimeix" msgid "Remove action" msgstr "Elimina acció" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Esborra els duplicats de la llista de reproducció" @@ -3872,7 +3898,7 @@ msgstr "Esborra-ho de La meva música" msgid "Remove from favorites" msgstr "Esborreu dels favorits" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Suprimeix de la llista de reproducció" @@ -3909,7 +3935,7 @@ msgstr "Renombra de la llista de reproducció" msgid "Rename playlist..." msgstr "Renombra de la llista de reproducció..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Recordar pistes en aquest ordre..." @@ -4000,6 +4026,18 @@ msgstr "Torna a Clementine" msgid "Right" msgstr "Dreta" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Captura un CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Captura un CD d’àudio…" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4026,7 +4064,7 @@ msgstr "Treure el dispositiu amb seguretat" msgid "Safely remove the device after copying" msgstr "Treure el dispositiu amb seguretat després de copiar" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Freqüència de mostreig" @@ -4054,7 +4092,7 @@ msgstr "Desa la imatge" msgid "Save playlist" msgstr "Desa la llista de reproducció" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Desa la llista de reproducció..." @@ -4090,7 +4128,7 @@ msgstr "Perfil de freqüència de mostreig escalable (SSR)" msgid "Scale size" msgstr "Mida de l’escala" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuació" @@ -4099,7 +4137,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Envia les pistes que escolto" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4183,11 +4221,11 @@ msgstr "Mou-te per la pista en reproducció a una posició relativa" msgid "Seek the currently playing track to an absolute position" msgstr "Mou-te per la pista en reproducció a una posició absoluta" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionar-ho tot" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "No selecciones res" @@ -4215,7 +4253,7 @@ msgstr "Seleccioneu visualitzacions" msgid "Select visualizations..." msgstr "Seleccioneu visualitzacions..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Navega…" @@ -4235,7 +4273,7 @@ msgstr "Detalls del servidor" msgid "Service offline" msgstr "Servei fora de línia" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Estableix %1 a «%2»…" @@ -4244,7 +4282,7 @@ msgstr "Estableix %1 a «%2»…" msgid "Set the volume to percent" msgstr "Estableix el volum al percent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Estableix valor per totes les pistes seleccionades..." @@ -4307,7 +4345,7 @@ msgstr "Mostra un OSD bonic" msgid "Show above status bar" msgstr "Mostra sota la barra d'estat" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Mostra totes les cançons" @@ -4327,12 +4365,12 @@ msgstr "Mostra els separadors" msgid "Show fullsize..." msgstr "Mostra a mida completa..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostra al gestor de fitxers" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Mostra a la col·lecció…" @@ -4344,11 +4382,11 @@ msgstr "Mostra en Artistes diversos" msgid "Show moodbar" msgstr "Mostra les barres d’ànim" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostra només els duplicats" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Mostra només les pistes sense etiquetar" @@ -4388,7 +4426,7 @@ msgstr "Remena els àlbums" msgid "Shuffle all" msgstr "Remena-ho tot" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Llista de reproducció aleatòria" @@ -4428,7 +4466,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Salta enrere en la llista de reproducció" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Comptador d’omissions" @@ -4464,7 +4502,7 @@ msgstr "Rock suau" msgid "Song Information" msgstr "Informació de la cançó" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Inf. cançó" @@ -4496,7 +4534,7 @@ msgstr "Ordena les cançons per" msgid "Sorting" msgstr "Ordenació" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Font" @@ -4532,6 +4570,10 @@ msgstr "Estàndard" msgid "Starred" msgstr "Destacat" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Inicia la llista de reproducció que s'està reproduint" @@ -4547,7 +4589,7 @@ msgid "" "list" msgstr "Comenceu a escriure quelcom al quadre de cerca de dalt per omplir-ne la llista de resultats" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "S’està començant %1" @@ -4560,7 +4602,7 @@ msgstr "S’està iniciant…" msgid "Stations" msgstr "Emissores" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Atura" @@ -4569,7 +4611,7 @@ msgstr "Atura" msgid "Stop after" msgstr "Atura desprès" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Atura després d’aquesta pista" @@ -4737,7 +4779,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Ha acabat el període de prova del servidor de Subsonic. Fareu una donació per obtenir una clau de llicència. Visiteu subsonic.org para més detalls." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4778,7 +4820,7 @@ msgid "" "continue?" msgstr "Se suprimiran aquests fitxers del dispositiu, esteu segur que voleu continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4850,9 +4892,10 @@ msgstr "Aquest flux es sol per als subscriptors que paguen" msgid "This type of device is not supported: %1" msgstr "Aquest tipus de dispositiu no és compatible: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Títol" @@ -4874,11 +4917,11 @@ msgstr "Activa la visualització per pantalla elegant" msgid "Toggle fullscreen" msgstr "Commuta a pantalla completa" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Commuta l’estat de la cua" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Commuta el «scrobbling»" @@ -4910,12 +4953,13 @@ msgstr "Bytes totals transferits" msgid "Total network requests made" msgstr "Total de sol·licituds de xarxa fetes" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Converteix música" @@ -5013,7 +5057,7 @@ msgstr "Actualitza la llista de reproducció de Grooveshark" msgid "Update all podcasts" msgstr "Actualitza tots els podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Actualitza les carpetes de la col·lecció amb canvis" @@ -5168,7 +5212,7 @@ msgstr "Vista" msgid "Visualization mode" msgstr "Mode de visualització" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualitzacions" @@ -5296,7 +5340,7 @@ msgid "" "well?" msgstr "Voleu moure també les altres cançons d’aquest àlbum a Artistes diversos?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Voleu fer de nou un escaneig complet ara?" @@ -5308,10 +5352,10 @@ msgstr "Escriu totes les estadístiques en els fitxers de les cançons" msgid "Wrong username or password." msgstr "Nom d’usuari o contrasenya incorrectes." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Any" diff --git a/src/translations/cs.po b/src/translations/cs.po index c8b70482b..d31b413b6 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 10:51+0000\n" +"PO-Revision-Date: 2014-01-27 06:43+0000\n" "Last-Translator: fri \n" "Language-Team: Czech (http://www.transifex.com/projects/p/clementine/language/cs/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -179,11 +179,11 @@ msgstr "&Na střed" msgid "&Custom" msgstr "Vl&astní" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Doplňky" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Nápo&věda" @@ -200,7 +200,7 @@ msgstr "Skrýt..." msgid "&Left" msgstr "&Vlevo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Hudba" @@ -208,15 +208,15 @@ msgstr "Hudba" msgid "&None" msgstr "Žád&né" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Seznam skladeb" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Ukončit" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Režim opakování" @@ -224,7 +224,7 @@ msgstr "Režim opakování" msgid "&Right" msgstr "&Vpravo" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Režim míchání" @@ -232,7 +232,7 @@ msgstr "Režim míchání" msgid "&Stretch columns to fit window" msgstr "Roztáhnout sloupce tak, aby se vešly do okna" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Nástroje" @@ -377,11 +377,11 @@ msgstr "Přerušit" msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt..." @@ -429,19 +429,19 @@ msgstr "Přidat další proud..." msgid "Add directory..." msgstr "Přidat složku..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Přidat soubor" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Přidat soubor k překódování" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Přidat soubor(y) k překódování" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Přidat soubor..." @@ -449,11 +449,11 @@ msgstr "Přidat soubor..." msgid "Add files to transcode" msgstr "Přidat soubory pro překódování" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Přidat složku" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Přidat složku..." @@ -465,7 +465,7 @@ msgstr "Přidat novou složku..." msgid "Add podcast" msgstr "Přidat záznam" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Přidat zvukový záznam..." @@ -541,7 +541,7 @@ msgstr "Přidat značku pořadí písně" msgid "Add song year tag" msgstr "Přidat značku rok písně" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Přidat proud..." @@ -553,7 +553,7 @@ msgstr "Přidat do oblíbených Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Přidat do seznamu skladeb Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Přidat do jiného seznamu skladeb" @@ -614,12 +614,12 @@ msgstr "Po " msgid "After copying..." msgstr "Po zkopírování..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -627,7 +627,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideální hlasitost pro všechny skladby)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -649,11 +649,11 @@ msgstr "Alba s obaly" msgid "Albums without covers" msgstr "Alba bez obalů" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Všechny soubory (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Všechnu slávu hypnožábě!" @@ -780,17 +780,17 @@ msgid "" "the songs of your library?" msgstr "Opravdu chcete ukládat statistiky písní do souboru písně u všech písní ve vaší sbírce?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Umělec" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Umělec" @@ -806,7 +806,7 @@ msgstr "Značky umělce" msgid "Artist's initial" msgstr "Iniciály umělce" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Zvukový formát" @@ -852,7 +852,7 @@ msgstr "Průměrná velikost obrázku" msgid "BBC Podcasts" msgstr "Záznamy BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -881,7 +881,7 @@ msgstr "Záloha databáze" msgid "Balance" msgstr "Vyvážení" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Zakázat" @@ -910,7 +910,7 @@ msgstr "Nejlepší" msgid "Biography from %1" msgstr "Životopis od %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Datový tok" @@ -1016,7 +1016,7 @@ msgstr "Změna nastavení jednokanálového přehrávání začne platit s dalš msgid "Check for new episodes" msgstr "Podívat se po nových dílech" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Zkontrolovat aktualizace" @@ -1066,11 +1066,11 @@ msgstr "Úklid" msgid "Clear" msgstr "Smazat" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Vyprázdnit seznam skladeb" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1161,8 +1161,8 @@ msgstr "Klepněte zde pro označení tohoto seznamu skladeb jako oblíbeného, t msgid "Click to toggle between remaining time and total time" msgstr "Klepněte pro přepnutí mezi zbývajícím časem a celkovým časem" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1200,7 +1200,7 @@ msgstr "Barvy" msgid "Comma separated list of class:level, level is 0-3" msgstr "Čárkou oddělený seznam class:level, level je 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Poznámka" @@ -1209,11 +1209,11 @@ msgstr "Poznámka" msgid "Complete tags automatically" msgstr "Doplnit značky automaticky" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Doplnit značky automaticky..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1252,7 +1252,7 @@ msgstr "Nastavit Subsonic..." msgid "Configure global search..." msgstr "Nastavit celkové hledání:" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Nastavit sbírku..." @@ -1289,7 +1289,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Spojení vypršelo, prověřte adresu serveru (URL). Příklad: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konzole" @@ -1309,12 +1309,12 @@ msgstr "Převést veškerou hudbu, kterou zařízení nedokáže přehrát" msgid "Copy to clipboard" msgstr "Kopírovat do schránky" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Zkopírovat do zařízení..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Zkopírovat do sbírky..." @@ -1336,14 +1336,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nepodařilo se vytvořit prvek GStreamer \"%1\" - ujistěte se, že máte nainstalovány všechny požadované přídavné moduly GStreamer" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nepodařilo se najít multiplexer pro \"%1\" - ujistěte se, že máte nainstalovány správné přídavné moduly GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1360,7 +1360,7 @@ msgid "Couldn't open output file %1" msgstr "Nepodařilo se otevřít výstupní soubor %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Správce obalů" @@ -1404,11 +1404,11 @@ msgstr "Prolínání při automatické změně skladby" msgid "Cross-fade when changing tracks manually" msgstr "Prolínání při ruční změně skladby" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1416,63 +1416,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1515,11 +1515,11 @@ msgid "" "recover your database" msgstr "Zjištěno poškození databáze. Přečtěte si, prosím, https://code.google.com/p/clementine-player/wiki/DatabaseCorruption kvůli pokynům, kterak svou databázi obnovit" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum vytvoření" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum změny" @@ -1569,7 +1569,7 @@ msgid "Delete downloaded data" msgstr "Smazat stažená data" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Smazat soubory" @@ -1577,7 +1577,7 @@ msgstr "Smazat soubory" msgid "Delete from device..." msgstr "Smazat ze zařízení..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Smazat z disku..." @@ -1602,15 +1602,16 @@ msgstr "Smazat původní soubory" msgid "Deleting files" msgstr "Probíhá mazání souborů" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Odstranit vybrané skladby z řady" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Odstranit skladbu z řady" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cíl" @@ -1634,10 +1635,14 @@ msgstr "Název zařízení" msgid "Device properties..." msgstr "Vlastnosti zařízení..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Zařízení" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Dialog" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Mysleli jste" @@ -1676,8 +1681,8 @@ msgstr "Zakázat tvoření náladového proužku" msgid "Disabled" msgstr "Zakázáno" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1694,7 +1699,7 @@ msgstr "Volby zobrazení" msgid "Display the on-screen-display" msgstr "Zobrazovat informace na obrazovce (OSD)" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Znovu kompletně prohledat sbírku" @@ -1816,6 +1821,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Doba trvání" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Je zapnut dynamický režim" @@ -1828,12 +1837,12 @@ msgstr "Dynamický náhodný výběr" msgid "Edit smart playlist..." msgstr "Upravit chytrý seznam skladeb..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Upravit značku \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Upravit značku..." @@ -1846,7 +1855,7 @@ msgid "Edit track information" msgstr "Upravit informace o skladbě" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Upravit informace o skladbě..." @@ -1947,7 +1956,7 @@ msgstr "Zadejte tuto adresu IP v programu pro spojení s Clementine." msgid "Entire collection" msgstr "Celá sbírka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalizér" @@ -1961,7 +1970,7 @@ msgstr "Rovnocenné s --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Chyba" @@ -1981,7 +1990,7 @@ msgstr "Chyba při mazání písní" msgid "Error downloading Spotify plugin" msgstr "Chyba při stahování přídavného modulu Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Chyba při nahrávání %1" @@ -1991,12 +2000,12 @@ msgstr "Chyba při nahrávání %1" msgid "Error loading di.fm playlist" msgstr "Chyba při nahrávání seznamu skladeb di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Chyba při zpracovávání %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Chyba při nahrávání zvukového CD" @@ -2074,27 +2083,27 @@ msgstr "Uložení dokončeno" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Uloženo %1 obalů z %2 (%3 přeskočeno)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2121,6 +2130,10 @@ msgstr "Slábnutí" msgid "Fading duration" msgstr "Doba slábnutí" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Nepodařilo se číst z CD v mechanice" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Nepodařilo se natáhnout adresář" @@ -2172,6 +2185,10 @@ msgstr "Natahuje se knihovna Subsonic" msgid "Fetching cover error" msgstr "Chyba při stahování obalu" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Souborový formát" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Přípona souboru" @@ -2180,19 +2197,19 @@ msgstr "Přípona souboru" msgid "File formats" msgstr "Formáty souborů" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Název souboru" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Název souboru bez cesty" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Velikost souboru" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2202,7 +2219,7 @@ msgstr "Typ souboru" msgid "Filename" msgstr "Název souboru" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Soubory" @@ -2322,9 +2339,10 @@ msgstr "Obecné" msgid "General settings" msgstr "Obecná nastavení" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žánr" @@ -2356,11 +2374,11 @@ msgstr "Pojmenujte to:" msgid "Go" msgstr "Jít" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Jít na další kartu seznamu skladeb" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Jít na předchozí kartu seznamu skladeb" @@ -2430,7 +2448,7 @@ msgstr "Seskupovat podle žánru/alba" msgid "Group by Genre/Artist/Album" msgstr "Seskupovat podle žánru/umělce/alba" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Seskupení" @@ -2585,6 +2603,10 @@ msgstr "Rejstříkování %1" msgid "Information" msgstr "Informace" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "Vstupní volby" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Vložit..." @@ -2597,7 +2619,7 @@ msgstr "Nainstalován" msgid "Integrity check" msgstr "Ověření celistvosti" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2637,6 +2659,10 @@ msgstr "Neplatný klíč sezení" msgid "Invalid username and/or password" msgstr "Neplatné uživatelské jméno a/nebo heslo" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "Obrátit výběr" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2661,7 +2687,7 @@ msgstr "Nejlepší skladby týdne na Jamendu" msgid "Jamendo database" msgstr "Databáze Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Skočit na nyní přehrávanou skladbu" @@ -2685,7 +2711,7 @@ msgstr "Při zavření okna nechat běžet na pozadí" msgid "Keep the original files" msgstr "Zachovat původní soubory" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Koťátka" @@ -2709,7 +2735,7 @@ msgstr "Velký obal alba" msgid "Large sidebar" msgstr "Velký postranní panel" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Naposledy hrané" @@ -2792,12 +2818,12 @@ msgstr "Pro výchozí nastavení ponechte prázdné. Příklady: \"/dev/dsp\", \ msgid "Left" msgstr "Vlevo" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Délka" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Sbírka" @@ -2805,7 +2831,7 @@ msgstr "Sbírka" msgid "Library advanced grouping" msgstr "Pokročilé seskupování sbírky" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Zpráva o prohledání sbírky" @@ -2850,7 +2876,7 @@ msgstr "Nahrát obal na disku..." msgid "Load playlist" msgstr "Nahrát seznam skladeb" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Nahrát seznam skladeb..." @@ -2879,11 +2905,11 @@ msgstr "Nahrávají se písně" msgid "Loading stream" msgstr "Nahrává se proud" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Nahrávají se skladby" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Nahrávají se informace o skladbě" @@ -2902,10 +2928,10 @@ msgstr "Nahraje soubory/adresy (URL), nahradí současný seznam skladeb" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Přihlášení" @@ -2917,7 +2943,7 @@ msgstr "Přihlášení se nezdařilo" msgid "Long term prediction profile (LTP)" msgstr "Dlouhodobý předpověďní profil" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Oblíbit" @@ -2980,7 +3006,7 @@ msgstr "Stahování z Magnatune bylo dokončeno" msgid "Main profile (MAIN)" msgstr "Hlavní profil" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Udělej to tak!" @@ -3063,7 +3089,7 @@ msgstr "Jednokanálové přehrávání" msgid "Months" msgstr "Měsíce" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Nálada" @@ -3093,7 +3119,7 @@ msgstr "Přípojné body" msgid "Move down" msgstr "Posunout dolů" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Přesunout do sbírky..." @@ -3102,7 +3128,7 @@ msgstr "Přesunout do sbírky..." msgid "Move up" msgstr "Posunout nahoru" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Hudba" @@ -3110,7 +3136,7 @@ msgstr "Hudba" msgid "Music Library" msgstr "Hudební sbírka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Ztlumit" @@ -3198,7 +3224,7 @@ msgstr "Nikdy nezačít přehrávání" msgid "New folder" msgstr "Nová složka" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nový seznam skladeb" @@ -3222,7 +3248,7 @@ msgstr "Nejnovější skladby" msgid "Next" msgstr "Další" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Další skladba" @@ -3261,7 +3287,7 @@ msgstr "Žádné krátké bloky" msgid "None" msgstr "Žádná" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Žádná z vybraných písní nebyla vhodná ke zkopírování do zařízení" @@ -3379,7 +3405,7 @@ msgstr "Neprůhlednost" msgid "Open %1 in browser" msgstr "Otevřít %1 v prohlížeči" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Otevřít &zvukové CD..." @@ -3395,7 +3421,7 @@ msgstr "Otevřít soubor OPML..." msgid "Open device" msgstr "Otevřít zařízení" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Otevřít soubor" @@ -3430,7 +3456,7 @@ msgstr "Optimalizovat s ohledem na datový tok" msgid "Optimize for quality" msgstr "Optimalizovat s ohledem na kvalitu" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Volby..." @@ -3442,7 +3468,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Uspořádat soubory" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Uspořádat soubory..." @@ -3466,7 +3492,7 @@ msgstr "Výstup" msgid "Output device" msgstr "Výstupní zařízení" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Možnosti výstupu" @@ -3507,7 +3533,7 @@ msgstr "Oslava" msgid "Password" msgstr "Heslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pozastavit" @@ -3520,7 +3546,7 @@ msgstr "Pozastavit přehrávání" msgid "Paused" msgstr "Pozastaveno" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkující" @@ -3533,9 +3559,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Prostý postranní panel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Přehrát" @@ -3548,7 +3574,7 @@ msgstr "Přehrát umělce nebo značku" msgid "Play artist radio..." msgstr "Přehrát rádio umělce..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Počet přehrání" @@ -3603,7 +3629,7 @@ msgstr "Nastavení seznamu skladeb" msgid "Playlist type" msgstr "Typ seznamu skladeb" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Seznamy" @@ -3655,7 +3681,7 @@ msgstr "Předzesílení" msgid "Preferences" msgstr "Nastavení" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Nastavení..." @@ -3710,7 +3736,7 @@ msgstr "Náhled" msgid "Previous" msgstr "Předchozí" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Předchozí skladba" @@ -3724,7 +3750,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Průběh" @@ -3753,16 +3779,16 @@ msgstr "Kvalita" msgid "Querying device..." msgstr "Dotazování se zařízení..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Správce řady" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Přidat vybrané skladby do řady" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Přidat skladbu do řady" @@ -3774,7 +3800,7 @@ msgstr "Rádio (shodná hlasitost pro všechny skladby)" msgid "Radios" msgstr "Rádia" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Déšť" @@ -3806,7 +3832,7 @@ msgstr "Ohodnotit současnou píseň čtyřmi hvězdičkami" msgid "Rate the current song 5 stars" msgstr "Ohodnotit současnou píseň pěti hvězdičkami" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hodnocení" @@ -3864,7 +3890,7 @@ msgstr "Odstranit" msgid "Remove action" msgstr "Odstranit činnost" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Odstranit zdvojené ze seznamu skladeb" @@ -3880,7 +3906,7 @@ msgstr "Odstranit z Moje hudba" msgid "Remove from favorites" msgstr "Odstranit z oblíbených" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Odstranit ze seznamu skladeb" @@ -3917,7 +3943,7 @@ msgstr "Přejmenovat seznam skladeb" msgid "Rename playlist..." msgstr "Přejmenovat seznam skladeb..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Přečíslovat skladby v tomto pořadí..." @@ -4008,6 +4034,18 @@ msgstr "Návrat do Clementine" msgid "Right" msgstr "Vpravo" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "Vytáhnout" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Vytáhnout skladby z CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Vytáhnout skladby ze zvukového CD..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4034,7 +4072,7 @@ msgstr "Bezpečně odebrat zařízení" msgid "Safely remove the device after copying" msgstr "Po dokončení kopírování bezpečně odebrat zařízení" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Vzorkovací kmitočet" @@ -4062,7 +4100,7 @@ msgstr "Uložit obrázek" msgid "Save playlist" msgstr "Uložit seznam skladeb" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Uložit seznam skladeb..." @@ -4098,7 +4136,7 @@ msgstr "Profil škálovatelného vzorkovacího kmitočtu" msgid "Scale size" msgstr "Velikost měřítka" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Výsledek" @@ -4107,7 +4145,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Odesílat informace o přehrávaných skladbách." #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4191,11 +4229,11 @@ msgstr "Přetočit v nyní přehrávané skladbě" msgid "Seek the currently playing track to an absolute position" msgstr "Skočit v nyní přehrávané skladbě na určité místo" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vybrat vše" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nevybrat žádnou skladbu" @@ -4223,7 +4261,7 @@ msgstr "Vybrat vizualizace" msgid "Select visualizations..." msgstr "Vybrat vizualizace..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Vybrat..." @@ -4243,7 +4281,7 @@ msgstr "Podrobnosti o serveru" msgid "Service offline" msgstr "Služba není dostupná" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastavit %1 na \"%2\"..." @@ -4252,7 +4290,7 @@ msgstr "Nastavit %1 na \"%2\"..." msgid "Set the volume to percent" msgstr "Nastavit hlasitost na procent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Nastavit hodnotu pro vybrané skladby..." @@ -4315,7 +4353,7 @@ msgstr "Ukazovat OSD" msgid "Show above status bar" msgstr "Ukazovat nad stavovým řádkem" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Ukázat všechny písně" @@ -4335,12 +4373,12 @@ msgstr "Ukazovat oddělovače" msgid "Show fullsize..." msgstr "Ukázat v plné velikosti..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Ukázat v prohlížeči souborů..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Ukazovat ve sbírce..." @@ -4352,11 +4390,11 @@ msgstr "Ukázat pod různými umělci" msgid "Show moodbar" msgstr "Ukázat náladový proužek" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Ukázat pouze zdvojené" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Ukázat pouze neoznačené" @@ -4396,7 +4434,7 @@ msgstr "Zamíchat alba" msgid "Shuffle all" msgstr "Zamíchat vše" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Zamíchat seznam skladeb" @@ -4436,7 +4474,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Předchozí skladba v seznamu skladeb" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Počet přeskočení" @@ -4472,7 +4510,7 @@ msgstr "Soft rock" msgid "Song Information" msgstr "Informace o písni" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Píseň" @@ -4504,7 +4542,7 @@ msgstr "Řadit písně podle" msgid "Sorting" msgstr "Řazení" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Zdroj" @@ -4540,6 +4578,10 @@ msgstr "Obvyklý" msgid "Starred" msgstr "S hvězdičkou" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "Začít vytahovat" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Přehrát současnou skladbu v seznamu skladeb" @@ -4555,7 +4597,7 @@ msgid "" "list" msgstr "Začněte něco psát do vyhledávacího pole výše, abyste naplnil tento seznam pro hledání výsledků." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Spouští se %1" @@ -4568,7 +4610,7 @@ msgstr "Spouští se..." msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Zastavit" @@ -4577,7 +4619,7 @@ msgstr "Zastavit" msgid "Stop after" msgstr "Zastavit po" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Zastavit po této skladbě" @@ -4745,7 +4787,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Lhůta na vyzkoušení serveru Subsonic uplynula. Dejte, prosím, dar, abyste dostali licenční klíč. Navštivte subsonic.org kvůli podrobnostem." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4786,7 +4828,7 @@ msgid "" "continue?" msgstr "Tyto soubory budou smazány ze zařízení. Opravdu chcete pokračovat?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4858,9 +4900,10 @@ msgstr "Tento proud je pouze pro předplatitele" msgid "This type of device is not supported: %1" msgstr "Tento typ zařízení není podporován: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Název" @@ -4882,11 +4925,11 @@ msgstr "Přepnout OSD" msgid "Toggle fullscreen" msgstr "Zapnout/Vypnout zobrazení na celou obrazovku" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Přepnout stav řady" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Přepnout odesílání informací o přehrávání" @@ -4918,12 +4961,13 @@ msgstr "Celkem přeneseno bajtů" msgid "Total network requests made" msgstr "Celkem uskutečněno síťových požadavků" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Skladba" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Převést hudbu" @@ -5021,7 +5065,7 @@ msgstr "Obnovit seznam skladeb Grooveshark" msgid "Update all podcasts" msgstr "Obnovit všechny zvukovové záznamy" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Obnovit změněné složky sbírky" @@ -5176,7 +5220,7 @@ msgstr "Pohled" msgid "Visualization mode" msgstr "Režim vizualizací" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizace" @@ -5304,7 +5348,7 @@ msgid "" "well?" msgstr "Chcete další písně na tomto albu přesunout do Různí umělci?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Chcete spustit toto úplné nové prohledání hned teď?" @@ -5316,10 +5360,10 @@ msgstr "Zapsat všechny statistiky písní do souborů písní" msgid "Wrong username or password." msgstr "Nesprávné uživatelské jméno nebo heslo." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Rok" diff --git a/src/translations/cy.po b/src/translations/cy.po index 1852e1e5d..9e89a89e4 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Welsh (http://www.transifex.com/projects/p/clementine/language/cy/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/da.po b/src/translations/da.po index bf957b4a7..ebbe7a279 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-14 12:59+0000\n" -"Last-Translator: Runkeldunk \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/clementine/language/da/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -174,11 +174,11 @@ msgstr "&Centrer" msgid "&Custom" msgstr "&Brugervalgt" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Hjælp" @@ -195,7 +195,7 @@ msgstr "Skjul..." msgid "&Left" msgstr "&Venstre" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Musik" @@ -203,15 +203,15 @@ msgstr "Musik" msgid "&None" msgstr "&Ingen" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Spilleliste" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Afslut" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Gentagelsestilstand" @@ -219,7 +219,7 @@ msgstr "Gentagelsestilstand" msgid "&Right" msgstr "&Højre" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Tilfældig-tilstand" @@ -227,7 +227,7 @@ msgstr "Tilfældig-tilstand" msgid "&Stretch columns to fit window" msgstr "&Udvid søjler til at passe til vindue" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Værktøjer" @@ -372,11 +372,11 @@ msgstr "Afbryd" msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Om Qt..." @@ -424,19 +424,19 @@ msgstr "Henter streams" msgid "Add directory..." msgstr "Tilføj mappe..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Tilføj fil" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Tilføj fil..." @@ -444,11 +444,11 @@ msgstr "Tilføj fil..." msgid "Add files to transcode" msgstr "Tilføj fil til omkodning" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Tilføj mappe" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Tilføj mappe..." @@ -460,7 +460,7 @@ msgstr "Tilføj ny mappe..." msgid "Add podcast" msgstr "Tilføj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Tilføj podcast..." @@ -536,7 +536,7 @@ msgstr "Tilføj sangnummer-mærke" msgid "Add song year tag" msgstr "Tilføj sangår-mærke" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Genopfrisk streams" @@ -548,7 +548,7 @@ msgstr "Føj til Grooveshark favoritter" msgid "Add to Grooveshark playlists" msgstr "Føj til Grooveshark afspilningsliste" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Tilføj til en anden playliste" @@ -609,12 +609,12 @@ msgstr "Efter" msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideel lydstyrke for alle spor)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -644,11 +644,11 @@ msgstr "Albummer med omslag" msgid "Albums without covers" msgstr "Albummer uden omslag" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alle Filer (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Al ære til Hypnotudsen!" @@ -775,17 +775,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kunstner" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Kunstnerinfo" @@ -801,7 +801,7 @@ msgstr "Kunstner-mærker" msgid "Artist's initial" msgstr "Kunstners initial" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Lydformat" @@ -847,7 +847,7 @@ msgstr "Gns. billedstørrelse" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -876,7 +876,7 @@ msgstr "Sikkerhedskopierer database" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Bandlys" @@ -905,7 +905,7 @@ msgstr "Bedst" msgid "Biography from %1" msgstr "Biografi fra %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -1011,7 +1011,7 @@ msgstr "Ændring af mono afspilningspræference vil først træde i kraft for de msgid "Check for new episodes" msgstr "Søg efter nye episoder" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Tjek efter opdateringer..." @@ -1061,11 +1061,11 @@ msgstr "Rydder op" msgid "Clear" msgstr "Ryd" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Ryd spilleliste" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1156,8 +1156,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Klik for at skifte mellem tilbageværende tid og total tid" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1195,7 +1195,7 @@ msgstr "Farver" msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separeret liste af klasse:level, level er 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1204,11 +1204,11 @@ msgstr "Kommentar" msgid "Complete tags automatically" msgstr "Fuldfør mærker automatisk" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Fuldfør mærker automatisk..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Konfigurér Subsonic..." msgid "Configure global search..." msgstr "Indstil Global søgning ..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Indstil bibliotek..." @@ -1284,7 +1284,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsol" @@ -1304,12 +1304,12 @@ msgstr "Konverter musik som enheden ikke kan afspille" msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Koper til enhed..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiér til bibliotek..." @@ -1331,14 +1331,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Kunne ikke oprette GStreamer elementet \\\"%1\\\" - sørg for at du har alle de nødvendige GStreamer udvidelsesmoduler installeret" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunne ikke finde muxer for %1, tjek at du har de rigtige GStreamer udvidelsesmoduler installeret" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1355,7 +1355,7 @@ msgid "Couldn't open output file %1" msgstr "Kunne ikke åbne output fil %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Omslagshåndtering" @@ -1399,11 +1399,11 @@ msgstr "Fade over når der automatisk skiftes spor" msgid "Cross-fade when changing tracks manually" msgstr "Fade over når der manuelt skiftes spor" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1411,63 +1411,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1510,11 +1510,11 @@ msgid "" "recover your database" msgstr "Database korruption opdaget. Læs https://code.google.com/p/clementine-player/wiki/DatabaseCorruption for at få instruktioner om, hvordan du gendanner din database" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Oprettelsesdato" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ændringsdato" @@ -1564,7 +1564,7 @@ msgid "Delete downloaded data" msgstr "Sletter hentet data" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Slet filer" @@ -1572,7 +1572,7 @@ msgstr "Slet filer" msgid "Delete from device..." msgstr "Slet fra enhed..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Slet fra disk..." @@ -1597,15 +1597,16 @@ msgstr "Slet de originale filer" msgid "Deleting files" msgstr "Sletter filer" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Fjern valgte spor fra afspilningskøen" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Fjern sporet fra afspilningskøen" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1629,10 +1630,14 @@ msgstr "Enhedsnavn" msgid "Device properties..." msgstr "Enhedsindstillinger..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Enhed" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Mente du" @@ -1671,8 +1676,8 @@ msgstr "Deaktiver generering af stemningslinje" msgid "Disabled" msgstr "Deaktiveret" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1689,7 +1694,7 @@ msgstr "Visningsegenskaber" msgid "Display the on-screen-display" msgstr "Vis on-screen-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Genindlæs hele biblioteket" @@ -1811,6 +1816,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamisk tilstand er aktiveret" @@ -1823,12 +1832,12 @@ msgstr "Dynamisk tilfældig mix" msgid "Edit smart playlist..." msgstr "Rediger smart spilleliste..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Redigér mærke..." @@ -1841,7 +1850,7 @@ msgid "Edit track information" msgstr "Redigér sporinformation" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Redigér sporinformation..." @@ -1942,7 +1951,7 @@ msgstr "Indtast denne IP i app'en for at forbinde til Clementine." msgid "Entire collection" msgstr "Hele samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1956,7 +1965,7 @@ msgstr "Svarende til --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fejl" @@ -1976,7 +1985,7 @@ msgstr "Fejl ved sletning af sang" msgid "Error downloading Spotify plugin" msgstr "Fejl ved hentning af Spotify plugin" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Kunne ikke indlæse %1" @@ -1986,12 +1995,12 @@ msgstr "Kunne ikke indlæse %1" msgid "Error loading di.fm playlist" msgstr "Kunne ikke indlæse spilleliste fra di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Kunne ikke behandle %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Kunne ikke indlæse lyd-CD" @@ -2069,27 +2078,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2116,6 +2125,10 @@ msgstr "Fading" msgid "Fading duration" msgstr "Varighed af fade" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Kunne ikke hente bibliotek" @@ -2167,6 +2180,10 @@ msgstr "Henter Subsonic bibliotek" msgid "Fetching cover error" msgstr "Kunne ikke hente omslag" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "File suffiks" @@ -2175,19 +2192,19 @@ msgstr "File suffiks" msgid "File formats" msgstr "Filformater" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnavn" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Filnavn (uden sti)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstørrelse" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2197,7 +2214,7 @@ msgstr "Filtype" msgid "Filename" msgstr "Filnavn" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Filer" @@ -2317,9 +2334,10 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle indstillinger" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2351,11 +2369,11 @@ msgstr "Giv det et navn:" msgid "Go" msgstr "Start" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Gå til næste faneblad på spillelisten" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Gå til forrige faneblad på spillelisten" @@ -2425,7 +2443,7 @@ msgstr "Gruppér efter genre/album" msgid "Group by Genre/Artist/Album" msgstr "Gruppér efter genre/kunstner/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering " @@ -2580,6 +2598,10 @@ msgstr "Indekserer %1" msgid "Information" msgstr "Information" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Indsæt..." @@ -2592,7 +2614,7 @@ msgstr "Installeret" msgid "Integrity check" msgstr "Integritetskontrol" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2632,6 +2654,10 @@ msgstr "Ugyldig sessionsnøgle" msgid "Invalid username and/or password" msgstr "Ugyldigt brugernavn og/eller adgangskode" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2656,7 +2682,7 @@ msgstr "Ugens favoritter på Jamendo" msgid "Jamendo database" msgstr "Jamendo database" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Gå til sporet som afspilles nu" @@ -2680,7 +2706,7 @@ msgstr "Fortsæt i baggrunden selv om du lukker vinduet" msgid "Keep the original files" msgstr "Behold de originale filer" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Killinger" @@ -2704,7 +2730,7 @@ msgstr "Stort omslag" msgid "Large sidebar" msgstr "Stort sidepanel" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Sidst afspillet" @@ -2787,12 +2813,12 @@ msgstr "Lad stå blank for standard. Eksempler: \"/dev/dsp\", \"front\", osv." msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Længde" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotek" @@ -2800,7 +2826,7 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avanceret bibliotektsgruppering" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Meddelelse om genindlæsning af biblioteket" @@ -2845,7 +2871,7 @@ msgstr "Hent omslag fra disk" msgid "Load playlist" msgstr "Åbn spilleliste" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Åbn spilleliste..." @@ -2874,11 +2900,11 @@ msgstr "Åbner sange" msgid "Loading stream" msgstr "Indlæser stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Åbner spor" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Henter information om spor" @@ -2897,10 +2923,10 @@ msgstr "Indlæser filer/URL'er og erstatter nuværende spilleliste" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Log ind" @@ -2912,7 +2938,7 @@ msgstr "Login mislykkedes" msgid "Long term prediction profile (LTP)" msgstr "Long term prediction-profil (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Elsker" @@ -2975,7 +3001,7 @@ msgstr "Download fra Magnatune fuldført" msgid "Main profile (MAIN)" msgstr "Main profile (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Sæt igang!" @@ -3058,7 +3084,7 @@ msgstr "Mono afspilning" msgid "Months" msgstr "Måneder" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Humør" @@ -3088,7 +3114,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flyt ned" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Flyt til bibliotek..." @@ -3097,7 +3123,7 @@ msgstr "Flyt til bibliotek..." msgid "Move up" msgstr "Flyt op" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musik" @@ -3105,7 +3131,7 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Slå lyden fra" @@ -3193,7 +3219,7 @@ msgstr "Begynd aldrig afspilning" msgid "New folder" msgstr "Ny folder" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Ny spilleliste" @@ -3217,7 +3243,7 @@ msgstr "Nyeste spor" msgid "Next" msgstr "Næste" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Næste spor" @@ -3256,7 +3282,7 @@ msgstr "Ingen korte blokke" msgid "None" msgstr "Ingen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Kunne ikke kopiere nogen af de valgte sange til enheden" @@ -3374,7 +3400,7 @@ msgstr "Uigennemsigtighed" msgid "Open %1 in browser" msgstr "Åben %1 i web browser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Åbn lyd-&CD" @@ -3390,7 +3416,7 @@ msgstr "Åben OPML fil" msgid "Open device" msgstr "Åbn enhed" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Åben fil..." @@ -3425,7 +3451,7 @@ msgstr "Optimer for bitrate" msgid "Optimize for quality" msgstr "Optimer for kvalitet" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Indstillinger..." @@ -3437,7 +3463,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organiser filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organiser filer..." @@ -3461,7 +3487,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Output-indstillinger" @@ -3502,7 +3528,7 @@ msgstr "Party" msgid "Password" msgstr "Kodeord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3515,7 +3541,7 @@ msgstr "Pause i afspilning" msgid "Paused" msgstr "På pause" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Kunstner" @@ -3528,9 +3554,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Simpelt sidepanel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Afspil" @@ -3543,7 +3569,7 @@ msgstr "Spil kunstner eller mærke" msgid "Play artist radio..." msgstr "Spil kunstnerradio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antal gange afspillet" @@ -3598,7 +3624,7 @@ msgstr "Indstillinger for spilleliste" msgid "Playlist type" msgstr "Spillelistetype" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Afspilningslister" @@ -3650,7 +3676,7 @@ msgstr "For-forstærker" msgid "Preferences" msgstr "Indstillinger" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Indstillinger..." @@ -3705,7 +3731,7 @@ msgstr "Forhåndsvisning" msgid "Previous" msgstr "Forrige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Forrige spor" @@ -3719,7 +3745,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fremgang" @@ -3748,16 +3774,16 @@ msgstr "Kvalitet" msgid "Querying device..." msgstr "Forespørger enhed..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Køhåndterer" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Sæt valgte spor i kø" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Sæt spor i kø" @@ -3769,7 +3795,7 @@ msgstr "Radio (samme loudness for alle spor)" msgid "Radios" msgstr "Radioer" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Regn" @@ -3801,7 +3827,7 @@ msgstr "Giv 4 stjerner til denne sang" msgid "Rate the current song 5 stars" msgstr "Giv 5 stjerner til denne sang" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Pointgivning" @@ -3859,7 +3885,7 @@ msgstr "Fjern" msgid "Remove action" msgstr "Fjern handling" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Fjern dubletter fra afspilningsliste" @@ -3875,7 +3901,7 @@ msgstr "Fjern fra Min Musik" msgid "Remove from favorites" msgstr "Fjern fra favoritter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Fjern fra spilleliste" @@ -3912,7 +3938,7 @@ msgstr "Giv spillelisten et nyt navn" msgid "Rename playlist..." msgstr "Giv spillelisten et nyt navn..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Omnummerér spor i denne rækkefølge..." @@ -4003,6 +4029,18 @@ msgstr "Retur til Clementine" msgid "Right" msgstr "Højre" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4029,7 +4067,7 @@ msgstr "Sikker fjernelse af enhed" msgid "Safely remove the device after copying" msgstr "Sikker fjernelse af enhed efter kopiering" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsrate" @@ -4057,7 +4095,7 @@ msgstr "Gem billede" msgid "Save playlist" msgstr "Gem spilleliste" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Gem spilleliste..." @@ -4093,7 +4131,7 @@ msgstr "Skalerbar samplingsfrekvens-profil (SSR)" msgid "Scale size" msgstr "Skaler størrelse" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Karakter" @@ -4102,7 +4140,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble-spor som jeg lytter til" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4186,11 +4224,11 @@ msgstr "Søg med en relativ mængde i det spor der afspilles på nuværende tids msgid "Seek the currently playing track to an absolute position" msgstr "Søg til en bestemt position i det spor der afspilles på nuværende tidspunkt" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vælg alle" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Vælg ingen" @@ -4218,7 +4256,7 @@ msgstr "Vælg visualiseringer" msgid "Select visualizations..." msgstr "Vælg visualiseringer..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4238,7 +4276,7 @@ msgstr "Server detaljer" msgid "Service offline" msgstr "Tjeneste offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Sæt %1 til \"%2\"..." @@ -4247,7 +4285,7 @@ msgstr "Sæt %1 til \"%2\"..." msgid "Set the volume to percent" msgstr "Sæt lydstyrken til percent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Sæt værdi på alle valgte spor..." @@ -4310,7 +4348,7 @@ msgstr "Vis en køn OSD" msgid "Show above status bar" msgstr "Vis over statuslinjen" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Vis alle sange" @@ -4330,12 +4368,12 @@ msgstr "Vis adskillere" msgid "Show fullsize..." msgstr "Vis i fuld størrelse..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Vis i filbrowser" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4347,11 +4385,11 @@ msgstr "Vis under Diverse kunstnere" msgid "Show moodbar" msgstr "Vis stemningslinie" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Vis kun dubletter" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Vis kun filer uden mærker" @@ -4391,7 +4429,7 @@ msgstr "Bland albummer" msgid "Shuffle all" msgstr "Bland alle" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Bland spilleliste" @@ -4431,7 +4469,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Skip tilbage i spillelisten" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antal gange sprunget over" @@ -4467,7 +4505,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Information om sangen" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info om sangen" @@ -4499,7 +4537,7 @@ msgstr "Sorter sange efter" msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Kilde" @@ -4535,6 +4573,10 @@ msgstr "Standard" msgid "Starred" msgstr "Har stjerner" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Start den spilleliste der afspiller nu" @@ -4550,7 +4592,7 @@ msgid "" "list" msgstr "Begynd med at skrive noget i søgeboksen ovenfor, for at fylde denne listen med søgeresultater" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Starter %1" @@ -4563,7 +4605,7 @@ msgstr "Starter…" msgid "Stations" msgstr "Kanaler" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stop" @@ -4572,7 +4614,7 @@ msgstr "Stop" msgid "Stop after" msgstr "Stop efter" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stop efter dette spor" @@ -4740,7 +4782,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Prøveperioden for Subsonic-serveren er ovre. Doner venligst for at få en licens-nøgle. Besøg subsonic.org for flere detaljer." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4781,7 +4823,7 @@ msgid "" "continue?" msgstr "Disse filer vil blive slettet fra disken, er du sikker på at du vil fortsætte?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4853,9 +4895,10 @@ msgstr "Denne stream er kun for betalende abonnenter" msgid "This type of device is not supported: %1" msgstr "Denne enhedstype (%1) er ikke understøttet." -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" @@ -4877,11 +4920,11 @@ msgstr "Slå pæn OSD til/fra" msgid "Toggle fullscreen" msgstr "Slå fuldskærmstilstand til/fra" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Slå køstatus til/fra" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Slå scrobbling til/fra" @@ -4913,12 +4956,13 @@ msgstr "Totalt antal bytes overført" msgid "Total network requests made" msgstr "Totalt antal forespørgsler over nettet" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spor" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Omkod musik" @@ -5016,7 +5060,7 @@ msgstr "Opdater Grooveshark afspilningslister" msgid "Update all podcasts" msgstr "Ajourfør alle podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Opdater ændrede bibliotekskataloger" @@ -5171,7 +5215,7 @@ msgstr "Vis" msgid "Visualization mode" msgstr "Visualiseringstilstand" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualiseringer" @@ -5299,7 +5343,7 @@ msgid "" "well?" msgstr "Vil du også flytte de andre sange i dette album til Diverse kunstnere?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Vil du genindlæse hele biblioteket nu?" @@ -5311,10 +5355,10 @@ msgstr "" msgid "Wrong username or password." msgstr "Forkert brugernavn og/eller password." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "År" diff --git a/src/translations/de.po b/src/translations/de.po index 1ca57c792..992d6b2be 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-13 15:27+0000\n" +"PO-Revision-Date: 2014-01-27 03:14+0000\n" "Last-Translator: to_ba\n" "Language-Team: German (http://www.transifex.com/projects/p/clementine/language/de/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -51,7 +51,7 @@ msgid "" "You can favorite playlists by clicking the star icon next to a playlist name\n" "\n" "Favorited playlists will be saved here" -msgstr "\n\nSie können Playlists zu ihren Favoriten hinzufügen, indem sie den Stern neben dem Namen der Playlist anklicken\n\nFavorisierte Playlists werden hier gespeichert" +msgstr "\n\nSie können Wiedergabelisten zu ihren Favoriten hinzufügen, indem sie den Stern neben dem Namen der Wiedergabeliste anklicken\n\nFavorisierte Wiedergabelisten werden hier gespeichert" #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" @@ -195,11 +195,11 @@ msgstr "&Zentriert" msgid "&Custom" msgstr "&Benutzerdefiniert" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Hilfe" @@ -216,7 +216,7 @@ msgstr "&Ausblenden …" msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musik" @@ -224,15 +224,15 @@ msgstr "&Musik" msgid "&None" msgstr "&Keine" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Wiedergabeliste" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Beenden" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Wiederholung" @@ -240,7 +240,7 @@ msgstr "&Wiederholung" msgid "&Right" msgstr "&Rechts" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Zufallsmodus" @@ -248,7 +248,7 @@ msgstr "&Zufallsmodus" msgid "&Stretch columns to fit window" msgstr "&Spalten an Fenstergröße anpassen" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Werkzeuge" @@ -299,7 +299,7 @@ msgstr "50 zufällige Stücke" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "Jetzt auf Premium erweitern" +msgstr "Jetzt zu Premium erweitern" #: ../bin/src/ui_ubuntuonesettingspage.h:133 msgid "" @@ -342,7 +342,7 @@ msgstr "Ein Spotify-Premium-Konto ist erforderlich." #: ../bin/src/ui_networkremotesettingspage.h:189 msgid "A client can connect only, if the correct code was entered." -msgstr "Ein Client kann sich nur verbinden, falls der korrekte Code eingegeben wurde." +msgstr "Ein Programm kann sich nur verbinden, falls der korrekte Code eingegeben wurde." #: smartplaylists/wizard.cpp:78 msgid "" @@ -393,11 +393,11 @@ msgstr "Abbrechen" msgid "About %1" msgstr "Über %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Über Clementine …" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Über Qt …" @@ -445,19 +445,19 @@ msgstr "Einen weiteren Stream hinzufügen …" msgid "Add directory..." msgstr "Verzeichnis hinzufügen …" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Datei hinzufügen" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Datei zum Transcoder hinzufügen" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Datei(en) zum Transcoder hinzufügen" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Datei hinzufügen …" @@ -465,11 +465,11 @@ msgstr "Datei hinzufügen …" msgid "Add files to transcode" msgstr "Zu konvertierende Dateien hinzufügen" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Ordner hinzufügen" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Ordner hinzufügen …" @@ -481,7 +481,7 @@ msgstr "Neuen Ordner hinzufügen …" msgid "Add podcast" msgstr "Podcast hinzufügen" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast hinzufügen …" @@ -557,7 +557,7 @@ msgstr "Nummer des aktuellen Titels" msgid "Add song year tag" msgstr "Erscheinungsjahr des aktuellen Titels" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Stream hinzufügen …" @@ -569,7 +569,7 @@ msgstr "Zu Grooveshark-Favoriten hinzufügen" msgid "Add to Grooveshark playlists" msgstr "Zu Grooveshark-Wiedergabelisten hinzufügen" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Zu anderer Wiedergabeliste hinzufügen" @@ -612,7 +612,7 @@ msgstr "In den letzten drei Monaten hinzugefügt" #: internet/groovesharkservice.cpp:1394 msgid "Adding song to My Music" -msgstr "Titel werden zu \"Meine Musik\" hinzugefügt" +msgstr "Titel werden zu »Meine Musik« hinzugefügt" #: internet/groovesharkservice.cpp:1371 msgid "Adding song to favorites" @@ -630,12 +630,12 @@ msgstr "Nach " msgid "After copying..." msgstr "Nach dem Kopieren …" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -643,7 +643,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealer Pegel für alle Stücke)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -651,7 +651,7 @@ msgstr "Album-Interpret" #: ../bin/src/ui_appearancesettingspage.h:284 msgid "Album cover" -msgstr "Albumcover" +msgstr "Titelbild" #: internet/jamendoservice.cpp:415 msgid "Album info on jamendo.com..." @@ -659,17 +659,17 @@ msgstr "Albuminformationen auf jamendo.com …" #: ui/albumcovermanager.cpp:134 msgid "Albums with covers" -msgstr "Alben mit Cover" +msgstr "Alben mit Titelbildern" #: ui/albumcovermanager.cpp:135 msgid "Albums without covers" -msgstr "Alben ohne Cover" +msgstr "Alben ohne Titelbilder" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -700,15 +700,15 @@ msgstr "Alle Stücke" #: ../bin/src/ui_networkremotesettingspage.h:194 msgid "Allow a client to download music from this computer." -msgstr "Clients erlauben, Musik von diesem Computer herunterzuladen." +msgstr "Programmen erlauben, Musik von diesem Rechner herunterzuladen." #: ../bin/src/ui_networkremotesettingspage.h:196 msgid "Allow downloads" -msgstr "Downloads erlauben" +msgstr "Herunterladen erlauben" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" -msgstr "Mid/Side Encoding zulassen" +msgstr "Kodierung der Mitten/Seiten zulassen" #: ../bin/src/ui_transcodedialog.h:217 msgid "Alongside the originals" @@ -731,7 +731,7 @@ msgstr "Immer mit der Wiedergabe beginnen" msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" -msgstr "Ein zusätzlich Plugin ist benötigt, um Spotify in Clementine zu benutzen. Möchten Sie es jetzt herunterladen und installieren?" +msgstr "Eine zusätzlich Erweiterung wird benötigt, um Spotify in Clementine zu benutzen. Möchten Sie es jetzt herunterladen und installieren?" #: devices/gpodloader.cpp:61 msgid "An error occurred loading the iTunes database" @@ -775,12 +775,12 @@ msgstr "Zur Wiedergabeliste hinzufügen" #: ../bin/src/ui_playbacksettingspage.h:318 msgid "Apply compression to prevent clipping" -msgstr "Komprimieren um Clippingfehler zu vermeiden" +msgstr "Komprimieren um Übersteuerung zu vermeiden" #: ui/equalizer.cpp:201 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" -msgstr "Profil \"%1\" wirklich löschen?" +msgstr "Sind Sie sicher, dass Sie die Voreinstellung »%1« wirklich löschen wollen?" #: internet/groovesharkservice.cpp:1292 msgid "Are you sure you want to delete this playlist?" @@ -796,17 +796,17 @@ msgid "" "the songs of your library?" msgstr "Sind Sie sicher, dass Sie, für alle Lieder Ihrer Bibliothek, die Liedstatistiken in die Lieddatei schreiben wollen?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Interpret" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Infos zum Interpreten" @@ -822,7 +822,7 @@ msgstr "Stichworte zum Interpreten" msgid "Artist's initial" msgstr "Initialen des Interpreten" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audioformat" @@ -868,7 +868,7 @@ msgstr "Durchschnittliche Bildgröße" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -891,15 +891,15 @@ msgstr "Deckkraft:" #: core/database.cpp:648 msgid "Backing up database" -msgstr "Sichere die Datenbank" +msgstr "Die Datenbank wird gesuchert" #: ../bin/src/ui_equalizer.h:173 msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" -msgstr "Bannen" +msgstr "Blockieren" #: analyzers/baranalyzer.cpp:19 msgid "Bar analyzer" @@ -926,7 +926,7 @@ msgstr "Optimal" msgid "Biography from %1" msgstr "Biografie von %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -972,7 +972,7 @@ msgstr "Durchsuchen …" #: ../bin/src/ui_playbacksettingspage.h:327 msgid "Buffer duration" -msgstr "Zwischenspeicher (Buffer) Dauer" +msgstr "Pufferdauer" #: engines/gstengine.cpp:784 msgid "Buffering" @@ -1000,7 +1000,7 @@ msgstr "Abbrechen" #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" -msgstr "Cover ändern" +msgstr "Titelbilder ändern" #: songinfo/songinfotextview.cpp:83 msgid "Change font size..." @@ -1032,7 +1032,7 @@ msgstr "Die Mono-Wiedergabe-Einstellung wird für den nächsten Titel wirksam." msgid "Check for new episodes" msgstr "Nach neuen Episoden suchen" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Nach Aktualisierungen suchen …" @@ -1062,7 +1062,7 @@ msgstr "Wählen Sie, wie die Wiedergabeliste sortiert wird und wie viele Titel s #: podcasts/podcastsettingspage.cpp:132 msgid "Choose podcast download directory" -msgstr "Wählen Sie ein Downloadverzeichnis für Podcasts" +msgstr "Wählen Sie ein Herunterladeverzeichnis für Podcasts" #: ../bin/src/ui_songinfosettingspage.h:160 msgid "" @@ -1082,11 +1082,11 @@ msgstr "Bereinigen" msgid "Clear" msgstr "Leeren" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Wiedergabeliste leeren" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1136,7 +1136,7 @@ msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "Clementine kann die Liste Ihrer Abonnements mit Ihren anderen Computern und Podcast-Anwendungen abgleichen. Ein Konto erstellen." +msgstr "Clementine kann die Liste Ihrer Abonnements mit Ihren anderen Rechnern und Podcast-Anwendungen abgleichen. Ein Konto erstellen." #: visualisations/projectmvisualisation.cpp:133 msgid "" @@ -1171,14 +1171,14 @@ msgstr "Klicken Sie hier um das zu ändern" msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "Hier klicken um diese Playlist zu speichern und unterm dem Reiter \"Playlists\" auf dem Panel auf der linken Seitenleiste zugänglich zu machen" +msgstr "Hier klicken, um diese Wiedergabeliste zu speichern und sie dadurch in den »Wiedergabelisten« auf der linken Seitenleiste zugänglich zu machen" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" msgstr "Klicken Sie um zwischen verbleibender und Gesamtzeit zu wechseln" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1198,11 +1198,11 @@ msgstr "Visualisierung schließen" #: internet/magnatunedownloaddialog.cpp:280 msgid "Closing this window will cancel the download." -msgstr "Das Schließen des Fensters bricht den Download ab." +msgstr "Das Schließen des Fensters bricht das Herunterladen ab." #: ui/albumcovermanager.cpp:216 msgid "Closing this window will stop searching for album covers." -msgstr "Das Schließen dieses Fensters bricht das Suchen nach Covern ab." +msgstr "Das Schließen dieses Fensters bricht das Suchen nach Titelbildern ab." #: ui/equalizer.cpp:116 msgid "Club" @@ -1214,9 +1214,9 @@ msgstr "Farben" #: core/commandlineoptions.cpp:175 msgid "Comma separated list of class:level, level is 0-3" -msgstr "Komma-getrennte Liste mit \"class:level\" (Level zwischen 0-3)" +msgstr "Komma getrennte Liste mit »class:level«, Level zwischen 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1225,11 +1225,11 @@ msgstr "Kommentar" msgid "Complete tags automatically" msgstr "Tags automatisch vervollständigen" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Schlagworte automatisch vervollständigen …" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1268,7 +1268,7 @@ msgstr "Subsonic wird konfiguriert …" msgid "Configure global search..." msgstr "Globale Suche konfigurieren …" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Bibliothek einrichten …" @@ -1305,7 +1305,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Zeitüberschreitung, überprüfen Sie die Server-URL. Beispiel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsole" @@ -1325,12 +1325,12 @@ msgstr "Musik konvertieren, die das Gerät nicht abspielen kann" msgid "Copy to clipboard" msgstr "Kopieren" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Auf das Gerät kopieren …" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Zur Bibliothek kopieren …" @@ -1350,21 +1350,21 @@ msgstr "Konnte nicht mit Subsonic verbinden, bitte Server-URL überprüfen. Beis msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" -msgstr "Konnte GStreamer-Element \"%1\" nicht erstellen. Stellen Sie sicher, dass alle nötigen GStreamer-Plugins installiert sind." +msgstr "GStreamer-Element »%1« konnte nicht erstellt werden. Stellen Sie sicher, dass alle nötigen GStreamer-Erweiterungen installiert sind." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" -msgstr "Es konnte kein Multiplexer für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Plugins installiert sind." +msgstr "Es konnte kein Multiplexer für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Erweiterungen installiert sind." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" -msgstr "Es konnte kein Encoder für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Plugins installiert sind." +msgstr "Es konnte kein Encoder für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Erweiterungen installiert sind." #: internet/lastfmservice.cpp:875 msgid "Couldn't load the last.fm radio station" @@ -1376,37 +1376,37 @@ msgid "Couldn't open output file %1" msgstr "Ausgabedatei %1 konnte nicht geöffnet werden" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" -msgstr "Coververwaltung" +msgstr "Titelbildwaltung" #: ui/edittagdialog.cpp:443 msgid "Cover art from embedded image" -msgstr "Cover aus eingebettetem Bild" +msgstr "Titelbild aus eingebettetem Bild" #: ui/edittagdialog.cpp:445 #, qt-format msgid "Cover art loaded automatically from %1" -msgstr "Automatsch geladenes Albencover von %1" +msgstr "Automatsch geladenes Titelbild von %1" #: ui/edittagdialog.cpp:438 msgid "Cover art manually unset" -msgstr "Cover manuell entfernt" +msgstr "Titelbild manuell entfernt" #: ui/edittagdialog.cpp:447 msgid "Cover art not set" -msgstr "Cover nicht ausgewählt" +msgstr "Titelbild nicht ausgewählt" #: ui/edittagdialog.cpp:441 #, qt-format msgid "Cover art set from %1" -msgstr "Das Cover wird von %1 gesetzt" +msgstr "Das Titelbild wurde von %1 eingestellt" #: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 #, qt-format msgid "Covers from %1" -msgstr "Cover von %1" +msgstr "Titelbild von %1" #: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 msgid "Create a new Grooveshark playlist" @@ -1420,81 +1420,81 @@ msgstr "Überblenden bei automatischem Stückwechsel" msgid "Cross-fade when changing tracks manually" msgstr "Überblenden bei manuellem Stückwechsel" -#: ../bin/src/ui_mainwindow.h:659 -msgid "Ctrl+Alt+V" -msgstr "Ctrl+Alt+V" - #: ../bin/src/ui_mainwindow.h:663 +msgid "Ctrl+Alt+V" +msgstr "Strg+Alt+V" + +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" -msgstr "Ctrl+B" +msgstr "Strg+B" #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" -msgstr "Ctrl+Down" +msgstr "Strg+Unten" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" -msgstr "Ctrl+E" - -#: ../bin/src/ui_mainwindow.h:680 -msgid "Ctrl+H" -msgstr "Ctrl+H" - -#: ../bin/src/ui_mainwindow.h:700 -msgid "Ctrl+J" -msgstr "Ctrl+J" - -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 -msgid "Ctrl+K" -msgstr "Ctrl+K" - -#: ../bin/src/ui_mainwindow.h:661 -msgid "Ctrl+L" -msgstr "Ctrl+L" - -#: ../bin/src/ui_mainwindow.h:714 -msgid "Ctrl+M" -msgstr "Ctrl+M" - -#: ../bin/src/ui_mainwindow.h:702 -msgid "Ctrl+N" -msgstr "Ctrl+N" +msgstr "Strg+E" #: ../bin/src/ui_mainwindow.h:684 -msgid "Ctrl+O" -msgstr "Ctrl+O" - -#: ../bin/src/ui_mainwindow.h:676 -msgid "Ctrl+P" -msgstr "Ctrl+P" - -#: ../bin/src/ui_mainwindow.h:657 -msgid "Ctrl+Q" -msgstr "Ctrl+Q" +msgid "Ctrl+H" +msgstr "Strg+H" #: ../bin/src/ui_mainwindow.h:704 -msgid "Ctrl+S" -msgstr "Ctrl+S" +msgid "Ctrl+J" +msgstr "Strg+J" -#: ../bin/src/ui_mainwindow.h:682 -msgid "Ctrl+Shift+A" -msgstr "Ctrl+Shift+A" +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +msgid "Ctrl+K" +msgstr "Strg+K" + +#: ../bin/src/ui_mainwindow.h:665 +msgid "Ctrl+L" +msgstr "Strg+L" + +#: ../bin/src/ui_mainwindow.h:718 +msgid "Ctrl+M" +msgstr "Strg+M" #: ../bin/src/ui_mainwindow.h:706 +msgid "Ctrl+N" +msgstr "Strg+N" + +#: ../bin/src/ui_mainwindow.h:688 +msgid "Ctrl+O" +msgstr "Strg+O" + +#: ../bin/src/ui_mainwindow.h:680 +msgid "Ctrl+P" +msgstr "Strg+P" + +#: ../bin/src/ui_mainwindow.h:661 +msgid "Ctrl+Q" +msgstr "Strg+Q" + +#: ../bin/src/ui_mainwindow.h:708 +msgid "Ctrl+S" +msgstr "Strg+S" + +#: ../bin/src/ui_mainwindow.h:686 +msgid "Ctrl+Shift+A" +msgstr "Strg+Umschalt+A" + +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" -msgstr "Ctrl+Shift+O" +msgstr "Strg+Umschalt+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" -msgstr "Strg + Shift + T" +msgstr "Strg+Umschalt+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" -msgstr "Ctrl+T" +msgstr "Strg+T" #: ../bin/src/ui_queuemanager.h:129 msgid "Ctrl+Up" -msgstr "Ctrl+Up" +msgstr "Strg+Oben" #: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 msgid "Custom" @@ -1531,11 +1531,11 @@ msgid "" "recover your database" msgstr "Ihre Datenbank ist beschädigt. Bitte besuchen Sie https://code.google.com/p/clementine-player/wiki/DatabaseCorruption um zu erfahren, wie Sie Ihre Datenbank wiederherstellen können." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Erstellt" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Geändert" @@ -1585,7 +1585,7 @@ msgid "Delete downloaded data" msgstr "Heruntergeladene Dateien löschen" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Dateien löschen" @@ -1593,7 +1593,7 @@ msgstr "Dateien löschen" msgid "Delete from device..." msgstr "Vom Gerät löschen …" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Vom Datenträger löschen …" @@ -1618,15 +1618,16 @@ msgstr "Originale löschen" msgid "Deleting files" msgstr "Dateien werden gelöscht" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Stücke aus der Warteschlange nehmen" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Stück aus der Warteschlange nehmen" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Ziel:" @@ -1650,10 +1651,14 @@ msgstr "Gerätename" msgid "Device properties..." msgstr "Geräteeinstellungen …" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Geräte" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Dialog" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Meinten Sie" @@ -1692,8 +1697,8 @@ msgstr "Erzeugung des Stimmungsbarometers deaktivieren" msgid "Disabled" msgstr "Deaktiviert" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD-Nr." @@ -1710,7 +1715,7 @@ msgstr "Anzeigeoptionen" msgid "Display the on-screen-display" msgstr "OSD anzeigen" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Bibliothek erneut einlesen" @@ -1728,7 +1733,7 @@ msgstr "Wiederholung aus" #: library/libraryview.cpp:405 msgid "Don't show in various artists" -msgstr "Nicht unter \"Verschiedene Interpreten\" anzeigen" +msgstr "Nicht unter »Verschiedene Interpreten« anzeigen" #: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" @@ -1757,7 +1762,7 @@ msgstr "%n Episoden herunterladen" #: internet/magnatunedownloaddialog.cpp:252 msgid "Download directory" -msgstr "Downloadverzeichnis" +msgstr "Herunterladeverzeichnis" #: ../bin/src/ui_podcastsettingspage.h:240 msgid "Download episodes to" @@ -1765,7 +1770,7 @@ msgstr "Episoden herunterladen nach" #: ../bin/src/ui_magnatunesettingspage.h:161 msgid "Download membership" -msgstr "Downloadmitgliedschaft" +msgstr "Herunterlademitgliedschaft" #: ../bin/src/ui_podcastsettingspage.h:241 msgid "Download new episodes automatically" @@ -1773,7 +1778,7 @@ msgstr "Neue Episoden automatisch herunterladen" #: podcasts/podcastservice.cpp:187 msgid "Download queued" -msgstr "Download an die Warteschlange angehängt" +msgstr "Herunterladewarteschlange" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" @@ -1814,7 +1819,7 @@ msgstr "Magnatune-Katalog wird geladen" #: internet/spotifyblobdownloader.cpp:44 msgid "Downloading Spotify plugin" -msgstr "Spotify-Plugin wird heruntergeladen" +msgstr "Spotify-Erweiterung wird heruntergeladen" #: musicbrainz/tagfetcher.cpp:102 msgid "Downloading metadata" @@ -1832,6 +1837,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Dauer" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamischer Modus ist an" @@ -1844,12 +1853,12 @@ msgstr "Dynamischer Zufallsmix" msgid "Edit smart playlist..." msgstr "Intelligente Wiedergabeliste bearbeiten …" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Schlagwort »%1« bearbeiten …" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Schlagwort bearbeiten …" @@ -1862,7 +1871,7 @@ msgid "Edit track information" msgstr "Metadaten bearbeiten" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Metadaten bearbeiten …" @@ -1898,27 +1907,27 @@ msgstr "Last.fm Scrobbling aktivieren/deaktivieren" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" -msgstr "Encodierungskomplexität" +msgstr "Kodierungkomplexität" #: ../bin/src/ui_transcoderoptionsmp3.h:197 msgid "Encoding engine quality" -msgstr "Encoder-Qualität" +msgstr "Kodierungsqualität" #: ../bin/src/ui_transcoderoptionsspeex.h:224 msgid "Encoding mode" -msgstr "Encodierungsmodus" +msgstr "Kodierungsmodus" #: ../bin/src/ui_addpodcastbyurl.h:76 msgid "Enter a URL" -msgstr "Geben Sie eine URL ein" +msgstr "Adresse eingeben" #: ../bin/src/ui_coverfromurldialog.h:103 msgid "Enter a URL to download a cover from the Internet:" -msgstr "URL eingeben um Cover aus dem Internet zu laden" +msgstr "Adresse eingeben um Titelbild aus dem Internet zu laden" #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" -msgstr "Dateiname für exportierte Cover eingeben (ohne Dateierweiterung):" +msgstr "Dateiname für exportierte Titelbild eingeben (ohne Dateierweiterung):" #: playlist/playlisttabbar.cpp:137 msgid "Enter a new name for this playlist" @@ -1932,7 +1941,7 @@ msgstr "Einen Interpreten oder ein Schlagwort eingeben, um Last.fm #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" -msgstr "Geben Sie Suchbegriffe ein um Musik auf Ihrem Computer und im Internet zu finden" +msgstr "Geben Sie Suchbegriffe ein um Musik auf Ihrem Rechner und im Internet zu finden" #: ../bin/src/ui_itunessearchpage.h:77 msgid "Enter search terms below to find podcasts in the iTunes Store" @@ -1963,7 +1972,7 @@ msgstr "Gib diese IP in der App ein um dich mit Clementine zu verbinden." msgid "Entire collection" msgstr "Gesamte Sammlung" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1977,7 +1986,7 @@ msgstr "Äquivalent zu --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fehler" @@ -1995,9 +2004,9 @@ msgstr "Fehler beim Löschen der Titel" #: internet/spotifyblobdownloader.cpp:215 msgid "Error downloading Spotify plugin" -msgstr "Fehler beim herunterladen von Spotify-Plugin" +msgstr "Fehler beim herunterladen der Spotify-Erweiterung" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Fehler beim Laden von %1" @@ -2007,12 +2016,12 @@ msgstr "Fehler beim Laden von %1" msgid "Error loading di.fm playlist" msgstr "Fehler beim Laden der di.fm-Wiedergabeliste" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Fehler bei %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Fehler beim Laden der Audio-CD" @@ -2054,7 +2063,7 @@ msgstr "Außer für Stücke des gleichen Albums oder des gleichen Cuesheets." #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "Existierende Cover" +msgstr "Existierende Titelbilder" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" @@ -2067,19 +2076,19 @@ msgstr "Läuft aus am %1" #: ../bin/src/ui_albumcovermanager.h:226 msgid "Export Covers" -msgstr "Cover exportieren" +msgstr "Titelbilder exportieren" #: ../bin/src/ui_albumcoverexport.h:203 msgid "Export covers" -msgstr "Cover exportieren" +msgstr "Titelbilder exportieren" #: ../bin/src/ui_albumcoverexport.h:206 msgid "Export downloaded covers" -msgstr "Heruntergeladene Cover expoertieren" +msgstr "Heruntergeladene Titelbild expoertieren" #: ../bin/src/ui_albumcoverexport.h:207 msgid "Export embedded covers" -msgstr "Eingebettete Cover exportieren" +msgstr "Eingebettete Titelbild exportieren" #: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 msgid "Export finished" @@ -2088,29 +2097,29 @@ msgstr "Export beendet" #: ui/albumcovermanager.cpp:786 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "%1 von %2 Cover exportiert (%3 übersprungen)" +msgstr "%1 von %2 Titelbildern exportiert (%3 übersprungen)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2137,6 +2146,10 @@ msgstr "Überblenden" msgid "Fading duration" msgstr "Dauer:" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "CD-Laufwerk kann nicht gelesen werden" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Holen des Verzeichnisses fehlgeschlagen" @@ -2170,7 +2183,7 @@ msgstr "Lieblingsstücke" #: ../bin/src/ui_albumcovermanager.h:225 msgid "Fetch Missing Covers" -msgstr "Fehlende Cover holen" +msgstr "Fehlende Titelbilder holen" #: ../bin/src/ui_albumcovermanager.h:216 msgid "Fetch automatically" @@ -2186,7 +2199,11 @@ msgstr "Subsonic-Bibliothek wird abgerufen" #: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" -msgstr "Holen des Covers fehlgeschlagen" +msgstr "Holen des Titelbildes fehlgeschlagen" + +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Dateiformat" #: ui/organisedialog.cpp:71 msgid "File extension" @@ -2196,19 +2213,19 @@ msgstr "Dateiendung" msgid "File formats" msgstr "Dateiformate" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Dateiname" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Dateiname (ohne Dateipfad)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dateigröße" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2218,7 +2235,7 @@ msgstr "Dateityp" msgid "Filename" msgstr "Dateiname" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Dateien" @@ -2248,15 +2265,15 @@ msgstr "FLAC" #: ../bin/src/ui_songinfosettingspage.h:156 msgid "Font size" -msgstr "Schriftgröße:" +msgstr "Schriftgröße" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "Aus lizenzrechtlichen Gründen ist die Spotify-Unterstützung in einem separaten Plugin enthalten." +msgstr "Aus lizenzrechtlichen Gründen ist die Spotify-Unterstützung in einer separaten Erweiterung enthalten." #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" -msgstr "Mono-Encoding erzwingen" +msgstr "Mono-Kodierung erzwingen" #: devices/deviceview.cpp:204 devices/deviceview.cpp:310 #: devices/deviceview.cpp:314 @@ -2338,9 +2355,10 @@ msgstr "Allgemein" msgid "General settings" msgstr "Allgemeine Einstellungen" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2354,7 +2372,7 @@ msgstr "Erstelle eine URL um diesen Titel auf Grooveshark zu teilen." #: internet/groovesharkservice.cpp:790 msgid "Getting Grooveshark popular songs" -msgstr "Empfange \"Beliebte Titel\" von Grooveshark" +msgstr "Empfange »Beliebte Titel« von Grooveshark" #: internet/somafmservice.cpp:114 msgid "Getting channels" @@ -2372,13 +2390,13 @@ msgstr "Namen angeben:" msgid "Go" msgstr "Start" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" -msgstr "Zum nächsten Wiedergabeliste-Tab wechseln" +msgstr "Zum nächsten Wiedergabelistenreiter wechseln" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" -msgstr "Zum vorherigen Wiedergabeliste-Tab wechseln" +msgstr "Zum vorherigen Wiedergabelistenreiter wechseln" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" @@ -2388,7 +2406,7 @@ msgstr "Google Drive" #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" -msgstr "%1 Cover von %2 wurden gefunden (%3 fehlgeschlagen)" +msgstr "%1 Titelbilder von %2 wurden gefunden (%3 fehlgeschlagen)" #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" @@ -2446,7 +2464,7 @@ msgstr "Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Genre/Interpret/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppierung" @@ -2530,7 +2548,7 @@ msgstr "Wenn Sie die URL eines Podcasts kennen, geben Sie sie unten ein und drü #: ../bin/src/ui_organisedialog.h:204 msgid "Ignore \"The\" in artist names" -msgstr "Ignoriere \"The\" in den Künstlernamen" +msgstr "»The« in den Künstlernamen ignorieren" #: ui/albumcoverchoicecontroller.cpp:43 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" @@ -2570,11 +2588,11 @@ msgstr "Alle Titel einbeziehen" #: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "Inkompatible \"Subsonic REST protocol version\". Der Client braucht ein Upgrade." +msgstr "Inkompatible »Subsonic REST protocol version«. Das Programm braucht eine Aktualisierung." #: internet/subsonicsettingspage.cpp:94 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "Inkompatible \"Subsonic REST protocol version\". Der Server braucht ein Upgrade." +msgstr "Inkompatible »Subsonic REST protocol version«. Der Server braucht eine Aktualisierung." #: internet/subsonicsettingspage.cpp:127 msgid "Incomplete configuration, please ensure all fields are populated." @@ -2601,6 +2619,10 @@ msgstr "Indizierung %1" msgid "Information" msgstr "Information" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "Eingabeoptionen" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Einfügen …" @@ -2613,7 +2635,7 @@ msgstr "Installiert" msgid "Integrity check" msgstr "Integritätsprüfung" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2653,6 +2675,10 @@ msgstr "Ungültiger Sitzungsschlüssel" msgid "Invalid username and/or password" msgstr "Benutzername und/oder Passwort ungültig" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "Auswahl umkehren" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2677,7 +2703,7 @@ msgstr "Jamendos Top-Titel der Woche" msgid "Jamendo database" msgstr "Jamendo-Datenbank" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Zum aktuellen Stück springen" @@ -2701,7 +2727,7 @@ msgstr "Im Hintergrund weiterlaufen, wenn das Fenster geschlossen wurde" msgid "Keep the original files" msgstr "Originale behalten" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kätzchen" @@ -2719,13 +2745,13 @@ msgstr "Großer Raum" #: widgets/nowplayingwidget.cpp:94 msgid "Large album cover" -msgstr "Großes Albumcover" +msgstr "Großes Titelbild" #: widgets/fancytabwidget.cpp:670 msgid "Large sidebar" msgstr "Große Seitenleiste" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Zuletzt gespielt" @@ -2802,18 +2828,18 @@ msgstr "Am wenigsten gemochte Stücke" #: ../bin/src/ui_playbacksettingspage.h:326 msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Beispiele: \"/dev/dsp\" , \"front\", usw. Leer lassen für Standardeinstellung." +msgstr "Beispiele: »/dev/dsp« , »front«, usw. Leer lassen für Standardeinstellung." #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Länge" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliothek" @@ -2821,7 +2847,7 @@ msgstr "Bibliothek" msgid "Library advanced grouping" msgstr "Benutzerdefinierte Gruppierung der Bibliothek" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Hinweis beim erneuten durchsuchen der Bibliothek" @@ -2848,25 +2874,25 @@ msgstr "Laden" #: ../bin/src/ui_coverfromurldialog.h:102 msgid "Load cover from URL" -msgstr "Cover aus URL-Adresse laden" +msgstr "Titelbild von Adresse laden" #: ui/albumcoverchoicecontroller.cpp:61 msgid "Load cover from URL..." -msgstr "Cover aus Adresse laden … " +msgstr "Titelbild von Adresse laden …" #: ui/albumcoverchoicecontroller.cpp:98 msgid "Load cover from disk" -msgstr "Cover aus Datei laden" +msgstr "Titelbild aus Datei laden" #: ui/albumcoverchoicecontroller.cpp:59 msgid "Load cover from disk..." -msgstr "Cover von Datenträger wählen …" +msgstr "Titelbild von Datenträger wählen …" #: playlist/playlistcontainer.cpp:286 msgid "Load playlist" msgstr "Wiedergabeliste laden" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Wiedergabeliste laden …" @@ -2880,7 +2906,7 @@ msgstr "Lade MTP-Gerät" #: devices/gpodloader.cpp:46 msgid "Loading iPod database" -msgstr "Lade iPod-Datenbank" +msgstr "iPod-Datenbank laden" #: smartplaylists/generatorinserter.cpp:52 msgid "Loading smart playlist" @@ -2895,11 +2921,11 @@ msgstr "Lade Titel" msgid "Loading stream" msgstr "Lade Stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Lade Stücke" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Lade Stückinfo" @@ -2918,10 +2944,10 @@ msgstr "Öffne Dateien/URLs und ersetze die Wiedergabeliste" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Anmelden" @@ -2931,9 +2957,9 @@ msgstr "Anmeldung fehlgeschlagen" #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" -msgstr "Langzeitvorhersage-Profil (LTP)" +msgstr "Langzeitvorhersageprofil (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Lieben" @@ -2949,7 +2975,7 @@ msgstr "Niedrig (256x256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" -msgstr "Geringe Komplexität - Profil (LC)" +msgstr "Geringes Komplexitätsprofil (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" @@ -2986,17 +3012,17 @@ msgstr "Magnatune" #: ../bin/src/ui_magnatunedownloaddialog.h:131 msgid "Magnatune Download" -msgstr "Magantune-Download" +msgstr "Magantune-Herunterladen" #: widgets/osd.cpp:195 msgid "Magnatune download finished" -msgstr "Magnatune-Download beendet" +msgstr "Magnatune-Herunterladen beendet" #: ../bin/src/ui_transcoderoptionsaac.h:134 msgid "Main profile (MAIN)" -msgstr "Standard-Profil (MAIN)" +msgstr "Hauptprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Make it so!" @@ -3079,7 +3105,7 @@ msgstr "Mono-Wiedergabe" msgid "Months" msgstr "Monate" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Stimmung" @@ -3109,7 +3135,7 @@ msgstr "Einhängepunkte" msgid "Move down" msgstr "Nach unten" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Zur Bibliothek verschieben …" @@ -3118,7 +3144,7 @@ msgstr "Zur Bibliothek verschieben …" msgid "Move up" msgstr "Nach oben" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musik" @@ -3126,7 +3152,7 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliothek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Stumm" @@ -3214,7 +3240,7 @@ msgstr "Nie mit der Wiedergabe beginnen" msgid "New folder" msgstr "Neuer Ordner" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Neue Wiedergabeliste" @@ -3238,7 +3264,7 @@ msgstr "Neueste Stücke" msgid "Next" msgstr "Weiter" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Nächstes Stück" @@ -3257,7 +3283,7 @@ msgstr "Kein Hintergrundbild" #: ui/albumcovermanager.cpp:778 msgid "No covers to export." -msgstr "Keine Covers zum Exportieren." +msgstr "Keine Titelbilder zum Exportieren." #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" @@ -3277,7 +3303,7 @@ msgstr "Keine kurzen Blöcke" msgid "None" msgstr "Nichts" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Keiner der gewählten Titel war zum Kopieren auf ein Gerät geeignet." @@ -3373,7 +3399,7 @@ msgid "" "10.x.x.x\n" "172.16.0.0 - 172.31.255.255\n" "192.168.x.x" -msgstr "Akzeptiere nur Verbindungen der folgenden IP Bereiche:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" +msgstr "Verbindungen, nur von Programmen, aus folgenden IP-Bereichen akzeptieren:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" #: ../bin/src/ui_networkremotesettingspage.h:187 msgid "Only allow connections from the local network" @@ -3395,7 +3421,7 @@ msgstr "Deckkraft" msgid "Open %1 in browser" msgstr "%1 im Browser öffnen" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Audio-CD öffnen …" @@ -3411,7 +3437,7 @@ msgstr "OPML-Datei öffnen …" msgid "Open device" msgstr "Gerät öffnen" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Datei öffnen …" @@ -3446,7 +3472,7 @@ msgstr "Auf Bitrate optimieren" msgid "Optimize for quality" msgstr "Auf Qualität optimieren" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Optionen …" @@ -3458,7 +3484,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Dateien organisieren" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Dateien organisieren …" @@ -3482,13 +3508,13 @@ msgstr "Ausgabe" msgid "Output device" msgstr "Ausgabegerät" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Ausgabeoptionen" #: ../bin/src/ui_playbacksettingspage.h:320 msgid "Output plugin" -msgstr "Ausgabe-Plugin" +msgstr "Ausgabeerweiterung" #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" @@ -3523,7 +3549,7 @@ msgstr "Party" msgid "Password" msgstr "Passwort:" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3536,7 +3562,7 @@ msgstr "Wiedergabe pausieren" msgid "Paused" msgstr "Pausiert" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Besetzung" @@ -3549,9 +3575,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Einfache Seitenleiste" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Wiedergabe" @@ -3564,7 +3590,7 @@ msgstr "Wiedergabe nach Interpret oder Schlagwort" msgid "Play artist radio..." msgstr "Künstlerradio abspielen …" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Abspielzähler" @@ -3599,7 +3625,7 @@ msgstr "Wiedergabe" #: core/commandlineoptions.cpp:150 msgid "Player options" -msgstr "Player Einstellungen" +msgstr "Spielereinstellungen" #: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 #: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 @@ -3619,7 +3645,7 @@ msgstr "Wiedergabeliste einrichten" msgid "Playlist type" msgstr "Art der Wiedergabeliste" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Wiedergabelisten" @@ -3629,7 +3655,7 @@ msgstr "Bitte Browser schließen und zu Clementine zurückkehren" #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" -msgstr "Plugin-Status:" +msgstr "Erweiterungsstatus:" #: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" @@ -3671,7 +3697,7 @@ msgstr "Vorverstärkung:" msgid "Preferences" msgstr "Einstellungen" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Einstellungen …" @@ -3697,7 +3723,7 @@ msgstr "Premium-Streaming-Format:" #: ../bin/src/ui_equalizer.h:164 msgid "Preset:" -msgstr "Profil:" +msgstr "Voreinstellung:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" @@ -3726,7 +3752,7 @@ msgstr "Vorschau" msgid "Previous" msgstr "Vorheriger" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Vorheriges Stück" @@ -3740,7 +3766,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fortschritt" @@ -3769,16 +3795,16 @@ msgstr "Qualität" msgid "Querying device..." msgstr "Gerät wird abgefragt …" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Warteschlangenverwaltung" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Stücke in die Warteschlange einreihen" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Stück in die Warteschlange einreihen" @@ -3790,7 +3816,7 @@ msgstr "Radio (gleicher Pegel für alle Stücke)" msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Regen" @@ -3822,7 +3848,7 @@ msgstr "Bewerten Sie den aktuellen Titel 4 Sterne" msgid "Rate the current song 5 stars" msgstr "Bewerten Sie den aktuellen Titel 5 Sterne" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Bewertung" @@ -3832,7 +3858,7 @@ msgstr "Wirklich abbrechen?" #: internet/subsonicsettingspage.cpp:131 msgid "Redirect limit exceeded, verify server configuration." -msgstr "Das \"Redirect Limit\" wurde überschritten, bitte überprüfen Sie die Server Einstellungen" +msgstr "Die Umleitungsgrenze wurde überschritten, bitte überprüfen Sie die Server-Einstellungen" #: internet/groovesharkservice.cpp:549 msgid "Refresh" @@ -3880,7 +3906,7 @@ msgstr "Entfernen" msgid "Remove action" msgstr "Aktion entfernen" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Duplikate aus der Wiedergabeliste entfernen" @@ -3890,13 +3916,13 @@ msgstr "Ordner entfernen" #: internet/groovesharkservice.cpp:536 msgid "Remove from My Music" -msgstr "Von \"Meine Musik\" entfernen" +msgstr "Aus »Meine Musik« entfernen" #: internet/groovesharkservice.cpp:533 msgid "Remove from favorites" msgstr "Von Favoriten entfernen" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Aus der Wiedergabeliste entfernen" @@ -3910,7 +3936,7 @@ msgstr "Wiedergabeliste entfernen" #: internet/groovesharkservice.cpp:1539 msgid "Removing songs from My Music" -msgstr "Titel werden von \"Meine Musik\" entfernt" +msgstr "Titel werden aus »Meine Musik« entfernt" #: internet/groovesharkservice.cpp:1489 msgid "Removing songs from favorites" @@ -3919,7 +3945,7 @@ msgstr "Titel werden von Favoriten entfernt" #: internet/groovesharkservice.cpp:1337 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "Die Wiedergabeliste \"%1\" umbenennen" +msgstr "Die Wiedergabeliste »%1« umbenennen" #: internet/groovesharkservice.cpp:526 msgid "Rename Grooveshark playlist" @@ -3933,7 +3959,7 @@ msgstr "Wiedergabeliste umbenennen" msgid "Rename playlist..." msgstr "Wiedergabeliste umbenennen …" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Musiktitel in dieser Reihenfolge neu nummerieren …" @@ -3969,11 +3995,11 @@ msgstr "Ersetze Leerzeichen mit Unterstrichen" #: ../bin/src/ui_playbacksettingspage.h:309 msgid "Replay Gain" -msgstr "Replay Gain" +msgstr "Wiederholungsverstärker" #: ../bin/src/ui_playbacksettingspage.h:311 msgid "Replay Gain mode" -msgstr "Raplay Gain Modus" +msgstr "Wiederholungsverstärkermodus" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" @@ -4006,7 +4032,7 @@ msgstr "Wiedergabe beim Start fortsetzten" #: internet/groovesharkservice.cpp:758 msgid "Retrieving Grooveshark My Music songs" -msgstr "Abrufen von Grooveshark-\"Meine Musik\"-Titel" +msgstr "Abrufen von Grooveshark-»Meine Musik«-Titel" #: internet/groovesharkservice.cpp:726 msgid "Retrieving Grooveshark favorites songs" @@ -4024,6 +4050,18 @@ msgstr "Zu Clementine zurückkehren" msgid "Right" msgstr "Rechts" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "Auslesen" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "CD auslesen" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Audio-CD auslesen …" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4050,7 +4088,7 @@ msgstr "Gerät sicher entfernen" msgid "Safely remove the device after copying" msgstr "Das Gerät nach dem Kopiervorgang sicher entfernen" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Abtastrate" @@ -4064,11 +4102,11 @@ msgstr ".mood-Datei in Ihrer Bibliothek speichern" #: ui/albumcoverchoicecontroller.cpp:121 msgid "Save album cover" -msgstr "Albumcover speichern" +msgstr "Titelbild speichern" #: ui/albumcoverchoicecontroller.cpp:60 msgid "Save cover to disk..." -msgstr "Cover auf Datenträger speichern …" +msgstr "Titelbild auf Datenträger speichern …" #: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 msgid "Save image" @@ -4078,7 +4116,7 @@ msgstr "Bild speichern" msgid "Save playlist" msgstr "Wiedergabeliste speichern" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Wiedergabeliste speichern …" @@ -4096,7 +4134,7 @@ msgstr "Wenn möglich, Statistiken in Dateischlagworten speichern" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" -msgstr "Diesen Stream im Internet-Tab sichern" +msgstr "Diesen Stream im Internet-Reiter sichern" #: library/library.cpp:164 msgid "Saving songs statistics into songs files" @@ -4108,22 +4146,22 @@ msgstr "Titel werden gespeichert" #: ../bin/src/ui_transcoderoptionsaac.h:136 msgid "Scalable sampling rate profile (SSR)" -msgstr "Scalable-Sampling-Rate-Profil (SSR)" +msgstr "Skalierbares Abtastratenprofil (SSR)" #: ../bin/src/ui_albumcoverexport.h:213 msgid "Scale size" msgstr "Bildgröße anpassen" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Rating" #: ../bin/src/ui_lastfmsettingspage.h:156 msgid "Scrobble tracks that I listen to" -msgstr "Stücke, die ich höre, \"scrobbeln\"" +msgstr "Stücke, die ich höre, »scrobbeln«" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4151,7 +4189,7 @@ msgstr "Automatisch suchen" #: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." -msgstr "Nach Covern suchen …" +msgstr "Nach Titelbild suchen …" #: ../bin/src/ui_globalsearchview.h:208 msgid "Search for anything" @@ -4207,11 +4245,11 @@ msgstr "Im aktuellen Stück vorspulen" msgid "Seek the currently playing track to an absolute position" msgstr "Im aktuellen Stück zu einer Position springen" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Alle auswählen" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Auswahl aufheben" @@ -4239,7 +4277,7 @@ msgstr "Visualisierungen auswählen" msgid "Select visualizations..." msgstr "Visualisierungen auswählen …" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Auswählen …" @@ -4249,7 +4287,7 @@ msgstr "Seriennummer" #: ../bin/src/ui_subsonicsettingspage.h:126 msgid "Server URL" -msgstr "Server-URL" +msgstr "Server-Adresse" #: ../bin/src/ui_subsonicsettingspage.h:125 msgid "Server details" @@ -4259,7 +4297,7 @@ msgstr "Server-Details" msgid "Service offline" msgstr "Dienst nicht verfügbar" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 zu »%2« einstellen …" @@ -4268,7 +4306,7 @@ msgstr "%1 zu »%2« einstellen …" msgid "Set the volume to percent" msgstr "Setze Lautstärke auf %" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Wert für ausgewählte Stücke einstellen …" @@ -4331,7 +4369,7 @@ msgstr "Clementine-OSD benutzen" msgid "Show above status bar" msgstr "Oberhalb der Statusleiste zeigen" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Alle Titel anzeigen" @@ -4351,28 +4389,28 @@ msgstr "Trenner anzeigen" msgid "Show fullsize..." msgstr "In Originalgröße zeigen …" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Im Dateibrowser anzeigen …" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "In Bibliothek anzeigen …" #: library/libraryview.cpp:403 msgid "Show in various artists" -msgstr "Unter \"Verschiedene Interpreten\" anzeigen" +msgstr "Unter »Verschiedene Interpreten« anzeigen" #: moodbar/moodbarproxystyle.cpp:337 msgid "Show moodbar" msgstr "Stimmungsbarometer anzeigen" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Nur Duplikate anzeigen" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Nur ohne Schlagworte anzeigen" @@ -4382,7 +4420,7 @@ msgstr "Suchvorschläge anzeigen" #: ../bin/src/ui_lastfmsettingspage.h:157 msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"Lieben\"- und \"Bannen\"-Knöpfe anzeigen" +msgstr "»Lieben«- und »Blockieren«-Knöpfe anzeigen" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4412,7 +4450,7 @@ msgstr "Zufällige Albenreihenfolge" msgid "Shuffle all" msgstr "Zufällige Titelreihenfolge" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Wiedergabeliste mischen" @@ -4452,7 +4490,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Voriges Stück in der Wiedergabeliste" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Sprungzähler" @@ -4462,7 +4500,7 @@ msgstr "Nächstes Stück in der Wiedergabeliste" #: widgets/nowplayingwidget.cpp:93 msgid "Small album cover" -msgstr "Kleines Albumcover" +msgstr "Kleines Titelbild" #: widgets/fancytabwidget.cpp:671 msgid "Small sidebar" @@ -4488,7 +4526,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Titelinformationen" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Titelinfo" @@ -4520,7 +4558,7 @@ msgstr "Titel sortieren nach" msgid "Sorting" msgstr "Sortierung" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Quelle" @@ -4542,11 +4580,11 @@ msgstr "Fehler beim Anmelden bei Spotify" #: ../bin/src/ui_spotifysettingspage.h:212 msgid "Spotify plugin" -msgstr "Spotify-Plugin" +msgstr "Spotify-Erweiterung" #: internet/spotifyblobdownloader.cpp:59 msgid "Spotify plugin not installed" -msgstr "Spotify-Plugin nicht installiert" +msgstr "Spotify-Erweiterung nicht installiert" #: ../bin/src/ui_transcoderoptionsmp3.h:201 msgid "Standard" @@ -4556,6 +4594,10 @@ msgstr "Standard" msgid "Starred" msgstr "Markiert" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "Auslesen starten" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Spiele das aktuelle Stück in der Wiedergabeliste ab" @@ -4571,7 +4613,7 @@ msgid "" "list" msgstr "Geben Sie etwas in die Suchleiste ein um diese Ergebnisliste zu füllen" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Starte %1" @@ -4584,7 +4626,7 @@ msgstr "Starten …" msgid "Stations" msgstr "Sender" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Anhalten" @@ -4593,7 +4635,7 @@ msgstr "Anhalten" msgid "Stop after" msgstr "Anhalten nach" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Wiedergabe nach diesem Stück beenden" @@ -4694,7 +4736,7 @@ msgstr "Systemfarben" #: widgets/fancytabwidget.cpp:673 msgid "Tabs on top" -msgstr "Tabs oben" +msgstr "Reiter oben" #: ../bin/src/ui_lastfmstationdialog.h:97 msgid "Tag" @@ -4731,7 +4773,7 @@ msgstr "Der Befehl »%1« konnte nicht ausgeführt werden." #: ../bin/src/ui_appearancesettingspage.h:282 msgid "The album cover of the currently playing song" -msgstr "Das Albumcover des gerade abgespielten Titels" +msgstr "Das Titelbild des gerade abgespielten Titels" #: internet/magnatunedownloaddialog.cpp:90 #, qt-format @@ -4741,7 +4783,7 @@ msgstr "Ordner %1 ist ungültig" #: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 #, qt-format msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Die Wiedergabeliste \"%1\" ist leer oder konnte nicht geladen werden." +msgstr "Die Wiedergabeliste »%1« ist leer oder konnte nicht geladen werden." #: smartplaylists/searchtermwidget.cpp:330 msgid "The second value must be greater than the first one!" @@ -4761,7 +4803,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Die Versuchsperiode für den Subsonic-Server ist abgelaufen. Bitte machen Sie eine Spende, um einen Lizenzschlüssel zu erhalten. Details finden sich auf subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4802,7 +4844,7 @@ msgid "" "continue?" msgstr "Diese Dateien werden vom Gerät gelöscht. Möchten Sie wirklich fortfahren?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4816,7 +4858,7 @@ msgstr "Diese Ordner werden durchsucht, um Ihre Bibliothek zu erstellen" msgid "" "These settings are used in the \"Transcode Music\" dialog, and when " "converting music before copying it to a device." -msgstr "Diese Einstellungen werden im \"Musik konvertieren\"-Fenster und beim Konvertieren von Musik vor der Übertragung auf ein Gerät verwendet." +msgstr "Diese Einstellungen werden im »Musik konvertieren«-Dialog und beim Konvertieren von Musik vor der Übertragung auf ein Gerät verwendet." #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" @@ -4863,7 +4905,7 @@ msgstr "Dieses Gerät wurde zum ersten Mal verbunden. Clementine wird es nun nac #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "Diese Einstellung kann in den \"Verhalten\" Einstellungen geändert werden" +msgstr "Diese Einstellung kann in den »Verhalten«-Einstellungen geändert werden" #: internet/lastfmservice.cpp:435 msgid "This stream is for paid subscribers only" @@ -4874,9 +4916,10 @@ msgstr "Dieser Stream ist nur für zahlende Kunden verfügbar" msgid "This type of device is not supported: %1" msgstr "Diese Geräteart wird nicht unterstützt: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" @@ -4898,11 +4941,11 @@ msgstr "Clementine-OSD anzeigen" msgid "Toggle fullscreen" msgstr "Vollbild an/aus" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Einreihungsstatus ändern" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Scrobbeln ein- oder ausschalten" @@ -4934,12 +4977,13 @@ msgstr "Insgesamt übertragene Bytes" msgid "Total network requests made" msgstr "Insgesamt gestellte Netzwerkanfragen" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Stück" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Musik konvertieren" @@ -4978,7 +5022,7 @@ msgstr "URI" #: core/commandlineoptions.cpp:150 msgid "URL(s)" -msgstr "URL(s)" +msgstr "Adresse(n)" #: ../bin/src/ui_ubuntuonesettingspage.h:127 msgid "Ubuntu One" @@ -5019,7 +5063,7 @@ msgstr "Unbekannter Fehler" #: ui/albumcoverchoicecontroller.cpp:63 msgid "Unset cover" -msgstr "Cover entfernen" +msgstr "Titelbild entfernen" #: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 msgid "Unsubscribe" @@ -5037,7 +5081,7 @@ msgstr "Grooveshark-Wiedergabelisten aktualisieren" msgid "Update all podcasts" msgstr "Alle Podcasts aktualisieren" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Geänderte Bibliotheksordner aktualisieren" @@ -5081,7 +5125,7 @@ msgstr "Gnome-Tastenkürzel verwenden" #: ../bin/src/ui_playbacksettingspage.h:310 msgid "Use Replay Gain metadata if it is available" -msgstr "Benutze Replay-Gain-Metadaten wenn verfügbar" +msgstr "Wenn verfügbar Wiederholungsverstärkermetadaten verwenden" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" @@ -5089,7 +5133,7 @@ msgstr "SSLv3 verwenden" #: ../bin/src/ui_wiimotesettingspage.h:189 msgid "Use Wii Remote" -msgstr "Wii-Fernbedienung benutzen:" +msgstr "Wii-Fernbedienung benutzen" #: ../bin/src/ui_appearancesettingspage.h:274 msgid "Use a custom color set" @@ -5109,11 +5153,11 @@ msgstr "Authentifizierung verwenden" #: ../bin/src/ui_transcoderoptionsvorbis.h:203 msgid "Use bitrate management engine" -msgstr "Bit-Raten-Management verwenden" +msgstr "Bitrate-Verwaltung verwenden" #: ../bin/src/ui_wizardfinishpage.h:85 msgid "Use dynamic mode" -msgstr "Benutze dynamischen Modus" +msgstr "Dynamischen Modus benutzen" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" @@ -5121,7 +5165,7 @@ msgstr "Benachrichtigungen zum Anzeigen des Status der Wii-Fernbedienung benutze #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" -msgstr "\"Temporal Noise-Shaping\" verwenden" +msgstr "Zeitliche Rauschformung verwenden" #: ../bin/src/ui_behavioursettingspage.h:198 msgid "Use the system default" @@ -5192,7 +5236,7 @@ msgstr "Ansicht" msgid "Visualization mode" msgstr "Art der Visualisierung" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisierungen" @@ -5202,7 +5246,7 @@ msgstr "Visualisierungs-Einstellungen" #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" -msgstr "Stimmen-Aktivitäts Erkennung" +msgstr "Sprachaktivitätserkennung" #: widgets/osd.cpp:185 #, qt-format @@ -5224,7 +5268,7 @@ msgstr "WMA" #: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "Hinweis beim Schließen einer Wiedergabeliste anzeigen" +msgstr "Hinweis beim Schließen eines Wiedergabelistenreiters anzeigen" #: core/song.cpp:349 msgid "Wav" @@ -5312,15 +5356,15 @@ msgstr "Windows Media Audio" #: ../bin/src/ui_albumcovermanager.h:222 msgid "Without cover:" -msgstr "Ohne Cover:" +msgstr "Ohne Titelbild:" #: library/libraryview.cpp:530 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" -msgstr "Möchten Sie die anderen Titel dieses Albums ebenfalls unter \"Verschiedene Interpreten\" anzeigen?" +msgstr "Möchten Sie die anderen Titel dieses Albums ebenfalls unter »Verschiedene Interpreten« anzeigen?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Möchten Sie jetzt Ihre Musiksammlung erneut einlesen?" @@ -5332,10 +5376,10 @@ msgstr "Speichere alle Titel-Statistiken in die Titel-Dateien" msgid "Wrong username or password." msgstr "Benutzername oder Passwort falsch." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Jahr" @@ -5406,7 +5450,7 @@ msgid "" "You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " "Clementine." -msgstr "Sie können Musik kostenlos \"scrobbeln\", aber nur zahlende Last.fm-Kunden können Last.fm-Radio mit Clementine hören." +msgstr "Sie können Musik kostenlos »scrobbeln«, aber nur zahlende Last.fm-Kunden können Last.fm-Radio mit Clementine hören." #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" @@ -5446,11 +5490,11 @@ msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " "shortcuts in Clementine." -msgstr "Öffnen Sie die Systemeinstellungen und aktivieren Sie \"Zugriff für Hilfsgeräte aktivieren\" in \"Bedienhilfen\" um Clementines Tastenkürzel zu benutzen." +msgstr "Öffnen Sie die Systemeinstellungen und aktivieren Sie »Zugriff für Hilfsgeräte aktivieren« in »Bedienhilfen« um die globalen Tastenkürzel in Clementine zu benutzen." #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "Sie müssen Clementine nach dem Ändern der Sprache neustarten." +msgstr "Sie müssen Clementine nach dem Ändern der Sprache neu starten." #: internet/lastfmsettingspage.cpp:114 msgid "" diff --git a/src/translations/el.po b/src/translations/el.po index d2ac266d5..7bd1a5e57 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/clementine/language/el/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -173,11 +173,11 @@ msgstr "&Κέντρο" msgid "&Custom" msgstr "&Προσωπική" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Βοήθεια" @@ -194,7 +194,7 @@ msgstr "Απόκρυψη..." msgid "&Left" msgstr "&Αριστερά" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Μουσική" @@ -202,15 +202,15 @@ msgstr "Μουσική" msgid "&None" msgstr "&Καμία" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Λίστα αναπαραγωγής" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Έξοδος" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Λειτουργία &επανάληψης " @@ -218,7 +218,7 @@ msgstr "Λειτουργία &επανάληψης " msgid "&Right" msgstr "&Δεξιά" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Λειτουργία &ανακατέματος" @@ -226,7 +226,7 @@ msgstr "Λειτουργία &ανακατέματος" msgid "&Stretch columns to fit window" msgstr "Επέκταση των στηλών για να χωρέσει το παράθυρο" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Εργαλεία" @@ -371,11 +371,11 @@ msgstr "Ματαίωση" msgid "About %1" msgstr "Περί %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Περί του Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Περί του Qt..." @@ -423,19 +423,19 @@ msgstr "Προσθήκη άλλης ροής..." msgid "Add directory..." msgstr "Προσθήκη καταλόγου..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Προσθήκη αρχείου" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Προσθήκη αρχείου για επανακωδικοποίηση" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Προσθήκη αρχείου(ων) για επανακωδικοποίηση" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Προσθήκη αρχείου..." @@ -443,11 +443,11 @@ msgstr "Προσθήκη αρχείου..." msgid "Add files to transcode" msgstr "Προσθήκη αρχείων για επανακωδικοποίηση" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Προσθήκη φακέλου" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Προσθήκη φακέλου" @@ -459,7 +459,7 @@ msgstr "Προσθήκη νέου φακέλου..." msgid "Add podcast" msgstr "Προσθήκη podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Προσθήκη podcast..." @@ -535,7 +535,7 @@ msgstr "Προσθήκη ετικέτας αριθμού τραγουδιού" msgid "Add song year tag" msgstr "Προσθήκη ετικέτας χρονολογίας τραγουδιού" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Προσθήκη ροής..." @@ -547,7 +547,7 @@ msgstr "Προσθήκη στα αγαπημένα του " msgid "Add to Grooveshark playlists" msgstr "Προσθήκη στη λίστα του " -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Προσθήκη σε άλλη λίστα" @@ -608,12 +608,12 @@ msgstr "Μετά " msgid "After copying..." msgstr "Μετά την αντιγραφή..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Άλμπουμ" @@ -621,7 +621,7 @@ msgstr "Άλμπουμ" msgid "Album (ideal loudness for all tracks)" msgstr "Άλμπουμ (ιδανική ένταση για όλα τα κομμάτια)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -643,11 +643,11 @@ msgstr "Άλμπουμ με εξώφυλλα" msgid "Albums without covers" msgstr "Άλμπουμ χωρίς εξώφυλλα" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Όλα τα αρχεία (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Όλη η δόξα στον Hypnotoad!" @@ -774,17 +774,17 @@ msgid "" "the songs of your library?" msgstr "Είστε σίγουροι πως θέλετε να γράψετε τα στατιστικά των τραγουδιών στα αρχεία των τραγουδιών για όλα τα τραγούδια στη βιβλιοθήκη σας;" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Καλλιτέχνης" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Πληρ. καλλιτέχνη" @@ -800,7 +800,7 @@ msgstr "Ετικέτες Καλλιτέχνη" msgid "Artist's initial" msgstr "Αρχικά του καλλιτέχνη" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Διαμόρφωση ήχου (format)" @@ -846,7 +846,7 @@ msgstr "Μέσο μέγεθος εικόνας" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -875,7 +875,7 @@ msgstr "Αντίγραφο ασφαλείας της βάσης δεδομένω msgid "Balance" msgstr "Ισορροπία" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Απαγόρευση" @@ -904,7 +904,7 @@ msgstr "Βέλτιστος" msgid "Biography from %1" msgstr "Βιογραφία από %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Ρυθμός bit" @@ -1010,7 +1010,7 @@ msgstr "Η αλλαγή αναπαραγωγής mono θα ενεργοποιη msgid "Check for new episodes" msgstr "Έλεγχος για νέα επεισόδια" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Έλεγχος για ενημερώσεις" @@ -1060,11 +1060,11 @@ msgstr "Καθάρισμα" msgid "Clear" msgstr "Καθαρισμός" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Καθαρισμός λίστας" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1155,8 +1155,8 @@ msgstr "Κάντε κλικ εδώ για να γινει αγαπημένο α msgid "Click to toggle between remaining time and total time" msgstr "\"Κλικ\" για εναλλαγή μεταξύ συνολικού και εναπομείναντα χρόνου" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1194,7 +1194,7 @@ msgstr "Χρώματα" msgid "Comma separated list of class:level, level is 0-3" msgstr "Λίστα χωρισμένη με κόμμα από class:level, το level είναι 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Σχόλια" @@ -1203,11 +1203,11 @@ msgstr "Σχόλια" msgid "Complete tags automatically" msgstr "Συμπλήρωση των ετικετών αυτόματα" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Συμπλήρωση των ετικετών αυτόματα..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "Ρύθμιση του Subsonic..." msgid "Configure global search..." msgstr "Ρύθμιση καθολικής αναζήτησης..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Παραμετροποίηση της βιβλιοθήκης" @@ -1283,7 +1283,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Η σύνδεση διακόπηκε, ελέγξτε το URL του διακομιστή. Παράδειγμα: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Κονσόλα" @@ -1303,12 +1303,12 @@ msgstr "Μετατροπή κάθε μουσικής που η συσκευή δ msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Αντιγραφή στην συσκευή..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Αντιγραφή στην βιβλιοθήκη..." @@ -1330,14 +1330,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Δεν μπόρεσε να δημιουργηθεί το στοιχείο \"%1\" του GStreamer - βεβαιωθείτε ότι έχετε όλα τα απαραίτητα πρόσθετα του GStreamer εγκατεστημένα" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Δεν βρέθηκε κάποιος πολυπλέκτης (muxer) για %1, ελέγξτε πως έχετε τα σωστά πρόσθετα του GStreamer εγκατεστημένα" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1354,7 +1354,7 @@ msgid "Couldn't open output file %1" msgstr "Δεν μπορεί να ανοίξει το αρχείο εξόδου %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Διαχείριση εξώφυλλων" @@ -1398,11 +1398,11 @@ msgstr "Χρήση «Cross-Fade» κατά την αυτόματη αλλαγή msgid "Cross-fade when changing tracks manually" msgstr "Χρήση «Cross-Fade» κατά την χειροκίνητη αλλαγή του κομματιού" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1410,63 +1410,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1509,11 +1509,11 @@ msgid "" "recover your database" msgstr "Εντοπίστηκε κατακερματισμός στην βάση δεδομένων. Παρακαλώ διαβάστε το https://code.google.com/p/clementine-player/wiki/DatabaseCorruption για οδηγίες ανάκτησης της βάσης δεδομένων" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Ημερομηνία δημιουργίας" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ημερομηνία τροποποίησης" @@ -1563,7 +1563,7 @@ msgid "Delete downloaded data" msgstr "Διαγραφή δεδομένων που έχουν \"κατέβει\"" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Διαγραφή αρχείων" @@ -1571,7 +1571,7 @@ msgstr "Διαγραφή αρχείων" msgid "Delete from device..." msgstr "Διαγραφή από την συσκευή..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Διαγραφή από τον δίσκο..." @@ -1596,15 +1596,16 @@ msgstr "Διαγραφή των αρχικών αρχείων" msgid "Deleting files" msgstr "Γίνεται διαγραφή αρχείων" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Αφαίρεση των επιλεγμένων κομματιών από την λίστα αναμονής" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Αφαίρεση του κομματιού από την λίστα αναμονής" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Προορισμός" @@ -1628,10 +1629,14 @@ msgstr "Όνομα συσκευής" msgid "Device properties..." msgstr "Ιδιότητες συσκευής..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Συσκευές" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Εννοούσατε" @@ -1670,8 +1675,8 @@ msgstr "Απενεργοποίηση δημιουργίας moodbar " msgid "Disabled" msgstr "Απενεργοποιημένο" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Δίσκος" @@ -1688,7 +1693,7 @@ msgstr "Επιλογές απεικόνισης" msgid "Display the on-screen-display" msgstr "Απεικόνιση της «απεικόνισης στην οθόνη»" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Εκτελέστε μία πλήρη επανασάρωση της βιβλιοθήκης" @@ -1810,6 +1815,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Η δυναμική λειτουργία είναι ενεργή" @@ -1822,12 +1831,12 @@ msgstr "Δυναμική τυχαία ανάμιξη" msgid "Edit smart playlist..." msgstr "Τροποποίηση έξυπνης λίστας αναπαραγωγής" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Τροποποίηση ετικέτας..." @@ -1840,7 +1849,7 @@ msgid "Edit track information" msgstr "Τροποποίηση πληροφοριών κομματιού" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Τροποποίηση πληροφοριών κομματιού..." @@ -1941,7 +1950,7 @@ msgstr "Εισάγετε αυτή την IP στο App για να συνδεθ msgid "Entire collection" msgstr "Ολόκληρη η συλλογή" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ισοσταθμιστής" @@ -1955,7 +1964,7 @@ msgstr "Ισοδύναμο με --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Σφάλμα" @@ -1975,7 +1984,7 @@ msgstr "Σφάλμα κατά την διαγραφή τραγουδιών" msgid "Error downloading Spotify plugin" msgstr "Σφάλμα στην λήψη του πρόσθετου του Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Σφάλμα φόρτωσης του %1" @@ -1985,12 +1994,12 @@ msgstr "Σφάλμα φόρτωσης του %1" msgid "Error loading di.fm playlist" msgstr "Σφάλμα φόρτωσης λίστας από το di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Σφάλμα επεξεργασίας %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Σφάλμα κατά την φόρτωση CD ήχου" @@ -2068,27 +2077,27 @@ msgstr "Η εξαγωγή ολοκληρώθηκε" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Εξαγωγή %1 εξώφυλλων από τα %2 (%3 παραλείφθηκαν)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2115,6 +2124,10 @@ msgstr "«Σβήσιμο»" msgid "Fading duration" msgstr "Διάρκειας «Σβησίματος»" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Αποτυχία λήψης του καταλόγου" @@ -2166,6 +2179,10 @@ msgstr "Μεταφόρτωση καταλόγου Subsonic" msgid "Fetching cover error" msgstr "Σφάλμα στο κατέβασμα του εξώφυλλου" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Επέκταση αρχείου" @@ -2174,19 +2191,19 @@ msgstr "Επέκταση αρχείου" msgid "File formats" msgstr "Μορφή αρχείων" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Όνομα αρχείου" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Όνομα αρχείου (χωρίς διαδρομή)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Μέγεθος αρχείου" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2196,7 +2213,7 @@ msgstr "Τύπος αρχείου" msgid "Filename" msgstr "Όνομα αρχείου" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Αρχεία" @@ -2316,9 +2333,10 @@ msgstr "Γενικά" msgid "General settings" msgstr "Γενικές ρυθμίσεις" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Είδος" @@ -2350,11 +2368,11 @@ msgstr "Δώστε του ένα όνομα:" msgid "Go" msgstr "Εκκίνηση" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Πήγαινε στην επόμενη πινακίδα της λίστας" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Πήγαινε στην προηγούμενη πινακίδα της λίστας" @@ -2424,7 +2442,7 @@ msgstr "Ομαδοποίηση κατά Είδος/Άλμπουμ" msgid "Group by Genre/Artist/Album" msgstr "Ομαδοποίηση κατά Είδος/Καλλιντέχνη/Άλμπουμ" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ομαδοποίηση" @@ -2579,6 +2597,10 @@ msgstr "Δημιουργία ευρετηρίου %1" msgid "Information" msgstr "Πληροφορία" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Εισαγωγή..." @@ -2591,7 +2613,7 @@ msgstr "Εγκατεστημένο" msgid "Integrity check" msgstr "έλεγχος ακεραιότητας" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Διαδίκτυο" @@ -2631,6 +2653,10 @@ msgstr "Εσφαλμένο κλειδί συνεδρίας" msgid "Invalid username and/or password" msgstr "Εσφαλμένο όνομα χρήστη και/ή συνθηματικό" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2655,7 +2681,7 @@ msgstr "Τα κορυφαία κομμάτια Jamendo της εβδομάδας msgid "Jamendo database" msgstr "Βάση δεδομένων Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Μετάβαση στο τρέχον κομμάτι που παίζει" @@ -2679,7 +2705,7 @@ msgstr "Συνέχιση της εκτέλεσης στο παρασκήνιο msgid "Keep the original files" msgstr "Διατήρηση των αρχικών αρχείων" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Γατάκια" @@ -2703,7 +2729,7 @@ msgstr "Μεγάλο εξώφυλλο άλμπουμ" msgid "Large sidebar" msgstr "Μεγάλη πλευρική μπάρα" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Τελευταία εκτέλεση" @@ -2786,12 +2812,12 @@ msgstr "Κενό για τα προεπιλεγμένα. Π.χ. \"/dev/dsp\", \ msgid "Left" msgstr "Αριστερά" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Διάρκεια" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Βιβλιοθήκη" @@ -2799,7 +2825,7 @@ msgstr "Βιβλιοθήκη" msgid "Library advanced grouping" msgstr "Προχωρημένη ομαδοποίηση βιβλιοθήκης" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Ειδοποίηση σάρωσης βιβλιοθήκης" @@ -2844,7 +2870,7 @@ msgstr "Φόρτωση εξώφυλλου από τον δίσκο..." msgid "Load playlist" msgstr "Φόρτωση λίστας αναπαραγωγής" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Φόρτωση λίστας αναπαραγωγής..." @@ -2873,11 +2899,11 @@ msgstr "Φόρτωση τραγουδιού" msgid "Loading stream" msgstr "Φόρτωμα ροής (stream)" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Φόρτωση κομματιών" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Φόρτωση πληροφοριών κομματιού" @@ -2896,10 +2922,10 @@ msgstr "Φορτώνει αρχεία/URLs, αντικαθιστώντας τη #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Είσοδος" @@ -2911,7 +2937,7 @@ msgstr "Αποτυχία εισόδου" msgid "Long term prediction profile (LTP)" msgstr "Προφίλ χρόνιας πρόβλεψης (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Αγάπη" @@ -2974,7 +3000,7 @@ msgstr "Η λήψη Magnatune ολοκληρώθηκε" msgid "Main profile (MAIN)" msgstr "Κύριο προφίλ (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Κάνε το!" @@ -3057,7 +3083,7 @@ msgstr "Αναπαραγωγή Mono" msgid "Months" msgstr "Μήνες" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Mood" @@ -3087,7 +3113,7 @@ msgstr "Σημεία φόρτωσης (mount points)" msgid "Move down" msgstr "Μετακίνηση κάτω" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Μετακίνηση στην βιβλιοθήκη..." @@ -3096,7 +3122,7 @@ msgstr "Μετακίνηση στην βιβλιοθήκη..." msgid "Move up" msgstr "Μετακίνηση πάνω" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Μουσική" @@ -3104,7 +3130,7 @@ msgstr "Μουσική" msgid "Music Library" msgstr "Μουσική βιβλιοθήκη" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Σίγαση" @@ -3192,7 +3218,7 @@ msgstr "Ποτέ μην ξεκινά η αναπαραγωγή" msgid "New folder" msgstr "Νέος φάκελος" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Νέα λίστα" @@ -3216,7 +3242,7 @@ msgstr "Νεότερα κομμάτια" msgid "Next" msgstr "Επόμενο" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Επόμενο κομμάτι" @@ -3255,7 +3281,7 @@ msgstr "Όχι βραχαία μπλοκς" msgid "None" msgstr "Κανένα" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Κανένα από τα επιλεγμένα τραγούδια δεν ήταν κατάλληλο για αντιγραφή σε μία συσκευή" @@ -3373,7 +3399,7 @@ msgstr "Αδιαφάνεια" msgid "Open %1 in browser" msgstr "Άνοιγμα του %1 στον περιηγητή" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Άνοιγμα CD ή&χου..." @@ -3389,7 +3415,7 @@ msgstr "Άνοιγμα αρχείου OPML..." msgid "Open device" msgstr "Άνοιγμα συσκευής" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Άνοιγμα αρχείου..." @@ -3424,7 +3450,7 @@ msgstr "Βελτιστοποίηση για ρυθμό bit" msgid "Optimize for quality" msgstr "Βελτιστοποίηση για ποιότητα" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Επιλογές..." @@ -3436,7 +3462,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Οργάνωση Αρχείων" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Οργάνωση αρχείων..." @@ -3460,7 +3486,7 @@ msgstr "Έξοδος" msgid "Output device" msgstr "Συσκευή εξόδου" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Επιλογές εξόδου" @@ -3501,7 +3527,7 @@ msgstr "Πάρτι" msgid "Password" msgstr "Συνθηματικό" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Παύση" @@ -3514,7 +3540,7 @@ msgstr "Παύση αναπαραγωγής" msgid "Paused" msgstr "Σταματημένο" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Εκτελεστής" @@ -3527,9 +3553,9 @@ msgstr "Εικονοστοιχεία" msgid "Plain sidebar" msgstr "Απλή πλευρική μπάρα" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Αναπαραγωγή" @@ -3542,7 +3568,7 @@ msgstr "Αναπαραγωγή καλλιτέχνη ή ετικέτας" msgid "Play artist radio..." msgstr "Αναπαραγωγή ραδιοφώνου καλλιτέχνη..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Μετρητής εκτελέσεων" @@ -3597,7 +3623,7 @@ msgstr "Επιλογές λίστας αναπαραγωγής" msgid "Playlist type" msgstr "Τύπος λίστας αναπαραγωγής" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Λίστες" @@ -3649,7 +3675,7 @@ msgstr "Προ-ενισχυμένο" msgid "Preferences" msgstr "Προτιμήσεις" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Προτιμήσεις..." @@ -3704,7 +3730,7 @@ msgstr "Προεπισκόπηση" msgid "Previous" msgstr "Προηγούμενο" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Προηγούμενο κομμάτι" @@ -3718,7 +3744,7 @@ msgid "Profile" msgstr "Προφίλ" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Πρόοδος" @@ -3747,16 +3773,16 @@ msgstr "Ποιότητα" msgid "Querying device..." msgstr "Ερώτηση συσκευής..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Διαχειριστής λίστας αναμονής" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Τοποθέτηση στη λίστας αναμονής τα επιλεγμένα κομμάτια" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Τοποθέτηση στη λίστας αναμονής του κομματιού" @@ -3768,7 +3794,7 @@ msgstr "Ραδιόφωνο (ίση ένταση για όλα τα κομμάτ msgid "Radios" msgstr "Ραδιόφωνα" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Βροχή" @@ -3800,7 +3826,7 @@ msgstr "Βαθμολογία τρέχοντος τραγουδιού με 4 ασ msgid "Rate the current song 5 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 5 αστέρια" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Βαθμολόγηση" @@ -3858,7 +3884,7 @@ msgstr "Αφαίρεση" msgid "Remove action" msgstr "Αφαίρεση ενέργειας" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Αφαίρεση διπλότυπων από την λίστα" @@ -3874,7 +3900,7 @@ msgstr "Αφαίρεση από την Μουσική Μου" msgid "Remove from favorites" msgstr "Αφαίρεση από τα αγαπημένα" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Αφαίρεση από την λίστα" @@ -3911,7 +3937,7 @@ msgstr "Μετονομασία λίστας αναπαραγωγής" msgid "Rename playlist..." msgstr "Μετονομασία λίστας αναπαραγωγής..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Επαναρίθμησε τα κομμάτια κατά αυτή την σειρά..." @@ -4002,6 +4028,18 @@ msgstr "Επιστροφή στον Clementine" msgid "Right" msgstr "Δεξιά" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4028,7 +4066,7 @@ msgstr "Ασφαλής αφαίρεση συσκευής" msgid "Safely remove the device after copying" msgstr "Ασφαλής αφαίρεση συσκευής μετά την αντιγραφή" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Ρυθμός δειγματοληψίας" @@ -4056,7 +4094,7 @@ msgstr "Αποθήκευση εικόνας" msgid "Save playlist" msgstr "Αποθήκευση λίστας αναπαραγωγής" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Αποθήκευση λίστας αναπαραγωγής..." @@ -4092,7 +4130,7 @@ msgstr "Προφίλ κλιμακούμενου ρυθμού δειγματολ msgid "Scale size" msgstr "Διαβάθμιση μεγέθους" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Σκορ" @@ -4101,7 +4139,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Κάνε \"srobble\" τα κομμάτια που ακούω" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4185,11 +4223,11 @@ msgstr "Άλμα στο τρέχον κομμάτι κατά ένα σχετικ msgid "Seek the currently playing track to an absolute position" msgstr "Άλμα σε σε μια καθορισμένη θέση στο τρέχον κομμάτι." -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Επιλογή όλων" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Επιλογή κανενός" @@ -4217,7 +4255,7 @@ msgstr "Επιλογή οπτικών εφέ" msgid "Select visualizations..." msgstr "Επιλογή οπτικών εφέ..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4237,7 +4275,7 @@ msgstr "Λεπτομέρειες διακομιστή" msgid "Service offline" msgstr "Υπηρεσία εκτός σύνδεσης" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Δώσε %1 στο \"%2\"..." @@ -4246,7 +4284,7 @@ msgstr "Δώσε %1 στο \"%2\"..." msgid "Set the volume to percent" msgstr "Ρύθμιση της έντασης ήχου στο της εκατό" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Δώσε τιμή σε όλα τα επιλεγμένα κομμάτια..." @@ -4309,7 +4347,7 @@ msgstr "Εμφάνισε ένα όμορφο OSD" msgid "Show above status bar" msgstr "Εμφάνιση πάνω από την μπάρα κατάστασης" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Εμφάνιση όλων των τραγουδιών" @@ -4329,12 +4367,12 @@ msgstr "Εμφάνιση διαχωριστών" msgid "Show fullsize..." msgstr "Εμφάνισε σε πλήρες μέγεθος..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Εμφάνιση στον περιηγητή αρχείων..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4346,11 +4384,11 @@ msgstr "Εμφάνιση στους διάφορους καλλιτέχνες" msgid "Show moodbar" msgstr "Εμφάνιση moodbar" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Εμφάνιση μόνο διπλότυπων" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Εμφάνιση μόνο μη επισημασμένων" @@ -4390,7 +4428,7 @@ msgstr "Ανακάτεμα άλμπουμ" msgid "Shuffle all" msgstr "Ανακάτεμα όλων" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Ανακάτεμα λίστας" @@ -4430,7 +4468,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Παράλειψη προς τα πίσω στη λίστα" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Μετρητής παραλήψεων" @@ -4466,7 +4504,7 @@ msgstr "Απαλή Rock" msgid "Song Information" msgstr "Πληρ. τραγουδιού" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Πληρ. τραγουδιού" @@ -4498,7 +4536,7 @@ msgstr "Ταξινόμηση τραγουδιών κατά" msgid "Sorting" msgstr "Ταξινόμηση" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Πηγή" @@ -4534,6 +4572,10 @@ msgstr "Κανονικό" msgid "Starred" msgstr "Με αστέρι" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Εκκίνηση της λίστας αναπαραγωγής που παίζει τώρα" @@ -4549,7 +4591,7 @@ msgid "" "list" msgstr "Ξεκίνα να γράφεις κάτι στο κουτί εύρεσης παραπάνω για να γεμίσει αυτή η λίστα εύρεσης αποτελεσμάτων" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Εκκίνηση %1" @@ -4562,7 +4604,7 @@ msgstr "Εκκίνηση..." msgid "Stations" msgstr "Σταθμοί" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Σταμάτημα" @@ -4571,7 +4613,7 @@ msgstr "Σταμάτημα" msgid "Stop after" msgstr "Στοπ μετά" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Σταμάτημα μετά από αυτό το κομμάτι" @@ -4739,7 +4781,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Η δοκιμαστική περίοδος του Subsonic τελείωσε. Παρακαλώ κάντε μια δωρεά για να λάβετε ένα κλειδί άδειας. Δείτε στο subsonic.org για λεπτομέρειες." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4780,7 +4822,7 @@ msgid "" "continue?" msgstr "Αυτά τα αρχεία θα διαγραφούν από την συσκευή, θέλετε σίγουρα να συνεχίσετε;" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4852,9 +4894,10 @@ msgstr "Η ροή (stream) αυτή είναι μόνο για συνδρομη msgid "This type of device is not supported: %1" msgstr "Αυτού του τύπου η συσκευή δεν υποστηρίζετε %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Τίτλος" @@ -4876,11 +4919,11 @@ msgstr "Εναλλαγή Όμορφου OSD" msgid "Toggle fullscreen" msgstr "Εναλλαγή πλήρης οθόνης" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Εναλλαγή της κατάστασης της λίστας αναμονής" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Εναλλαγή του scrobbling" @@ -4912,12 +4955,13 @@ msgstr "Συνολικά bytes που μεταφέρθηκαν" msgid "Total network requests made" msgstr "Συνολικές αιτήσεις δικτύου που πραγματοποιήθηκαν" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Κομμάτι" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Επανακωδικοποίηση Μουσικής" @@ -5015,7 +5059,7 @@ msgstr "Ενημέρωση λίστας αναπαραγωγής του Groovesh msgid "Update all podcasts" msgstr "Ενημέρωση όλων των podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Ενημέρωση φακέλων βιβλιοθήκης που άλλαξαν" @@ -5170,7 +5214,7 @@ msgstr "Προβολή" msgid "Visualization mode" msgstr "Τρόπος λειτουργίας οπτικών εφέ" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Οπτικά εφέ" @@ -5298,7 +5342,7 @@ msgid "" "well?" msgstr "Θα θέλατε να μετακινήσετε και τα άλλα τραγούδια σε αυτό το άλμπουμ στο Διάφοροι Καλλιτέχνες;" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Θέλετε να εκτελέσετε μία πλήρη επανασάρωση αμέσως τώρα;" @@ -5310,10 +5354,10 @@ msgstr "Εγγραφή όλων των στατιστικών των τραγο msgid "Wrong username or password." msgstr "Λάθος όνομα χρήστη ή συνθηματικό" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Έτος" diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index 465507fc1..f6df9d6b1 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: English (Canada) (http://www.transifex.com/projects/p/clementine/language/en_CA/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "" msgid "&Custom" msgstr "&Custom" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Help" @@ -188,7 +188,7 @@ msgstr "&Hide..." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Music" @@ -196,15 +196,15 @@ msgstr "Music" msgid "&None" msgstr "&None" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Quit" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Repeat mode" @@ -212,7 +212,7 @@ msgstr "Repeat mode" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Shuffle mode" @@ -220,7 +220,7 @@ msgstr "Shuffle mode" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Tools" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "About %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "About Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -417,19 +417,19 @@ msgstr "Add another stream..." msgid "Add directory..." msgstr "Add directory..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Add file..." @@ -437,11 +437,11 @@ msgstr "Add file..." msgid "Add files to transcode" msgstr "Add files to transcode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Add folder" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Add folder..." @@ -453,7 +453,7 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -529,7 +529,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Add stream..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -615,7 +615,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Albums with covers" msgid "Albums without covers" msgstr "Albums without covers" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "All Files (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -794,7 +794,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio format" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Ban" @@ -898,7 +898,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Check for updates..." @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Clear playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" @@ -1197,11 +1197,11 @@ msgstr "Comment" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configure library..." @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copy to library..." @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Could not create the GStreamer element \"%1\" - make sure you have all the required GStreamer plugins installed" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Cover Manager" @@ -1392,11 +1392,11 @@ msgstr "Cross-fade when changing tracks automatically" msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade when changing tracks manually" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date created" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date modified" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1565,7 +1565,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1590,15 +1590,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1622,10 +1623,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "Disabled" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1682,7 +1687,7 @@ msgstr "Display options" msgid "Display the on-screen-display" msgstr "Display the on-screen-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Edit tag..." @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "Edit track information" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Edit track information..." @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "Entire collection" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1969,7 +1978,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1979,12 +1988,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Error processing %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2109,6 +2118,10 @@ msgstr "Fading" msgid "Fading duration" msgstr "Fading duration" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "File name" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "File name (without path)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "File size" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "File type" msgid "Filename" msgstr "Filename" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Files" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2344,11 +2362,11 @@ msgstr "Give it a name:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2418,7 +2436,7 @@ msgstr "Group by Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2625,6 +2647,10 @@ msgstr "Invalid session key" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Jump to the currently playing track" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2697,7 +2723,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2780,12 +2806,12 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Library" @@ -2793,7 +2819,7 @@ msgstr "Library" msgid "Library advanced grouping" msgstr "Library advanced grouping" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "" msgid "Load playlist" msgstr "Load playlist" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Load playlist..." @@ -2867,11 +2893,11 @@ msgstr "" msgid "Loading stream" msgstr "Loading stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2890,10 +2916,10 @@ msgstr "Loads files/URLs, replacing current playlist" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Love" @@ -2968,7 +2994,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Move to library..." @@ -3090,7 +3116,7 @@ msgstr "Move to library..." msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3098,7 +3124,7 @@ msgstr "" msgid "Music Library" msgstr "Music Library" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mute" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "New playlist" @@ -3210,7 +3236,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Next track" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "None" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Output options" @@ -3495,7 +3521,7 @@ msgstr "Party" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3508,7 +3534,7 @@ msgstr "Pause playback" msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Play" @@ -3536,7 +3562,7 @@ msgstr "Play Artist or Tag" msgid "Play artist radio..." msgstr "Play artist radio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3591,7 +3617,7 @@ msgstr "Playlist options" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "Pre-amp" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3698,7 +3724,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Previous track" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progress" @@ -3741,16 +3767,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "Radio (equal loudness for all tracks)" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3852,7 +3878,7 @@ msgstr "Remove" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Remove from playlist" @@ -3905,7 +3931,7 @@ msgstr "Rename playlist" msgid "Rename playlist..." msgstr "Rename playlist..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renumber tracks in this order..." @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4022,7 +4060,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Sample rate" @@ -4050,7 +4088,7 @@ msgstr "" msgid "Save playlist" msgstr "Save playlist" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Save playlist..." @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "Seek the currently playing track by a relative amount" msgid "Seek the currently playing track to an absolute position" msgstr "Seek the currently playing track to an absolute position" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4211,7 +4249,7 @@ msgstr "Select visualisations" msgid "Select visualizations..." msgstr "Select visualisations..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Set %1 to \"%2\"..." @@ -4240,7 +4278,7 @@ msgstr "Set %1 to \"%2\"..." msgid "Set the volume to percent" msgstr "Set the volume to percent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Set value for all selected tracks..." @@ -4303,7 +4341,7 @@ msgstr "Show a pretty OSD" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4323,12 +4361,12 @@ msgstr "" msgid "Show fullsize..." msgstr "Show fullsize..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "Show in various artists" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "Shuffle all" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Shuffle playlist" @@ -4424,7 +4462,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Skip backwards in playlist" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4460,7 +4498,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Start the playlist currently playing" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Starting %1" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stop" @@ -4565,7 +4607,7 @@ msgstr "Stop" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stop after this track" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "This stream is for paid subscribers only" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Title" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Track" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transcode Music" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "View" msgid "Visualization mode" msgstr "Visualisation mode" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisations" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Year" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index 85c79f5bd..e7efec449 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/clementine/language/en_GB/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "&Centre" msgid "&Custom" msgstr "&Custom" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Help" @@ -187,7 +187,7 @@ msgstr "&Hide..." msgid "&Left" msgstr "&Left" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Music" @@ -195,15 +195,15 @@ msgstr "Music" msgid "&None" msgstr "&None" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Quit" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Repeat mode" @@ -211,7 +211,7 @@ msgstr "Repeat mode" msgid "&Right" msgstr "&Right" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Shuffle mode" @@ -219,7 +219,7 @@ msgstr "Shuffle mode" msgid "&Stretch columns to fit window" msgstr "&Stretch columns to fit window" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Tools" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "About %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "About Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "About Qt..." @@ -416,19 +416,19 @@ msgstr "Add another stream..." msgid "Add directory..." msgstr "Add directory..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Add file..." @@ -436,11 +436,11 @@ msgstr "Add file..." msgid "Add files to transcode" msgstr "Add files to transcode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Add folder" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Add folder..." @@ -452,7 +452,7 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "Add song track tag" msgid "Add song year tag" msgstr "Add song year tag" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Add stream..." @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Add to another playlist" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "After copying..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "Albums with covers" msgid "Albums without covers" msgstr "Albums without covers" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "All Files (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artist info" @@ -793,7 +793,7 @@ msgstr "Artist tags" msgid "Artist's initial" msgstr "Artist's initial" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio format" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Ban" @@ -897,7 +897,7 @@ msgstr "Best" msgid "Biography from %1" msgstr "Biography from %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Check for updates..." @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "Clear" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Clear playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" @@ -1196,11 +1196,11 @@ msgstr "Comment" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configure library..." @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copy to library..." @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Cover Manager" @@ -1391,11 +1391,11 @@ msgstr "Cross-fade when changing tracks automatically" msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade when changing tracks manually" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date created" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date modified" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "Disabled" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "Display the on-screen-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Edit tag..." @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "Edit track information" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Edit track information..." @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "Entire collection" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "Fading" msgid "Fading duration" msgstr "Fading duration" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "File name" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "File name (without path)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "File size" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "File type" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Files" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "Group by Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "Invalid session key" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Library" @@ -2792,7 +2818,7 @@ msgstr "Library" msgid "Library advanced grouping" msgstr "Library advanced grouping" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "Loading stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "Loads files/URLs, replacing current playlist" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Love" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Move to library..." @@ -3089,7 +3115,7 @@ msgstr "Move to library..." msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "Music Library" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Next track" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "None" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "Party" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3507,7 +3533,7 @@ msgstr "Pause playback" msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Play" @@ -3535,7 +3561,7 @@ msgstr "Play Artist or Tag" msgid "Play artist radio..." msgstr "Play artist radio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "Playlist options" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "Pre-amp" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Previous track" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "Remove" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Remove from playlist" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renumber tracks in this order..." @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Sample rate" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "Seek the currently playing track by a relative amount" msgid "Seek the currently playing track to an absolute position" msgstr "Seek the currently playing track to an absolute position" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "Select visualisations" msgid "Select visualizations..." msgstr "Select visualisations..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Set %1 to \"%2\"..." @@ -4239,7 +4277,7 @@ msgstr "Set %1 to \"%2\"..." msgid "Set the volume to percent" msgstr "Set the volume to percent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Set value for all selected tracks..." @@ -4302,7 +4340,7 @@ msgstr "Show a pretty OSD" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "Show fullsize..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "Show in various artists" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "Shuffle all" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Shuffle playlist" @@ -4423,7 +4461,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Skip backwards in playlist" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Start the playlist currently playing" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stop" @@ -4564,7 +4606,7 @@ msgstr "Stop" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stop after this track" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "This stream is for paid subscribers only" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Title" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Track" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "View" msgid "Visualization mode" msgstr "Visualisation mode" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisations" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Year" diff --git a/src/translations/eo.po b/src/translations/eo.po index e50800865..7378b3b4e 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/clementine/language/eo/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "Propra" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "&Nenio" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "Eliri" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "Pri %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Pri Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Pri Qt..." @@ -416,19 +416,19 @@ msgstr "Aldoni plian fluon..." msgid "Add directory..." msgstr "Aldoni dosierujon..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Aldoni dosieron..." @@ -436,11 +436,11 @@ msgstr "Aldoni dosieron..." msgid "Add files to transcode" msgstr "Aldoni dosierojn transkodigotajn" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Aldoni dosierujon" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Aldoni dosierujon..." @@ -452,7 +452,7 @@ msgstr "Aldoni novan dosierujon..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Aldoni fluon..." @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "Post kopiado..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albumo" @@ -614,7 +614,7 @@ msgstr "Albumo" msgid "Album (ideal loudness for all tracks)" msgstr "Albumo (ideala laŭteco por ĉiuj sonaĵoj)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "Albumoj kun kovriloj" msgid "Albums without covers" msgstr "Albumoj sen kovriloj" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Ĉiuj dosieroj (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Verkinto" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Informoj pri la verkinto" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/es.po b/src/translations/es.po index 0ef6a96be..6379084e6 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -27,8 +27,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 20:52+0000\n" -"Last-Translator: moray33 \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/clementine/language/es/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -127,7 +127,7 @@ msgstr "Se encontraron %1 canciones" #: smartplaylists/searchpreview.cpp:130 #, qt-format msgid "%1 songs found (showing %2)" -msgstr "Se encontraron %1 canciones (mostrando %2)" +msgstr "Se encontraron %1 canciones (%2 visibles)" #: playlist/playlistmanager.cpp:419 #, qt-format @@ -186,11 +186,11 @@ msgstr "&Centro" msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Ay&uda" @@ -207,7 +207,7 @@ msgstr "&Ocultar…" msgid "&Left" msgstr "&Izquierda" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Música" @@ -215,15 +215,15 @@ msgstr "&Música" msgid "&None" msgstr "&Ninguno" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Lista de reproducción" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Salir" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Modo de &repetición" @@ -231,7 +231,7 @@ msgstr "Modo de &repetición" msgid "&Right" msgstr "&Derecha" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Modo &aleatorio" @@ -239,7 +239,7 @@ msgstr "Modo &aleatorio" msgid "&Stretch columns to fit window" msgstr "&Ajustar columnas a la ventana" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Herramientas" @@ -384,11 +384,11 @@ msgstr "Interrumpir" msgid "About %1" msgstr "Acerca de %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Acerca de Clementine…" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Acerca de Qt…" @@ -436,19 +436,19 @@ msgstr "Añadir otra transmisión…" msgid "Add directory..." msgstr "Añadir una carpeta…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Añadir archivo" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Añadir un archivo al convertidor" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Añadir archivo(s) al convertidor" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Añadir un archivo…" @@ -456,11 +456,11 @@ msgstr "Añadir un archivo…" msgid "Add files to transcode" msgstr "Añadir archivos para convertir" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Añadir una carpeta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Añadir una carpeta…" @@ -472,7 +472,7 @@ msgstr "Añadir carpeta nueva…" msgid "Add podcast" msgstr "Añadir un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Añadir un podcast…" @@ -548,7 +548,7 @@ msgstr "Añadir etiqueta de pista a la canción" msgid "Add song year tag" msgstr "Añadir etiqueta de año a la canción" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Añadir una transmisión…" @@ -560,7 +560,7 @@ msgstr "Añadir a mis favoritos en Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Añadir a listas de reproducción de Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Añadir a otra lista de reproducción" @@ -621,12 +621,12 @@ msgstr "Después de " msgid "After copying..." msgstr "Después de copiar…" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Álbum" @@ -634,7 +634,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volumen ideal para todas las pistas)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -656,11 +656,11 @@ msgstr "Álbumes con carátulas" msgid "Albums without covers" msgstr "Álbumes sin carátulas" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "¡Alabemos todos al hipnosapo!" @@ -787,17 +787,17 @@ msgid "" "the songs of your library?" msgstr "¿Está seguro de que quiere almacenar las estadísticas en todos los archivos de su colección?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Inf. artista" @@ -813,7 +813,7 @@ msgstr "Etiquetas del artista" msgid "Artist's initial" msgstr "Iniciales del artista" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Formato de audio" @@ -859,7 +859,7 @@ msgstr "Tamaño promedio de imagen" msgid "BBC Podcasts" msgstr "Podcasts de BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -888,7 +888,7 @@ msgstr "Respaldando la base de datos" msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Vetar" @@ -917,7 +917,7 @@ msgstr "Mejor" msgid "Biography from %1" msgstr "Biografía de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Tasa de bits" @@ -1023,7 +1023,7 @@ msgstr "La reproducción monoaural será efectiva para las siguientes canciones msgid "Check for new episodes" msgstr "Comprobar episodios nuevos" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Comprobar actualizaciones…" @@ -1073,11 +1073,11 @@ msgstr "Limpieza" msgid "Clear" msgstr "Limpiar" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Limpiar lista de reproducción" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1168,8 +1168,8 @@ msgstr "Pulse aquí para marcar esta lista como favorita y añadirla al panel « msgid "Click to toggle between remaining time and total time" msgstr "Pulse para cambiar entre tiempo restante y tiempo total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1207,7 +1207,7 @@ msgstr "Colores" msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de la clase:nivel, el nivel es 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" @@ -1216,11 +1216,11 @@ msgstr "Comentario" msgid "Complete tags automatically" msgstr "Completar etiquetas automáticamente" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Completar etiquetas automáticamente…" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1259,7 +1259,7 @@ msgstr "Configurar Subsonic…" msgid "Configure global search..." msgstr "Configurar búsqueda global…" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurar colección…" @@ -1296,7 +1296,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Se agotó el tiempo de espera de la conexión. Compruebe el URL del servidor. Ejemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Consola" @@ -1316,12 +1316,12 @@ msgstr "Convertir cualquier música que el dispositivo no pueda reproducir" msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar al dispositivo…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copiar a la colección…" @@ -1343,14 +1343,14 @@ msgid "" "required GStreamer plugins installed" msgstr "No se pudo crear el elemento «%1» de GStreamer. Asegúrese de tener instalados todos los complementos necesarios de GStreamer." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "No se pudo encontrar un muxer para %1, compruebe que tiene instalados los complementos correctos de GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1367,7 +1367,7 @@ msgid "Couldn't open output file %1" msgstr "No se pudo abrir el archivo de salida %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestor de carátulas" @@ -1411,11 +1411,11 @@ msgstr "Fundido encadenado al cambiar pistas automáticamente" msgid "Cross-fade when changing tracks manually" msgstr "Fundido encadenado al cambiar pistas manualmente" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1423,63 +1423,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Abajo" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Mayús+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Mayús+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Mayús+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1522,11 +1522,11 @@ msgid "" "recover your database" msgstr "Se detectó un daño en la base de datos. Lea https://code.google.com/p/clementine-player/wiki/DatabaseCorruption para instrucciones para recuperar su base de datos" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Fecha de creación" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Fecha de modificación" @@ -1576,7 +1576,7 @@ msgid "Delete downloaded data" msgstr "Eliminar datos descargados" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Eliminar archivos" @@ -1584,7 +1584,7 @@ msgstr "Eliminar archivos" msgid "Delete from device..." msgstr "Eliminar del dispositivo…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Eliminar del disco…" @@ -1609,15 +1609,16 @@ msgstr "Eliminar los archivos originales" msgid "Deleting files" msgstr "Eliminando los archivos" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Quitar las pistas seleccionadas de la cola" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Quitar la pista de la cola" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1641,10 +1642,14 @@ msgstr "Nombre del dispositivo" msgid "Device properties..." msgstr "Propiedades del dispositivo…" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositivos" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Diálogo" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Quiso decir" @@ -1683,8 +1688,8 @@ msgstr "Desactivar generación de barras de ánimo" msgid "Disabled" msgstr "Desactivado" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1701,7 +1706,7 @@ msgstr "Opciones de visualización" msgid "Display the on-screen-display" msgstr "Mostrar el mensaje en pantalla (OSD)" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Volver a analizar toda la colección" @@ -1823,6 +1828,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Duración" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Modo dinámico activado" @@ -1835,12 +1844,12 @@ msgstr "Mezcla dinámica aleatoria" msgid "Edit smart playlist..." msgstr "Editar lista de reproducción inteligente…" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar la etiqueta «%1»…" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Editar etiqueta…" @@ -1853,7 +1862,7 @@ msgid "Edit track information" msgstr "Editar información de la pista" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Editar información de la pista…" @@ -1954,7 +1963,7 @@ msgstr "Escriba esta IP en la aplicación para conectarse con Clementine." msgid "Entire collection" msgstr "Colección completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ecualizador" @@ -1968,7 +1977,7 @@ msgstr "Equivalente a --log-levels*:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Error" @@ -1988,7 +1997,7 @@ msgstr "Error al eliminar canciones" msgid "Error downloading Spotify plugin" msgstr "Error al descargar el complemento de Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Error al cargar %1" @@ -1998,12 +2007,12 @@ msgstr "Error al cargar %1" msgid "Error loading di.fm playlist" msgstr "Error al cargar la lista de reproducción de di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Error al procesar %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Error al cargar el CD de audio" @@ -2081,27 +2090,27 @@ msgstr "Exportación finalizada" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Se exportaron %1 carátulas de %2 (se omitieron %3)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2128,6 +2137,10 @@ msgstr "Fundido" msgid "Fading duration" msgstr "Duración del fundido" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Falló la lectura de la unidad de CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "No se pudo obtener el directorio" @@ -2179,6 +2192,10 @@ msgstr "Obteniendo biblioteca de Subsonic" msgid "Fetching cover error" msgstr "Error al obtener la carátula" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Formato de archivo" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensión del archivo" @@ -2187,19 +2204,19 @@ msgstr "Extensión del archivo" msgid "File formats" msgstr "Formatos de archivo" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nombre del archivo" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nombre del archivo (sin ruta)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamaño del archivo" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2226,7 @@ msgstr "Tipo de archivo" msgid "Filename" msgstr "Nombre del archivo" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Archivos" @@ -2329,9 +2346,10 @@ msgstr "General" msgid "General settings" msgstr "Configuración general" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Género" @@ -2363,11 +2381,11 @@ msgstr "Dele un nombre:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Ir a la siguiente lista de reproducción" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Ir a la lista de reproducción anterior" @@ -2437,7 +2455,7 @@ msgstr "Agrupar por género/álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Conjunto" @@ -2592,6 +2610,10 @@ msgstr "Indizando %1" msgid "Information" msgstr "Información" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Insertar…" @@ -2604,7 +2626,7 @@ msgstr "Instalado" msgid "Integrity check" msgstr "Comprobación de integridad" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2644,6 +2666,10 @@ msgstr "Clave de sesión no válida" msgid "Invalid username and/or password" msgstr "Nombre de usuario y/o contraseña no válidos" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2668,7 +2694,7 @@ msgstr "Mejores pistas de la semana en Jamendo" msgid "Jamendo database" msgstr "Base de datos de Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Saltar a la pista en reproducción" @@ -2692,7 +2718,7 @@ msgstr "Seguir ejecutando el programa en el fondo al cerrar la ventana" msgid "Keep the original files" msgstr "Mantener los archivos originales" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Gatitos" @@ -2716,7 +2742,7 @@ msgstr "Carátula de álbum grande" msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Últimas reproducidas" @@ -2799,12 +2825,12 @@ msgstr "Déjelo en blanco para el predeterminado. Ejemplos: «/dev/dsp», «fro msgid "Left" msgstr "Izquierda" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Colección" @@ -2812,7 +2838,7 @@ msgstr "Colección" msgid "Library advanced grouping" msgstr "Agrupamiento avanzado de la colección" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Aviso de reanálisis de la colección" @@ -2857,7 +2883,7 @@ msgstr "Cargar carátula desde disco…" msgid "Load playlist" msgstr "Cargar lista de reproducción" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Cargar lista de reproducción…" @@ -2886,11 +2912,11 @@ msgstr "Cargando las canciones" msgid "Loading stream" msgstr "Cargando el flujo" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Cargando las pistas" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Cargando información de pistas" @@ -2909,10 +2935,10 @@ msgstr "Carga archivos/URL, reemplazando la lista de reproducción actual" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Iniciar sesión" @@ -2924,7 +2950,7 @@ msgstr "Falló el inicio de sesión" msgid "Long term prediction profile (LTP)" msgstr "Perfil de predicción a largo plazo (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Me encanta" @@ -2987,7 +3013,7 @@ msgstr "Descarga de Magnatune finalizada" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Así sea" @@ -3070,7 +3096,7 @@ msgstr "Reproducción monoaural" msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Ánimo" @@ -3100,7 +3126,7 @@ msgstr "Puntos de montaje" msgid "Move down" msgstr "Mover hacia abajo" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mover a la colección…" @@ -3109,7 +3135,7 @@ msgstr "Mover a la colección…" msgid "Move up" msgstr "Mover hacia arriba" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Música" @@ -3117,7 +3143,7 @@ msgstr "Música" msgid "Music Library" msgstr "Colección musical" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Silenciar" @@ -3205,7 +3231,7 @@ msgstr "Nunca comenzar la reproducción" msgid "New folder" msgstr "Carpeta nueva" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Lista de reproducción nueva" @@ -3229,7 +3255,7 @@ msgstr "Pistas más recientes" msgid "Next" msgstr "Siguiente" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Pista siguiente" @@ -3268,7 +3294,7 @@ msgstr "Sin bloques cortos" msgid "None" msgstr "Ninguno" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ninguna de las canciones seleccionadas fueron aptas para copiarlas a un dispositivo" @@ -3386,7 +3412,7 @@ msgstr "Opacidad" msgid "Open %1 in browser" msgstr "Abrir %1 en el navegador" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Abrir un &CD de sonido…" @@ -3402,7 +3428,7 @@ msgstr "Abrir un archivo OPML…" msgid "Open device" msgstr "Abrir dispositivo" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Abrir un archivo…" @@ -3437,7 +3463,7 @@ msgstr "Optimizar para tasa de bits" msgid "Optimize for quality" msgstr "Optimizar para calidad" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opciones…" @@ -3449,7 +3475,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizar archivos" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizar archivos…" @@ -3473,7 +3499,7 @@ msgstr "Salida" msgid "Output device" msgstr "Dispositivo de salida" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opciones de salida" @@ -3514,7 +3540,7 @@ msgstr "Fiesta" msgid "Password" msgstr "Contraseña" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausar" @@ -3527,7 +3553,7 @@ msgstr "Pausar la reproducción" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3540,9 +3566,9 @@ msgstr "Píxel" msgid "Plain sidebar" msgstr "Barra lateral simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Reproducir" @@ -3555,7 +3581,7 @@ msgstr "Reproducir un artista o etiqueta" msgid "Play artist radio..." msgstr "Reproducir radio del artista…" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "N.º de reproducciones" @@ -3610,7 +3636,7 @@ msgstr "Opciones de la lista de reproducción" msgid "Playlist type" msgstr "Tipo de lista de reproducción" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listas rep." @@ -3662,7 +3688,7 @@ msgstr "Preamp." msgid "Preferences" msgstr "Preferencias" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferencias…" @@ -3717,7 +3743,7 @@ msgstr "Previsualización" msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Pista anterior" @@ -3731,7 +3757,7 @@ msgid "Profile" msgstr "Perfil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progreso" @@ -3760,16 +3786,16 @@ msgstr "Calidad" msgid "Querying device..." msgstr "Consultando dispositivo…" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestor de la cola" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Añadir las pistas seleccionadas a la cola" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Añadir a la cola de reproducción" @@ -3781,7 +3807,7 @@ msgstr "Radio (volumen igual para todas las pistas)" msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Lluvia" @@ -3813,7 +3839,7 @@ msgstr "Valorar la canción actual con 4 estrellas" msgid "Rate the current song 5 stars" msgstr "Valorar la canción actual con 5 estrellas" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Clasificación" @@ -3871,7 +3897,7 @@ msgstr "Quitar" msgid "Remove action" msgstr "Eliminar acción" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Eliminar duplicados de la lista de reproducción" @@ -3887,7 +3913,7 @@ msgstr "Quitar de Mi música" msgid "Remove from favorites" msgstr "Quitar de favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Eliminar de la lista de reproducción" @@ -3924,7 +3950,7 @@ msgstr "Renombrar lista de reproducción" msgid "Rename playlist..." msgstr "Renombrar lista de reproducción…" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Reenumerar pistas en este orden…" @@ -4015,6 +4041,18 @@ msgstr "Volver a Clementine" msgid "Right" msgstr "Derecha" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Extraer CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Extraer CD de sonido…" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4041,7 +4079,7 @@ msgstr "Quitar dispositivo con seguridad" msgid "Safely remove the device after copying" msgstr "Quitar dispositivo con seguridad después de copiar" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Tasa de muestreo" @@ -4069,7 +4107,7 @@ msgstr "Guardar imagen" msgid "Save playlist" msgstr "Guardar lista de reproducción" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Guardar lista de reproducción…" @@ -4105,7 +4143,7 @@ msgstr "Perfil de tasa de muestreo escalable (SSR)" msgid "Scale size" msgstr "Tamaño de escala" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Valoración" @@ -4114,7 +4152,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Enviar las pistas que reproduzco" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4198,11 +4236,11 @@ msgstr "Moverse en la pista actual hacia una posición relativa" msgid "Seek the currently playing track to an absolute position" msgstr "Moverse en la pista actual hacia una posición absoluta" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionar todo" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "No seleccionar nada" @@ -4230,7 +4268,7 @@ msgstr "Elegir visualizaciones" msgid "Select visualizations..." msgstr "Elegir visualizaciones…" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Seleccionar..." @@ -4250,7 +4288,7 @@ msgstr "Detalles del servidor" msgid "Service offline" msgstr "Servicio fuera de línea" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Establecer %1 a «%2»…" @@ -4259,7 +4297,7 @@ msgstr "Establecer %1 a «%2»…" msgid "Set the volume to percent" msgstr "Establecer el volumen en por ciento" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Establecer valor para todas las pistas seleccionadas…" @@ -4322,7 +4360,7 @@ msgstr "Mostrar OSD estético" msgid "Show above status bar" msgstr "Mostrar sobre la barra de estado" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Mostrar todas las canciones" @@ -4342,12 +4380,12 @@ msgstr "Mostrar divisores" msgid "Show fullsize..." msgstr "Mostrar a tamaño completo…" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostrar en el gestor de archivos…" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Mostrar en colección..." @@ -4359,11 +4397,11 @@ msgstr "Mostrar en Varios artistas" msgid "Show moodbar" msgstr "Mostrar barra de ánimo" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostrar solo los duplicados" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Solo mostrar no etiquetadas" @@ -4403,7 +4441,7 @@ msgstr "Mezclar álbumes" msgid "Shuffle all" msgstr "Mezclar todo" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Mezclar lista de reproducción" @@ -4443,7 +4481,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Saltar hacia atrás en la lista de reproducción" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Contador de omisiones" @@ -4479,7 +4517,7 @@ msgstr "Soft rock" msgid "Song Information" msgstr "Información de la canción" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Inf. canción" @@ -4511,7 +4549,7 @@ msgstr "Ordenar canciones por" msgid "Sorting" msgstr "Ordenación" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Origen" @@ -4547,6 +4585,10 @@ msgstr "Estándar" msgid "Starred" msgstr "Destacado" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Iniciar la lista de reproducción actualmente en reproducción" @@ -4562,7 +4604,7 @@ msgid "" "list" msgstr "Comience a escribir en el cuadro de búsqueda anterior para obtener resultados en esta lista" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Iniciando %1" @@ -4575,7 +4617,7 @@ msgstr "Iniciando…" msgid "Stations" msgstr "Estaciones" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Detener" @@ -4584,7 +4626,7 @@ msgstr "Detener" msgid "Stop after" msgstr "Detener después de" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Detener reproducción al finalizar la pista" @@ -4752,7 +4794,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Ha terminado el período de prueba del servidor de Subsonic. Haga una donación para obtener una clave de licencia. Visite subsonic.org para más detalles." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4793,7 +4835,7 @@ msgid "" "continue?" msgstr "Se eliminarán estos archivos del dispositivo, ¿está seguro de que quiere continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4865,9 +4907,10 @@ msgstr "Este flujo es solo para los suscriptores de pago" msgid "This type of device is not supported: %1" msgstr "No se admite este tipo de dispositivo: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" @@ -4889,11 +4932,11 @@ msgstr "Conmutar OSD estético" msgid "Toggle fullscreen" msgstr "Pantalla completa" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Cambiar estado de la cola" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Activar o desactivar scrobbling" @@ -4925,12 +4968,13 @@ msgstr "Total de bytes transferidos" msgid "Total network requests made" msgstr "Total de solicitudes hechas a la red" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Convertir música" @@ -5028,7 +5072,7 @@ msgstr "Actualizar lista de reproducción de Grooveshark" msgid "Update all podcasts" msgstr "Actualizar todos los podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Actualizar carpetas de la colección modificadas" @@ -5183,7 +5227,7 @@ msgstr "Ver" msgid "Visualization mode" msgstr "Modo de visualización" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualizaciones" @@ -5311,7 +5355,7 @@ msgid "" "well?" msgstr "¿Le gustaría mover también las otras canciones de este álbum a Varios artistas?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "¿Quiere ejecutar un reanálisis completo ahora?" @@ -5323,10 +5367,10 @@ msgstr "Escribir las estadísticas de todas las canciones en los archivos" msgid "Wrong username or password." msgstr "Nombre de usuario o contraseña incorrectos." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Año" diff --git a/src/translations/et.po b/src/translations/et.po index 9744df744..47537a49e 100644 --- a/src/translations/et.po +++ b/src/translations/et.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Estonian (http://www.transifex.com/projects/p/clementine/language/et/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "&Keskele" msgid "&Custom" msgstr "&Kohandatud" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Lisad" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Abi" @@ -190,7 +190,7 @@ msgstr "Peida..." msgid "&Left" msgstr "&Vasakule" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Muusika" @@ -198,15 +198,15 @@ msgstr "Muusika" msgid "&None" msgstr "&Puudub" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lugude nimekiri" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Välju" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Kordav režiim" @@ -214,7 +214,7 @@ msgstr "Kordav režiim" msgid "&Right" msgstr "&Paremale" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Segatud režiim" @@ -222,7 +222,7 @@ msgstr "Segatud režiim" msgid "&Stretch columns to fit window" msgstr "Растянуть столбцы по размеру окна" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Töövahendid" @@ -367,11 +367,11 @@ msgstr "" msgid "About %1" msgstr "%1 info" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine info..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt info..." @@ -419,19 +419,19 @@ msgstr "" msgid "Add directory..." msgstr "Lisa kaust..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Lisa fail..." @@ -439,11 +439,11 @@ msgstr "Lisa fail..." msgid "Add files to transcode" msgstr "Lisa failid Transkodeerimisele" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Lisa kaust" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Lisa kaust..." @@ -455,7 +455,7 @@ msgstr "Lisa uus kaust..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -531,7 +531,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Lisa raadiovoog..." @@ -543,7 +543,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -604,12 +604,12 @@ msgstr "" msgid "After copying..." msgstr "Pärast kopeerimist..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -617,7 +617,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kõigil radadel ideaalne valjus)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "Album koos kaanega" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Kõik failid (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Kõik au Hüpnokärnkonnale!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Esitaja" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Esitaja info" @@ -796,7 +796,7 @@ msgstr "Artisti sildipilv" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Heli vorming" @@ -842,7 +842,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Keela" @@ -900,7 +900,7 @@ msgstr "Parim" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitikiirus" @@ -1006,7 +1006,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Kontrolli uuendusi..." @@ -1056,11 +1056,11 @@ msgstr "" msgid "Clear" msgstr "Puhasta" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Esitusloendi puhastamine" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Märkus" @@ -1199,11 +1199,11 @@ msgstr "Märkus" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1299,12 +1299,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopeeri seadmesse..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "Ei suuda avada väljund faili %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Kaanepildi haldur" @@ -1394,11 +1394,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Loomise kuupäev" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Muutmise kuupäev" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Kustuta failid" @@ -1567,7 +1567,7 @@ msgstr "Kustuta failid" msgid "Delete from device..." msgstr "Kustuta seadmest..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Kustuta kettalt..." @@ -1592,15 +1592,16 @@ msgstr "Kustuta originaal failid" msgid "Deleting files" msgstr "Failide kustutamine" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Sihtkoht" @@ -1624,10 +1625,14 @@ msgstr "Seadme nimi" msgid "Device properties..." msgstr "Seadme omadused..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Seadmed" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1666,8 +1671,8 @@ msgstr "" msgid "Disabled" msgstr "Keelatud" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Ketas" @@ -1684,7 +1689,7 @@ msgstr "Ekraani seaded" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1806,6 +1811,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1818,12 +1827,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Muuda silti..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "Muuda loo infot" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Muuda loo infot..." @@ -1937,7 +1946,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalaiser" @@ -1951,7 +1960,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Viga" @@ -1971,7 +1980,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1981,12 +1990,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2064,27 +2073,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "Hajumine" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2162,6 +2175,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Faililaiend" @@ -2170,19 +2187,19 @@ msgstr "Faililaiend" msgid "File formats" msgstr "Faili vormingud" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Faili nimi" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Failinimi (ilma rajata)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Faili suurus" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "Faili tüüp" msgid "Filename" msgstr "Faili nimi" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Failid" @@ -2312,9 +2329,10 @@ msgstr "" msgid "General settings" msgstr "Üldised seadistused" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanr" @@ -2346,11 +2364,11 @@ msgstr "Anna sellele nimi:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2420,7 +2438,7 @@ msgstr "Grupeeri zanri/albumi järgi" msgid "Group by Genre/Artist/Album" msgstr "Grupeeri zanri/esitaja/albumi järgi" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2575,6 +2593,10 @@ msgstr "" msgid "Information" msgstr "Informatsioon" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Lisa..." @@ -2587,7 +2609,7 @@ msgstr "Paigaldatud" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2627,6 +2649,10 @@ msgstr "Vigane sessiooni võti" msgid "Invalid username and/or password" msgstr "Vale kasutajanimi ja/või salasõna" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "" msgid "Jamendo database" msgstr "Jamendo andmebaas" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2675,7 +2701,7 @@ msgstr "" msgid "Keep the original files" msgstr "Säiilita originaalfailid" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kassipojad" @@ -2699,7 +2725,7 @@ msgstr "Suur albumi kaanepilt" msgid "Large sidebar" msgstr "Suur külgriba" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Viimati esitatud" @@ -2782,12 +2808,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kestvus" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Helikogu" @@ -2795,7 +2821,7 @@ msgstr "Helikogu" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2840,7 +2866,7 @@ msgstr "Lae ümbris plaadilt..." msgid "Load playlist" msgstr "Laadi esitusnimekiri" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Lae esitusnimekiri..." @@ -2869,11 +2895,11 @@ msgstr "" msgid "Loading stream" msgstr "Voo laadimine" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2892,10 +2918,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Logi sisse" @@ -2907,7 +2933,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Meeldib" @@ -2970,7 +2996,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3053,7 +3079,7 @@ msgstr "" msgid "Months" msgstr "kuud" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3083,7 +3109,7 @@ msgstr "Enim punkte" msgid "Move down" msgstr "Liiguta alla" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3092,7 +3118,7 @@ msgstr "" msgid "Move up" msgstr "Liiguta üles" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3100,7 +3126,7 @@ msgstr "" msgid "Music Library" msgstr "Muusika kogu" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Vaigista" @@ -3188,7 +3214,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Uus esitusnimekiri" @@ -3212,7 +3238,7 @@ msgstr "Uusimad lood" msgid "Next" msgstr "Järgmine" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Järgmine lugu" @@ -3251,7 +3277,7 @@ msgstr "" msgid "None" msgstr "Puudub" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3369,7 +3395,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "Ava %1 brauseris" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Ava &audio CD..." @@ -3385,7 +3411,7 @@ msgstr "" msgid "Open device" msgstr "Ava seade" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3420,7 +3446,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Valikud..." @@ -3432,7 +3458,7 @@ msgstr "" msgid "Organise Files" msgstr "Organiseeri faile" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organiseeri faile..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Väljundi valikud" @@ -3497,7 +3523,7 @@ msgstr "Pidu" msgid "Password" msgstr "Parool" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Paus" @@ -3510,7 +3536,7 @@ msgstr "Peata esitus" msgid "Paused" msgstr "Peatatud" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Täielik külgriba" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Mängi" @@ -3538,7 +3564,7 @@ msgstr "Mängi Esitaja või Sildipilve" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Esitamiste arv" @@ -3593,7 +3619,7 @@ msgstr "Esitusnimekirja valikud" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3645,7 +3671,7 @@ msgstr "Eelmoonutus" msgid "Preferences" msgstr "Seadistused" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Seadistused..." @@ -3700,7 +3726,7 @@ msgstr "Eelvaade" msgid "Previous" msgstr "Eelmine" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Eelmine lugu" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "Profiil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progress" @@ -3743,16 +3769,16 @@ msgstr "Kvaliteet" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Järjekorrahaldur" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Lisa järjekorda" @@ -3764,7 +3790,7 @@ msgstr "Raadio (kõigil paladel võrdne valjus)" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Vihm" @@ -3796,7 +3822,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hinnang" @@ -3854,7 +3880,7 @@ msgstr "Eemalda" msgid "Remove action" msgstr "Eemalda toiming" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3870,7 +3896,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Eemalda esitusnimekirjast" @@ -3907,7 +3933,7 @@ msgstr "Nimeta lugude nimekiri ümber" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3998,6 +4024,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rokk" @@ -4024,7 +4062,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Diskreetimissagedus" @@ -4052,7 +4090,7 @@ msgstr "Pildi salvestamine" msgid "Save playlist" msgstr "Salvesta lugude nimekiri" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Salvesta esitusnimekiri..." @@ -4088,7 +4126,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vali kõik" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Tühista valik." @@ -4213,7 +4251,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4242,7 +4280,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4305,7 +4343,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4325,12 +4363,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4386,7 +4424,7 @@ msgstr "" msgid "Shuffle all" msgstr "Sega kõik" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Sega esitusnimistu" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Lugude nimekirjas tagasi hüppamine" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4462,7 +4500,7 @@ msgstr "" msgid "Song Information" msgstr "Laulu andmed" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4494,7 +4532,7 @@ msgstr "" msgid "Sorting" msgstr "Sorteerimine" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4530,6 +4568,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Käivitatakse %1" @@ -4558,7 +4600,7 @@ msgstr "Alustamine..." msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Peata" @@ -4567,7 +4609,7 @@ msgstr "Peata" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Pealkiri" @@ -4872,11 +4915,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Lülita täisekraani" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4908,12 +4951,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Rada" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transkodeeri muusikat" @@ -5011,7 +5055,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5166,7 +5210,7 @@ msgstr "Vaade" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualiseeringud" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5306,10 +5350,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Aasta" diff --git a/src/translations/eu.po b/src/translations/eu.po index c9af377cf..73eff1e5f 100644 --- a/src/translations/eu.po +++ b/src/translations/eu.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/clementine/language/eu/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&Zentratu" msgid "&Custom" msgstr "&Pertsonalizatua" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Gehigarriak" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Laguntza" @@ -191,7 +191,7 @@ msgstr "&Ezkutatu..." msgid "&Left" msgstr "Ez&kerrera" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musika" @@ -199,15 +199,15 @@ msgstr "&Musika" msgid "&None" msgstr "&Bat ere ez" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Erreprodukzio-zerrenda" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Itxi" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "E&rrepikatze-modua" @@ -215,7 +215,7 @@ msgstr "E&rrepikatze-modua" msgid "&Right" msgstr "E&skuinera" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Au&sazko modua" @@ -223,7 +223,7 @@ msgstr "Au&sazko modua" msgid "&Stretch columns to fit window" msgstr "&Tiratu zutabeak leihoan egokitzeko" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Tresnak" @@ -368,11 +368,11 @@ msgstr "" msgid "About %1" msgstr "%1-(r)i buruz" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine-ri buruz..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt-ri buruz..." @@ -420,19 +420,19 @@ msgstr "Gehitu beste jario bat..." msgid "Add directory..." msgstr "Gehitu direktorioa..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Gehitu fitxategia" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Gehitu fitxategia..." @@ -440,11 +440,11 @@ msgstr "Gehitu fitxategia..." msgid "Add files to transcode" msgstr "Gehitu transkodetzeko fitxategiak" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Gehitu karpeta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Gehitu karpeta..." @@ -456,7 +456,7 @@ msgstr "Gehitu karpeta berria..." msgid "Add podcast" msgstr "Podcast-a gehitu" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast-a gehitu..." @@ -532,7 +532,7 @@ msgstr "Gehitu pista etiketa kantari" msgid "Add song year tag" msgstr "Gehitu urtea etiketa kantari" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Gehitu jarioa..." @@ -544,7 +544,7 @@ msgstr "Gehitu Grooveshark-eko gogokoenetara" msgid "Add to Grooveshark playlists" msgstr "Gehitu Grooveshark-eko erreprodukzio-zerrendetara" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Gehitu beste erreprodukzio-zerrenda batera" @@ -605,12 +605,12 @@ msgstr "Ondoren" msgid "After copying..." msgstr "Kopiatu ondoren..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albuma" @@ -618,7 +618,7 @@ msgstr "Albuma" msgid "Album (ideal loudness for all tracks)" msgstr "Albuma (pista guztientzako bolumen ideala)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Azaldun albumak" msgid "Albums without covers" msgstr "Azal gabeko albumak" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Fitxategi guztiak (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Loria osoa Hipnoapoarentzat!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artis. infor." @@ -797,7 +797,7 @@ msgstr "Artistaren etiketak" msgid "Artist's initial" msgstr "Artistaren inizialak" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio formatua" @@ -843,7 +843,7 @@ msgstr "Batez besteko irudi-tamaina" msgid "BBC Podcasts" msgstr "BBC-ko podcast-ak" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Datu-basearen babeskopia burutzen" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Galarazi" @@ -901,7 +901,7 @@ msgstr "Onena" msgid "Biography from %1" msgstr "%1-ko biografia" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit-tasa" @@ -1007,7 +1007,7 @@ msgstr "Mono erreprodukzioa hurrengo erreprodukzioetan izango da erabilgarri" msgid "Check for new episodes" msgstr "Atal berriak bilatu" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Eguneraketak bilatu..." @@ -1057,11 +1057,11 @@ msgstr "Garbiketa" msgid "Clear" msgstr "Garbitu" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Erreprodukzio-zerrenda garbitu" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Egin klik geratzen den denbora eta denbora osoaren artean txandakatzeko" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Koloreak" msgid "Comma separated list of class:level, level is 0-3" msgstr "Komaz banaturiko klase-zerrenda:maila, maila 0-3 da" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Iruzkina" @@ -1200,11 +1200,11 @@ msgstr "Iruzkina" msgid "Complete tags automatically" msgstr "Bete etiketak automatikoki" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Bete etiketak automatikoki..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Subsonic konfiguratu" msgid "Configure global search..." msgstr "Bilaketa globala konfiguratu..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfiguratu bilduma..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Kontsola" @@ -1300,12 +1300,12 @@ msgstr "Gailuak erreproduzitu ezin dezakeen musika bihurtu" msgid "Copy to clipboard" msgstr "Kopiatu arbelean" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiatu gailura..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiatu bildumara..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Ezin izan da GStreamer \"%1\" elementua sortu - beharrezko GStreamer plugin guztiak instalatuta dauden begiratu" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Ezin izan da %1-(r)entzako multiplexadorea aurkitu, begiratu GStreamer plugin egokiak instalatuta dauden" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Ezin izan da %1 irteera-fitxategia ireki" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Azal-kudeatzailea" @@ -1395,11 +1395,11 @@ msgstr "Iraungi automatikoki kantak aldatzen direnean" msgid "Cross-fade when changing tracks manually" msgstr "Iraungi eskuz kantak aldatzen direnean" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Behera" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maius+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maius+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Datu-basea usteldurik dago. Datu-basea nola berreskuratu daitekeen jakiteko, irakurri mesedez https://code.google.com/p/clementine-player/wiki/DatabaseCorruption." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Sorrera-data" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Aldatze-data" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Ezabatu deskargatutako datuak" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Ezabatu fitxategiak" @@ -1568,7 +1568,7 @@ msgstr "Ezabatu fitxategiak" msgid "Delete from device..." msgstr "Ezabatu gailutik..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Ezabatu diskotik..." @@ -1593,15 +1593,16 @@ msgstr "Ezabatu jatorrizko fitxategiak" msgid "Deleting files" msgstr "Fitxategiak ezabatzen" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Atera aukeraturiko pistak ilaratik" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Atera pista ilaratik" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Helmuga" @@ -1625,10 +1626,14 @@ msgstr "Gailuaren izena" msgid "Device properties..." msgstr "Gailuaren propietateak..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Gailuak" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Esan nahi zenuen" @@ -1667,8 +1672,8 @@ msgstr "Aldarte-barren sortzea desgaitu" msgid "Disabled" msgstr "Desgaituta" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diska" @@ -1685,7 +1690,7 @@ msgstr "Erakutsi aukerak" msgid "Display the on-screen-display" msgstr "Erakutsi pantailako bistaratzailea" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Bildumaren berreskaneo osoa egin" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Modu dinamikoa aktibaturik" @@ -1819,12 +1828,12 @@ msgstr "Ausazko nahasketa dinamikoa" msgid "Edit smart playlist..." msgstr "Editatu erreprodukzio-zerrenda adimenduna..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Editatu etiketa..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Editatu pistaren informazioa" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Editatu pistaren informazioa..." @@ -1938,7 +1947,7 @@ msgstr "" msgid "Entire collection" msgstr "Bilduma osoa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekualizadorea" @@ -1952,7 +1961,7 @@ msgstr "--log-levels *:3-en baliokidea" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Errorea" @@ -1972,7 +1981,7 @@ msgstr "Errorea abestiak ezabatzean" msgid "Error downloading Spotify plugin" msgstr "Errorea Spotify plugin-a deskargatzean" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Errorea %1 kargatzean" @@ -1982,12 +1991,12 @@ msgstr "Errorea %1 kargatzean" msgid "Error loading di.fm playlist" msgstr "Errorea di.fm erreprodukzio-zerrenda kargatzean" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Errorea %1 prozesatzean: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Errorea audio CDa kargatzean" @@ -2065,27 +2074,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Iraungitzea" msgid "Fading duration" msgstr "Iraungitzearen iraupena" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Direktorioa ezin izan da eskuratu" @@ -2163,6 +2176,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Errorea azalak eskuratzean" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Fitxategi-luzapena" @@ -2171,19 +2188,19 @@ msgstr "Fitxategi-luzapena" msgid "File formats" msgstr "Fitxategi-formatuak" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fitxategi-izena" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Fitx.-izena (bidea gabe)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fitxategi-tamaina" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Fitxategi-mota" msgid "Filename" msgstr "Fitxategi-izena" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fitxategiak" @@ -2313,9 +2330,10 @@ msgstr "Orokorra" msgid "General settings" msgstr "Ezarpen orokorrak" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Generoa" @@ -2347,11 +2365,11 @@ msgstr "Izendatu:" msgid "Go" msgstr "Joan" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Hurrengo erreprodukzio-zerrendara joan" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Aurreko erreprodukzio-zerrendara joan" @@ -2421,7 +2439,7 @@ msgstr "Taldekatu genero/albumaren arabera" msgid "Group by Genre/Artist/Album" msgstr "Taldekatu generoa/artista/albumaren arabera" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2576,6 +2594,10 @@ msgstr "Indexatzen: %1" msgid "Information" msgstr "Informazioa" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Txertatu" @@ -2588,7 +2610,7 @@ msgstr "Instalatuta" msgid "Integrity check" msgstr "Osotasunaren egiaztapena" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Sesio-gako baliogabea" msgid "Invalid username and/or password" msgstr "Erabiltzaile-izen edota pasahitz baliogabea" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Jamendo-ko asteko kantarik onenak" msgid "Jamendo database" msgstr "Jamendo datu-basea" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Erreproduzitzen ari den pistara jauzi egin" @@ -2676,7 +2702,7 @@ msgstr "Jarraitu atzealdean exekutatzen leihoa ixten denean" msgid "Keep the original files" msgstr "Jatorrizko fitxategiak mantendu" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Katakumeak" @@ -2700,7 +2726,7 @@ msgstr "Albumeko azal handia" msgid "Large sidebar" msgstr "Albo-barra handia" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Erreproduzitutako azkena" @@ -2783,12 +2809,12 @@ msgstr "Hutsik utzi lehenetsirako. Adibideak: \"/dev/dsp\", \"front\", e.a." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Iraupena" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bilduma" @@ -2796,7 +2822,7 @@ msgstr "Bilduma" msgid "Library advanced grouping" msgstr "Bildumaren taldekatze aurreratua" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Bildumaren berreskaneoaren abisua" @@ -2841,7 +2867,7 @@ msgstr "Kargatu azala diskotik..." msgid "Load playlist" msgstr "Kargatu erreprodukzio-zerrenda" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Kargatu erreprodukzio-zerrenda..." @@ -2870,11 +2896,11 @@ msgstr "Abestiak kargatzen" msgid "Loading stream" msgstr "Jarioa kargatzen" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Pistak kargatzen" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Pisten informazioa kargatzen" @@ -2893,10 +2919,10 @@ msgstr "Fitxategiak/URLak kargatzen ditu, momentuko erreprodukzio-zerrenda ordez #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Saio-hasiera" @@ -2908,7 +2934,7 @@ msgstr "Saio hasieraren huts egitea" msgid "Long term prediction profile (LTP)" msgstr "Epe luzerako predikzio profila (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Oso gustukoa" @@ -2971,7 +2997,7 @@ msgstr "Magnatune deskarga eginda" msgid "Main profile (MAIN)" msgstr "Profil nagusia (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Egin ezazu!" @@ -3054,7 +3080,7 @@ msgstr "Mono erreprodukzioa" msgid "Months" msgstr "Hilabete" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Aldarte" @@ -3084,7 +3110,7 @@ msgstr "Muntatze-puntuak" msgid "Move down" msgstr "Eraman behera" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Eraman bildumara..." @@ -3093,7 +3119,7 @@ msgstr "Eraman bildumara..." msgid "Move up" msgstr "Eraman gora" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musika" @@ -3101,7 +3127,7 @@ msgstr "Musika" msgid "Music Library" msgstr "Musika-bilduma" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mututu" @@ -3189,7 +3215,7 @@ msgstr "Inoiz ez hasi erreproduzitzen" msgid "New folder" msgstr "Karpeta berria" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Erreprodukzio-zerrenda berria" @@ -3213,7 +3239,7 @@ msgstr "Pista berrienak" msgid "Next" msgstr "Hurrengoa" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Hurrengo pista" @@ -3252,7 +3278,7 @@ msgstr "Bloke laburrik ez" msgid "None" msgstr "Bat ere ez" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Aukeraturiko abestietako bat ere ez zen aproposa gailu batera kopiatzeko" @@ -3370,7 +3396,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "%1 nabigatzailean ireki" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Ireki &audio CDa..." @@ -3386,7 +3412,7 @@ msgstr "OPML fitxategia ireki" msgid "Open device" msgstr "Ireki gailua" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Ireki fitxategia..." @@ -3421,7 +3447,7 @@ msgstr "Bit-tasarako optimizatu" msgid "Optimize for quality" msgstr "Kalitaterako optimizatu" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Aukerak..." @@ -3433,7 +3459,7 @@ msgstr "" msgid "Organise Files" msgstr "Antolatu fitxategiak" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Antolatu fitxategiak..." @@ -3457,7 +3483,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Irteerako aukerak" @@ -3498,7 +3524,7 @@ msgstr "Jaia" msgid "Password" msgstr "Pasahitza" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausarazi" @@ -3511,7 +3537,7 @@ msgstr "Erreprodukzioa pausatu" msgid "Paused" msgstr "Pausatua" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3524,9 +3550,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Albo-barra sinplea" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Erreproduzitu" @@ -3539,7 +3565,7 @@ msgstr "Erreproduzitu artista edo etiketa" msgid "Play artist radio..." msgstr "Erreproduzitu artistaren irratia..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Erreprodukzio kopurua" @@ -3594,7 +3620,7 @@ msgstr "Erreprodukzio-zerrendaren aukerak" msgid "Playlist type" msgstr "Erreprodukzio-zerrenda mota" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Erreprodukzio-zerrendak" @@ -3646,7 +3672,7 @@ msgstr "Aurre-anplifikadorea" msgid "Preferences" msgstr "Hobespenak" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Hobespenak..." @@ -3701,7 +3727,7 @@ msgstr "Aurrebista" msgid "Previous" msgstr "Aurrekoa" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Aurreko pista" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Profila" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Aurrerapena" @@ -3744,16 +3770,16 @@ msgstr "Kalitatea" msgid "Querying device..." msgstr "Gailua galdekatzen..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Ilara-kudeatzailea" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Aukeraturiko pistak ilaran jarri" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Pista ilaran jarri" @@ -3765,7 +3791,7 @@ msgstr "Irratia (ozentasun berdina pista denentzat)" msgid "Radios" msgstr "Irratiak" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Euria" @@ -3797,7 +3823,7 @@ msgstr "Oraingo kantari 4 izarretako balioa eman" msgid "Rate the current song 5 stars" msgstr "Oraingo kantari 5 izarretako balioa eman" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Balioztatzea" @@ -3855,7 +3881,7 @@ msgstr "Kendu" msgid "Remove action" msgstr "Kendu ekintza" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Abesti bikoiztuak kendu erreprodukzio-zerrendatik " @@ -3871,7 +3897,7 @@ msgstr "Nire Musikatik kendu" msgid "Remove from favorites" msgstr "Kendu gogokoenetatik" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Kendu erreprodukzio-zerrendatik" @@ -3908,7 +3934,7 @@ msgstr "Berrizendatu erreprodukzio-zerrenda" msgid "Rename playlist..." msgstr "Berrizendatu erreprodukzio-zerrenda..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Zenbakitu berriro pistak ordena honetan..." @@ -3999,6 +4025,18 @@ msgstr "Clementine-ra itzuli" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Kendu gailua arriskurik gabe" msgid "Safely remove the device after copying" msgstr "Kopiatu ondoren kendu gailua arriskurik gabe" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Lagintze-tasa" @@ -4053,7 +4091,7 @@ msgstr "Gorde irudia" msgid "Save playlist" msgstr "Gorde erreprodukzio-zerrenda" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Gorde erreprodukzio-zerrenda..." @@ -4089,7 +4127,7 @@ msgstr "Lagintze-tasa eskalagarriaren profila (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuazioa" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Entzuten ditudan pistak partekatu" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Oraingo pistan mugitu posizio erlatibo baten arabera" msgid "Seek the currently playing track to an absolute position" msgstr "Oraingo pistan mugitu posizio absolutu baten arabera" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Hautatu dena" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ez hautatu ezer" @@ -4214,7 +4252,7 @@ msgstr "Hautatu bistaratzeak" msgid "Select visualizations..." msgstr "Hautatu bistaratzeak..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "Zerbitzariaren xehetasunak" msgid "Service offline" msgstr "Zerbitzua lineaz kanpo" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ezarri %1 \"%2\"-(e)ra..." @@ -4243,7 +4281,7 @@ msgstr "Ezarri %1 \"%2\"-(e)ra..." msgid "Set the volume to percent" msgstr "Ezarri bolumena ehuneko -ra" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Ezarri balioa aukeratutako pista guztiei..." @@ -4306,7 +4344,7 @@ msgstr "Erakutsi OSD itxurosoa" msgid "Show above status bar" msgstr "Erakutsi egoera-barraren gainean" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Erakutsi abesti guztiak" @@ -4326,12 +4364,12 @@ msgstr "Erakutsi zatitzaileak" msgid "Show fullsize..." msgstr "Erakutsi tamaina osoan..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Erakutsi fitxategi arakatzailean..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "Erakutsi hainbat artista" msgid "Show moodbar" msgstr "Aldarte-barra erakutsi" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Erakutsi bakarrik errepikapenak" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Erakutsi etiketa gabeak bakarrik" @@ -4387,7 +4425,7 @@ msgstr "Albumak nahastu" msgid "Shuffle all" msgstr "Dena nahastu" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Erreprodukzio-zerrenda nahastu" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Saltatu atzerantz erreprodukzio-zerrendan" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Saltatu kontagailua" @@ -4463,7 +4501,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Abestiaren informazioa" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Abes. infor." @@ -4495,7 +4533,7 @@ msgstr "Ordenatu abestiak honen arabera" msgid "Sorting" msgstr "Ordenatzen" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Iturria" @@ -4531,6 +4569,10 @@ msgstr "Estandarra" msgid "Starred" msgstr "Izarduna(k)" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Hasi oraingo erreprodukzio-zerrenda" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Hasi idazten aurreko bilaketa eremuan emaitzak jaso ahal izateko" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 hasten" @@ -4559,7 +4601,7 @@ msgstr "Hasten..." msgid "Stations" msgstr "Irratiak" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Gelditu" @@ -4568,7 +4610,7 @@ msgstr "Gelditu" msgid "Stop after" msgstr "Ondoren gelditu" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Gelditu pista honen ondoren" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Fitxategi hauek gailutik ezabatuko dira, jarraitu nahi duzu?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Jario hau ordainpeko harpidedunentzat da bakarrik" msgid "This type of device is not supported: %1" msgstr "Gailu mota hau ez da onartzen :%1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Izenburua" @@ -4873,11 +4916,11 @@ msgstr "Txandakatu OSD itxurosoa" msgid "Toggle fullscreen" msgstr "Txandakatu pantaila-osoa" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Txandakatu ilara-egoera" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Txandakatu partekatzea" @@ -4909,12 +4952,13 @@ msgstr "Transferituriko byte-ak guztira" msgid "Total network requests made" msgstr "Eginiko sareko eskaerak guztira" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transkodetu musika" @@ -5012,7 +5056,7 @@ msgstr "Grooveshark erreprodukzio-zerrenda eguneratu" msgid "Update all podcasts" msgstr "Eguneratu podcast guztiak" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Eguneratu bildumako aldatutako karpetak" @@ -5167,7 +5211,7 @@ msgstr "Ikusi" msgid "Visualization mode" msgstr "Bistaratze-modua" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Bistaratzeak" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Beste abestiak ere Hainbat artistara mugitzea nahi duzu?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Berreskaneo osoa orain egitea nahi duzu?" @@ -5307,10 +5351,10 @@ msgstr "" msgid "Wrong username or password." msgstr "Erabiltzailea edo pasahitza ez da zuzena." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Urtea" diff --git a/src/translations/fa.po b/src/translations/fa.po index 5771b62fa..6bf330f9c 100644 --- a/src/translations/fa.po +++ b/src/translations/fa.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/clementine/language/fa/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&میانه" msgid "&Custom" msgstr "&سفارشی‌" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "ا&فزونه‌ها" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&راهنما" @@ -191,7 +191,7 @@ msgstr "&پنهاندن..." msgid "&Left" msgstr "&چپ‌" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "آ&هنگ" @@ -199,15 +199,15 @@ msgstr "آ&هنگ" msgid "&None" msgstr "&هیچ‌کدام‌" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&برونرفتن" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "سبک &تکرار" @@ -215,7 +215,7 @@ msgstr "سبک &تکرار" msgid "&Right" msgstr "&راست‌" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "سبک &درهم" @@ -223,7 +223,7 @@ msgstr "سبک &درهم" msgid "&Stretch columns to fit window" msgstr "&کشیدن ستون‌ها برای پرکردن پنجره" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&ابزارها‌" @@ -368,11 +368,11 @@ msgstr "" msgid "About %1" msgstr "درباره‌ی %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "درباره‌ی کلمنتاین..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "درباره‌ی کیو‌ت..." @@ -420,19 +420,19 @@ msgstr "افزودن جریان دیگر..." msgid "Add directory..." msgstr "افزودن پوشه..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "افزودن پرونده" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "افزودن پرونده..." @@ -440,11 +440,11 @@ msgstr "افزودن پرونده..." msgid "Add files to transcode" msgstr "افزودن پرونده‌ها به تراکد" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "افزودن پوشه" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "افزودن پوشه..." @@ -456,7 +456,7 @@ msgstr "افزودن پوشه‌ی نو..." msgid "Add podcast" msgstr "افزودن پادکست" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "افزودن پادکست..." @@ -532,7 +532,7 @@ msgstr "افزودن برچسب ترک آهنگ" msgid "Add song year tag" msgstr "افزودن برچسب سال آهنگ" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "افزودن جریان..." @@ -544,7 +544,7 @@ msgstr "افزودن به دلخواه گرووشارک" msgid "Add to Grooveshark playlists" msgstr "افزودن به لیست‌پخش‌های گرووشارک" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "افزودن به لیست‌پخش دیگر" @@ -605,12 +605,12 @@ msgstr "پس از" msgid "After copying..." msgstr "پس از کپی‌کردن..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "آلبوم" @@ -618,7 +618,7 @@ msgstr "آلبوم" msgid "Album (ideal loudness for all tracks)" msgstr "آلبوم (بلندی صدای ایده‌آل برای همه‌ی ترک‌ها)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "آلبوم‌های با جلد" msgid "Albums without covers" msgstr "آلبوم‌های بدون جلد" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "همه‌ی پرونده‌ها(*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "همه‌ی افتخار برای Hypnotoad!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "هنرمند" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "اطلاعات هنرمند" @@ -797,7 +797,7 @@ msgstr "برچسب هنرمند" msgid "Artist's initial" msgstr "حرف اول هنرمند" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "گونه‌ی آوا" @@ -843,7 +843,7 @@ msgstr "میانگین اندازه‌ی فرتور" msgid "BBC Podcasts" msgstr "پادکست بی‌بی‌سی" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ض.د.د" @@ -872,7 +872,7 @@ msgstr "پشتیبان‌گیری از پایگاه داده" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "تحریم" @@ -901,7 +901,7 @@ msgstr "بهترین" msgid "Biography from %1" msgstr "بیوگرافی از %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ضرب آهنگ" @@ -1007,7 +1007,7 @@ msgstr "تغییر ترجیح‌های بازپخش مونو برای آهنگ msgid "Check for new episodes" msgstr "بررسی برای داستان‌های تازه" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "بررسی به‌روز رسانی..." @@ -1057,11 +1057,11 @@ msgstr "پالایش" msgid "Clear" msgstr "پاک کن" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "پاک کردن لیست‌پخش" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "برای سویچ بین زمان رفته و زمان باقیمانده، اینجا را کلیک کنید" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "رنگ" msgid "Comma separated list of class:level, level is 0-3" msgstr "لیست مجزا بوسیله‌ی ویرگول از کلاس:طبقه، طبقه ۰-۳ است" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "توضیح" @@ -1200,11 +1200,11 @@ msgstr "توضیح" msgid "Complete tags automatically" msgstr "تکمیل خودکار برچسب‌ها" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "تکمیل خودکار برچسب‌ها..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "پیکربندی ساب‌سونیک..." msgid "Configure global search..." msgstr "پیکربندی جستجوی سراسری..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "پیکربندی کتابخانه..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "پیشانه" @@ -1300,12 +1300,12 @@ msgstr "برگردان تمام آهنگ‌هایی که دستگاه نمی‌ msgid "Copy to clipboard" msgstr "کپی به کلیپ‌بورد" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "کپی‌کردن در دستگاه..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "کپی‌کردن در کتابخانه..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "نمی‌توانم عنصر «%1» از GStream را بسازم - مطمئن شوید که همه‌ی افزونه‌های مورد نیاز GStream را نصب کرده‌اید" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "نمی‌توانم موکسر را برای %1 پیدا کنم، بررسی کنید که افزونه‌ی مناسب GStream را نصب کرده‌اید" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "نمی‌توانم پرونده‌ی بروندادی %1 را باز کنم" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "مدیریت جلد" @@ -1395,11 +1395,11 @@ msgstr "پژمردن آهنگ زمانی که ترک‌ها خودکار تغی msgid "Cross-fade when changing tracks manually" msgstr "پژمردن آهنگ زمانی که ترک‌ها دستی تغییر می‌کنند" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "خرابی در پایگاه داده شناسایی شد. خواهشمندم دستور کار زدودن این خطا را در این نشانی بخوانید: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "تاریخ ساخت" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "تاریخ بازسازی" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "پاک‌کردن دانستنی‌های بارگیری شده" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "پاک کردن پرونده‌ها" @@ -1568,7 +1568,7 @@ msgstr "پاک کردن پرونده‌ها" msgid "Delete from device..." msgstr "پاک کردن از دستگاه..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "پاک کردن از دیسک..." @@ -1593,15 +1593,16 @@ msgstr "پاک کردن اصل پرونده‌ها" msgid "Deleting files" msgstr "پاک کردن پرونده‌ها" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "صف‌بندی دوباره‌ی ترک‌های برگزیده" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "صف‌بندی دوباره‌ی ترک" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "مقصد" @@ -1625,10 +1626,14 @@ msgstr "نام دستگاه" msgid "Device properties..." msgstr "ویژگی‌های دستگاه..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "‌دستگاه‌ها" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "منظورت این بود که" @@ -1667,8 +1672,8 @@ msgstr "ناپویا کردن ساخت میله‌ی مود" msgid "Disabled" msgstr "ناپویا شد" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "دیسک" @@ -1685,7 +1690,7 @@ msgstr "گزینه‌های نمایش" msgid "Display the on-screen-display" msgstr "نمایش نمایش پرده‌ای" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "انجام وارسی دوباره‌ی کامل کتابخانه" @@ -1807,6 +1812,10 @@ msgstr "دراپ‌باکس" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "سبک دینامیک پویاست" @@ -1819,12 +1828,12 @@ msgstr "درهم‌ریختن تصادفی دینامیک" msgid "Edit smart playlist..." msgstr "ویرایش لیست‌پخش هوشمند..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "ویرایش برچسب..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "ویرایش دانستنی‌های ترک" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "ویرایش دانستنی‌های ترک..." @@ -1938,7 +1947,7 @@ msgstr "" msgid "Entire collection" msgstr "همه‌ی مجموعه" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "برابرساز" @@ -1952,7 +1961,7 @@ msgstr "برابر است با --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "خطا" @@ -1972,7 +1981,7 @@ msgstr "خطا در پاک کردن آهنگ‌ها" msgid "Error downloading Spotify plugin" msgstr "خطا در بارگیری افزونه‌ی Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "خطا در فراخوانی %1" @@ -1982,12 +1991,12 @@ msgstr "خطا در فراخوانی %1" msgid "Error loading di.fm playlist" msgstr "خطا در بارگیری لیست پخش di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "خطای پردازش %1:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "خطا هنگام فراخوانی سی‌دی آوایی" @@ -2065,27 +2074,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "پژمردن" msgid "Fading duration" msgstr "زمان پژمردن" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "ناتوان در واکشی پوشه" @@ -2163,6 +2176,10 @@ msgstr "واکشی کتابخانه‌ی ساب‌سونیک" msgid "Fetching cover error" msgstr "خطای واکشی جلد" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "پسوند پرونده" @@ -2171,19 +2188,19 @@ msgstr "پسوند پرونده" msgid "File formats" msgstr "گونه‌ی پرونده" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "نام پرونده" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "نام پرونده (بدون مسیر)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "اندازه پرونده" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "گونه‌ی پرونده" msgid "Filename" msgstr "نام‌پرونده" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "پرونده‌ها" @@ -2313,9 +2330,10 @@ msgstr "عمومی" msgid "General settings" msgstr "تنظیم‌های عمومی" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "ژانر" @@ -2347,11 +2365,11 @@ msgstr "نامی به آن دهید:" msgid "Go" msgstr "برو" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "برو به نوار پسین لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "برو به نوار پیشین لیست‌پخش" @@ -2421,7 +2439,7 @@ msgstr "ژانر/آلبوم" msgid "Group by Genre/Artist/Album" msgstr "ژانر/هنرمند/آلبوم" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2576,6 +2594,10 @@ msgstr "نمایه‌گذاری %1" msgid "Information" msgstr "اطلاعات" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "قرار دادن..." @@ -2588,7 +2610,7 @@ msgstr "نصب شد" msgid "Integrity check" msgstr "بررسی درستی" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "اینترنت" @@ -2628,6 +2650,10 @@ msgstr "کلید جلسه‌ی نامعتبر" msgid "Invalid username and/or password" msgstr "شناسه و/یا گذرواژه‌ی نادرست" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "جامندو" @@ -2652,7 +2678,7 @@ msgstr "ترک‌های برتر هفته‌ی جامندو" msgid "Jamendo database" msgstr "پایگاه داده‌ی جامندو" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "پرش به ترک در حال پخش" @@ -2676,7 +2702,7 @@ msgstr "پخش را در پس‌زمینه ادامه بده زمانی که پ msgid "Keep the original files" msgstr "اصل پرونده‌ها را نگه دار" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "توله گربه‌ها" @@ -2700,7 +2726,7 @@ msgstr "جلد آلبوم بزرگ" msgid "Large sidebar" msgstr "میله‌ی کناری بزرگ" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "پخش پایانی" @@ -2783,12 +2809,12 @@ msgstr "برای پیش‌نشان، تهی رها کنید. مثال: \"/dev/ msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "طول" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "کتابخانه" @@ -2796,7 +2822,7 @@ msgstr "کتابخانه" msgid "Library advanced grouping" msgstr "گروه‌بندی پیشرفته‌ی کتابخانه" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "آگاه‌سازی پویش دوباره‌ی کتابخانه" @@ -2841,7 +2867,7 @@ msgstr "بارگیری جلدها از دیسک" msgid "Load playlist" msgstr "بارگیری لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "بارگیری لیست‌پخش..." @@ -2870,11 +2896,11 @@ msgstr "بارگیری آهنگ‌ها" msgid "Loading stream" msgstr "بارگیری جریان" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "بارگیری ترک" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "بارگیری اطلاعات ترک‌ها" @@ -2893,10 +2919,10 @@ msgstr "بارگیری پرونده‌ها/نشانی‌ها، جانشانی د #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "ورود به سیستم" @@ -2908,7 +2934,7 @@ msgstr "ورود شکست خورد" msgid "Long term prediction profile (LTP)" msgstr "نمایه‌ی پیش‌بینی بلندمدت" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "عشق" @@ -2971,7 +2997,7 @@ msgstr "بارگیری مگناتیون پایان یافت" msgid "Main profile (MAIN)" msgstr "نمایه‌ی اصلی (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "همین‌جوریش کن!" @@ -3054,7 +3080,7 @@ msgstr "پخش مونو" msgid "Months" msgstr "ماه" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "مود" @@ -3084,7 +3110,7 @@ msgstr "سوارگاه‌ها" msgid "Move down" msgstr "پایین بردن" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "جابه‌جایی به کتابخانه..." @@ -3093,7 +3119,7 @@ msgstr "جابه‌جایی به کتابخانه..." msgid "Move up" msgstr "بالا بردن" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "آهنگ" @@ -3101,7 +3127,7 @@ msgstr "آهنگ" msgid "Music Library" msgstr "کتابخانه‌ی آهنگ" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "بی‌صدا" @@ -3189,7 +3215,7 @@ msgstr "هرگز آغاز به پخش نمی‌کند" msgid "New folder" msgstr "پوشه‌ی تازه" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "لیست‌پخش تازه" @@ -3213,7 +3239,7 @@ msgstr "تازه‌ترین ترک‌ها" msgid "Next" msgstr "پسین" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "ترک پسین" @@ -3252,7 +3278,7 @@ msgstr "بدون بلوک‌های کوتاه" msgid "None" msgstr "هیچ‌کدام" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "هیچ‌کدام از آهنگ‌های برگزیده مناسب کپی کردن در دستگاه نیستند" @@ -3370,7 +3396,7 @@ msgstr "تاری" msgid "Open %1 in browser" msgstr "گشودن %1 در مرورگر" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "گشودن &سی‌دی آوایی..." @@ -3386,7 +3412,7 @@ msgstr "گشودن پرونده‌ی اوپی‌ام‌ال..." msgid "Open device" msgstr "گشودن دستگاه" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "گشودن پرونده..." @@ -3421,7 +3447,7 @@ msgstr "بهینه‌سازی ضرباهنگ" msgid "Optimize for quality" msgstr "بهینه‌سازی کیفیت" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "گزینه‌ها..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "سازماندهی پرونده‌ها" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "سازماندهی پرونده‌ها..." @@ -3457,7 +3483,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "گزینه‌های بروندادی" @@ -3498,7 +3524,7 @@ msgstr "مهمانی" msgid "Password" msgstr "گذرواژه" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "درنگ" @@ -3511,7 +3537,7 @@ msgstr "درنگ پخش" msgid "Paused" msgstr "درنگ‌شده" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3524,9 +3550,9 @@ msgstr "" msgid "Plain sidebar" msgstr "میله‌کنار ساده" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "پخش" @@ -3539,7 +3565,7 @@ msgstr "پخش هنرمند یا برچسب" msgid "Play artist radio..." msgstr "پخش رادیوی هنرمند..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "شمار پخش" @@ -3594,7 +3620,7 @@ msgstr "گزینه‌های لیست‌پخش" msgid "Playlist type" msgstr "سبک لیست‌پخش" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "لیست‌های پخش" @@ -3646,7 +3672,7 @@ msgstr "پیش‌تقویت" msgid "Preferences" msgstr "تنظیم‌ها" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "تنظیم‌ها..." @@ -3701,7 +3727,7 @@ msgstr "پيش‌نمايش" msgid "Previous" msgstr "پیشین" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "ترک پیشین" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "نمایه" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "پیشرفت" @@ -3744,16 +3770,16 @@ msgstr "کیفیت" msgid "Querying device..." msgstr "جستجوی دستگاه..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "مدیر به‌خط کردن" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "به‌خط کردن ترک‌های گزیده" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "به‌خط کردن ترک" @@ -3765,7 +3791,7 @@ msgstr "رادیو (بلندی یکسان برای همه‌ی ترک‌ها)" msgid "Radios" msgstr "رادیوها" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "باران" @@ -3797,7 +3823,7 @@ msgstr "رتبه‌ی آهنگ جاری را چهار ستاره کن" msgid "Rate the current song 5 stars" msgstr "رتبه‌ی آهنگ جاری را پنج ستاره کن" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "رتبه‌بندی" @@ -3855,7 +3881,7 @@ msgstr "پاک کردن" msgid "Remove action" msgstr "پاک کردن عملیات" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "پاک‌کردن تکراری‌ها از لیست‌پخش" @@ -3871,7 +3897,7 @@ msgstr "پاک‌کردن از آهنگ‌های من" msgid "Remove from favorites" msgstr "پاک‌کردن از دلخواه" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "از لیست‌پخش پاک کن" @@ -3908,7 +3934,7 @@ msgstr "لیست‌پخش را دوباره نامگذاری کن" msgid "Rename playlist..." msgstr "لیست‌پخش را دوباره نامگذاری کن..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "ترک‌ها را به این ترتیب دوباره شماره‌گذاری کن..." @@ -3999,6 +4025,18 @@ msgstr "برگشتن به کلمنتاین" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "راک" @@ -4025,7 +4063,7 @@ msgstr "دستگاه را با امنیت پاک کن" msgid "Safely remove the device after copying" msgstr "دستگاه را پس از کپی، با امنیت پاک کن" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "الگوی ضرباهنگ" @@ -4053,7 +4091,7 @@ msgstr "ذخیره‌ی فرتور" msgid "Save playlist" msgstr "ذخیره‌ی لیست‌پخش" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "ذخیره‌ی لیست‌پخش..." @@ -4089,7 +4127,7 @@ msgstr "نمایه‌ی الگوی ضرباهنگ سنجه‌پذیر (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "امتیاز" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "وارانی ترک‌هایی که گوش می‌دهم" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "جستجوی ترک در حال پخش بوسیله‌ی مقداری ن msgid "Seek the currently playing track to an absolute position" msgstr "جستجوی ترک در حال پخش به یک جایگاه ویژه" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "گزینش همه" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "برگزیدن هیچ‌کدام" @@ -4214,7 +4252,7 @@ msgstr "گزینش فرتورسازها" msgid "Select visualizations..." msgstr "گزینش فرتورسازها..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "جزئیات سرور" msgid "Service offline" msgstr "سرویس برون‌خط" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 را برابر \"%2‌\"قرار بده..." @@ -4243,7 +4281,7 @@ msgstr "%1 را برابر \"%2‌\"قرار بده..." msgid "Set the volume to percent" msgstr "بلندی صدا را برابر درصد قرار بده" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "این مقدار را برای همه‌ی ترک‌های گزیده قرار بده..." @@ -4306,7 +4344,7 @@ msgstr "نمایش یک OSD زیبا" msgid "Show above status bar" msgstr "نمایش در بالای میله‌ی وضعیت" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "نمایش همه‌ی آهنگ‌ها" @@ -4326,12 +4364,12 @@ msgstr "نمایش جداسازها" msgid "Show fullsize..." msgstr "نمایش اندازه‌ی کامل..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "نمایش در مرورگر پرونده..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "نمایش در هنرمندان گوناگون" msgid "Show moodbar" msgstr "نمایش میله‌مود" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "نمایش تنها تکراری‌ها" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "نمایش تنها بی‌برچسب‌ها" @@ -4387,7 +4425,7 @@ msgstr "برزدن آلبوم‌ها" msgid "Shuffle all" msgstr "پخش درهم همه" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "پخش درهم لیست‌پخش" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "پرش پس در لیست‌پخش" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "پرش شمار" @@ -4463,7 +4501,7 @@ msgstr "راک ملایم" msgid "Song Information" msgstr "اطلاعات آهنگ" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "اطلاعات آهنگ" @@ -4495,7 +4533,7 @@ msgstr "مرتب‌سازی آهنگ‌ها برپایه‌ی" msgid "Sorting" msgstr "مرتب‌سازی" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "سرچشمه" @@ -4531,6 +4569,10 @@ msgstr "استاندارد" msgid "Starred" msgstr "ستاره‌دار" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "شروع لیست‌پخش در حال پخش" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "چیزی در جعبه‌ی جستجوی بالا بنویسید تا این لیست دستاوردهای جستجو را پرکنید" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "شروع %1" @@ -4559,7 +4601,7 @@ msgstr "شروع..." msgid "Stations" msgstr "ایستگاه‌ها" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "ایست" @@ -4568,7 +4610,7 @@ msgstr "ایست" msgid "Stop after" msgstr "ایست پس از" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "ایست پس از این آهنگ" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "زمان آزمایشی سرور ساب‌سونیک پایان یافته است. خواهش می‌کنیم هزینه‌ای را کمک کنید تا کلید پروانه را دریافت کنید. برای راهنمایی انجام کار تارنمای subsonic.org را ببینید." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "این پرونده‌ها از دستگاه پاک خواهند شد، آیا مطمئنید که می‌خواهید ادامه دهید؟" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "این جریان تنها برای مشترکان پولی است" msgid "This type of device is not supported: %1" msgstr "این گونه از دستگاه پشتیبانی نمی‌شود: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "عنوان" @@ -4873,11 +4916,11 @@ msgstr "تبدیل به OSD زیبا" msgid "Toggle fullscreen" msgstr "تبدیل به تمام‌صفحه" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "تبدیل به وضعیت صف" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "تبدیل به وارانی" @@ -4909,12 +4952,13 @@ msgstr "همه‌ی بایت‌های ارسال شده" msgid "Total network requests made" msgstr "همه‌ی درخواست‌های شبکه انجام شد" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "ترک" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "آهنگ‌های تراکد" @@ -5012,7 +5056,7 @@ msgstr "به‌روز رسانی لیست‌پخش گرووشارک" msgid "Update all podcasts" msgstr "به‌روز رسانی همه‌ی پادکست‌ها" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "تغییرات پوشه‌های کتابخانه را به‌روز برسان" @@ -5167,7 +5211,7 @@ msgstr "نما" msgid "Visualization mode" msgstr "روش فرتورسازی" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "فرتورسازی‌ها" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "آیا می‌خواهید آهنگ‌های دیگر در این آلبوم را به «هنرمندان گوناگون» تراببرید؟" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "آیا مایل هستید که الان بازبینی کامل انجام دهید؟" @@ -5307,10 +5351,10 @@ msgstr "" msgid "Wrong username or password." msgstr "شناسه و گذرواژه‌ی نادرست" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "سال" diff --git a/src/translations/fi.po b/src/translations/fi.po index 86b736512..c1c718cd1 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-13 08:49+0000\n" +"PO-Revision-Date: 2014-01-27 05:57+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/clementine/language/fi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&Keskelle" msgid "&Custom" msgstr "&Oma" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Extrat" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Ohje" @@ -191,7 +191,7 @@ msgstr "Piilota..." msgid "&Left" msgstr "&Vasemmalle" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Musiikki" @@ -199,15 +199,15 @@ msgstr "Musiikki" msgid "&None" msgstr "&Ei mitään" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Soittolista" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Lopeta" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Kertaa" @@ -215,7 +215,7 @@ msgstr "Kertaa" msgid "&Right" msgstr "&Oikealle" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Sekoita" @@ -223,7 +223,7 @@ msgstr "Sekoita" msgid "&Stretch columns to fit window" msgstr "&Sovita sarakkeet ikkunan leveyteen" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Työkalut" @@ -368,11 +368,11 @@ msgstr "Keskeytä" msgid "About %1" msgstr "Tietoja - %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Tietoja - Clementine" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Tietoja - Qt" @@ -420,19 +420,19 @@ msgstr "Lisää toinen suoratoisto..." msgid "Add directory..." msgstr "Lisää kansio..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Lisää tiedosto" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Lisää tiedosto muuntajaan" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Lisää tiedosto(ja) muuntajaan" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Lisää tiedosto..." @@ -440,11 +440,11 @@ msgstr "Lisää tiedosto..." msgid "Add files to transcode" msgstr "Lisää tiedostoja muunnettavaksi" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Lisää kansio" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Lisää kansio..." @@ -456,7 +456,7 @@ msgstr "Lisää uusi kansio..." msgid "Add podcast" msgstr "Lisää podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Lisää podcast..." @@ -532,7 +532,7 @@ msgstr "Lisää tunniste " msgid "Add song year tag" msgstr "Lisää tunniste kappaleen levytys vuosi" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Lisää suoratoisto..." @@ -544,7 +544,7 @@ msgstr "Lisää Grooveshark-suosikkeihin" msgid "Add to Grooveshark playlists" msgstr "Lisää Grooveshark-soittolistaan" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Lisää toiseen soittolistaan" @@ -605,12 +605,12 @@ msgstr "Jälkeen" msgid "After copying..." msgstr "Kopioinnin jälkeen..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Levy" @@ -618,7 +618,7 @@ msgstr "Levy" msgid "Album (ideal loudness for all tracks)" msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Levyt kansikuvineen" msgid "Albums without covers" msgstr "Levyt vailla kansikuvia" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Kaikki tiedostot (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Kaikki kunnia Hypnotoadille!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "Oletko varma että haluat kirjoittaa kaikkien kirjastosi kappleiden tilastot suoraan kirjastosi tiedostoihin?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Esittäjä" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Esittäjätiedot" @@ -797,7 +797,7 @@ msgstr "Esittäjän tunnisteet" msgid "Artist's initial" msgstr "Esittäjän nimen ensimmäinen kirjain" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Äänimuoto" @@ -843,7 +843,7 @@ msgstr "Kuvatiedoston koko keskimäärin" msgid "BBC Podcasts" msgstr "BBC-podcastit" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Varmuuskopioidaan tietokantaa" msgid "Balance" msgstr "Tasapaino" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "En tykkää" @@ -901,7 +901,7 @@ msgstr "Paras" msgid "Biography from %1" msgstr "Biografian tarjoaa %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bittivirta" @@ -1007,7 +1007,7 @@ msgstr "Mono-toistoasetuksen tilan vaihtaminen tulee voimaan seuraavassa kappale msgid "Check for new episodes" msgstr "Tarkista uudet jaksot" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Tarkista päivitykset..." @@ -1057,11 +1057,11 @@ msgstr "Siivoaminen" msgid "Clear" msgstr "Tyhjennä" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Tyhjennä soittolista" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "Napsauta tästä lisätäksesi soittolistan suosikkeihisi, jolloin se ta msgid "Click to toggle between remaining time and total time" msgstr "Napsauta vaihtaaksesi näkymää: aikaa jäljellä / kokonaisaika" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Värit" msgid "Comma separated list of class:level, level is 0-3" msgstr "Pilkuin erotettu lista luokka:taso -määritteitä, jossa taso on väliltä 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentti" @@ -1200,11 +1200,11 @@ msgstr "Kommentti" msgid "Complete tags automatically" msgstr "Täydennä tunnisteet automaattisesti" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Täydennä tunnisteet automaattisesti..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Subsonicin asetukset..." msgid "Configure global search..." msgstr "Muokkaa hakua..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Kirjaston asetukset..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Yhteys aikakatkaistiin, tarkista palvelimen osoite. Esimerkki: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsoli" @@ -1300,12 +1300,12 @@ msgstr "Muuta musiikki, jota laite ei voi muuten toistaa" msgid "Copy to clipboard" msgstr "Kopioi leikepöydälle" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopioi laitteelle..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopioi kirjastoon" @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "GStreamer-elementin \"%1\" luonti epäonnistui - varmista, että kaikki vaaditut GStreamer-liitännäiset on asennettu" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Ei löydetty %1 -multiplekseriä, tarkista että sinulla on oikeat GStreamer-liitännäiset asennettuna" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Ei voitu avata kohdetiedostoa %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Kansikuvaselain" @@ -1395,11 +1395,11 @@ msgstr "Ristiinhäivytä kappaleet, kun kappale vaihtuu automaattisesti" msgid "Cross-fade when changing tracks manually" msgstr "Ristiinhäivytä kappaleet, kun käyttäjä vaihtaa kappaletta" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Tietokannan korruptio havaittu. Lue https://code.google.com/p/clementine-player/wiki/DatabaseCorruption saadaksesi ohjeet tietokannan palauttamiseksi." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Luotu" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Muokattu" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Poista ladattu data" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Poista tiedostot" @@ -1568,7 +1568,7 @@ msgstr "Poista tiedostot" msgid "Delete from device..." msgstr "Poista laitteelta..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Poista levyltä..." @@ -1593,15 +1593,16 @@ msgstr "Poista alkuperäiset tiedostot" msgid "Deleting files" msgstr "Poistetaan tiedostoja" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Poista valitut kappaleet jonosta" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Poista kappale jonosta" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Kohde" @@ -1625,10 +1626,14 @@ msgstr "Laitteen nimi" msgid "Device properties..." msgstr "Laitteen ominaisuudet..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Laitteet" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Tarkoititko" @@ -1667,8 +1672,8 @@ msgstr "Poista mielialan luominen käytöstä" msgid "Disabled" msgstr "Poissa käytöstä" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Levy" @@ -1685,7 +1690,7 @@ msgstr "Näkymäasetukset" msgid "Display the on-screen-display" msgstr "Näytä kuvaruutunäyttö" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Tee kirjaston täydellinen läpikäynti" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Kesto" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynaaminen tila päällä" @@ -1819,12 +1828,12 @@ msgstr "Dynaaminen satunnainen sekoitus" msgid "Edit smart playlist..." msgstr "Muokkaa älykästä soittolistaa..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Muokkaa tunnistetta \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Muokkaa tunnistetta..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Muokkaa kappaleen tietoja" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Muokkaa kappaleen tietoja..." @@ -1938,7 +1947,7 @@ msgstr "Kirjoita tämä IP sovellukseen yhdistääksesi Clementineen." msgid "Entire collection" msgstr "Koko kokoelma" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Taajuuskorjain" @@ -1952,7 +1961,7 @@ msgstr "Vastaa --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Virhe" @@ -1972,7 +1981,7 @@ msgstr "Virhe kappaleita poistaessa" msgid "Error downloading Spotify plugin" msgstr "Virhe ladatessa Spotify-liitännäistä" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Virhe ladattaessa %1" @@ -1982,12 +1991,12 @@ msgstr "Virhe ladattaessa %1" msgid "Error loading di.fm playlist" msgstr "Virhe ladattaessa di.fm soittolistaa" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Virhe käsitellessä %1:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Virhe ladattaessa CD" @@ -2065,27 +2074,27 @@ msgstr "Vienti valmistui" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Vietiin %1/%2 kansikuvaa (%3 ohitettu)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Häivytys" msgid "Fading duration" msgstr "Häivytyksen kesto" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "CD-aseman lukeminen epäonnistui" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Kansion nouto epäonnistui" @@ -2163,6 +2176,10 @@ msgstr "Noudetaan Subsonic-kirjastoa" msgid "Fetching cover error" msgstr "Virhe kansikuvan noudossa" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Tiedostomuoto" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Tiedostopääte" @@ -2171,19 +2188,19 @@ msgstr "Tiedostopääte" msgid "File formats" msgstr "Tiedostomuodot" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Tiedoston nimi (ja polku)" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Tiedostonimi" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tiedostokoko" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Tiedostotyyppi" msgid "Filename" msgstr "Tiedostonimi" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Tiedostot" @@ -2313,9 +2330,10 @@ msgstr "Yleiset" msgid "General settings" msgstr "Yleiset asetukset" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Tyylilaji" @@ -2347,11 +2365,11 @@ msgstr "Anna nimi:" msgid "Go" msgstr "Mene" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Siirry seuraavaan soittolistaan" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Siirry edelliseen soittolistaan" @@ -2421,7 +2439,7 @@ msgstr "Järjestä tyylin/levyn mukaan" msgid "Group by Genre/Artist/Album" msgstr "Järjestä tyylin/esittäjän/levyn mukaan" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ryhmittely" @@ -2576,6 +2594,10 @@ msgstr "Indeksoidaan %1" msgid "Information" msgstr "Tiedot" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Lisää..." @@ -2588,7 +2610,7 @@ msgstr "Asennettu" msgid "Integrity check" msgstr "Eheystarkistus" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Virheellinen istuntoavain" msgid "Invalid username and/or password" msgstr "Virheellinen käyttäjätunnus ja / tai salasana" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "Käänteinen valinta" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Jamendon viikon suosituimmat kappaleet" msgid "Jamendo database" msgstr "Jamendo-tietokanta" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Näytä parhaillaan soiva kappale" @@ -2676,7 +2702,7 @@ msgstr "Pidä käynnissä taustalla, kun ikkuna suljetaan" msgid "Keep the original files" msgstr "Säilytä alkuperäiset tiedostot" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kissanpentuja" @@ -2700,7 +2726,7 @@ msgstr "Suuri kansikuva" msgid "Large sidebar" msgstr "Suuri sivupalkki" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Viimeksi soitettu" @@ -2783,12 +2809,12 @@ msgstr "Jätä tyhjäksi oletusta varten. Esimerkkejä: \"/dev/dsp\", \"front\" msgid "Left" msgstr "Vasen" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kesto" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Kirjasto" @@ -2796,7 +2822,7 @@ msgstr "Kirjasto" msgid "Library advanced grouping" msgstr "Kirjaston tarkennettu ryhmittely" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Ilmoitus kirjaston läpikäynnistä" @@ -2841,7 +2867,7 @@ msgstr "Lataa kansikuva levyltä..." msgid "Load playlist" msgstr "Lataa soittolista" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Lataa soittolista..." @@ -2870,11 +2896,11 @@ msgstr "Ladataan kappaleita" msgid "Loading stream" msgstr "Ladataan suoratoistoa" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Ladataan kappaleita" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Lataa kappaleen tietoja" @@ -2893,10 +2919,10 @@ msgstr "Lataa tiedostoja tai verkko-osoitteita, korvaa samalla nykyinen soittoli #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Kirjaudu sisään" @@ -2908,7 +2934,7 @@ msgstr "Kirjautuminen epäonnistui" msgid "Long term prediction profile (LTP)" msgstr "Long term prediction -profiili (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Tykkää" @@ -2971,7 +2997,7 @@ msgstr "Magnatune-lataus valmistui" msgid "Main profile (MAIN)" msgstr "Oletusprofiili (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Toteuta!" @@ -3054,7 +3080,7 @@ msgstr "Mono-toisto" msgid "Months" msgstr "Kuukautta" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Mieliala" @@ -3084,7 +3110,7 @@ msgstr "Liitoskohdat" msgid "Move down" msgstr "Siirrä alas" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Siirrä kirjastoon..." @@ -3093,7 +3119,7 @@ msgstr "Siirrä kirjastoon..." msgid "Move up" msgstr "Siirrä ylös" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musiikki" @@ -3101,7 +3127,7 @@ msgstr "Musiikki" msgid "Music Library" msgstr "Musiikkikirjasto" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Vaimenna" @@ -3189,7 +3215,7 @@ msgstr "Älä koskaan aloita toistoa" msgid "New folder" msgstr "Uusi kansio" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Uusi soittolista" @@ -3213,7 +3239,7 @@ msgstr "Uusimmat kappaleet" msgid "Next" msgstr "Seuraava" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Seuraava kappale" @@ -3252,7 +3278,7 @@ msgstr "Ei lyhyitä lohkoja" msgid "None" msgstr "Ei mitään" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Yksikään valitsemistasi kappaleista ei sovellu kopioitavaksi laitteelle" @@ -3370,7 +3396,7 @@ msgstr "Läpinäkyvyys" msgid "Open %1 in browser" msgstr "Avaa %1 selaimessa" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Avaa &ääni-CD..." @@ -3386,7 +3412,7 @@ msgstr "Avaa OPML-tiedosto..." msgid "Open device" msgstr "Avaa laite" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Avaa tiedosto..." @@ -3421,7 +3447,7 @@ msgstr "Optimoi bittinopeuteen" msgid "Optimize for quality" msgstr "Optimoi laatuun" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Valinnat..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Hallitse tiedostoja" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Hallitse tiedostoja..." @@ -3457,7 +3483,7 @@ msgstr "Ulostulo" msgid "Output device" msgstr "Äänentoistolaite" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Muunnoksen asetukset" @@ -3498,7 +3524,7 @@ msgstr "Party" msgid "Password" msgstr "Salasana" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Keskeytä" @@ -3511,7 +3537,7 @@ msgstr "Keskeytä toisto" msgid "Paused" msgstr "Keskeytetty" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Esittäjä" @@ -3524,9 +3550,9 @@ msgstr "Pikseli" msgid "Plain sidebar" msgstr "Pelkistetty sivupalkki" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Toista" @@ -3539,7 +3565,7 @@ msgstr "Toista esittäjä tai tunniste" msgid "Play artist radio..." msgstr "Toista esittäjäradio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Soittokertoja" @@ -3594,7 +3620,7 @@ msgstr "Soittolistan valinnat" msgid "Playlist type" msgstr "Soittolistan tyyppi" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Soittolistat" @@ -3646,7 +3672,7 @@ msgstr "Esivahvistus" msgid "Preferences" msgstr "Asetukset" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Asetukset..." @@ -3701,7 +3727,7 @@ msgstr "Esikatselu" msgid "Previous" msgstr "Edellinen" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Edellinen kappale" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Profiili" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Edistyminen" @@ -3744,16 +3770,16 @@ msgstr "Laatu" msgid "Querying device..." msgstr "Kysytään tietoja laitteelta..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Jonohallinta" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Aseta valitut kappaleet jonoon" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Aseta kappale jonoon" @@ -3765,7 +3791,7 @@ msgstr "Radio (sama äänenvoimakkuus kaikille kappaleille)" msgid "Radios" msgstr "Radiot" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Sadetta" @@ -3797,7 +3823,7 @@ msgstr "Arvostele nykyinen kappale 4:n arvoiseksi" msgid "Rate the current song 5 stars" msgstr "Arvostele nykyinen kappale 5:n arvoiseksi" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Arvostelu" @@ -3855,7 +3881,7 @@ msgstr "Poista" msgid "Remove action" msgstr "Poista toiminto" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Poista kaksoiskappaleet soittolistasta" @@ -3871,7 +3897,7 @@ msgstr "Poista musiikkikirjastosta" msgid "Remove from favorites" msgstr "Poista suosikeista" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Poista soittolistalta" @@ -3908,7 +3934,7 @@ msgstr "Nimeä soittolista uudelleen" msgid "Rename playlist..." msgstr "Nimeä soittolista uudelleen..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Numeroi kappaleet tässä järjestyksessä ..." @@ -3999,6 +4025,18 @@ msgstr "Palaa Clementineen" msgid "Right" msgstr "Oikea" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "Kopioi levy" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Kopioi CD:n sisältö" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Kopioi ään-CD..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Poista laite turvallisesti" msgid "Safely remove the device after copying" msgstr "Poista laite turvallisesti kopioinnin jälkeen" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Näytteenottotaajuus" @@ -4053,7 +4091,7 @@ msgstr "Tallenna kuva" msgid "Save playlist" msgstr "Tallenna soittolista" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Tallenna soittolista..." @@ -4089,7 +4127,7 @@ msgstr "Scalable sampling rate -profiili (SSR)" msgid "Scale size" msgstr "Skaalaa koko" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pisteet" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Lähetä kappaletiedot kuuntelemistani kappaleista" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Siirry nykyisessä kappaleessa suhteellinen määrä" msgid "Seek the currently playing track to an absolute position" msgstr "Siirry nykyisessä kappaleessa tiettyyn kohtaan" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Valitse kaikki" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Poista valinnat" @@ -4214,7 +4252,7 @@ msgstr "Valitse visualisoinnit" msgid "Select visualizations..." msgstr "Valitse visualisoinnit..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Valitse..." @@ -4234,7 +4272,7 @@ msgstr "Palvelimen tiedot" msgid "Service offline" msgstr "Ei yhteyttä palveluun" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Aseta %1 %2:een" @@ -4243,7 +4281,7 @@ msgstr "Aseta %1 %2:een" msgid "Set the volume to percent" msgstr "Säädä äänenvoimakkuus prosenttia" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Aseta arvo kaikille valituille kappaleille..." @@ -4306,7 +4344,7 @@ msgstr "Näytä kuvaruutunäyttö" msgid "Show above status bar" msgstr "Näytä tilapalkin yläpuolella" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Näytä kaikki kappaleet" @@ -4326,12 +4364,12 @@ msgstr "Näytä erottimet" msgid "Show fullsize..." msgstr "Näytä oikeassa koossa..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Näytä tiedostoselaimessa..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Näytä kirjastossa..." @@ -4343,11 +4381,11 @@ msgstr "Näytä kohdassa \"Useita esittäjiä\"" msgid "Show moodbar" msgstr "Näytä mielialapalkki" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Näytä vain kaksoiskappaleet" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Näytä vain vailla tunnistetta olevat" @@ -4387,7 +4425,7 @@ msgstr "Sekoita levyt" msgid "Shuffle all" msgstr "Sekoita kaikki" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Sekoita soittolista" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Siirry soittolistan edelliseen kappaleeseen" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Ohituskerrat" @@ -4463,7 +4501,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Kappaletiedot" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Kappaletiedot" @@ -4495,7 +4533,7 @@ msgstr "Järjestä kappaleet" msgid "Sorting" msgstr "Järjestys" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Lähde" @@ -4531,6 +4569,10 @@ msgstr "Normaali" msgid "Starred" msgstr "Tähdellä merkitty" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "Aloita levyn kopiointi" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Kirjoita jotain yllä olevaan hakukenttään täyttääksesi tämän hakutuloslistan" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Aloittaa %1" @@ -4559,7 +4601,7 @@ msgstr "Aloittaa ..." msgid "Stations" msgstr "Asemat" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Pysäytä" @@ -4568,7 +4610,7 @@ msgstr "Pysäytä" msgid "Stop after" msgstr "Lopeta jälkeen" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Pysäytä toistettavan kappaleen jälkeen" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Subsonic-palvelimen kokeiluaika on ohi. Lahjoita saadaksesi lisenssiavaimen. Lisätietoja osoitteessa subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Nämä tiedostot poistetaan laitteelta, haluatko varmasti jatkaa?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Suoratoisto on tarjolla vain maksaville asiakkaille" msgid "This type of device is not supported: %1" msgstr "Tämän tyyppinen laite ei ole tuettu: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nimi" @@ -4873,11 +4916,11 @@ msgstr "Kuvaruutunäyttö päälle / pois" msgid "Toggle fullscreen" msgstr "Koko näytön tila" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Vaihda jonon tila" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Valitse scrobbling" @@ -4909,12 +4952,13 @@ msgstr "Yhteensä tavuja siirretty" msgid "Total network requests made" msgstr "Yhteensä verkko pyyntöjä tehty" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Kappale" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Muunna eri muotoon" @@ -5012,7 +5056,7 @@ msgstr "Päivitä Grooveshark-soittolista" msgid "Update all podcasts" msgstr "Päivitä kaikki podcastit" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Päivitä muuttuneet kirjastokansiot" @@ -5167,7 +5211,7 @@ msgstr "Näkymä" msgid "Visualization mode" msgstr "Visualisointitila" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisoinnit" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Haluatko siirtä albumin muut kappaleet luokkaan \"Useita esittäjiä\"?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Haluatko suorittaa kirjaston läpikäynnin nyt?" @@ -5307,10 +5351,10 @@ msgstr "Kirjoita kaikki kappaletilastot kappaletiedostoihin" msgid "Wrong username or password." msgstr "Väärä käyttäjätunnus tai salasana." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Vuosi" diff --git a/src/translations/fr.po b/src/translations/fr.po index bad00aeb3..bf4a22b7e 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -22,6 +22,7 @@ # hiveNzin0 , 2011 # IrieZion , 2012 # jb78180 , 2012 +# jb78180 , 2014 # jb78180 , 2012 # Marco Tulio Costa , 2012 # evangeneer , 2012 @@ -38,8 +39,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-13 13:08+0000\n" -"Last-Translator: arnaudbienner \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: French (http://www.transifex.com/projects/p/clementine/language/fr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -197,11 +198,11 @@ msgstr "&Centrer" msgid "&Custom" msgstr "&Personnaliser" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Aide" @@ -218,7 +219,7 @@ msgstr "Masquer..." msgid "&Left" msgstr "&Gauche" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musique" @@ -226,15 +227,15 @@ msgstr "&Musique" msgid "&None" msgstr "Aucu&n" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Liste de lecture" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Quitter" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Mode répétition" @@ -242,7 +243,7 @@ msgstr "Mode répétition" msgid "&Right" msgstr "&Droite" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mode aléatoire" @@ -250,7 +251,7 @@ msgstr "Mode aléatoire" msgid "&Stretch columns to fit window" msgstr "Étirer les &colonnes pour s'adapter à la fenêtre" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Outils" @@ -395,11 +396,11 @@ msgstr "Abandonner" msgid "About %1" msgstr "À propos de %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "À propos de Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "À propos de Qt..." @@ -447,19 +448,19 @@ msgstr "Ajouter un autre flux..." msgid "Add directory..." msgstr "Ajouter un dossier..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Ajouter un fichier" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Ajouter des fichiers à transcoder." -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Ajouter des fichiers à transcoder." -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Ajouter un fichier..." @@ -467,11 +468,11 @@ msgstr "Ajouter un fichier..." msgid "Add files to transcode" msgstr "Ajouter des fichiers à transcoder." -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Ajouter un dossier" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Ajouter un dossier..." @@ -483,7 +484,7 @@ msgstr "Ajouter un nouveau dossier..." msgid "Add podcast" msgstr "Ajouter un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Ajouter un podcast..." @@ -559,7 +560,7 @@ msgstr "Ajouter le tag piste du morceau" msgid "Add song year tag" msgstr "Ajouter le tag année du morceau" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Ajouter un flux..." @@ -571,7 +572,7 @@ msgstr "Ajouter aux favoris Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Ajouter aux listes de lectures Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Ajouter à une autre liste de lecture" @@ -632,12 +633,12 @@ msgstr "Après " msgid "After copying..." msgstr "Après avoir copié..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -645,7 +646,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume idéal pour toutes les pistes)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -667,11 +668,11 @@ msgstr "Albums ayant une pochette" msgid "Albums without covers" msgstr "Albums sans pochette" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Gloire au crapaud hypnotique !" @@ -798,17 +799,17 @@ msgid "" "the songs of your library?" msgstr "Êtes-vous sûr de vouloir enregistrer les statistiques du morceau dans le fichier du morceau pour tous les morceaux de votre bibliothèque ?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artiste" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info artiste" @@ -824,7 +825,7 @@ msgstr "Mots-clés de l'artiste" msgid "Artist's initial" msgstr "Initiale de l'artiste" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format audio" @@ -870,7 +871,7 @@ msgstr "Taille moyenne de l'image" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -899,7 +900,7 @@ msgstr "Sauvegarde de la base de données" msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Je déteste" @@ -928,7 +929,7 @@ msgstr "Meilleur" msgid "Biography from %1" msgstr "Biographie de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Débit" @@ -1034,7 +1035,7 @@ msgstr "Le changement de la préférence de lecture monophonique sera effectif p msgid "Check for new episodes" msgstr "Chercher de nouveaux épisodes" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Vérifier les mises à jour" @@ -1084,11 +1085,11 @@ msgstr "Nettoyage en cours" msgid "Clear" msgstr "Effacer" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Vider la liste de lecture" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1179,8 +1180,8 @@ msgstr "Cliquez ici pour ajouter cette liste de lecture aux favoris et elle sera msgid "Click to toggle between remaining time and total time" msgstr "Cliquez pour basculer entre le temps restant et le temps total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1218,7 +1219,7 @@ msgstr "Couleurs" msgid "Comma separated list of class:level, level is 0-3" msgstr "Liste séparée par une virgule des classes:niveau, le niveau étant entre 1 et 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commentaire" @@ -1227,11 +1228,11 @@ msgstr "Commentaire" msgid "Complete tags automatically" msgstr "Compléter les tags automatiquement" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Compléter les tags automatiquement..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1270,7 +1271,7 @@ msgstr "Configurer Subsonic..." msgid "Configure global search..." msgstr "Configurer la recherche globale..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurer votre bibliothèque..." @@ -1307,7 +1308,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Connexion expirée. Vérifiez l'URL du serveur. Exemple : http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Console" @@ -1327,12 +1328,12 @@ msgstr "Convertir la musique que le périphérique ne peut pas lire" msgid "Copy to clipboard" msgstr "Copier dans le presse papier" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copier sur le périphérique" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copier vers la bibliothèque..." @@ -1354,14 +1355,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Impossible de créer l'élément GStreamer « %1 » - vérifier que les modules externes GStreamer nécessaires sont installés." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Impossible de trouver un multiplexeur pour %1, vérifiez que les bons modules externes GStreamer sont installés." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1378,7 +1379,7 @@ msgid "Couldn't open output file %1" msgstr "Impossible d'ouvrir le fichier de sortie %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestionnaire de pochettes" @@ -1422,11 +1423,11 @@ msgstr "Appliquer un fondu lors des changements de piste automatiques" msgid "Cross-fade when changing tracks manually" msgstr "Appliquer un fondu lors des changements de piste manuels" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1434,63 +1435,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1533,11 +1534,11 @@ msgid "" "recover your database" msgstr "Une corruption de la base de données a été détectée. Veuillez lire https://code.google.com/p/clementine-player/wiki/DatabaseCorruption pour obtenir des informations sur la restauration de votre base de données." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date de création" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date de modification" @@ -1587,7 +1588,7 @@ msgid "Delete downloaded data" msgstr "Effacer les données téléchargées" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Supprimer les fichiers" @@ -1595,7 +1596,7 @@ msgstr "Supprimer les fichiers" msgid "Delete from device..." msgstr "Supprimer du périphérique..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Supprimer du disque..." @@ -1620,15 +1621,16 @@ msgstr "Supprimer les fichiers originaux" msgid "Deleting files" msgstr "Suppression des fichiers" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Enlever les pistes sélectionnées de la file d'attente" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Enlever cette piste de la file d'attente" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1652,10 +1654,14 @@ msgstr "Nom du périphérique" msgid "Device properties..." msgstr "Propriétés du périphérique..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Périphériques" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Dialogue" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Essayez avec cette orthographe" @@ -1694,8 +1700,8 @@ msgstr "Désactiver la génération des barres d'humeur" msgid "Disabled" msgstr "Désactivées" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD" @@ -1712,7 +1718,7 @@ msgstr "Options d'affichage" msgid "Display the on-screen-display" msgstr "Afficher le menu à l'écran" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Refaire une analyse complète de la bibliothèque" @@ -1834,6 +1840,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Durée" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Le mode dynamique est activé" @@ -1846,12 +1856,12 @@ msgstr "Mix aléatoire dynamique" msgid "Edit smart playlist..." msgstr "Éditer la liste de lecture intelligente..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Modifier le tag « %1 »..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Modifier le tag..." @@ -1864,7 +1874,7 @@ msgid "Edit track information" msgstr "Modifier la description de la piste" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Modifier la description de la piste..." @@ -1965,7 +1975,7 @@ msgstr "Saisissez cette adresse IP dans l'application pour vous connecter à Cle msgid "Entire collection" msgstr "Collection complète" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Égaliseur" @@ -1979,7 +1989,7 @@ msgstr "Equivalent à --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Erreur" @@ -1999,7 +2009,7 @@ msgstr "Erreur lors de la suppression des morceaux" msgid "Error downloading Spotify plugin" msgstr "Erreur lors du téléchargement du module Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Erreur lors du chargement de %1" @@ -2009,12 +2019,12 @@ msgstr "Erreur lors du chargement de %1" msgid "Error loading di.fm playlist" msgstr "Erreur du chargement de la liste de lecture di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Erreur lors du traitement de %1 : %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Erreur durant le chargement du CD audio" @@ -2092,27 +2102,27 @@ msgstr "Export terminé" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%1 pochettes exportées sur %2 (%3 ignorées)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2139,6 +2149,10 @@ msgstr "Fondu" msgid "Fading duration" msgstr "Durée du fondu" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Échec lors de la lecture du CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "La récupération du répertoire a échoué" @@ -2190,6 +2204,10 @@ msgstr "Récupération de la bibliothèque Subsonic" msgid "Fetching cover error" msgstr "Erreur lors de la récupération de la pochette" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Format de fichier" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extension de fichier" @@ -2198,19 +2216,19 @@ msgstr "Extension de fichier" msgid "File formats" msgstr "Formats de fichier" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fichier" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Fichier (sans le chemin)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Taille du fichier" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2220,7 +2238,7 @@ msgstr "Type de fichier" msgid "Filename" msgstr "Nom du fichier" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fichiers" @@ -2340,9 +2358,10 @@ msgstr "Général" msgid "General settings" msgstr "Configuration générale" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2374,11 +2393,11 @@ msgstr "Donner un nom" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Aller à la liste de lecture suivante" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Aller à la liste de lecture précédente" @@ -2448,7 +2467,7 @@ msgstr "Grouper par Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Grouper par Genre/Artiste/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groupement" @@ -2603,6 +2622,10 @@ msgstr "Indexation de %1" msgid "Information" msgstr "Information" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Insérer..." @@ -2615,7 +2638,7 @@ msgstr "Installé" msgid "Integrity check" msgstr "Vérification de l'intégrité" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2655,6 +2678,10 @@ msgstr "Clé de session invalide" msgid "Invalid username and/or password" msgstr "Nom d'utilisateur et / ou mot de passe invalide" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2679,7 +2706,7 @@ msgstr "Meilleurs morceaux Jamendo de la semaine" msgid "Jamendo database" msgstr "Base de données Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Aller à la piste jouée actuellement" @@ -2703,7 +2730,7 @@ msgstr "Laisser tourner en arrière plan lorsque la fenêtre est fermée" msgid "Keep the original files" msgstr "Conserver les fichiers originaux" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Chatons" @@ -2727,7 +2754,7 @@ msgstr "Grande pochette d'album" msgid "Large sidebar" msgstr "Barre latérale large" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Dernière écoute" @@ -2810,12 +2837,12 @@ msgstr "Laisser vide pour les paramètres par défaut. Exemples : \"/dev/dsp\", msgid "Left" msgstr "Gauche" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durée" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliothèque" @@ -2823,7 +2850,7 @@ msgstr "Bibliothèque" msgid "Library advanced grouping" msgstr "Groupement avancé de la bibliothèque" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Avertissement de mise à jour de la bibliothèque" @@ -2868,7 +2895,7 @@ msgstr "Charger la pochette depuis le disque..." msgid "Load playlist" msgstr "Charger une liste de lecture" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Charger une liste de lecture..." @@ -2897,11 +2924,11 @@ msgstr "Chargement des morceaux" msgid "Loading stream" msgstr "Chargement du flux" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Chargement des pistes" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Chargement des info des pistes" @@ -2920,10 +2947,10 @@ msgstr "Charger des fichiers/URLs, et remplacer la liste de lecture actuelle" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Se connecter" @@ -2935,7 +2962,7 @@ msgstr "Erreur lors de la connexion" msgid "Long term prediction profile (LTP)" msgstr "Profil de prédiction à long terme (PLT)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "J'aime" @@ -2998,7 +3025,7 @@ msgstr "Téléchargement Magnatune terminé" msgid "Main profile (MAIN)" msgstr "Profil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Voilà!" @@ -3081,7 +3108,7 @@ msgstr "Lecture monophonique" msgid "Months" msgstr "Mois" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Humeur" @@ -3111,7 +3138,7 @@ msgstr "Points de montage" msgid "Move down" msgstr "Déplacer vers le bas" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Déplacer vers la bibliothèque..." @@ -3120,7 +3147,7 @@ msgstr "Déplacer vers la bibliothèque..." msgid "Move up" msgstr "Déplacer vers le haut" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musique" @@ -3128,7 +3155,7 @@ msgstr "Musique" msgid "Music Library" msgstr "Bibliothèque musicale" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Sourdine" @@ -3216,7 +3243,7 @@ msgstr "Ne jamais commencer à lire" msgid "New folder" msgstr "Nouveau dossier" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nouvelle liste de lecture" @@ -3240,7 +3267,7 @@ msgstr "Nouvelles pistes" msgid "Next" msgstr "Suivant" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Piste suivante" @@ -3279,7 +3306,7 @@ msgstr "Pas de bloc court" msgid "None" msgstr "Aucun" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Aucun des morceaux sélectionnés n'était valide pour la copie vers un périphérique" @@ -3397,7 +3424,7 @@ msgstr "Opacité" msgid "Open %1 in browser" msgstr "Ouvrir %1 dans le navigateur" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Lire un CD &audio" @@ -3413,7 +3440,7 @@ msgstr "Ouvrir un fichier OPML..." msgid "Open device" msgstr "Ouvrir le périphérique" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Ouvrir un fichier..." @@ -3448,7 +3475,7 @@ msgstr "Optimisation du débit" msgid "Optimize for quality" msgstr "Optimisation de la qualité" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Options..." @@ -3460,7 +3487,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organiser les fichiers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organisation des fichiers..." @@ -3484,7 +3511,7 @@ msgstr "Sortie" msgid "Output device" msgstr "Périphérique de sortie" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Options de sortie" @@ -3525,7 +3552,7 @@ msgstr "Soirée" msgid "Password" msgstr "Mot de passe" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3538,7 +3565,7 @@ msgstr "Mettre la lecture en pause" msgid "Paused" msgstr "En pause" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Interprète" @@ -3551,9 +3578,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Barre latérale simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Lecture" @@ -3566,7 +3593,7 @@ msgstr "Écouter une radio par artiste ou par tag" msgid "Play artist radio..." msgstr "Écouter la radio d'un artiste..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Compteur d'écoutes" @@ -3621,7 +3648,7 @@ msgstr "Options de la liste de lecture" msgid "Playlist type" msgstr "Type de liste de lecture" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listes de lecture" @@ -3673,7 +3700,7 @@ msgstr "Pré-ampli" msgid "Preferences" msgstr "Préférences" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Préférences..." @@ -3728,7 +3755,7 @@ msgstr "Aperçu" msgid "Previous" msgstr "Précédent" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Piste précédente" @@ -3742,7 +3769,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progression" @@ -3771,16 +3798,16 @@ msgstr "Qualité" msgid "Querying device..." msgstr "Interrogation périphérique" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestionnaire de file d'attente" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Mettre les pistes sélectionnées en liste d'attente" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Mettre cette piste en liste d'attente" @@ -3792,7 +3819,7 @@ msgstr "Radio (volume égalisé pour toutes les pistes)" msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Pluie" @@ -3824,7 +3851,7 @@ msgstr "Noter ce morceau 4 étoiles" msgid "Rate the current song 5 stars" msgstr "Noter ce morceau 5 étoiles" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Note" @@ -3882,7 +3909,7 @@ msgstr "Supprimer" msgid "Remove action" msgstr "Effacer l'action" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Supprimer les doublons de la liste de lecture" @@ -3898,7 +3925,7 @@ msgstr "Supprimer de ma musique" msgid "Remove from favorites" msgstr "Supprimer des favoris" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Supprimer de la liste de lecture" @@ -3935,7 +3962,7 @@ msgstr "Renommer la liste de lecture" msgid "Rename playlist..." msgstr "Renommer la liste de lecture..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renuméroter les pistes dans cet ordre..." @@ -4026,6 +4053,18 @@ msgstr "Retourner dans Clementine" msgid "Right" msgstr "Droite" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Extraire le CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Extraire le CD audio..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4052,7 +4091,7 @@ msgstr "Enlever le périphérique en toute sécurité" msgid "Safely remove the device after copying" msgstr "Enlever le périphérique en toute sécurité à la fin de la copie" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Échantillonnage" @@ -4080,7 +4119,7 @@ msgstr "Enregistrer l'image" msgid "Save playlist" msgstr "Enregistrer la liste de lecture" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Enregistrer la liste de lecture..." @@ -4116,7 +4155,7 @@ msgstr "Profil du taux d'échantillonnage" msgid "Scale size" msgstr "Taille redimensionnée" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Score" @@ -4125,7 +4164,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Envoyer les titres des pistes que j'écoute (scrobble)" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4209,11 +4248,11 @@ msgstr "Déplacer la lecture de la piste courante par une quantité relative" msgid "Seek the currently playing track to an absolute position" msgstr "Déplacer la lecture de la piste courante à une position absolue" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Tout sélectionner" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ne rien sélectionner" @@ -4241,7 +4280,7 @@ msgstr "Sélectionner visualisation" msgid "Select visualizations..." msgstr "Sélectionner visualisation..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Sélectionner..." @@ -4261,7 +4300,7 @@ msgstr "Détails du serveur" msgid "Service offline" msgstr "Service hors-ligne" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Définir %1 à la valeur « %2 »..." @@ -4270,7 +4309,7 @@ msgstr "Définir %1 à la valeur « %2 »..." msgid "Set the volume to percent" msgstr "Définir le volume à pourcents" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Définir une valeur pour toutes les pistes sélectionnées..." @@ -4333,7 +4372,7 @@ msgstr "Utiliser l'affichage à l'écran (OSD)" msgid "Show above status bar" msgstr "Afficher au dessus de la barre d'état" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Afficher tous les morceaux" @@ -4353,12 +4392,12 @@ msgstr "Afficher les séparateurs" msgid "Show fullsize..." msgstr "Afficher en taille réelle..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Afficher dans le navigateur de fichiers" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Afficher dans la bibliothèque..." @@ -4370,11 +4409,11 @@ msgstr "Classer dans la catégorie « Compilations d'artistes »" msgid "Show moodbar" msgstr "Afficher la barre d'humeur" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Afficher uniquement les doublons" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Afficher uniquement les morceaux sans tag" @@ -4414,7 +4453,7 @@ msgstr "Aléatoire : albums" msgid "Shuffle all" msgstr "Aléatoire : tout" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Mélanger la liste de lecture" @@ -4454,7 +4493,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Lire la piste précédente" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Compteur de morceaux sautés" @@ -4490,7 +4529,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informations sur le morceau" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info morceau" @@ -4522,7 +4561,7 @@ msgstr "Trier les morceaux par" msgid "Sorting" msgstr "Tri" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Source" @@ -4558,6 +4597,10 @@ msgstr "Standard" msgid "Starred" msgstr "Favoris" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Commencer la liste de lecture jouée actuellement" @@ -4573,7 +4616,7 @@ msgid "" "list" msgstr "Commencer à écrire dans le champ de recherche ci-dessus pour remplir cette liste de résultats" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Lancement de %1" @@ -4586,7 +4629,7 @@ msgstr "Démarrage..." msgid "Stations" msgstr "Stations" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stop" @@ -4595,7 +4638,7 @@ msgstr "Stop" msgid "Stop after" msgstr "Arrêter après" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Arrêter la lecture après cette piste" @@ -4763,7 +4806,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "La période d'essai pour le serveur Subsonic est terminée. Merci de faire un don pour avoir un clef de licence. Visitez subsonic.org pour plus d'informations." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4804,7 +4847,7 @@ msgid "" "continue?" msgstr "Ces fichiers vont être supprimés du périphérique, êtes-vous sûr de vouloir continuer ?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4876,9 +4919,10 @@ msgstr "Ce flux n'est accessible qu'aux abonnés ayant payé" msgid "This type of device is not supported: %1" msgstr "Ce type de périphérique n'est pas supporté : %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titre" @@ -4900,11 +4944,11 @@ msgstr "Basculer l'affichage de l'OSD" msgid "Toggle fullscreen" msgstr "Basculer en mode plein écran" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Basculer l'état de la file d'attente" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Basculer le scrobbling" @@ -4936,12 +4980,13 @@ msgstr "Nombre total d'octets transférés" msgid "Total network requests made" msgstr "Nombre total de requêtes réseau effectuées" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Piste" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transcoder de la musique" @@ -5039,7 +5084,7 @@ msgstr "Mise à jour de la liste de lecture Grooveshark" msgid "Update all podcasts" msgstr "Mettre à jour tous les podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Mettre à jour les dossiers de la bibliothèque" @@ -5194,7 +5239,7 @@ msgstr "Vue" msgid "Visualization mode" msgstr "Mode de visualisation" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisations" @@ -5322,7 +5367,7 @@ msgid "" "well?" msgstr "Voulez-vous aussi déplacer les autres morceaux de cet album dans la catégorie « Compilations d'artistes » ?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Voulez-vous effectuer une analyse complète de la bibliothèque maintenant ?" @@ -5334,10 +5379,10 @@ msgstr "Enregistrer toutes les statistiques dans les fichiers des morceaux" msgid "Wrong username or password." msgstr "Nom d'utilisateur et/ou mot de passe invalide." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Année" diff --git a/src/translations/ga.po b/src/translations/ga.po index 81774dd83..5a15be1d1 100644 --- a/src/translations/ga.po +++ b/src/translations/ga.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Irish (http://www.transifex.com/projects/p/clementine/language/ga/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "&Lár" msgid "&Custom" msgstr "&Saincheaptha" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Breiseáin" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Cabhair" @@ -187,7 +187,7 @@ msgstr "&Folaigh..." msgid "&Left" msgstr "&Clé" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Ceol" @@ -195,15 +195,15 @@ msgstr "&Ceol" msgid "&None" msgstr "&Dada" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Scoir" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "&Deas" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "&Sín colúin chun an fhuinneog a líonadh" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Uirlisí" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "Maidir le %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Maidir le Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Maidir le Qt..." @@ -416,19 +416,19 @@ msgstr "Cuir sruth eile leis..." msgid "Add directory..." msgstr "Cuir comhadlann leis..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Cuir comhad leis" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Cuir comhad leis..." @@ -436,11 +436,11 @@ msgstr "Cuir comhad leis..." msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Cuir fillteán leis" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Cuir fillteán leis..." @@ -452,7 +452,7 @@ msgstr "Cuir fillteán nua leis..." msgid "Add podcast" msgstr "Cuir podchraoladh leis" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Cuir podchraoladh leis..." @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Cuir sruth leis..." @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "I ndiaidh" msgid "After copying..." msgstr "I ndiaidh macasamhlú..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albam" @@ -614,7 +614,7 @@ msgstr "Albam" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "Albaim le clúdaigh" msgid "Albums without covers" msgstr "Albaim gan clúdaigh" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Gach Comhad (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Ealaíontóir" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "Podchraoltaí an BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Toirmisc" @@ -897,7 +897,7 @@ msgstr "Is Fearr" msgid "Biography from %1" msgstr "Beathaisnéis ó %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "Lorg cláir nua" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Lorg nuashonruithe..." @@ -1053,11 +1053,11 @@ msgstr "Ag glanadh" msgid "Clear" msgstr "Glan" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "Dathanna" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Trácht" @@ -1196,11 +1196,11 @@ msgstr "Trácht" msgid "Complete tags automatically" msgstr "Críochnaigh clibeanna go huathoibríoch" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Críochnaigh clibeanna go huathoibríoch" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Cumraigh leabharlann..." @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "Tiontaigh ceol ar bith nach féidir leis an ngléas a sheinm" msgid "Copy to clipboard" msgstr "Macasamhlaigh go dtí an ngearrthaisce" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Macasamhlaigh go gléas..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Macasamhlaigh go leabharlann..." @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Síos" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Iomlaoid+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Dáta ar a chruthaíodh é" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Dáta ar a athraíodh é" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "Scrios sonraí íosluchtaithe" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Scrios comhaid" @@ -1564,7 +1564,7 @@ msgstr "Scrios comhaid" msgid "Delete from device..." msgstr "Scrios ón ngléas..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Scrios ón ndiosca..." @@ -1589,15 +1589,16 @@ msgstr "Scrios na comhaid bhunaidh" msgid "Deleting files" msgstr "Ag scriosadh comhaid" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Bain an rian as an scuaine" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Sprioc" @@ -1621,10 +1622,14 @@ msgstr "Ainm an ghléis" msgid "Device properties..." msgstr "Airíonna an ghléis..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Gléasanna" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "An é seo a bhí ar intinn agat" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "Díchumasaithe" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diosca" @@ -1681,7 +1686,7 @@ msgstr "Roghanna taispeána" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Cuir clib in eagar..." @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "An cnuasach ar fad" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Cothromóir" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Botún" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Iarmhír comhadainm" @@ -2167,19 +2184,19 @@ msgstr "Iarmhír comhadainm" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Comhadainm" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Méid comhaid" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "Cineál comhad" msgid "Filename" msgstr "Comhadainm" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Comhaid" @@ -2309,9 +2326,10 @@ msgstr "Coiteann" msgid "General settings" msgstr "Socruithe coiteann" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "Tabhair ainm dó:" msgid "Go" msgstr "Téigh" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "Eolas" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Ionsáigh..." @@ -2584,7 +2606,7 @@ msgstr "Suiteáilte" msgid "Integrity check" msgstr "Dearbháil sláine" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Idirlíon" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "Bunachar sonraí Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Léim chuig an rian atá á seinm faoi láthair" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "Coinnigh na comhaid bhunaidh" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "Clúdach albaim mór" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "An ceann deiridh a seinneadh" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Aga" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Leabharlann" @@ -2792,7 +2818,7 @@ msgstr "Leabharlann" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "Ag luchtú amhráin" msgid "Loading stream" msgstr "Ag luchtú sruth" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Ag luchtú rianta" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Síniú isteach" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Grá" @@ -2967,7 +2993,7 @@ msgstr "Chríochnaigh an t-íosluchtú Magnatune" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Bíodh sé mar sin!" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "Míonna" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "Bog síos" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Bog go dtí an leabharlann..." @@ -3089,7 +3115,7 @@ msgstr "Bog go dtí an leabharlann..." msgid "Move up" msgstr "Bog suas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Ceol" @@ -3097,7 +3123,7 @@ msgstr "Ceol" msgid "Music Library" msgstr "Leabharlann cheoil" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Balbhaigh" @@ -3185,7 +3211,7 @@ msgstr "Ná tosaigh ag seinm riamh" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "Na rianta is nuaí" msgid "Next" msgstr "Ar aghaidh" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Rian ar aghaidh" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "Dada" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "Oscail %1 i líonléitheoir" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "Oscail gléas" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Oscail comhad..." @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "Barrfheabhsaigh i gcomhair caighdeán" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Roghanna" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "Eagraigh comhaid" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Eagraigh comhaid..." @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Roghanna aschuir" @@ -3494,7 +3520,7 @@ msgstr "Cóisir" msgid "Password" msgstr "Focal faire" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Cuir ar sos" @@ -3507,7 +3533,7 @@ msgstr "Cuir athsheinm ar sos" msgid "Paused" msgstr "Curtha ar sos" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Seinn" @@ -3535,7 +3561,7 @@ msgstr "Seinn Ealaíontóir nó Clib" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "Sainroghanna" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Sainroghanna..." @@ -3697,7 +3723,7 @@ msgstr "Réamhamharc" msgid "Previous" msgstr "Roimhe" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "An rian roimhe" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Dul chun cinn" @@ -3740,16 +3766,16 @@ msgstr "Caighdeán" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Bainisteoir na Scuaine" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Cuir na rianta roghnaithe i scuaine" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Cuir an rian i scuaine" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "Craolacháin" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Báisteach" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "Bain" msgid "Remove action" msgstr "Bain gníomh" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rac" @@ -4021,7 +4059,7 @@ msgstr "Bain an gléas go sábháilte" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "Cuir an íomhá i dtaisce" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Roghnaigh uile" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ná roghnaigh ceann ar bith" @@ -4210,7 +4248,7 @@ msgstr "Roghnaigh amharcléirithe" msgid "Select visualizations..." msgstr "Roghnaigh amharcléirithe..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Socraigh %1 go \"%2\"..." @@ -4239,7 +4277,7 @@ msgstr "Socraigh %1 go \"%2\"..." msgid "Set the volume to percent" msgstr "Socraigh an airde chuig faoin gcéad" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Socraigh luach do gach rian roghnaithe..." @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Taispeáin gach amhrán" @@ -4322,12 +4360,12 @@ msgstr "Taispeáin roinnteoirí" msgid "Show fullsize..." msgstr "Taispeáin lánmhéid..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Taispeáin i siortaitheoir na gcomhad..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Taispeáin na cinn nach bhfuil clib orthu amháin" @@ -4383,7 +4421,7 @@ msgstr "Seinn na halbaim go fánach" msgid "Shuffle all" msgstr "Seinn uile go fánach" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "Rac bog" msgid "Song Information" msgstr "Faisnéis an amhráin" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Faisnéis an amhráin" @@ -4491,7 +4529,7 @@ msgstr "Togh na hamhráin de réir" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Foinse" @@ -4527,6 +4565,10 @@ msgstr "Caighdeánach" msgid "Starred" msgstr "Réalt curtha leis" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Ag tosú %1" @@ -4555,7 +4597,7 @@ msgstr "Ag tosú..." msgid "Stations" msgstr "Ionaid fhoirleata" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stad" @@ -4564,7 +4606,7 @@ msgstr "Stad" msgid "Stop after" msgstr "Stad i ndiaidh" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stad i ndiaidh an rian seo" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "Scriosfar na comhaid seo ón ngléas, an bhfuil tú cinnte gur mian leat leanúint ar aghaidh?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Teideal" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Scoránaigh lánscáileán" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "Líon iomlán na bearta aistrithe" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Rian" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "Nuashonraigh gach podchraoladh" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "Amharc" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Amharcléirithe" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Bliain" diff --git a/src/translations/gl.po b/src/translations/gl.po index d4de7cb0f..241c824c6 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/clementine/language/gl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&Centrar" msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Complementos" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Axuda" @@ -191,7 +191,7 @@ msgstr "Esconder..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Música" @@ -199,15 +199,15 @@ msgstr "&Música" msgid "&None" msgstr "&Ningunha" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Lista de reprodución" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Saír" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Modo de repetición" @@ -215,7 +215,7 @@ msgstr "&Modo de repetición" msgid "&Right" msgstr "&Direita" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Modo aleatorio" @@ -223,7 +223,7 @@ msgstr "&Modo aleatorio" msgid "&Stretch columns to fit window" msgstr "&Axustar as columnas á xanela" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Ferramentas" @@ -368,11 +368,11 @@ msgstr "Cancelar" msgid "About %1" msgstr "Acerca do %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Acerca de Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Acerca Qt..." @@ -420,19 +420,19 @@ msgstr "Engadir outro fluxo…" msgid "Add directory..." msgstr "Engadir un cartafol…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Engadir un ficheiro" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Engadir arquivo ó transcodificador" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Engadir arquivo(s) ó transcodificador" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Engadir ficheiro..." @@ -440,11 +440,11 @@ msgstr "Engadir ficheiro..." msgid "Add files to transcode" msgstr "Engadir ficheiros para converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Engadir cartafol" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Engadir cartafol..." @@ -456,7 +456,7 @@ msgstr "Engadir novo cartafol" msgid "Add podcast" msgstr "Engadir un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Engadir un podcast…" @@ -532,7 +532,7 @@ msgstr "Engadir a etiqueta da pista" msgid "Add song year tag" msgstr "Engadir a etiqueta do ano" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Engadir fluxo..." @@ -544,7 +544,7 @@ msgstr "Engadir aos favoritos en Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Engadir ás listas en Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Engadir a outra lista de reprodución" @@ -605,12 +605,12 @@ msgstr "Despois de " msgid "After copying..." msgstr "Despóis de copiar..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Álbum" @@ -618,7 +618,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (sonoridade ideal para todas as pistas)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Álbums con portada" msgid "Albums without covers" msgstr "Álbums sen portada" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Todos os ficheiros" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Toda a gloria ao Hipnosapo" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "Seguro que quere escribir as estadísticas das cancións nos ficheiros para tódalas cancións na biblioteca?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Intérprete" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Información do intérprete" @@ -797,7 +797,7 @@ msgstr "Etiquetas do intérprete" msgid "Artist's initial" msgstr "Iniciais do intérprete" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Formato do son" @@ -843,7 +843,7 @@ msgstr "Tamaño medio das imaxes" msgid "BBC Podcasts" msgstr "Podcasts da BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Gardando unha copia de seguranza da base de datos…" msgid "Balance" msgstr "Equilibrio" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Prohibir a entrada" @@ -901,7 +901,7 @@ msgstr "Mellor" msgid "Biography from %1" msgstr "Biografía de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" @@ -1007,7 +1007,7 @@ msgstr "Se cambia a opción sobre a reprodución nunha única canle, o cambio se msgid "Check for new episodes" msgstr "Buscar novos episodios" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Verificar se há actualizazóns..." @@ -1057,11 +1057,11 @@ msgstr "Facendo limpeza…" msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Baleirar a lista de reprodución" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "Pulse aquí para marcar esta lista de reprodución como favorita e engad msgid "Click to toggle between remaining time and total time" msgstr "Prema aquí para cambiar entre o tempo restante e o tempo total." -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Cores" msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de :, onde o nivel será un valor do 0 ao 3." -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" @@ -1200,11 +1200,11 @@ msgstr "Comentario" msgid "Complete tags automatically" msgstr "Completar as etiquetas automaticamente." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Completar as etiquetas automaticamente…" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Configurar Subsonic…" msgid "Configure global search..." msgstr "Configurar a busca global…" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurar a biblioteca..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Conexión fora de tempo, comprobe o URL do servidor. Por exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Consola" @@ -1300,12 +1300,12 @@ msgstr "Converter calquera música que este dispositivo non poda reproducir" msgid "Copy to clipboard" msgstr "Copiar no portapapeis" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copiar para a biblioteca" @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Non podes crear o elemento GStreamer «%1». Asegúrese de que ten instalados os complementos GStreamer." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Non é posíbel atopar un multiplexor para %1. Asegúrese de que ten instalado os complementos GStreamer necesarios." -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Non se puido abrir o arquivo externo %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Xestor de portadas" @@ -1395,11 +1395,11 @@ msgstr "Desvanecer ao cambiar de canción automaticamente." msgid "Cross-fade when changing tracks manually" msgstr "Desvanecer ao cambiar de canción manualmente." -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Detectáronse irregularidades na base de datos. Para informarse sobre como recuperar a súa base de datos, infórmese en https://code.google.com/p/clementine-player/wiki/DatabaseCorruption (en inglés)." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criazón" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de alterazón" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Eliminar os datos descargados" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Eliminar arquivos " @@ -1568,7 +1568,7 @@ msgstr "Eliminar arquivos " msgid "Delete from device..." msgstr "Eliminar do dispositivo" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Eliminar do disco" @@ -1593,15 +1593,16 @@ msgstr "Eliminar os ficheiros orixinais" msgid "Deleting files" msgstr "Eliminando os ficheiros…" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Quitar as pistas seleccionadas da cola" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Quitar da cola" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1625,10 +1626,14 @@ msgstr "Nome do dispositivo" msgid "Device properties..." msgstr "Propiedades do dispositivo…" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositivos" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Quixo dicir" @@ -1667,8 +1672,8 @@ msgstr "Desactivar a xeración da barra do ánimo." msgid "Disabled" msgstr "Desactivado" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1685,7 +1690,7 @@ msgstr "Opcións de visualización" msgid "Display the on-screen-display" msgstr "Amosar a mensaxe en pantalla" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Analizar completamente a biblioteca" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "O modo dinámico está activado" @@ -1819,12 +1828,12 @@ msgstr "Mestura aleatoria dinámica" msgid "Edit smart playlist..." msgstr "Editar a lista intelixente…" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar etiqueta \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Editar etiqueta..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Editar información da pista" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Editar información da pista..." @@ -1938,7 +1947,7 @@ msgstr "Introducir esta IP na App para conectar con Clementine." msgid "Entire collection" msgstr "Colección completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ecualizador" @@ -1952,7 +1961,7 @@ msgstr "Equivalente a «--log-levels *:3»." #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Erro" @@ -1972,7 +1981,7 @@ msgstr "Erro ao eliminar as cancións" msgid "Error downloading Spotify plugin" msgstr "Erro ao baixar o engadido de Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Non foi posíbel cargar %1" @@ -1982,12 +1991,12 @@ msgstr "Non foi posíbel cargar %1" msgid "Error loading di.fm playlist" msgstr "Erro ao cargar a lista de reprodución di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Erro ao procesarr %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Non foi posíbel cargar o CD de son." @@ -2065,27 +2074,27 @@ msgstr "Exportación acabada" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportada %1 portada de %2 (%3 saltada/s)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Desvanecendo" msgid "Fading duration" msgstr "Duración do desvanecimento" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Non foi posíbel descargar o directorio." @@ -2163,6 +2176,10 @@ msgstr "Descargando a biblioteca de Subsonic" msgid "Fetching cover error" msgstr "Produciuse un erro ao descargar a portada" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensión do ficheiro" @@ -2171,19 +2188,19 @@ msgstr "Extensión do ficheiro" msgid "File formats" msgstr "Formatos de ficheiro" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome do ficheiro" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nome do ficheiro (sen camiño)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamaño do ficheiro" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Tipo de ficheiro" msgid "Filename" msgstr "Ruta" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Ficheiros" @@ -2313,9 +2330,10 @@ msgstr "Xeral" msgid "General settings" msgstr "Configuración xeral" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Xénero" @@ -2347,11 +2365,11 @@ msgstr "Noméeo:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Ir á seguinte lapela de lista" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Ir á lapela anterior de lista" @@ -2421,7 +2439,7 @@ msgstr "Agrupar por Xénero/Álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por xénero/intérprete/álbum" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupación" @@ -2576,6 +2594,10 @@ msgstr "Indexando %1…" msgid "Information" msgstr "Información" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Inserir" @@ -2588,7 +2610,7 @@ msgstr "Instalado" msgid "Integrity check" msgstr "Comprobación da integridade" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Chave de sesón non válida" msgid "Invalid username and/or password" msgstr "Nome de usuario ou contrasinal inválidos" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Jamendo Top nesta semana" msgid "Jamendo database" msgstr "Base de dados de Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Ir á pista que se está a reproducir" @@ -2676,7 +2702,7 @@ msgstr "Continuar a execución en segundo plano ao pechar a xanela." msgid "Keep the original files" msgstr "Gardar os arquivos orixinais" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Michiños" @@ -2700,7 +2726,7 @@ msgstr "Portada grande do álbum" msgid "Large sidebar" msgstr "Barra lateral larga" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Últimos en soar" @@ -2783,12 +2809,12 @@ msgstr "Deixe baleiro para empregar o predeterminado. Exemplos: «/dev/dsp», « msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Biblioteca" @@ -2796,7 +2822,7 @@ msgstr "Biblioteca" msgid "Library advanced grouping" msgstr "Agrupamento avanzado da biblioteca" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Nota de análise da biblioteca" @@ -2841,7 +2867,7 @@ msgstr "Cargar a portada do computador…" msgid "Load playlist" msgstr "Cargar unha lista" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Cargar unha lista…" @@ -2870,11 +2896,11 @@ msgstr "Cargando as cancións…" msgid "Loading stream" msgstr "Cargando o fluxo…" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Cargando as pistas…" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Cargando a información das pistas…" @@ -2893,10 +2919,10 @@ msgstr "Carga ficheiros ou enderezos URL, substituíndo a lista actual." #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Acceder" @@ -2908,7 +2934,7 @@ msgstr "Non se puido acceder." msgid "Long term prediction profile (LTP)" msgstr "Perfil de predición a longo prazo (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Gústame" @@ -2971,7 +2997,7 @@ msgstr "Rematou a descarga de Magnatune." msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Que así sexa!" @@ -3054,7 +3080,7 @@ msgstr "Reprodución nunha única canle." msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Ánimo" @@ -3084,7 +3110,7 @@ msgstr "Pontos de montaxe" msgid "Move down" msgstr "Mover para abaixo" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mover para a biblioteca..." @@ -3093,7 +3119,7 @@ msgstr "Mover para a biblioteca..." msgid "Move up" msgstr "Mover para acima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Música" @@ -3101,7 +3127,7 @@ msgstr "Música" msgid "Music Library" msgstr "Colección de música" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Silencio" @@ -3189,7 +3215,7 @@ msgstr "Nunca comezar reproducindo" msgid "New folder" msgstr "Novo cartafol" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nova lista de reprodución" @@ -3213,7 +3239,7 @@ msgstr "Últimas pistas" msgid "Next" msgstr "Próximo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Seguinte pista" @@ -3252,7 +3278,7 @@ msgstr "Non hai bloques pequenos." msgid "None" msgstr "Nengún" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nengunha das cancións seleccionadas é axeitada para sera copiada a un dispositivo " @@ -3370,7 +3396,7 @@ msgstr "Opacidade" msgid "Open %1 in browser" msgstr "Abrir %1 no navegador" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Abrir un CD de &son…" @@ -3386,7 +3412,7 @@ msgstr "Abrir un ficheiro OPML…" msgid "Open device" msgstr "Abrir o dispositivo" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Abrir un ficheiro…" @@ -3421,7 +3447,7 @@ msgstr "Optimizar en prol da taxa de bits" msgid "Optimize for quality" msgstr "Optimizar en prol da calidade" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Configuración…" @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizar os ficheiros" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizar os ficheiros…" @@ -3457,7 +3483,7 @@ msgstr "Saída" msgid "Output device" msgstr "Dispositivo de saída" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opcións de saída" @@ -3498,7 +3524,7 @@ msgstr "Festa" msgid "Password" msgstr "Contrasinal" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausa" @@ -3511,7 +3537,7 @@ msgstr "Pausa" msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3524,9 +3550,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Barra lateral simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Reproducir" @@ -3539,7 +3565,7 @@ msgstr "Reproducir o intérprete ou a etiqueta" msgid "Play artist radio..." msgstr "Reproducir a radio dun intérprete…" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Escoitas" @@ -3594,7 +3620,7 @@ msgstr "Opcións da lista de reprodución" msgid "Playlist type" msgstr "Tipo de lista" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listas de reprodución" @@ -3646,7 +3672,7 @@ msgstr "Preeamplificazón" msgid "Preferences" msgstr "Configuración" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Configuración…" @@ -3701,7 +3727,7 @@ msgstr "Vista previa" msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Pista anterior" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Perfil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progreso" @@ -3744,16 +3770,16 @@ msgstr "Calidade" msgid "Querying device..." msgstr "Investigando no dispositivo" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Xestor da fila" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Engadir á lista" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Engadir á lista" @@ -3765,7 +3791,7 @@ msgstr "Radio (mesmo volume para todas as pistas)" msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Chuvia" @@ -3797,7 +3823,7 @@ msgstr "Califica a canción actual 4 estrelas" msgid "Rate the current song 5 stars" msgstr "Califica a canción actual 5 estrelas" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliación" @@ -3855,7 +3881,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Eliminar acción" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Eliminar as entradas duplicadas da lista" @@ -3871,7 +3897,7 @@ msgstr "Quitar da música persoal" msgid "Remove from favorites" msgstr "Retirar dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Eliminar da lista de reprodución" @@ -3908,7 +3934,7 @@ msgstr "Renomear lista de reprodución" msgid "Rename playlist..." msgstr "Renomear lista de reprodución" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Volver numerar as pistas na seguinte orde…" @@ -3999,6 +4025,18 @@ msgstr "Volver a Clementine" msgid "Right" msgstr "Dereita" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Retirar o dispositivo de maneira segura." msgid "Safely remove the device after copying" msgstr "Retirar o dispositivo de maneira segura tras a copia." -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frecuencia de mostraxe" @@ -4053,7 +4091,7 @@ msgstr "Gardar imaxe" msgid "Save playlist" msgstr "Gardar lista de reprodución" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Gardar lista de reprodución..." @@ -4089,7 +4127,7 @@ msgstr "Perfil de taxa de mostra escalábel (SSR)" msgid "Scale size" msgstr "Tamaño de escala" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuación" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Enviar as miñas escoitas" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Avanzar ou atrasar unha cantidade de tempo a pista actual." msgid "Seek the currently playing track to an absolute position" msgstr "Situar o punto de reprodución da pista actual nunha posición determinada." -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionalo todo" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Non seleccionar nengún" @@ -4214,7 +4252,7 @@ msgstr "Seleccionar as visualizacións" msgid "Select visualizations..." msgstr "Seleccionar as visualuzacións..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "Detalles do servidor" msgid "Service offline" msgstr "Servizo Inválido" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Colocar %1 para \"%2\"..." @@ -4243,7 +4281,7 @@ msgstr "Colocar %1 para \"%2\"..." msgid "Set the volume to percent" msgstr "Axusta o volume a por cento" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Axusta o volume para todos os cortes seleccionados" @@ -4306,7 +4344,7 @@ msgstr "Amosar unha pantalla xeitosa" msgid "Show above status bar" msgstr "Mostrar" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Amosar todas as cancións" @@ -4326,12 +4364,12 @@ msgstr "Amosar as divisións" msgid "Show fullsize..." msgstr "Mostrar tamaño completo " -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostrar no buscador de arquivos" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "Amosar en varios intérpretes" msgid "Show moodbar" msgstr "Amosar a barra do ánimo." -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostrar somente os duplicados" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Só amosar o que non estea etiquetado." @@ -4387,7 +4425,7 @@ msgstr "Desordenar os álbums" msgid "Shuffle all" msgstr "Desordenalo todo" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Desordenar a lista" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Saltar para trás na lista de músicas" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Saltar a conta" @@ -4463,7 +4501,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Información da canción" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Información" @@ -4495,7 +4533,7 @@ msgstr "Ordenar as cancións por:" msgid "Sorting" msgstr "Orde" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Orixe" @@ -4531,6 +4569,10 @@ msgstr "Estándar" msgid "Starred" msgstr "Vixiado" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Reproducir a playlist actualmente reproducindo" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Comece a escribir algo na caixa de busca da parte superior para ir enchendo esta lista de resultados." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Iniciando %1…" @@ -4559,7 +4601,7 @@ msgstr "Iniciando…" msgid "Stations" msgstr "Emisoras" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Deter" @@ -4568,7 +4610,7 @@ msgstr "Deter" msgid "Stop after" msgstr "Deter tras" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Deter a reprodución despois da pista actual" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Acabou o período de proba do servidor de Subsonic. Faga unha doazón para conseguir unha chave de acceso. Visite subsonic.org para máis información." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Estes arquivos serán eliminados do dispositivo, estás seguro de querer continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "O fluxo só está dispoñíbel para subscritores de pago." msgid "This type of device is not supported: %1" msgstr "Clementine non é compatíbel con este tipo de dispositivo: %1." -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" @@ -4873,11 +4916,11 @@ msgstr "Alternar o OSD xeitoso" msgid "Toggle fullscreen" msgstr "Pantalla completa" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Alternar o estado da cola" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Alternar o envío de escoitas" @@ -4909,12 +4952,13 @@ msgstr "Bytes enviados" msgid "Total network requests made" msgstr "Solicitudes de rede" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Conversión de música" @@ -5012,7 +5056,7 @@ msgstr "Actualizar a lista de Grooveshark" msgid "Update all podcasts" msgstr "Actualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Actualizar os cartafoles da biblioteca con cambios" @@ -5167,7 +5211,7 @@ msgstr "Vista" msgid "Visualization mode" msgstr "Modo de visualización" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualizacións" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Quere mover tamén o resto das cancións do álbum a «Varios Intérpretes»?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Quere realizar unha análise completa agora?" @@ -5307,10 +5351,10 @@ msgstr "Escribir as estadísticas de tódalas cancións nos ficheiros" msgid "Wrong username or password." msgstr "O nome de usuario ou contrasinal non son correctos." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Ano" diff --git a/src/translations/he.po b/src/translations/he.po index bc0ed11c1..b57e408b9 100644 --- a/src/translations/he.po +++ b/src/translations/he.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/clementine/language/he/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "מ&רכז" msgid "&Custom" msgstr "ה&תאמה אישית" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "תוספות" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "ע&זרה" @@ -191,7 +191,7 @@ msgstr "ה&סתרה..." msgid "&Left" msgstr "&שמאל" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "מוזיקה" @@ -199,15 +199,15 @@ msgstr "מוזיקה" msgid "&None" msgstr "&ללא" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "רשימת השמעה" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "י&ציאה" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "מצב חזרה" @@ -215,7 +215,7 @@ msgstr "מצב חזרה" msgid "&Right" msgstr "&ימין" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "מצב ערבוב" @@ -223,7 +223,7 @@ msgstr "מצב ערבוב" msgid "&Stretch columns to fit window" msgstr "&מתיחת עמודות בהתאמה לחלון" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&כלים" @@ -368,11 +368,11 @@ msgstr "בטל" msgid "About %1" msgstr "בערך %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "על אודות Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "על אודות Qt..." @@ -420,19 +420,19 @@ msgstr "הוספת תזרים אחר..." msgid "Add directory..." msgstr "הוספת תיקייה..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "הוספת קובץ" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "הוספת קובץ..." @@ -440,11 +440,11 @@ msgstr "הוספת קובץ..." msgid "Add files to transcode" msgstr "הוספת קובצי מוזיקה להמרה" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "הוספת תיקייה" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "הוספת תיקייה..." @@ -456,7 +456,7 @@ msgstr "הוספת תיקייה חדשה..." msgid "Add podcast" msgstr "הוספת פודקאסט" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "הוספת פודקאסט..." @@ -532,7 +532,7 @@ msgstr "הוספת תג פסקול לשיר" msgid "Add song year tag" msgstr "הוספת תג שנה לשיר" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "הוספת תזרים" @@ -544,7 +544,7 @@ msgstr "הוספה לרשימת המועדפים של Grooveshark" msgid "Add to Grooveshark playlists" msgstr "הוספה לרשימת ההשמה של Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "הוספה לרשימת השמעה אחרת" @@ -605,12 +605,12 @@ msgstr "לאחר " msgid "After copying..." msgstr "אחרי העתקה..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "אלבום" @@ -618,7 +618,7 @@ msgstr "אלבום" msgid "Album (ideal loudness for all tracks)" msgstr "אלבום (עצמת שמע אידאלית לכל הרצועות)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "אלבומים עם עטיפה" msgid "Albums without covers" msgstr "אלבומים ללא עטיפה" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "כל הקבצים (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "הללו את ה־Hypnotoad!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "אמן" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "מידע על האמן" @@ -797,7 +797,7 @@ msgstr "תגיות אמן" msgid "Artist's initial" msgstr "ראשי תיבות של האמן" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "להמיר לתבנית" @@ -843,7 +843,7 @@ msgstr "גודל תמונה ממוצע" msgid "BBC Podcasts" msgstr "BBC פודקאסט" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "מספר פעימות לדקה" @@ -872,7 +872,7 @@ msgstr "מסד הנתונים מגובה" msgid "Balance" msgstr "איזון" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "חסימה" @@ -901,7 +901,7 @@ msgstr "מיטבי" msgid "Biography from %1" msgstr "ביוגרפיה מתוך %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "קצב הסיביות" @@ -1007,7 +1007,7 @@ msgstr "שינוי העדפת השמעת מונו יהיה יעיל לניגון msgid "Check for new episodes" msgstr "בדיקת פרקים חדשים" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "בדיקת עדכונים..." @@ -1057,11 +1057,11 @@ msgstr "מנקה" msgid "Clear" msgstr "ניקוי" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "ניקוי רשימת ההשמעה" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "יש ללחוץ כאן על מנת לעבור בין הצגת הזמן הנותר לזמן הכולל" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "צבעים" msgid "Comma separated list of class:level, level is 0-3" msgstr "רשימה מופרדת בפסיקים של class:level,level יכול להיות 0-3 " -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "הערה" @@ -1200,11 +1200,11 @@ msgstr "הערה" msgid "Complete tags automatically" msgstr "השלמת תג אוטומטית" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "השלמת תגים אוטומטית..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "הגדרת תת קולי" msgid "Configure global search..." msgstr "מגדיר חיפוש " -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "הגדרת הספרייה..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "קונסול" @@ -1300,12 +1300,12 @@ msgstr "המרת כל המוזיקה שהתקן זה לא מסוגל לנגן" msgid "Copy to clipboard" msgstr "העתקה אל הלוח" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "העתקה להתקן.." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "העתקה לספרייה..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "לא ניתן ליצור את רכיב ה־GStreamer „%1“ - יש לוודא שכל תוספי ה־GStreamer מותקנים כראוי" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "לא ניתן למצוא מרבב עבור %1, נא לוודא שתוספי ה־GStreamer הנכונים מותקנים כראוי" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "לא ניתן לפתוח את קובץ הפלט %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "מנהל העטיפות" @@ -1395,11 +1395,11 @@ msgstr "מעבר באמצעות עמעום בין רצועות, בהחלפה א msgid "Cross-fade when changing tracks manually" msgstr "מעבר באמצעות עמעום בין רצועות, בהחלפה ידנית של רצועות" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "זוהתה השחתה במסד הנתונים. נא לקרוא את ההוראות מהכתובת https://code.google.com/p/clementine-player/wiki/DatabaseCorruption לקבלת כיצד לשחזר את מסד הנתונים" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "תאריך יצירה" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "תאריך שינוי" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "מחיקת מידע שהתקבל" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "מחיקת קבצים" @@ -1568,7 +1568,7 @@ msgstr "מחיקת קבצים" msgid "Delete from device..." msgstr "מחיקה מתוך התקן..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "מחיקה מתוך דיסק..." @@ -1593,15 +1593,16 @@ msgstr "מחיקת הקבצים המקוריים" msgid "Deleting files" msgstr "הקבצים נמחקים" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "הסרת הרצועות הנבחרות מהתור" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "הסרת הרצועה מהתור" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "יעד" @@ -1625,10 +1626,14 @@ msgstr "שם ההתקן" msgid "Device properties..." msgstr "מאפייני ההתקן..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "התקנים" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "האם כוונתך" @@ -1667,8 +1672,8 @@ msgstr "מניעת יצירת סרגל האווירה" msgid "Disabled" msgstr "מנוטרל" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "דיסק" @@ -1685,7 +1690,7 @@ msgstr "הגדרות תצוגה" msgid "Display the on-screen-display" msgstr "הצגת חיווי מסך" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "ביצוע סריקה חוזרת לכל הספרייה" @@ -1807,6 +1812,10 @@ msgstr "דרופבוקס" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "מצב דינמי פעיל" @@ -1819,12 +1828,12 @@ msgstr "מיקס דינמי אקראי" msgid "Edit smart playlist..." msgstr "עריכת רשימת השמעה חכמה..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "עריכת תגית..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "עריכת פרטי הרצועה" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "עריכת פרטי הרצועה..." @@ -1938,7 +1947,7 @@ msgstr "הכנס כתובת IP באפליקציה על מנת להתחבר ל-Cl msgid "Entire collection" msgstr "כל האוסף" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "אקולייזר" @@ -1952,7 +1961,7 @@ msgstr "זהה לאפשרות--log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "שגיאה" @@ -1972,7 +1981,7 @@ msgstr "שגיאה במחיקת שירים" msgid "Error downloading Spotify plugin" msgstr "שגיאה בהורדת תוסף Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "שגיאה בטעינת %1" @@ -1982,12 +1991,12 @@ msgstr "שגיאה בטעינת %1" msgid "Error loading di.fm playlist" msgstr "שגיאה בטעינת רשימת ההשמעה של di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "שגיאה בעיבוד %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "שגיאה בטעינת דיסק מוזיקה" @@ -2065,27 +2074,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "עמעום מוזיקה" msgid "Fading duration" msgstr "משך זמן עמעום המוזיקה" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "אחזור התיקייה נכשל" @@ -2163,6 +2176,10 @@ msgstr "טעינת ספרית Subsonic" msgid "Fetching cover error" msgstr "שגיאה באחזור המידע על העטיפה" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "סיומת הקובץ" @@ -2171,19 +2188,19 @@ msgstr "סיומת הקובץ" msgid "File formats" msgstr "סוג הקובץ" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "שם הקובץ" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "שם הקובץ (ללא נתיב)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "גודל הקובץ" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "סוג הקובץ" msgid "Filename" msgstr "שם הקובץ" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "קבצים" @@ -2313,9 +2330,10 @@ msgstr "כללי" msgid "General settings" msgstr "הגדרות כלליות" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "סגנון" @@ -2347,11 +2365,11 @@ msgstr "שם עבור הפריט:" msgid "Go" msgstr "מעבר" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "מעבר ללשונית רשימת ההשמעה הבאה" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "מעבר ללשונית רשימת ההשמעה הקודמת" @@ -2421,7 +2439,7 @@ msgstr "קיבוץ על פי סגנון/אלבום" msgid "Group by Genre/Artist/Album" msgstr "קיבוץ על פי סגנון/אמן/אלבום" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "קיבוץ" @@ -2576,6 +2594,10 @@ msgstr "יצירת מפתחות " msgid "Information" msgstr "מידע" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "הוספה..." @@ -2588,7 +2610,7 @@ msgstr "הותקן" msgid "Integrity check" msgstr "בדיקת שלמות" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "אינטרנט" @@ -2628,6 +2650,10 @@ msgstr "מפתח הפעלה לא תקין" msgid "Invalid username and/or password" msgstr "משתמש ו/או ססמה שגויים" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "הרצועות החמות ביותר השבוע ב־Jamendo" msgid "Jamendo database" msgstr "מסד הנתונים של Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "קפיצה לרצועה המתנגנת כעת" @@ -2676,7 +2702,7 @@ msgstr "להמשיך ולהריץ ברקע כאשר החלון סגור" msgid "Keep the original files" msgstr "שמירה על הקבצים המקוריים" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "גורי חתולים" @@ -2700,7 +2726,7 @@ msgstr "עטיפת אלבום גדולה" msgid "Large sidebar" msgstr "סרגל צד גדול" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "השמעה אחרונה" @@ -2783,12 +2809,12 @@ msgstr "יש להשאיר ריק בשביל בררת מחדל. דוגמאות: \ msgid "Left" msgstr "שמאל" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "אורך" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "ספרייה" @@ -2796,7 +2822,7 @@ msgstr "ספרייה" msgid "Library advanced grouping" msgstr "קיבוץ מתקדם של הספרייה" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "הודעה על סריקה מחודשת של הספרייה" @@ -2841,7 +2867,7 @@ msgstr "טעינת עטיפה מהדיסק..." msgid "Load playlist" msgstr "טעינת רשימת השמעה" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "טעינת רשימת השמעה..." @@ -2870,11 +2896,11 @@ msgstr "השירים נטענים" msgid "Loading stream" msgstr "מדיה זורמת בטעינה" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "הרצועות נטענות" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "נטען מידע אודות השירים" @@ -2893,10 +2919,10 @@ msgstr "טעינת קבצים/כתובות, תוך החלפת רשימת ההש #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "כניסה" @@ -2908,7 +2934,7 @@ msgstr "ההתחברות נכשלה" msgid "Long term prediction profile (LTP)" msgstr "פרופיל תחזית ארוכת טווח(LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "אהוב" @@ -2971,7 +2997,7 @@ msgstr "ההורדה מ־Magnatune הסתיימה" msgid "Main profile (MAIN)" msgstr "הפרופיל הראשי (ראשי)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "ביצוע!" @@ -3054,7 +3080,7 @@ msgstr "השמעת מונו" msgid "Months" msgstr "חודשים" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "מצב רוח" @@ -3084,7 +3110,7 @@ msgstr "נקודות עגינה" msgid "Move down" msgstr "הזזה מטה" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "העברה לספרייה..." @@ -3093,7 +3119,7 @@ msgstr "העברה לספרייה..." msgid "Move up" msgstr "הזזה מעלה" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "מוזיקה" @@ -3101,7 +3127,7 @@ msgstr "מוזיקה" msgid "Music Library" msgstr "ספריית המוזיקה" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "השתקה" @@ -3189,7 +3215,7 @@ msgstr "אין להתחיל להשמיע אף פעם" msgid "New folder" msgstr "תיקייה חדשה" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "רשימת השמעה חדשה" @@ -3213,7 +3239,7 @@ msgstr "הרצועות הכי חדשות" msgid "Next" msgstr "הבא" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "הרצועה הבאה" @@ -3252,7 +3278,7 @@ msgstr "ללא מקטעים קצרים" msgid "None" msgstr "אין" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "אף אחד מהשירים הנבחרים לא היה ראוי להעתקה להתקן" @@ -3370,7 +3396,7 @@ msgstr "שקיפות" msgid "Open %1 in browser" msgstr "פתיחת %1 בדפדפן" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "פתיחת &דיסק שמע..." @@ -3386,7 +3412,7 @@ msgstr "פתיחת קובץ " msgid "Open device" msgstr "פתיחת התקן" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "פתיחת קובץ..." @@ -3421,7 +3447,7 @@ msgstr "מיטוב לקצב סיביות" msgid "Optimize for quality" msgstr "מיטוב לאיכות" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "אפשרויות" @@ -3433,7 +3459,7 @@ msgstr "" msgid "Organise Files" msgstr "ארגון קבצים" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "ארגון קבצים..." @@ -3457,7 +3483,7 @@ msgstr "" msgid "Output device" msgstr "התקן פלט" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "אפשרויות פלט" @@ -3498,7 +3524,7 @@ msgstr "מסיבה" msgid "Password" msgstr "ססמה" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "השהייה" @@ -3511,7 +3537,7 @@ msgstr "השהיית הנגינה" msgid "Paused" msgstr "מושהה" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "מבצע" @@ -3524,9 +3550,9 @@ msgstr "" msgid "Plain sidebar" msgstr "סרגל צד פשוט" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "נגינה" @@ -3539,7 +3565,7 @@ msgstr "נגינה אמן או תגית" msgid "Play artist radio..." msgstr "ניגון רדיו אמן..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "מונה השמעות" @@ -3594,7 +3620,7 @@ msgstr "אפשרויות רשימת ההשמעה" msgid "Playlist type" msgstr "סוג רשימת ההשמעה" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "רשימות השמעה" @@ -3646,7 +3672,7 @@ msgstr "הגברה טרומית" msgid "Preferences" msgstr "מאפיינים" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "מאפיינים..." @@ -3701,7 +3727,7 @@ msgstr "תצוגה מקדימה" msgid "Previous" msgstr "הקודם" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "רצועה קודמת" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "פרופיל" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "התקדמות" @@ -3744,16 +3770,16 @@ msgstr "איכות" msgid "Querying device..." msgstr "התקן מתושאל..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "מנהל התור" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "הוספת הרצועות הנבחרות" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "הוספת הרצועה לתור" @@ -3765,7 +3791,7 @@ msgstr "רדיו (עצמה זהה לכל הרצועות)" msgid "Radios" msgstr "רדיו" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "גשם" @@ -3797,7 +3823,7 @@ msgstr "דירוג השיר הנוכחי עם 4 כוכבים" msgid "Rate the current song 5 stars" msgstr "דירוג השיר הנוכחי עם 5 כוכבים" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "דירוג" @@ -3855,7 +3881,7 @@ msgstr "הסרה" msgid "Remove action" msgstr "הסרת הפעולה" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "הסרת כפילויות מרשימת ההשמעה" @@ -3871,7 +3897,7 @@ msgstr "הסרה מהמוסיקה שלי" msgid "Remove from favorites" msgstr "הסרה מרשימת המועדפים" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "הסרה מרשימת ההשמעה" @@ -3908,7 +3934,7 @@ msgstr "שינוי שם רשימת ההשמעה" msgid "Rename playlist..." msgstr "שינוי שם רשימת ההשמעה..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "מספור הרצועות מחדש על פי הסדר הנוכחי..." @@ -3999,6 +4025,18 @@ msgstr "חזרה ל Clementine" msgid "Right" msgstr "ימינה" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "רוק" @@ -4025,7 +4063,7 @@ msgstr "הסרת התקן באופן בטוח" msgid "Safely remove the device after copying" msgstr "הסרת ההתקן באופן בטוח לאחר סיום ההעתקה" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "קצב הדגימה" @@ -4053,7 +4091,7 @@ msgstr "שמירת התמונה" msgid "Save playlist" msgstr "שמירת רשימת ההשמעה" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "שמירת רשימת ההשמעה..." @@ -4089,7 +4127,7 @@ msgstr "פרופיל קצב דגימה משתנה (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "ניקוד" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "עדכון הפרופיל עם הרצועות הנשמעות" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "דילוג בתוך הרצועה המתנגנת כעת למיקום יח msgid "Seek the currently playing track to an absolute position" msgstr "דילוג בתוך הרצועה המתנגנת כעת למיקום מוחלט" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "בחירת הכול" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "ביטול הבחירה" @@ -4214,7 +4252,7 @@ msgstr "בחירת אפקטים חזותיים" msgid "Select visualizations..." msgstr "בחירת אפקטים חזותיים..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "פרטי שרת" msgid "Service offline" msgstr "שירות לא מקוון" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "הגדרת %1 בתור „%2“..." @@ -4243,7 +4281,7 @@ msgstr "הגדרת %1 בתור „%2“..." msgid "Set the volume to percent" msgstr "הגדרת עצמת השמע ל־ אחוזים" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "הגדרת הערך לכל הרצועות הנבחרות..." @@ -4306,7 +4344,7 @@ msgstr "הצגת חיווי מסך נאה" msgid "Show above status bar" msgstr "הצגה מעל לשורת המצב" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "הצגת כל השירים" @@ -4326,12 +4364,12 @@ msgstr "הצגת חוצצים" msgid "Show fullsize..." msgstr "הצגה על מסך מלא..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "הצגה בסייר הקבצים..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "הצגה תחת אמנים שונים" msgid "Show moodbar" msgstr "הצגת סרגל האווירה" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "הצגת כפילויות בלבד" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "הצגת לא מתוייגים בלבד" @@ -4387,7 +4425,7 @@ msgstr "ערבוב אלבומים" msgid "Shuffle all" msgstr "ערבוב עם הכול" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "ערבוב רשימת ההשמעה" @@ -4427,7 +4465,7 @@ msgstr "סקא" msgid "Skip backwards in playlist" msgstr "דילוג אחורה ברשימת ההשמעה" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "מונה דילוגים" @@ -4463,7 +4501,7 @@ msgstr "רוק קל" msgid "Song Information" msgstr "מידע על השיר" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "מידע על השיר" @@ -4495,7 +4533,7 @@ msgstr "מיון שירים על פי" msgid "Sorting" msgstr "מיון" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "מקור" @@ -4531,6 +4569,10 @@ msgstr "סטנדרטי" msgid "Starred" msgstr "מסומן בכוכב" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "התחלת רשימת ההשמעה המתנגנת כעת" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "נא להקליד משהו בתיבת החיפוש למעלה כדי למלא את רשימת תוצאות חיפוש זה" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "התחלת המרת %1" @@ -4559,7 +4601,7 @@ msgstr "מופעל..." msgid "Stations" msgstr "תחנות" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "הפסקה" @@ -4568,7 +4610,7 @@ msgstr "הפסקה" msgid "Stop after" msgstr "הפסקה אחרי" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "הפסקה אחרי רצועה זו" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "תמה תקופת הניסיון לשרת Subsonic. נא תרומתך לקבלת מפתח רישיון. לפרטים, נא לבקר ב subsonic.org " -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "קבצים אלו ימחקו מההתקן, האם להמשיך?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "המדיה הזורמת הזו היא עבור חברות בתשלום msgid "This type of device is not supported: %1" msgstr "סוג התקן זה לא נתמך: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "כותרת" @@ -4873,11 +4916,11 @@ msgstr "החלפה ל/ממצב חיווי נאה" msgid "Toggle fullscreen" msgstr "הפעלה או כיבוי של מסך מלא" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "החלף מצב התור" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "החלפה לscrobbling" @@ -4909,12 +4952,13 @@ msgstr "סך הכל בתים שהועברו" msgid "Total network requests made" msgstr "סך הכל בקשות שנשלחו" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "רצועה" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "ממיר קבצי המוזיקה" @@ -5012,7 +5056,7 @@ msgstr "עדכון רשימת ההשמעה ב־Grooveshark" msgid "Update all podcasts" msgstr "עדכון כל הפודקאסטים" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "עדכון תיקיות שהשתנו בספרייה" @@ -5167,7 +5211,7 @@ msgstr "הצגה" msgid "Visualization mode" msgstr "מצב אפקטים חזותיים" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "אפקטים חזותיים" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "האם ברצונך להעביר גם את שאר השירים באלבום לאמנים שונים?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "האם ברצונך לבצע סריקה חוזרת כעת?" @@ -5307,10 +5351,10 @@ msgstr "רשום את כל הסטטיסטיקות עבור השירים לתוך msgid "Wrong username or password." msgstr "שם משתמש או סיסמא שגויים" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "שינוי" diff --git a/src/translations/he_IL.po b/src/translations/he_IL.po index 048740ebc..63392a85b 100644 --- a/src/translations/he_IL.po +++ b/src/translations/he_IL.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hebrew (Israel) (http://www.transifex.com/projects/p/clementine/language/he_IL/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -165,11 +165,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -186,7 +186,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -194,15 +194,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -210,7 +210,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -218,7 +218,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -363,11 +363,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -415,19 +415,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -435,11 +435,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -451,7 +451,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -527,7 +527,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -539,7 +539,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -600,12 +600,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -613,7 +613,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -635,11 +635,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -766,17 +766,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -792,7 +792,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -838,7 +838,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -867,7 +867,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -896,7 +896,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1052,11 +1052,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1147,8 +1147,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1186,7 +1186,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1195,11 +1195,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1238,7 +1238,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1275,7 +1275,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1295,12 +1295,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1322,14 +1322,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1346,7 +1346,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1390,11 +1390,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "" @@ -1402,63 +1402,63 @@ msgstr "" msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "" @@ -1501,11 +1501,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1555,7 +1555,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1563,7 +1563,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1588,15 +1588,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1620,10 +1621,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1662,8 +1667,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1680,7 +1685,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1802,6 +1807,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1814,12 +1823,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1832,7 +1841,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1933,7 +1942,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1947,7 +1956,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1967,7 +1976,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1977,12 +1986,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2060,27 +2069,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2107,6 +2116,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2158,6 +2171,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2166,19 +2183,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2188,7 +2205,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2308,9 +2325,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2342,11 +2360,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2416,7 +2434,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2571,6 +2589,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2583,7 +2605,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2623,6 +2645,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2647,7 +2673,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2671,7 +2697,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2695,7 +2721,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2778,12 +2804,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2791,7 +2817,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2836,7 +2862,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2865,11 +2891,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2888,10 +2914,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2903,7 +2929,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2966,7 +2992,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3049,7 +3075,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3079,7 +3105,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3088,7 +3114,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3096,7 +3122,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3184,7 +3210,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3208,7 +3234,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3247,7 +3273,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3365,7 +3391,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3381,7 +3407,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3416,7 +3442,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3428,7 +3454,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3452,7 +3478,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3493,7 +3519,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3506,7 +3532,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3519,9 +3545,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3534,7 +3560,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3589,7 +3615,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3641,7 +3667,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3696,7 +3722,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3710,7 +3736,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3739,16 +3765,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3760,7 +3786,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3792,7 +3818,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3850,7 +3876,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3866,7 +3892,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3903,7 +3929,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3994,6 +4020,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4020,7 +4058,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4048,7 +4086,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4084,7 +4122,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4093,7 +4131,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4177,11 +4215,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4209,7 +4247,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4229,7 +4267,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4238,7 +4276,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4301,7 +4339,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4321,12 +4359,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4338,11 +4376,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4382,7 +4420,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4422,7 +4460,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4458,7 +4496,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4490,7 +4528,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4526,6 +4564,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4541,7 +4583,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4554,7 +4596,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4563,7 +4605,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4731,7 +4773,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4772,7 +4814,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4844,9 +4886,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4868,11 +4911,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4904,12 +4947,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5007,7 +5051,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5162,7 +5206,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5290,7 +5334,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5302,10 +5346,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/hi.po b/src/translations/hi.po index 7fa561852..84364ddec 100644 --- a/src/translations/hi.po +++ b/src/translations/hi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/clementine/language/hi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "&kendra" msgid "&Custom" msgstr "&anukul" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&saha" @@ -189,7 +189,7 @@ msgstr "&chipaye" msgid "&Left" msgstr "&baye" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -197,15 +197,15 @@ msgstr "" msgid "&None" msgstr "&कोई nahi" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&बंद" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -213,7 +213,7 @@ msgstr "" msgid "&Right" msgstr "&dayen" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -221,7 +221,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "&खीचे कॉलम विंडो फिट करने के लिए" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&upkaran" @@ -366,11 +366,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -418,19 +418,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -438,11 +438,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -454,7 +454,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -530,7 +530,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -542,7 +542,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -603,12 +603,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -616,7 +616,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kalakar" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -795,7 +795,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -870,7 +870,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -899,7 +899,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1005,7 +1005,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1055,11 +1055,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1198,11 +1198,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1298,12 +1298,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1393,11 +1393,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1566,7 +1566,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1591,15 +1591,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1623,10 +1624,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1665,8 +1670,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1683,7 +1688,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1805,6 +1810,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1817,12 +1826,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1936,7 +1945,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1950,7 +1959,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1970,7 +1979,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1980,12 +1989,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2063,27 +2072,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2110,6 +2119,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2161,6 +2174,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2169,19 +2186,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2311,9 +2328,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2345,11 +2363,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2419,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2574,6 +2592,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2586,7 +2608,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2626,6 +2648,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2650,7 +2676,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2674,7 +2700,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2698,7 +2724,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2781,12 +2807,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2794,7 +2820,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2839,7 +2865,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2868,11 +2894,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2891,10 +2917,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2906,7 +2932,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2969,7 +2995,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3052,7 +3078,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3082,7 +3108,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3091,7 +3117,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3099,7 +3125,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3187,7 +3213,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3211,7 +3237,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3250,7 +3276,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3368,7 +3394,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3384,7 +3410,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3419,7 +3445,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3431,7 +3457,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3455,7 +3481,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3496,7 +3522,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3509,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3522,9 +3548,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3537,7 +3563,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3592,7 +3618,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3644,7 +3670,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3699,7 +3725,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3742,16 +3768,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3763,7 +3789,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3795,7 +3821,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3853,7 +3879,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3869,7 +3895,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3906,7 +3932,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3997,6 +4023,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4023,7 +4061,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4051,7 +4089,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4087,7 +4125,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4212,7 +4250,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4232,7 +4270,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4241,7 +4279,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4304,7 +4342,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4324,12 +4362,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4341,11 +4379,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4385,7 +4423,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4425,7 +4463,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4461,7 +4499,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4493,7 +4531,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4529,6 +4567,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4557,7 +4599,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4566,7 +4608,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4871,11 +4914,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4907,12 +4950,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5010,7 +5054,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5165,7 +5209,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5305,10 +5349,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/hr.po b/src/translations/hr.po index 0e5184e41..252c3b38a 100644 --- a/src/translations/hr.po +++ b/src/translations/hr.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-16 14:34+0000\n" -"Last-Translator: gogo \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/clementine/language/hr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -170,11 +170,11 @@ msgstr "&Centriraj" msgid "&Custom" msgstr "&Podešeno" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Dodaci" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Pomoć" @@ -191,7 +191,7 @@ msgstr "&Sakrij..." msgid "&Left" msgstr "&Lijevo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Glazba" @@ -199,15 +199,15 @@ msgstr "Glazba" msgid "&None" msgstr "&Nijedan" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Popis izvođenja" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Zatvorite Clementine" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Način ponavljanja" @@ -215,7 +215,7 @@ msgstr "Način ponavljanja" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Način naizmjeničnog sviranja" @@ -223,7 +223,7 @@ msgstr "Način naizmjeničnog sviranja" msgid "&Stretch columns to fit window" msgstr "&Rastegni stupce da stanu u prozor" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Alati" @@ -368,11 +368,11 @@ msgstr "Prekini" msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt..." @@ -420,19 +420,19 @@ msgstr "Dodajte novi stream..." msgid "Add directory..." msgstr "Dodajte direktorij..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Dodaj datoteku" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Dodaj datoteku u enkôder" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Dodaj datoteku(e) u enkôder" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Dodajte datoteku..." @@ -440,11 +440,11 @@ msgstr "Dodajte datoteku..." msgid "Add files to transcode" msgstr "Dodajte datoteku za transkôdiranje..." -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Dodajte mapu" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Dodajte mapu..." @@ -456,7 +456,7 @@ msgstr "Dodajte novu mapu" msgid "Add podcast" msgstr "Dodajte podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodajte podcast..." @@ -532,7 +532,7 @@ msgstr "Dodajte oznaku broja pjesme" msgid "Add song year tag" msgstr "Dodajte oznaku godine pjesme" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Dodajte stream..." @@ -544,7 +544,7 @@ msgstr "Dodaj u Grooveshark omiljene" msgid "Add to Grooveshark playlists" msgstr "Dodaj u Grooveshark popis izvođenja" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Dodajte na drugi popis izvođenja" @@ -605,12 +605,12 @@ msgstr "Nakon " msgid "After copying..." msgstr "Nakon kopiranja..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna glasnoća za sve pjesme)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Albumi sa omotima" msgid "Albums without covers" msgstr "Albumi bez omota" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Sve datoteke" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Sva slava Hypnotoadu!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "Sigurno želite zapisati statistiku pjesama u datoteke pjesama za sve pjesme u vašoj fonoteci?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvođač" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info izvođača" @@ -797,7 +797,7 @@ msgstr "Vrsta glazbe izvođača" msgid "Artist's initial" msgstr "Prvi izvođač" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format zvuka" @@ -843,7 +843,7 @@ msgstr "Prosječna veličina slike" msgid "BBC Podcasts" msgstr "BBC podcasti" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Sigurnosno kopiranje baze podataka" msgid "Balance" msgstr "Balansiranje" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Zabrana" @@ -901,7 +901,7 @@ msgstr "Najbolje" msgid "Biography from %1" msgstr "Životopis sa %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Brzina prijenosa" @@ -1007,7 +1007,7 @@ msgstr "Promjena postavke mono reprodukcije imati će učinka na sljedeće repro msgid "Check for new episodes" msgstr "Provjeri za nove nastavke" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Provjeri ima li nadogradnja" @@ -1057,11 +1057,11 @@ msgstr "Brisanje" msgid "Clear" msgstr "Isprazni" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Ispraznite popis izvođenja" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "Kliknite ovdje za dodavanje ovog popis izvođenja u omiljeno, popis izvo msgid "Click to toggle between remaining time and total time" msgstr "Kliknite za odabir između preostalog vremena reprodukcije i ukupnog vremena reprodukcije" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Boje" msgid "Comma separated list of class:level, level is 0-3" msgstr "Zarezom odvojen popis klasa:razina, razina je 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1200,11 +1200,11 @@ msgstr "Komentar" msgid "Complete tags automatically" msgstr "Završi oznake automatski" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Završite oznake automatski..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Podesi Subsonic..." msgid "Configure global search..." msgstr "Podesite globalno pretraživanje..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Podesi fonoteku..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Veza je istekla, provjerite URL poslužitelja. Npr. http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konzola" @@ -1300,12 +1300,12 @@ msgstr "Konvertiraj svu glazbu koju uređaj može reproducirati" msgid "Copy to clipboard" msgstr "Kopiraj u međuspremnik" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopirajte na uređaj..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopirajte u fonoteku..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nije moguče stvoriti GStreamer element \"%1\" - provjerite imate li sve GStreamer pluginove instalirane" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nije moguče pronaći muxer %1, provjerite imate li sve GStreamer pluginove instalirane" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Nije moguće otvoriti izlaznu datoteku %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Upravljanje omotima" @@ -1395,11 +1395,11 @@ msgstr "Postepeno utišaj kada se pjesma mijenja automatski" msgid "Cross-fade when changing tracks manually" msgstr "Postepeno utišaj kada se pjesma mijenja ručno" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Baza podataka je oštećena. Pročitajte na https://code.google.com/p/clementine-player/wiki/DatabaseCorruption upute kako obnoviti bazu podataka" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Izrađeno datuma" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Izmjenjeno datuma" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Obriši preuzete podatke" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Izbrišite datoteku" @@ -1568,7 +1568,7 @@ msgstr "Izbrišite datoteku" msgid "Delete from device..." msgstr "Izbrišite sa uređaja..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Izbrišite sa diska..." @@ -1593,15 +1593,16 @@ msgstr "Izbriši orginalne datoteke" msgid "Deleting files" msgstr "Brisanje datoteka" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Uklonite označenu pjesmu sa reprodukcije" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Uklonite označenu pjesmu za reprodukciju" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Odredište" @@ -1625,10 +1626,14 @@ msgstr "Naziv uređaja" msgid "Device properties..." msgstr "Mogućnosti uređaja..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Uređaji" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Jeste li možda mislili" @@ -1667,8 +1672,8 @@ msgstr "Onemogući generiranje traka tonaliteta" msgid "Disabled" msgstr "Onemogući" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1685,7 +1690,7 @@ msgstr "Mogućnosti zaslona" msgid "Display the on-screen-display" msgstr "Prikaži zaslonski prikaz (OSD)" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Pretražite ponovno cijelu fonoteku" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamičan način je uključen" @@ -1819,12 +1828,12 @@ msgstr "Dinamičan naizmjeničan mix" msgid "Edit smart playlist..." msgstr "Uredite pametni popis izvođenja..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Uredi oznaku \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Uredite oznake..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Uredite informacije o pjesmi" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Uredite informacije o pjesmi..." @@ -1938,7 +1947,7 @@ msgstr "Upišite ovu IP adresu u aplikaciju za spajanje na Clementine." msgid "Entire collection" msgstr "Cijelu kolekciju" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalizator" @@ -1952,7 +1961,7 @@ msgstr "Odgovara --log-levels *: 3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Greška" @@ -1972,7 +1981,7 @@ msgstr "Greška u brisanju pjesama" msgid "Error downloading Spotify plugin" msgstr "greška pri preuzimanju Spotify dodatka" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Greška pri učitavanju %1" @@ -1982,12 +1991,12 @@ msgstr "Greška pri učitavanju %1" msgid "Error loading di.fm playlist" msgstr "Greška pri učitavanju di.fm popisa izvođenja" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Greška pri obradi %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Greška pri učitavanju glazbenog CD-a" @@ -2065,27 +2074,27 @@ msgstr "Izvoz završen" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Izvezeno %1 omota od ukupno %2 (%3 preskočena)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Utišavanje" msgid "Fading duration" msgstr "Trajanje utišavanja" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Neuspjelo dohvaćanje direktorija" @@ -2163,6 +2176,10 @@ msgstr "Dohvaćanje Subsonic fonoteke" msgid "Fetching cover error" msgstr "Greška pri preuzimanju omota" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Ekstenzija datoteke" @@ -2171,19 +2188,19 @@ msgstr "Ekstenzija datoteke" msgid "File formats" msgstr "Format datoteke" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Naziv datoteke" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Naziv datoteke (bez putanje)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Veličina datoteke" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Vrsta datoteke" msgid "Filename" msgstr "Naziv datoteke" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Datoteke" @@ -2313,9 +2330,10 @@ msgstr "Općenito" msgid "General settings" msgstr "Opće postavke" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Vrsta glazbe" @@ -2347,11 +2365,11 @@ msgstr "Upišite naziv streama:" msgid "Go" msgstr "Idi" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Idi na sljedeću karticu popisa izvođenja" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Idi na prijašnju karticu popisa izvođenja" @@ -2421,7 +2439,7 @@ msgstr "Grupiraj po Vrsti glazbe/Albumu" msgid "Group by Genre/Artist/Album" msgstr "Grupiraj po Vrsti glazbe/Izvođaču/Albumu" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupiranje" @@ -2576,6 +2594,10 @@ msgstr "Indeksiranje %1" msgid "Information" msgstr "Informacije" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Umetni..." @@ -2588,7 +2610,7 @@ msgstr "Instaliran" msgid "Integrity check" msgstr "Provjera integriteta" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Neispravan ključ sesije" msgid "Invalid username and/or password" msgstr "Neispravno korisničko ime i/ili lozinka" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Jamendo top pjesma tjedna" msgid "Jamendo database" msgstr "Jamendo baza podataka" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Prebaci na trenutno reproduciranu pjesmu" @@ -2676,7 +2702,7 @@ msgstr "Nastavi izvođenje u pozadini kada je prozor zatvoren" msgid "Keep the original files" msgstr "Zadrži orginalne datoteke" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Mačići" @@ -2700,7 +2726,7 @@ msgstr "Veliki omot albuma" msgid "Large sidebar" msgstr "Velika bočna traka" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Zadnje reproducirano" @@ -2783,12 +2809,12 @@ msgstr "Ostavite prazno za zadano. Naprimjer: \"/dev/dsp\", \"front\", itd." msgid "Left" msgstr "Lijevo" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trajanje" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Fonoteka" @@ -2796,7 +2822,7 @@ msgstr "Fonoteka" msgid "Library advanced grouping" msgstr "Napredno grupiranje fonoteke" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Obavijest o ponovnom pretraživanju fonoteke" @@ -2841,7 +2867,7 @@ msgstr "Učitajte omot sa diska..." msgid "Load playlist" msgstr "Otvorite popis izvođenja" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Otvorite popis izvođenja..." @@ -2870,11 +2896,11 @@ msgstr "Učitavanje pjesama" msgid "Loading stream" msgstr "Učitaj stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Učitavanje pjesama" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Učitavanje informacija o pjesmi" @@ -2893,10 +2919,10 @@ msgstr "Učitaj Datoteke/URL, zamijeni trenutni popis izvođenja" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Prijava" @@ -2908,7 +2934,7 @@ msgstr "Neuspjela prijava" msgid "Long term prediction profile (LTP)" msgstr "Profil dugoročnog predviđanja (DP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Sviđa mi se" @@ -2971,7 +2997,7 @@ msgstr "Magnatune preuzimanje završeno" msgid "Main profile (MAIN)" msgstr "Glavni profil (GLAVNI)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Učinite tako!" @@ -3054,7 +3080,7 @@ msgstr "Mono reprodukcija" msgid "Months" msgstr "Mjeseci" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Tonalitet" @@ -3084,7 +3110,7 @@ msgstr "Točka montiranja" msgid "Move down" msgstr "Pomakni dolje" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Premjesti u fonoteku..." @@ -3093,7 +3119,7 @@ msgstr "Premjesti u fonoteku..." msgid "Move up" msgstr "Pomakni gore" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Glazba" @@ -3101,7 +3127,7 @@ msgstr "Glazba" msgid "Music Library" msgstr "Fonoteka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Utišaj" @@ -3189,7 +3215,7 @@ msgstr "Nikada ne započinji reprodukciju glazbe" msgid "New folder" msgstr "Nova mapa" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Novi popis izvođenja" @@ -3213,7 +3239,7 @@ msgstr "Najnovija pjesma" msgid "Next" msgstr "Sljedeća pjesma" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Sljedeća pjesma" @@ -3252,7 +3278,7 @@ msgstr "Bez kratkih blokova" msgid "None" msgstr "Ništa" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nijedna od odabranih pjesama nije prikladna za kopiranje na uređaj" @@ -3370,7 +3396,7 @@ msgstr "Zasjenjenost" msgid "Open %1 in browser" msgstr "Otvori %1 u pregledniku" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Otvorite &glazbeni CD..." @@ -3386,7 +3412,7 @@ msgstr "Otvori OPML datoteku..." msgid "Open device" msgstr "Otvorite uređaj" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Otvorite datoteku..." @@ -3421,7 +3447,7 @@ msgstr "Podesite brzinu prijenosa" msgid "Optimize for quality" msgstr "Podesite kvalitetu" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Mogućnosti..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizirajte datoteke" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizirajte datoteke..." @@ -3457,7 +3483,7 @@ msgstr "Izlaz" msgid "Output device" msgstr "Izlazni uređaj" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Izlazne mogućnosti" @@ -3498,7 +3524,7 @@ msgstr "Party" msgid "Password" msgstr "Lozinka" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pauziraj reprodukciju" @@ -3511,7 +3537,7 @@ msgstr "Pauziraj reprodukciju" msgid "Paused" msgstr "Reprodukcija pauzirana" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvođač" @@ -3524,9 +3550,9 @@ msgstr "Piksela" msgid "Plain sidebar" msgstr "Jednostavna bočna traka" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Pokreni reprodukciju" @@ -3539,7 +3565,7 @@ msgstr "Reproduciraj izvođača ili oznaku" msgid "Play artist radio..." msgstr "Reproduciraj Izvođača radia..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Broj izvođenja" @@ -3594,7 +3620,7 @@ msgstr "Mogućnosti popisa izvođenja" msgid "Playlist type" msgstr "Vrsta popisa izvođenja" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Popis izvođenja" @@ -3646,7 +3672,7 @@ msgstr "Pred-pojačanje" msgid "Preferences" msgstr "Mogućnosti" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Mogućnosti..." @@ -3701,7 +3727,7 @@ msgstr "Prikaz" msgid "Previous" msgstr "Prijašnja pjesma" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Prijašnja pjesma" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Napredak" @@ -3744,16 +3770,16 @@ msgstr "Kvaliteta" msgid "Querying device..." msgstr "Tražim uređaj..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Upravljanje odabranim pjesmama za reprodukciju" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Odaberite označenu pjesmu za reprodukciju" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Odaberite pjesmu za reprodukciju" @@ -3765,7 +3791,7 @@ msgstr "Radio (jednaka glasnoća za sve pjesme)" msgid "Radios" msgstr "Radio stanice" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Kiša" @@ -3797,7 +3823,7 @@ msgstr "Ocjenite trenutnu pjesmu sa 4 zvijezdice" msgid "Rate the current song 5 stars" msgstr "Ocjenite trenutnu pjesmu sa 5 zvijezdica" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocjena" @@ -3855,7 +3881,7 @@ msgstr "Uklonite" msgid "Remove action" msgstr "Uklonite radnju" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Ukloni duplikate iz popisa izvođenja" @@ -3871,7 +3897,7 @@ msgstr "Ukoni iz Moje glazbe" msgid "Remove from favorites" msgstr "Ukloni iz omiljenih" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Uklonite iz popisa izvođenja" @@ -3908,7 +3934,7 @@ msgstr "Preimenujte popis izvođenja" msgid "Rename playlist..." msgstr "Preimenujte popis izvođenja..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Promjenite redosljed pjesama ovim redosljedom..." @@ -3999,6 +4025,18 @@ msgstr "Povratak u Clementine" msgid "Right" msgstr "Desno" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Sigurno ukloni uređaj" msgid "Safely remove the device after copying" msgstr "Sigurno ukloni uređaj nakon kopiranja" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frekvencija" @@ -4053,7 +4091,7 @@ msgstr "Preuzmi sliku" msgid "Save playlist" msgstr "Spremite popis izvođenja" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Spremite popis izvođenja..." @@ -4089,7 +4127,7 @@ msgstr "Profil skalabilne brzine uzorkovanja (SBU)" msgid "Scale size" msgstr "Promijeni veličinu" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pogodci" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobblaj pjesmu koju slušam" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Traži pjesmu koja se tranutno izvodi po ralativnom broju" msgid "Seek the currently playing track to an absolute position" msgstr "Traži pjesmu koja se tranutno izvodi po apsolutnom položaju" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Odaberi sve" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odaberi ništa" @@ -4214,7 +4252,7 @@ msgstr "Odaberite vizualizaciju" msgid "Select visualizations..." msgstr "Odaberite vizualizaciju..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Odaberi..." @@ -4234,7 +4272,7 @@ msgstr "Pojedinosti poslužitelja" msgid "Service offline" msgstr "Usluga nedostupna" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Postavite %1 na \"%2\"..." @@ -4243,7 +4281,7 @@ msgstr "Postavite %1 na \"%2\"..." msgid "Set the volume to percent" msgstr "Postavi glasnoću zvuka na posto" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Postavi vrijednosti za sve odabrane pjesme..." @@ -4306,7 +4344,7 @@ msgstr "Prikaži ljepši OSD" msgid "Show above status bar" msgstr "Prikaži iznad statusne trake" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Prikaži sve pjesme" @@ -4326,12 +4364,12 @@ msgstr "Prikaži razdjelnike u stablu fonoteke" msgid "Show fullsize..." msgstr "Prikaži u punoj veličini..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Prikaži u pregledniku datoteka..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Prikaži u fonoteci..." @@ -4343,11 +4381,11 @@ msgstr "Prikaži u različitim izvođačima" msgid "Show moodbar" msgstr "Prikaži traku tonaliteta" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Prikaži samo duplicirane pjesme" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Prikaži samo neoznačene pjesme" @@ -4387,7 +4425,7 @@ msgstr "Sviraj naizmjenično albume" msgid "Shuffle all" msgstr "Sviraj naizmjenično sve" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Izmješajte popis izvođenja" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Preskoči unatrag u popisu izvođenja" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Preskoči računanje" @@ -4463,7 +4501,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informacije o pjesmi" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info pjesme" @@ -4495,7 +4533,7 @@ msgstr "Razvrstaj pjesmu po" msgid "Sorting" msgstr "Razvrstavanje" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Izvor" @@ -4531,6 +4569,10 @@ msgstr "Standardno" msgid "Starred" msgstr "Sa zvjezdicom" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Pokrenite popis izvođenja koji se trenutno izvodi" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Počnite tipkati nešto iznad u okvir za pretragu da bi ispunili taj popis rezultata pretraživanja" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Započinjem %1" @@ -4559,7 +4601,7 @@ msgstr "Započinjem..." msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Zaustavi reprodukciju" @@ -4568,7 +4610,7 @@ msgstr "Zaustavi reprodukciju" msgid "Stop after" msgstr "Zaustavi nakon" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Zaustavi reprodukciju nakon ove pjesme" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Probno razdoblje za Subsonic poslužitelj je završeno. Molim, donirajte za dobivanje ključa licence. Posjetite subsonic.org za više pojedinosti." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Ove datoteke bit će obrisane sa uređaja, sigurno želite nastaviti?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Ovaj stream je samo za pretplaćene korisnike" msgid "This type of device is not supported: %1" msgstr "Ova vrst uređaja nije podržana: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Naziv" @@ -4873,11 +4916,11 @@ msgstr "Uključi/Isključi ljepši OSD" msgid "Toggle fullscreen" msgstr "Cijelozaslonski prikaz" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Uključi/isključi stanje reda čekanja" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Uključi/Isključi skrobblanje" @@ -4909,12 +4952,13 @@ msgstr "Ukupno preuzeto bajtova" msgid "Total network requests made" msgstr "Ukupno mrežnih zahtjeva" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Broj" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Enkôdiranje glazbe" @@ -5012,7 +5056,7 @@ msgstr "Ažuriraj Grooveshark popis izvođenja" msgid "Update all podcasts" msgstr "Ažuriraj sve podcaste" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Ažurirajte promjene u mapi fonoteke" @@ -5167,7 +5211,7 @@ msgstr "Pogled" msgid "Visualization mode" msgstr "Način vizualizacije" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizacija" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Želite li preseliti druge pjesme sa ovog albuma u razne izvođače?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Želite li pokrenuti ponovnu potpunu prtetragu odmah?" @@ -5307,10 +5351,10 @@ msgstr "Zapiši svu statistiku pjesama u datoteke pjesama" msgid "Wrong username or password." msgstr "Pogrešno korisničko ime ili lozinka." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Godina" diff --git a/src/translations/hu.po b/src/translations/hu.po index f28e271c5..d2eea7328 100644 --- a/src/translations/hu.po +++ b/src/translations/hu.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the Clementine package. # # Translators: +# andrewtranslates , 2014 # FIRST AUTHOR , 2010 # gyeben , 2012 # lukibeni , 2012 @@ -14,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/clementine/language/hu/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -173,11 +174,11 @@ msgstr "&Középre" msgid "&Custom" msgstr "&Egyéni" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Extrák" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Súgó" @@ -194,7 +195,7 @@ msgstr "&Elrejtés..." msgid "&Left" msgstr "&Balra" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Zene" @@ -202,15 +203,15 @@ msgstr "Zene" msgid "&None" msgstr "&Egyik sem" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lejátszási lista" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Kilépés" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Ismétlési mód" @@ -218,7 +219,7 @@ msgstr "Ismétlési mód" msgid "&Right" msgstr "&Jobbra" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Véletlenszerű lejátszási mód" @@ -226,7 +227,7 @@ msgstr "Véletlenszerű lejátszási mód" msgid "&Stretch columns to fit window" msgstr "&Oszlopszélességek igazítása az ablakhoz" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Eszközök" @@ -240,7 +241,7 @@ msgstr "...és az összes Amarok közreműködő" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" -msgstr "" +msgstr "0" #: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 msgid "0:00:00" @@ -260,7 +261,7 @@ msgstr "1 szám" #: ../bin/src/ui_networkremotesettingspage.h:201 msgid "127.0.0.1" -msgstr "" +msgstr "127.0.0.1" #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 @@ -269,7 +270,7 @@ msgstr "128k MP3" #: ../bin/src/ui_appearancesettingspage.h:291 msgid "40%" -msgstr "" +msgstr "40%" #: library/library.cpp:60 msgid "50 random tracks" @@ -371,11 +372,11 @@ msgstr "" msgid "About %1" msgstr "A(z) %1 névjegye" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "A Clementine névjegye" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt névjegye…" @@ -423,19 +424,19 @@ msgstr "Új adatfolyam hozzáadása" msgid "Add directory..." msgstr "Mappa hozzáadása" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Új fájl" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Fájl hozzáadása" @@ -443,11 +444,11 @@ msgstr "Fájl hozzáadása" msgid "Add files to transcode" msgstr "Fájlok felvétele átkódoláshoz" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Mappa hozzáadása" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Mappa hozzáadása..." @@ -459,7 +460,7 @@ msgstr "Új mappa hozzáadása…" msgid "Add podcast" msgstr "Podcast hozzáadása" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast hozzáadása..." @@ -535,7 +536,7 @@ msgstr "Szám sorszámának hozzáadása" msgid "Add song year tag" msgstr "Szám évének hozzáadása" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Adatfolyam hozzáadása…" @@ -547,7 +548,7 @@ msgstr "Hozzáadás a Grooveshark kedvencekhez" msgid "Add to Grooveshark playlists" msgstr "Hozzáadás a Grooveshark lejátszólistákhoz" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Hozzáadás másik lejátszási listához" @@ -608,12 +609,12 @@ msgstr "Utána" msgid "After copying..." msgstr "Másolás után…" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -621,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideális hangerő minden számhoz)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -643,11 +644,11 @@ msgstr "Albumok borítóval" msgid "Albums without covers" msgstr "Albumok bórító nélkül" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Minden fájl (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Minden Dicsőség a Hypnotoadnak!" @@ -682,7 +683,7 @@ msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:196 msgid "Allow downloads" -msgstr "" +msgstr "Letöltések engedélyezése" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" @@ -774,17 +775,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Előadó" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Előadó infó" @@ -800,7 +801,7 @@ msgstr "Előadó címkék" msgid "Artist's initial" msgstr "Előadó kezdése" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Hang formátum" @@ -846,7 +847,7 @@ msgstr "Átlagos képméret" msgid "BBC Podcasts" msgstr "BBC podcastok" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -875,7 +876,7 @@ msgstr "Adatbázis biztonsági mentése" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Tiltás" @@ -904,7 +905,7 @@ msgstr "Legjobb" msgid "Biography from %1" msgstr "Életrajz innen: %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitráta" @@ -1010,7 +1011,7 @@ msgstr "A mono lejátszás bekapcsolása csak a következő zeneszámnál lesz msgid "Check for new episodes" msgstr "Új epizódok keresése" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Frissítés keresése..." @@ -1060,11 +1061,11 @@ msgstr "Tisztítás" msgid "Clear" msgstr "Kiürít" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Lejátszási lista űrítése" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1155,8 +1156,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kattintásra vált a hátralévő és a teljes idő kijelzése között" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1194,7 +1195,7 @@ msgstr "Színek" msgid "Comma separated list of class:level, level is 0-3" msgstr "Vesszővel tagolt lista az osztály:szint pároknak, a szintek 0-3 értékeket vehetnek fel" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Megjegyzés" @@ -1203,11 +1204,11 @@ msgstr "Megjegyzés" msgid "Complete tags automatically" msgstr "Címkék automatikus kiegészítése" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Címkék automatikus kiegészítése" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1247,7 @@ msgstr "" msgid "Configure global search..." msgstr "Globális keresés beállítása..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Zenetár beállítása..." @@ -1283,7 +1284,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konzol" @@ -1303,12 +1304,12 @@ msgstr "Az eszköz által nem támogatott számok konvertálása" msgid "Copy to clipboard" msgstr "Másolás vágólapra" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Másolás eszközre..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Másolás a zenetárba..." @@ -1330,14 +1331,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nem hozható létre a \"%1\" GStreamer objektum. Ellenőrizze, hogy telepített minden szükséges GStreamer modult." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 kódolásához nem található muxer, ellenőrizze, hogy telepítve van-e a megfelelő GStreamer beépülő" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1354,7 +1355,7 @@ msgid "Couldn't open output file %1" msgstr "A %1 célfájl megnyitása sikertelen" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Borítókezelő" @@ -1398,11 +1399,11 @@ msgstr "Átúsztatás használata számok automatikus váltásánál" msgid "Cross-fade when changing tracks manually" msgstr "Átúsztatás használata számok manuális váltásánál" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1410,63 +1411,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1509,11 +1510,11 @@ msgid "" "recover your database" msgstr "Adatbázis sérülés található. Kérjük olvassa el a https://code.google.com/p/clementine-player/wiki/DatabaseCorruption honlapot további információkért, hogy hogyan állítsa vissza adatbázisát." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Létrehozás dátuma" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Módosítás dátuma" @@ -1563,7 +1564,7 @@ msgid "Delete downloaded data" msgstr "Letöltött adatok törlése" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Fájlok törlése" @@ -1571,7 +1572,7 @@ msgstr "Fájlok törlése" msgid "Delete from device..." msgstr "Törlés az eszközről..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Törlés a lemezről..." @@ -1596,15 +1597,16 @@ msgstr "Az eredeti fájlok törlése" msgid "Deleting files" msgstr "Fájlok törlése" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Kiválasztott számok törlése a sorból" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Szám törlése a sorból" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cél" @@ -1628,10 +1630,14 @@ msgstr "Eszköznév" msgid "Device properties..." msgstr "Eszköztulajdonságok..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Eszközök" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Talán erre gondoltál:" @@ -1670,8 +1676,8 @@ msgstr "Hangulatsáv generáció letiltása" msgid "Disabled" msgstr "Tiltva" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Lemez" @@ -1688,7 +1694,7 @@ msgstr "Beállítások megtekintése" msgid "Display the on-screen-display" msgstr "OSD mutatása" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Teljes zenetár újraolvasása" @@ -1810,6 +1816,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Időtartam" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamikus mód bekapcsolva" @@ -1822,12 +1832,12 @@ msgstr "Dinamikus véletlenszerű mix" msgid "Edit smart playlist..." msgstr "Intelligens lejátszási lista szerkesztése..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Címke módosítása..." @@ -1840,7 +1850,7 @@ msgid "Edit track information" msgstr "Száminformációk szerkesztése" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Száminformációk szerkesztése..." @@ -1941,7 +1951,7 @@ msgstr "" msgid "Entire collection" msgstr "A teljes kollekció" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Hangszínszabályzó" @@ -1955,7 +1965,7 @@ msgstr "Megegyezik a --log-levels *:3 kapcsolóval" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Hiba" @@ -1975,7 +1985,7 @@ msgstr "Hiba történt a számok törlése közben" msgid "Error downloading Spotify plugin" msgstr "Hiba a Spotify beépülő letöltése közben" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Hiba %1 betöltésekor" @@ -1985,12 +1995,12 @@ msgstr "Hiba %1 betöltésekor" msgid "Error loading di.fm playlist" msgstr "Hiba a di.fm lejátszólista letöltésekor" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Hiba %1: %2 feldolgozásakor" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Hiba az hang CD betöltése közben" @@ -2032,7 +2042,7 @@ msgstr "Kivéve az azonos albumon vagy azonos CUE fájlban lévő számok közö #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "Meglévő borítók" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" @@ -2068,27 +2078,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2115,6 +2125,10 @@ msgstr "Elhalkulás" msgid "Fading duration" msgstr "Elhalkulás hossza" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "A mappa lekérése meghiúsult" @@ -2166,6 +2180,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Hiba a borító betöltése közben" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Fájl formátum" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Fájlkiterjesztés" @@ -2174,19 +2192,19 @@ msgstr "Fájlkiterjesztés" msgid "File formats" msgstr "Fájl formátumok" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fájlnév" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Fájlnév (útvonal nélkül)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fájlméret" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2196,7 +2214,7 @@ msgstr "Fájltípus" msgid "Filename" msgstr "Fájlnév" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fájlok" @@ -2316,9 +2334,10 @@ msgstr "Általános" msgid "General settings" msgstr "Általános beállítások" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Műfaj" @@ -2350,11 +2369,11 @@ msgstr "Adjon meg egy nevet:" msgid "Go" msgstr "Ugrás" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Váltás a következő lejátszási lista lapra" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Váltás az előző lejátszási lista lapra" @@ -2424,7 +2443,7 @@ msgstr "Műfaj/Album szerint" msgid "Group by Genre/Artist/Album" msgstr "Műfaj/Előadó/Album szerint" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2579,6 +2598,10 @@ msgstr "%1 indexelése" msgid "Information" msgstr "Információ" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Beszúrás..." @@ -2591,7 +2614,7 @@ msgstr "Telepítve" msgid "Integrity check" msgstr "Integritás ellenőrzése" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2631,6 +2654,10 @@ msgstr "Érvénytelen munkafolyamat kulcs" msgid "Invalid username and/or password" msgstr "Érvénytelen felhasználói név és/vagy jelszó" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2655,7 +2682,7 @@ msgstr "A Jamendo legnépszerűbb számai a héten" msgid "Jamendo database" msgstr "Jamendo adatbázis" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Ugrás a most lejátszott számra" @@ -2679,7 +2706,7 @@ msgstr "Futás a háttérben bezárt ablak esetén is" msgid "Keep the original files" msgstr "Eredeti fájlok megőrzése" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kismacskák" @@ -2703,7 +2730,7 @@ msgstr "Nagy albumborító" msgid "Large sidebar" msgstr "Nagy oldalsáv" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Utoljára lejátszva" @@ -2784,14 +2811,14 @@ msgstr "Hagyja üresen az alapértelmezéshez. Példák: \"/dev/dsp\", \"front\" #: ../bin/src/ui_equalizer.h:172 msgid "Left" -msgstr "" +msgstr "Balra" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Időtartam" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Zenetár" @@ -2799,7 +2826,7 @@ msgstr "Zenetár" msgid "Library advanced grouping" msgstr "Zenetár egyedi csoportosítása" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Zenetár újraolvasási figyelmeztetés" @@ -2844,7 +2871,7 @@ msgstr "Borító betöltése lemezről..." msgid "Load playlist" msgstr "Lejátszási lista betöltése" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Lejátszási lista betöltése..." @@ -2873,11 +2900,11 @@ msgstr "Számok betöltése" msgid "Loading stream" msgstr "Adatfolyam betöltése" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Számok betöltése" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Szám információk betöltése" @@ -2896,10 +2923,10 @@ msgstr "Fájlok/URL-ek betöltése, lejátszási lista cseréje" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Bejelentkezés" @@ -2911,7 +2938,7 @@ msgstr "Sikertelen bejelentkezés" msgid "Long term prediction profile (LTP)" msgstr "Hosszú távú előrejelzésen alapuló profil (LTP" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Kedvenc" @@ -2974,7 +3001,7 @@ msgstr "Letöltés a Magnatuneról befejezve" msgid "Main profile (MAIN)" msgstr "Fő profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3057,7 +3084,7 @@ msgstr "Mono lejátszás" msgid "Months" msgstr "Hónap" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Hangulat" @@ -3087,7 +3114,7 @@ msgstr "Csatolási pontok" msgid "Move down" msgstr "Mozgatás lefelé" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Áthelyezés a zenetárba..." @@ -3096,7 +3123,7 @@ msgstr "Áthelyezés a zenetárba..." msgid "Move up" msgstr "Mozgatás felfelé" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Zene" @@ -3104,7 +3131,7 @@ msgstr "Zene" msgid "Music Library" msgstr "Zenetár" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Némítás" @@ -3192,7 +3219,7 @@ msgstr "Soha ne indítsa el a lejátszást" msgid "New folder" msgstr "Új mappa" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Új lejátszási lista" @@ -3216,7 +3243,7 @@ msgstr "Legújabb számok" msgid "Next" msgstr "Következő" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Következő szám" @@ -3255,7 +3282,7 @@ msgstr "Rövid blokkok nélkül" msgid "None" msgstr "Egyik sem" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Egy kiválasztott szám sem alkalmas az eszközre való másoláshoz" @@ -3373,7 +3400,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "%1 megnyitása a böngészőben" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Hang CD megnyitása..." @@ -3389,7 +3416,7 @@ msgstr "OPML-fájl megnyitása..." msgid "Open device" msgstr "Eszköz megnyitása" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Fájl megnyitása..." @@ -3405,7 +3432,7 @@ msgstr "Megnyitás új lejátszási listán" #: songinfo/echonestbiographies.cpp:96 msgid "Open in your browser" -msgstr "" +msgstr "Megnyitás böngészőben" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 @@ -3424,7 +3451,7 @@ msgstr "Optimalizálás bitrátára" msgid "Optimize for quality" msgstr "Optimalizálás minőségre" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Beállítások..." @@ -3436,7 +3463,7 @@ msgstr "" msgid "Organise Files" msgstr "Fájlok rendezése" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Fájlok rendezése..." @@ -3454,13 +3481,13 @@ msgstr "Egyéb beállítások" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "Kimenet" #: ../bin/src/ui_playbacksettingspage.h:325 msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Kimenet beállításai" @@ -3501,7 +3528,7 @@ msgstr "Party" msgid "Password" msgstr "Jelszó" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Szünet" @@ -3514,7 +3541,7 @@ msgstr "Lejátszás szüneteltetése" msgid "Paused" msgstr "Szüneteltetve" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3527,9 +3554,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Egyszerű oldalsáv" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Lejátszás" @@ -3542,7 +3569,7 @@ msgstr "Előadó vagy Címke lejátszása" msgid "Play artist radio..." msgstr "Előadó rádió lejátszása" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Lejátszások száma" @@ -3597,7 +3624,7 @@ msgstr "Lejátszási lista beállítások" msgid "Playlist type" msgstr "Lejátszási lista típus" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Lejátszási lista" @@ -3649,7 +3676,7 @@ msgstr "Előerősítő" msgid "Preferences" msgstr "Beállítások" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Beállítások..." @@ -3704,7 +3731,7 @@ msgstr "Előnézet" msgid "Previous" msgstr "Előző" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Előző szám" @@ -3718,7 +3745,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Folyamat" @@ -3747,16 +3774,16 @@ msgstr "Minőség" msgid "Querying device..." msgstr "Eszköz lekérdezése..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Sorkezelő" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Sorba állítja a kiválasztott számokat" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Szám sorba állítása" @@ -3768,7 +3795,7 @@ msgstr "Rádió (egyenlő hangerő minden számhoz)" msgid "Radios" msgstr "Rádiók" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Eső" @@ -3800,7 +3827,7 @@ msgstr "A most játszott szám értékelése 4 csillaggal" msgid "Rate the current song 5 stars" msgstr "A most játszott szám értékelése 5 csillaggal" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Értékelés" @@ -3858,7 +3885,7 @@ msgstr "Eltávolítás" msgid "Remove action" msgstr "Esemény eltávolítása" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Duplikációk eltávolítása a lejátszási listáról" @@ -3874,7 +3901,7 @@ msgstr "Eltávolítás a Zenéimből" msgid "Remove from favorites" msgstr "Eltávolítás a kedvencekből" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Eltávolítás a lejátszási listáról" @@ -3911,7 +3938,7 @@ msgstr "Lejátszási lista átnevezése" msgid "Rename playlist..." msgstr "Lejátszási lista átnevezése..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Számok újraszámozása ebben a sorrendben..." @@ -4000,6 +4027,18 @@ msgstr "Visszatérés a Clementine-be" #: ../bin/src/ui_equalizer.h:174 msgid "Right" +msgstr "Jobbra" + +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." msgstr "" #: ui/equalizer.cpp:131 @@ -4028,7 +4067,7 @@ msgstr "Eszköz biztonságos eltávolítása" msgid "Safely remove the device after copying" msgstr "Eszköz biztonságos eltávolítása másolás után" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Mintavételi sűrűség" @@ -4056,7 +4095,7 @@ msgstr "Kép mentése" msgid "Save playlist" msgstr "Lejátszási lista mentése" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Lejátszási lista mentése..." @@ -4092,7 +4131,7 @@ msgstr "Skálázható mintavételezési profil (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontszám" @@ -4101,7 +4140,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Az általam hallgatott számok Scrobble funkcióval történő figyelése" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4121,11 +4160,11 @@ msgstr "Keresés a Magnatune-on" #: internet/subsonicservice.cpp:75 msgid "Search Subsonic" -msgstr "" +msgstr "Keresés Subsonic-ban" #: ui/albumcoverchoicecontroller.cpp:66 msgid "Search automatically" -msgstr "" +msgstr "Automatikus keresés" #: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." @@ -4185,11 +4224,11 @@ msgstr "Léptetés hátra" msgid "Seek the currently playing track to an absolute position" msgstr "A lejátszott szám adott pozícióra léptetése" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Összes kiválasztása" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Kiválasztás megszüntetése" @@ -4217,7 +4256,7 @@ msgstr "Megjelenítések kiválasztása" msgid "Select visualizations..." msgstr "Megjelenítések kiválasztása..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4237,7 +4276,7 @@ msgstr "" msgid "Service offline" msgstr "A szolgáltatás nem üzemel" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 beállítása \"%2\"-ra/re..." @@ -4246,13 +4285,13 @@ msgstr "%1 beállítása \"%2\"-ra/re..." msgid "Set the volume to percent" msgstr "Hangerő beállítása százalékra" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Érték beállítása minden kiválasztott számnak..." #: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Settings" -msgstr "" +msgstr "Beállítások" #: ../bin/src/ui_globalshortcutssettingspage.h:173 msgid "Shortcut" @@ -4309,7 +4348,7 @@ msgstr "Pretty OSD megjelenítése" msgid "Show above status bar" msgstr "Jelenítse meg az állapotsáv fölött" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Minden szám mutatása" @@ -4329,12 +4368,12 @@ msgstr "Elválasztók mutatása" msgid "Show fullsize..." msgstr "Jelenítse meg teljes méretben..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mutassa a fájlböngészőben..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4346,11 +4385,11 @@ msgstr "Jelenítse meg a különböző előadók között" msgid "Show moodbar" msgstr "Hangulatsáv megjelenítése" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Csak az ismétlődések mutatása" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Csak a címke nélküliek mutatása" @@ -4390,7 +4429,7 @@ msgstr "Albumok összekeverése" msgid "Shuffle all" msgstr "Az összes véletlenszerűen" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Lejátszási lista véletlenszerűen" @@ -4416,11 +4455,11 @@ msgstr "Hasonló előadók" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "Méret" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "Méret:" #: ui/equalizer.cpp:133 msgid "Ska" @@ -4430,7 +4469,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Visszalépés a lejátszási listában" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Kihagyások száma" @@ -4466,7 +4505,7 @@ msgstr "Lágy Rock" msgid "Song Information" msgstr "Száminformációk" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Szám infó" @@ -4498,7 +4537,7 @@ msgstr "Számok rendezése" msgid "Sorting" msgstr "Rendezés" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Forrás" @@ -4534,6 +4573,10 @@ msgstr "Normál" msgid "Starred" msgstr "Kedvenc" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Az éppen lejátszott lista indítása" @@ -4549,7 +4592,7 @@ msgid "" "list" msgstr "Kezdjen el írni valamit a keresési mezőbe, hogy kitöltse ezt a keresési eredmény listát" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 indítása" @@ -4562,7 +4605,7 @@ msgstr "Indítás…" msgid "Stations" msgstr "Állomások" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Leállít" @@ -4571,7 +4614,7 @@ msgstr "Leállít" msgid "Stop after" msgstr "Megállít utána" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Leállítás az aktuális szám után" @@ -4739,7 +4782,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4780,7 +4823,7 @@ msgid "" "continue?" msgstr "Ezek a fájlok törölve lesznek az eszközről. Biztos benne, hogy folytatja?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4852,9 +4895,10 @@ msgstr "Ez az adatfolyam csak előfizetőknek érhető el" msgid "This type of device is not supported: %1" msgstr "A %1 eszköztípus nem támogatott" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Cím" @@ -4876,11 +4920,11 @@ msgstr "OSD ki-bekapcsolása" msgid "Toggle fullscreen" msgstr "Teljes képernyő" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Sorállapot megjelenítése" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Scrobble funkció váltása" @@ -4912,12 +4956,13 @@ msgstr "Összes átküldött bájt" msgid "Total network requests made" msgstr "Összes hálózati kérés" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Szám" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Zene átkódolása" @@ -4964,11 +5009,11 @@ msgstr "Ubuntu One" #: ../bin/src/ui_ubuntuonesettingspage.h:132 msgid "Ubuntu One password" -msgstr "" +msgstr "Ubuntu One jelszó" #: ../bin/src/ui_ubuntuonesettingspage.h:130 msgid "Ubuntu One username" -msgstr "" +msgstr "Ubuntu One felhasználónév" #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" @@ -5015,7 +5060,7 @@ msgstr "Grooveshark lejátszólisták frissítése" msgid "Update all podcasts" msgstr "Összes podcast frissítése" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Megváltozott zenetárbeli könyvtárak frissítése" @@ -5170,7 +5215,7 @@ msgstr "Nézet" msgid "Visualization mode" msgstr "Megjelenítés módja" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Megjelenítések" @@ -5298,7 +5343,7 @@ msgid "" "well?" msgstr "Szeretné a többi számot ebből az albumból áthelyezni a Vegyes előadók közé is?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Akarsz futtatni egy teljes újraolvasást most?" @@ -5310,10 +5355,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Év" diff --git a/src/translations/hy.po b/src/translations/hy.po index bca228cc1..d8849a5df 100644 --- a/src/translations/hy.po +++ b/src/translations/hy.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/clementine/language/hy/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "&Կենտրոն" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Օգնություն" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "&Ձախ" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Դուրս գալ" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "&Աջ" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/ia.po b/src/translations/ia.po index bd750e7b1..b59b8eef3 100644 --- a/src/translations/ia.po +++ b/src/translations/ia.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/clementine/language/ia/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Adjuta" @@ -189,7 +189,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musica" @@ -197,15 +197,15 @@ msgstr "&Musica" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -213,7 +213,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -221,7 +221,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Instrumen&tos" @@ -366,11 +366,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -418,19 +418,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -438,11 +438,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -454,7 +454,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -530,7 +530,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -542,7 +542,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -603,12 +603,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -616,7 +616,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -795,7 +795,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -870,7 +870,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -899,7 +899,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1005,7 +1005,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1055,11 +1055,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1198,11 +1198,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1298,12 +1298,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1393,11 +1393,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1566,7 +1566,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1591,15 +1591,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1623,10 +1624,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1665,8 +1670,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1683,7 +1688,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1805,6 +1810,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1817,12 +1826,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1936,7 +1945,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1950,7 +1959,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1970,7 +1979,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1980,12 +1989,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2063,27 +2072,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2110,6 +2119,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2161,6 +2174,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2169,19 +2186,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2311,9 +2328,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2345,11 +2363,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2419,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2574,6 +2592,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2586,7 +2608,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2626,6 +2648,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2650,7 +2676,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2674,7 +2700,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2698,7 +2724,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2781,12 +2807,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2794,7 +2820,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2839,7 +2865,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2868,11 +2894,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2891,10 +2917,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2906,7 +2932,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2969,7 +2995,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3052,7 +3078,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3082,7 +3108,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3091,7 +3117,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3099,7 +3125,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3187,7 +3213,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3211,7 +3237,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3250,7 +3276,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3368,7 +3394,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3384,7 +3410,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3419,7 +3445,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3431,7 +3457,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3455,7 +3481,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3496,7 +3522,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3509,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3522,9 +3548,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3537,7 +3563,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3592,7 +3618,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3644,7 +3670,7 @@ msgstr "" msgid "Preferences" msgstr "Preferentias" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferentias..." @@ -3699,7 +3725,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3742,16 +3768,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3763,7 +3789,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3795,7 +3821,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3853,7 +3879,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3869,7 +3895,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3906,7 +3932,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3997,6 +4023,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4023,7 +4061,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4051,7 +4089,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4087,7 +4125,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4212,7 +4250,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4232,7 +4270,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4241,7 +4279,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4304,7 +4342,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4324,12 +4362,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4341,11 +4379,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4385,7 +4423,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4425,7 +4463,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4461,7 +4499,7 @@ msgstr "" msgid "Song Information" msgstr "Information de canto" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4493,7 +4531,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4529,6 +4567,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4557,7 +4599,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4566,7 +4608,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4871,11 +4914,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4907,12 +4950,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5010,7 +5054,7 @@ msgstr "Actualisar lista de reproduction de Grooveshark" msgid "Update all podcasts" msgstr "Actualisar omne podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5165,7 +5209,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5305,10 +5349,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/id.po b/src/translations/id.po index 8bda3e782..42c542c9c 100644 --- a/src/translations/id.po +++ b/src/translations/id.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/clementine/language/id/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -174,11 +174,11 @@ msgstr "&Tengah" msgid "&Custom" msgstr "&Pengaturan" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Ekstra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Bantuan" @@ -195,7 +195,7 @@ msgstr "&Sembunyikan..." msgid "&Left" msgstr "&Kiri" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musik" @@ -203,15 +203,15 @@ msgstr "&Musik" msgid "&None" msgstr "&Tidak Ada" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Daftar Main" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Keluar" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Mode &perulangan" @@ -219,7 +219,7 @@ msgstr "Mode &perulangan" msgid "&Right" msgstr "&Kanan" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mode peng&acakan" @@ -227,7 +227,7 @@ msgstr "Mode peng&acakan" msgid "&Stretch columns to fit window" msgstr "&Tarik kolom agar pas dengan jendela" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Peralatan" @@ -372,11 +372,11 @@ msgstr "Batal" msgid "About %1" msgstr "Tentang %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Tentang Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Tentang Qt..." @@ -424,19 +424,19 @@ msgstr "Tambah stream lainnya..." msgid "Add directory..." msgstr "Tambah direktori..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Tambah berkas" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Tambahkan berkas ke transcoder" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Tambahkan berkas(-berkas) ke transcoder" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Tambah berkas..." @@ -444,11 +444,11 @@ msgstr "Tambah berkas..." msgid "Add files to transcode" msgstr "Tambah berkas untuk ditranskode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Tambah folder" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Tambah folder..." @@ -460,7 +460,7 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "Tambah podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Tambah podcast..." @@ -536,7 +536,7 @@ msgstr "Tambah label trek lagu" msgid "Add song year tag" msgstr "Tambah tag tahun pada lagu" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Tambah stream..." @@ -548,7 +548,7 @@ msgstr "Tambah ke favorit Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Tambah ke daftar main Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Tambah ke daftar main lainnya" @@ -609,12 +609,12 @@ msgstr "Setelah " msgid "After copying..." msgstr "Setelah menyalin..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kenyaringan ideal untuk semua trek)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -644,11 +644,11 @@ msgstr "Album dengan sampul" msgid "Albums without covers" msgstr "Album tanpa sampul" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Semua Berkas (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Kemenangan untuk Sang Hypnotoad!" @@ -775,17 +775,17 @@ msgid "" "the songs of your library?" msgstr "Apa anda yakin ingin menuliskan statistik lagu kedalam berkas lagu untuk semua lagu di perpustakan anda?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artis" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info Artis" @@ -801,7 +801,7 @@ msgstr "Label artis" msgid "Artist's initial" msgstr "Inisial Artis" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format audio" @@ -847,7 +847,7 @@ msgstr "Ukuran rata-rata gambar" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -876,7 +876,7 @@ msgstr "Buat cadangan database" msgid "Balance" msgstr "Seimbang" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Larangan" @@ -905,7 +905,7 @@ msgstr "Terbaik" msgid "Biography from %1" msgstr "Biografi dari %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" @@ -1011,7 +1011,7 @@ msgstr "Mengganti pemutaran mono akan berlaku saat lagu berikut dimainkan" msgid "Check for new episodes" msgstr "Perbarui episode baru" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Cek pembaruan..." @@ -1061,11 +1061,11 @@ msgstr "Pembersihan" msgid "Clear" msgstr "Bersih" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Bersihkan playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1156,8 +1156,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Klik untuk beralih antara waktu tersisa dan total waktu" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1195,7 +1195,7 @@ msgstr "Warna-warna" msgid "Comma separated list of class:level, level is 0-3" msgstr "Daftar koma terpisah dari kelas: tingkat, tingkat ini adalah 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1204,11 +1204,11 @@ msgstr "Komentar" msgid "Complete tags automatically" msgstr "Isi tag secara otomatis" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Isi tag secara otomatis..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Konfigurasi Subsonic..." msgid "Configure global search..." msgstr "Konfigurasi pencarian global..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfigurasi Pustaka" @@ -1284,7 +1284,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Koneksi melewati batas waktu, periksa URL server. Contoh: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsol" @@ -1304,12 +1304,12 @@ msgstr "Konversi semua musik yang tidak dapat dimainkan oleh perangkat itu." msgid "Copy to clipboard" msgstr "Salin ke papan klip" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Salin ke perangkat..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Salin ke Pustaka ..." @@ -1331,14 +1331,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Tidak dapat membuat elemen GStreamer \"%1\" - pastikan Anda memiliki semua pengaya GStreamer yang telah terinstal" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Tidak dapat menemukan muxer untuk %1, periksa Anda memiliki pengaya GStreamer terinstal dengan benar" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1355,7 +1355,7 @@ msgid "Couldn't open output file %1" msgstr "Tidak dapat membuka berkas keluaran %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Sampul Manajer" @@ -1399,11 +1399,11 @@ msgstr "Pudaran-suara ketika mengubah trek secara otomatis" msgid "Cross-fade when changing tracks manually" msgstr "Pudaran-suara ketika mengubah trek secara manual" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1411,63 +1411,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1510,11 +1510,11 @@ msgid "" "recover your database" msgstr "Kerusakan database terdeteksi. Harap baca https://code.google.com/p/clementine-player/wiki/DatabaseCorruption untuk instruksi bagaimana cara untuk mendapatkan kembali database Anda" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Tanggal dibuat" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Tanggal dimodifikasi" @@ -1564,7 +1564,7 @@ msgid "Delete downloaded data" msgstr "Hapus data yang sudah diunduh" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Hapus file" @@ -1572,7 +1572,7 @@ msgstr "Hapus file" msgid "Delete from device..." msgstr "Hapus dari perangkat..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Hapus dari disk..." @@ -1597,15 +1597,16 @@ msgstr "Hapus file asli" msgid "Deleting files" msgstr "Menghapus file" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Batalkan antrian trek terpilih" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Batalkan antrian trek" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Tujuan" @@ -1629,10 +1630,14 @@ msgstr "Nama perangkat" msgid "Device properties..." msgstr "Properti perangkat..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Perangkat-perangkat" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Maksud Anda" @@ -1671,8 +1676,8 @@ msgstr "Nonaktifkan generasi moodbar" msgid "Disabled" msgstr "Nonaktifkan " -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Piringan" @@ -1689,7 +1694,7 @@ msgstr "Opsi tampilan" msgid "Display the on-screen-display" msgstr "Tampilkan pada layar-tampilan" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Lakukan scan ulang pustaka keseluruhan" @@ -1811,6 +1816,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Mode dinamik berjalan" @@ -1823,12 +1832,12 @@ msgstr "Campuran random dinamik" msgid "Edit smart playlist..." msgstr "Sunting daftar lagu pintar..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Sunting label..." @@ -1841,7 +1850,7 @@ msgid "Edit track information" msgstr "Sunting informasi trek" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Sunting informasi trek..." @@ -1942,7 +1951,7 @@ msgstr "Masukan IP ini kedalam Aplikasi untuk mengkoneksikan Clementine." msgid "Entire collection" msgstr "Semua koleksi" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekualiser" @@ -1956,7 +1965,7 @@ msgstr "Setara dengan --log-level *: 3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Kesalahan" @@ -1976,7 +1985,7 @@ msgstr "Kesalahan saat menghapus lagu" msgid "Error downloading Spotify plugin" msgstr "Kesalahan pengunduhan pengaya Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Kesalahan pemuatan %1" @@ -1986,12 +1995,12 @@ msgstr "Kesalahan pemuatan %1" msgid "Error loading di.fm playlist" msgstr "Kesalahan pemuatan daftar lagu di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Proses kesalahan %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Kesalahan ketika pemuatan CD audio" @@ -2069,27 +2078,27 @@ msgstr "Eksport selesai" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2116,6 +2125,10 @@ msgstr "Memudar" msgid "Fading duration" msgstr "Durasi memudar" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Gagal mengambil direktori" @@ -2167,6 +2180,10 @@ msgstr "Ambil pustaka Subsonic" msgid "Fetching cover error" msgstr "Kesalahan pengambilan sampul " +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Ekstensi file" @@ -2175,19 +2192,19 @@ msgstr "Ekstensi file" msgid "File formats" msgstr "Format file" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nama file" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nama berkas (tanpa jalur)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Ukuran file" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2197,7 +2214,7 @@ msgstr "Tipe file" msgid "Filename" msgstr "Nama file" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "File" @@ -2317,9 +2334,10 @@ msgstr "Umum" msgid "General settings" msgstr "Pengaturan umum" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2351,11 +2369,11 @@ msgstr "Berikan nama:" msgid "Go" msgstr "Jalankan" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Buka tab daftar lagu berikutnya" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Buka tab daftar lagu sebelumnya" @@ -2425,7 +2443,7 @@ msgstr "Kelompokkan menurut Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Kelompokkan menurut Genre/Artis/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Pengelompokan" @@ -2580,6 +2598,10 @@ msgstr "Mengindeks %1" msgid "Information" msgstr "Informasi" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "sisipkan" @@ -2592,7 +2614,7 @@ msgstr "Terinstall" msgid "Integrity check" msgstr "Cek kesatuan" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2632,6 +2654,10 @@ msgstr "Sesi kunci tidak sah" msgid "Invalid username and/or password" msgstr "Nama pengguna dan/atau kata sandi tidak sah" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2656,7 +2682,7 @@ msgstr "Trek Jamendo Terpopuler Mingguan" msgid "Jamendo database" msgstr "database Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Lompat ke trek yang sedang didengarkan sekarang" @@ -2680,7 +2706,7 @@ msgstr "Tetap jalankan di belakang layar ketika jendela ditutup" msgid "Keep the original files" msgstr "Simpan berkas-berkas asli" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Anak kucing" @@ -2704,7 +2730,7 @@ msgstr "Sampul album besar" msgid "Large sidebar" msgstr "Bilah samping besar" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Terakhir dimainkan" @@ -2787,12 +2813,12 @@ msgstr "Kosongkan untuk standarnya. Contoh: \"/dev/dsp\", \"front\", dll." msgid "Left" msgstr "Kiri" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durasi" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Pustaka" @@ -2800,7 +2826,7 @@ msgstr "Pustaka" msgid "Library advanced grouping" msgstr "Pengelompokan pustaka lanjutan" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Pemberitahuan pemindaian ulang Pustaka" @@ -2845,7 +2871,7 @@ msgstr "Memuat sampul dari media penyimpan..." msgid "Load playlist" msgstr "Memuat daftar lagu" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Memuat daftar lagu..." @@ -2874,11 +2900,11 @@ msgstr "Pemuatan lagu-lagu" msgid "Loading stream" msgstr "Pemuatan aliran" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Pemuatan trek" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Pemuatan info trek" @@ -2897,10 +2923,10 @@ msgstr "Memuat berkas-berkas/URLs, menggantikan daftar lagu yang sekarang" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Masuk" @@ -2912,7 +2938,7 @@ msgstr "Gagal masuk" msgid "Long term prediction profile (LTP)" msgstr "Profil prediksi jangka panjang (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Suka" @@ -2975,7 +3001,7 @@ msgstr "Unduh Magnatune telah selesai" msgid "Main profile (MAIN)" msgstr "Profil utama (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Buatlah begitu!" @@ -3058,7 +3084,7 @@ msgstr "Pemutaran mono" msgid "Months" msgstr "Bulan" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Mood" @@ -3088,7 +3114,7 @@ msgstr "Titik pasang" msgid "Move down" msgstr "Pindah ke bawah" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Pindah ke pustaka..." @@ -3097,7 +3123,7 @@ msgstr "Pindah ke pustaka..." msgid "Move up" msgstr "Pindah ke atas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musik" @@ -3105,7 +3131,7 @@ msgstr "Musik" msgid "Music Library" msgstr "Pustaka Musik" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Bisu" @@ -3193,7 +3219,7 @@ msgstr "Jangan pernah putar" msgid "New folder" msgstr "Folder baru" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Playlist baru" @@ -3217,7 +3243,7 @@ msgstr "Trek terbaru" msgid "Next" msgstr "Berikut" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Trek berikutnya" @@ -3256,7 +3282,7 @@ msgstr "Tidak ada blok pendek" msgid "None" msgstr "Tidak ada" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Tak satu pun dari lagu-lagu yang dipilih cocok untuk disalin ke perangkat" @@ -3374,7 +3400,7 @@ msgstr "Opasitas" msgid "Open %1 in browser" msgstr "Buka %1 di browser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Buka &audio CD..." @@ -3390,7 +3416,7 @@ msgstr "Buka berkas OPML..." msgid "Open device" msgstr "Buka perangkat" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Buka berkas..." @@ -3425,7 +3451,7 @@ msgstr "Optimasi untuk laju bit" msgid "Optimize for quality" msgstr "Optimasi untuk kualitas" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Pilihan" @@ -3437,7 +3463,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Mengatur Berkas" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Mengatur Berkas..." @@ -3461,7 +3487,7 @@ msgstr "Keluaran" msgid "Output device" msgstr "Perangkat output" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Pilihan keluaran" @@ -3502,7 +3528,7 @@ msgstr "Pesta" msgid "Password" msgstr "Kata sandi" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Jeda" @@ -3515,7 +3541,7 @@ msgstr "Menjeda pemutaran" msgid "Paused" msgstr "Jeda" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Penyanyi" @@ -3528,9 +3554,9 @@ msgstr "Piksel" msgid "Plain sidebar" msgstr "Bilah samping polos" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Putar" @@ -3543,7 +3569,7 @@ msgstr "Putar artis atau Label" msgid "Play artist radio..." msgstr "Putar artis radio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Jumlah putar" @@ -3598,7 +3624,7 @@ msgstr "Pilihan daftar lagu" msgid "Playlist type" msgstr "Tipe daftar lagu" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Daftar lagu" @@ -3650,7 +3676,7 @@ msgstr "Pre-amp" msgid "Preferences" msgstr "Preferensi" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferensi..." @@ -3705,7 +3731,7 @@ msgstr "Pratinjau" msgid "Previous" msgstr "Sebelumnya" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Trek sebelumnya" @@ -3719,7 +3745,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Perkembangan" @@ -3748,16 +3774,16 @@ msgstr "Kualitas" msgid "Querying device..." msgstr "Query perangkat" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Manajer antrian" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Antri trek terpilih" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Antri trek" @@ -3769,7 +3795,7 @@ msgstr "Radio (samakan kenyaringan untuk semua trek)" msgid "Radios" msgstr "Radio-radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Hujan" @@ -3801,7 +3827,7 @@ msgstr "Nilai lagu saat ini 4 bintang" msgid "Rate the current song 5 stars" msgstr "Nilai lagu saat ini 5 bintang" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Penilaian" @@ -3859,7 +3885,7 @@ msgstr "Hapus" msgid "Remove action" msgstr "Hilangkan tindakan" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Buang duplikasi daftar lagu" @@ -3875,7 +3901,7 @@ msgstr "Buang dari Musik Ku" msgid "Remove from favorites" msgstr "Buang dari favorit" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Hapus dari playlist" @@ -3912,7 +3938,7 @@ msgstr "Ganti nama playlist" msgid "Rename playlist..." msgstr "Ubah nama daftar lagu..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Memberi nomor baru trek dalam urutan ini ..." @@ -4003,6 +4029,18 @@ msgstr "Kembali ke Clementine" msgid "Right" msgstr "Kanan" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4029,7 +4067,7 @@ msgstr "Aman untuk melepas perangkat" msgid "Safely remove the device after copying" msgstr "Aman untuk melepas perangkat setelah menyalin" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Laju sampel" @@ -4057,7 +4095,7 @@ msgstr "Simpan gambar" msgid "Save playlist" msgstr "Simpan playlist" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Simpan playlist..." @@ -4093,7 +4131,7 @@ msgstr "Profil Laju Sampel Terukur (LST)" msgid "Scale size" msgstr "Skala ukuran" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Nilai" @@ -4102,7 +4140,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Trek Scrobble yang saya dengar" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4186,11 +4224,11 @@ msgstr "Carilah trek yang sedang diputar dengan jumlah relatif" msgid "Seek the currently playing track to an absolute position" msgstr "Carilah lagu yang sedang diputar ke posisi absolut" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pilih Semua" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Pilih Tidak Ada" @@ -4218,7 +4256,7 @@ msgstr "Pilih visualisasi" msgid "Select visualizations..." msgstr "Pilih visualisasi..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4238,7 +4276,7 @@ msgstr "Detil-detil server" msgid "Service offline" msgstr "Layanan offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Atur %1 to \"%2\"..." @@ -4247,7 +4285,7 @@ msgstr "Atur %1 to \"%2\"..." msgid "Set the volume to percent" msgstr "Atur volume ke persen" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Atur nilai untuk semua trek terpilih..." @@ -4310,7 +4348,7 @@ msgstr "Tampilkan OSD cantik" msgid "Show above status bar" msgstr "Tampilkan di atas status bar" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Tunjukkan semua lagu" @@ -4330,12 +4368,12 @@ msgstr "Tampilkan pembagi" msgid "Show fullsize..." msgstr "Tampilkan ukuran penuh" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Tampilkan di browser berkas" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4347,11 +4385,11 @@ msgstr "Tampilkan berbagai artis" msgid "Show moodbar" msgstr "Tunjukkan moodbar" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Tampilkan hanya yang duplikat" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Tampilkan hanya yang tak berlabel" @@ -4391,7 +4429,7 @@ msgstr "Acak album" msgid "Shuffle all" msgstr "Acak Semua" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Acak daftar lagu" @@ -4431,7 +4469,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Lewati daftar lagu mundur" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Lewati hitungan" @@ -4467,7 +4505,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informasi Lagu" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info lagu" @@ -4499,7 +4537,7 @@ msgstr "Urut lagu berdasarkan" msgid "Sorting" msgstr "Mengurutkan" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Sumber" @@ -4535,6 +4573,10 @@ msgstr "Standar" msgid "Starred" msgstr "Berbintang" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Mulai putar daftar lagu terkini" @@ -4550,7 +4592,7 @@ msgid "" "list" msgstr "Mulai mengetik sesuatu di kotak pencarian di atas untuk mengisi daftar hasil pencarian" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Memulai %1" @@ -4563,7 +4605,7 @@ msgstr "Memulai..." msgid "Stations" msgstr "Stasiun-stasiun" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Berhenti" @@ -4572,7 +4614,7 @@ msgstr "Berhenti" msgid "Stop after" msgstr "Berhenti setelah" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Berhenti setelah trek ini" @@ -4740,7 +4782,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Masa uji coba untuk server Subsonic sudah berakhir. Silakan donasi untuk mendapatkan kunci lisensi. Kunjungi subsonic.org untuk lebih detil." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4781,7 +4823,7 @@ msgid "" "continue?" msgstr "Berkas-berkas berikut akan dihapus dari perangkat, Anda yakin ingin melanjutkan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4853,9 +4895,10 @@ msgstr "Stream ini hanya untuk pelanggan berbayar" msgid "This type of device is not supported: %1" msgstr "Tipe perangkat ini tidak didukung: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Judul" @@ -4877,11 +4920,11 @@ msgstr "Aktifkan Pretty OSD" msgid "Toggle fullscreen" msgstr "Aktifkan layar penuh" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Alihkan status antrian" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Alihkan scrobbling" @@ -4913,12 +4956,13 @@ msgstr "Jumlah byte yang ditransfer" msgid "Total network requests made" msgstr "Total permintaan jaringan yang dibuat" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transcode Musik" @@ -5016,7 +5060,7 @@ msgstr "Perbarui daftar lagu Grooveshark" msgid "Update all podcasts" msgstr "Perbarui semua podcast" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Perbarui perubahan folder pustaka " @@ -5171,7 +5215,7 @@ msgstr "Tampilan" msgid "Visualization mode" msgstr "Mode visualisasi" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisasi" @@ -5299,7 +5343,7 @@ msgid "" "well?" msgstr "Apakah Anda ingin memindahkan lagu lainnya dalam album ini seperti Beragam Artis?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Apakah Anda ingin menjalankan pemindaian ulang penuh sekarang?" @@ -5311,10 +5355,10 @@ msgstr "Tulis semua statistik lagu kedalam berkas lagu" msgid "Wrong username or password." msgstr "Nama pengguna dan kata sandi salah." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Tahun" diff --git a/src/translations/is.po b/src/translations/is.po index 00baedc3e..beb6c2cde 100644 --- a/src/translations/is.po +++ b/src/translations/is.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/clementine/language/is/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "&Miðjað" msgid "&Custom" msgstr "&Sérsnið" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Hjálp" @@ -188,7 +188,7 @@ msgstr "&Fela" msgid "&Left" msgstr "&Vinstri" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -196,15 +196,15 @@ msgstr "" msgid "&None" msgstr "&Ekkert" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Hætta" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -212,7 +212,7 @@ msgstr "" msgid "&Right" msgstr "&Hægri" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -220,7 +220,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "&Teygja á dálkum til að koma glugga fyrir" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "Um %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Um Clementine" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Um Qt..." @@ -417,19 +417,19 @@ msgstr "Bæta við öðrum straumi" msgid "Add directory..." msgstr "Bæta við möppu..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Bæta við skrá..." @@ -437,11 +437,11 @@ msgstr "Bæta við skrá..." msgid "Add files to transcode" msgstr "Bæta við skrá til að millikóða" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Bæta við möppu" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Bæta við möppu..." @@ -453,7 +453,7 @@ msgstr "Bæta við nýrri möppu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -529,7 +529,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Bæta við straumi..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "Eftir afritun..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Plata" @@ -615,7 +615,7 @@ msgstr "Plata" msgid "Album (ideal loudness for all tracks)" msgstr "Plata (kjörstyrkur hljóðs fyrir öll lög)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Plötur með plötuumslagi" msgid "Albums without covers" msgstr "Plötur án plötuumslaga" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Allar skrár (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Flytjandi" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Upplýsingar um höfund" @@ -794,7 +794,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Bannað" @@ -898,7 +898,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1197,11 +1197,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1392,11 +1392,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1565,7 +1565,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1590,15 +1590,16 @@ msgstr "Eyða upprunalegum skrám" msgid "Deleting files" msgstr "Eyði gögnum" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Áfangastaður" @@ -1622,10 +1623,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Meintirðu" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1682,7 +1687,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "Breyta upplýsingum um lag" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Breyta upplýsingum um lag..." @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Tónjafnari" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Villa" @@ -1969,7 +1978,7 @@ msgstr "Villa við eyðingu laga" msgid "Error downloading Spotify plugin" msgstr "Villa kom upp við niðurhal á Spotify viðbót" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1979,12 +1988,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2109,6 +2118,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Skráarnafn" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Skráarstærð" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "Tegund skráar" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Gögn" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2344,11 +2362,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2418,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2625,6 +2647,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2697,7 +2723,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2780,12 +2806,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2793,7 +2819,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2867,11 +2893,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2890,10 +2916,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2968,7 +2994,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3090,7 +3116,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3098,7 +3124,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3210,7 +3236,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3495,7 +3521,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3508,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3536,7 +3562,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3591,7 +3617,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3698,7 +3724,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3741,16 +3767,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3852,7 +3878,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3905,7 +3931,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4022,7 +4060,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4050,7 +4088,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4211,7 +4249,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4240,7 +4278,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4303,7 +4341,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4323,12 +4361,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4424,7 +4462,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4460,7 +4498,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4565,7 +4607,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/it.po b/src/translations/it.po index 5bd486262..26b5187e6 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:59+0000\n" -"Last-Translator: Vincenzo Reale \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Italian (http://www.transifex.com/projects/p/clementine/language/it/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -170,11 +170,11 @@ msgstr "&Centrato" msgid "&Custom" msgstr "&Personalizzata" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Aiuto" @@ -191,7 +191,7 @@ msgstr "Nascon&di..." msgid "&Left" msgstr "A &sinistra" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musica" @@ -199,15 +199,15 @@ msgstr "&Musica" msgid "&None" msgstr "&Nessuna" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Scale&tta" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Esci" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Modalità di &ripetizione" @@ -215,7 +215,7 @@ msgstr "Modalità di &ripetizione" msgid "&Right" msgstr "A dest&ra" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Modalità di me&scolamento" @@ -223,7 +223,7 @@ msgstr "Modalità di me&scolamento" msgid "&Stretch columns to fit window" msgstr "Allunga le colonne per adattarle alla fines&tra" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "S&trumenti" @@ -368,11 +368,11 @@ msgstr "Interrompi" msgid "About %1" msgstr "Informazioni su %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Informazioni su Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Informazioni su Qt..." @@ -420,19 +420,19 @@ msgstr "Aggiungi un altro flusso..." msgid "Add directory..." msgstr "Aggiungi cartella..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Aggiungi file" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Aggiungi file al transcodificatore" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Aggiungi file al transcodificatore" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Aggiungi file..." @@ -440,11 +440,11 @@ msgstr "Aggiungi file..." msgid "Add files to transcode" msgstr "Aggiungi file da transcodificare" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Aggiungi cartella" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Aggiungi cartella..." @@ -456,7 +456,7 @@ msgstr "Aggiungi nuova cartella..." msgid "Add podcast" msgstr "Aggiungi podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Aggiungi podcast..." @@ -532,7 +532,7 @@ msgstr "Aggiungi il tag traccia al brano" msgid "Add song year tag" msgstr "Aggiungi il tag anno al brano" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Aggiungi flusso..." @@ -544,7 +544,7 @@ msgstr "Aggiungi ai preferiti di Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Aggiungi alle scalette di Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Aggiungi a un'altra scaletta" @@ -605,12 +605,12 @@ msgstr "Dopo " msgid "After copying..." msgstr "Dopo la copia..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume ideale per tutte le tracce)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Album con copertina" msgid "Albums without covers" msgstr "Album senza copertina" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Tutti i file (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Gloria, gloria all'ipnorospo!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "Sei sicuro di voler scrivere le statistiche nei file dei brani della tua scaletta?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info artista" @@ -797,7 +797,7 @@ msgstr "Tag Artista" msgid "Artist's initial" msgstr "Iniziale dell'artista" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Formato audio" @@ -843,7 +843,7 @@ msgstr "Dimensione immagine media" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Copia di sicurezza del database" msgid "Balance" msgstr "Bilanciamento" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Vieta" @@ -901,7 +901,7 @@ msgstr "Migliore" msgid "Biography from %1" msgstr "Biografia da %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -1007,7 +1007,7 @@ msgstr "La modifica dell'impostazione di riproduzione mono avrà effetto per i p msgid "Check for new episodes" msgstr "Verifica la presenza di nuove puntate" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Controlla aggiornamenti..." @@ -1057,11 +1057,11 @@ msgstr "Svuota" msgid "Clear" msgstr "Svuota" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Svuota la scaletta" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "Fai clic qui per aggiungere questa scaletta alle preferite in modo da sa msgid "Click to toggle between remaining time and total time" msgstr "Clic per passare dal tempo rimanente al tempo totale" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Colori" msgid "Comma separated list of class:level, level is 0-3" msgstr "Elenco separato da virgole di classe:livello, livello è 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commento" @@ -1200,11 +1200,11 @@ msgstr "Commento" msgid "Complete tags automatically" msgstr "Completa automaticamente i tag" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Completa automaticamente i tag..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Configura Subsonic..." msgid "Configure global search..." msgstr "Configura la ricerca globale..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configura raccolta..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Connessione scaduta, controlla l'URL del server. Esempio: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Console" @@ -1300,12 +1300,12 @@ msgstr "Converti qualsiasi musica che il dispositivo non può riprodurre" msgid "Copy to clipboard" msgstr "Copia negli appunti" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copia su dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copia nella raccolta..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Impossibile creare l'elemento «%1» di GStreamer - assicurati che tutti i plugin necessari siano installati" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Impossibile trovare un multiplatore per %1, verifica l'installazione del plugin GStreamer corretto" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Impossibile aprire il file di uscita %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestore delle copertine" @@ -1395,11 +1395,11 @@ msgstr "Dissolvenza incrociata al cambio automatico di traccia" msgid "Cross-fade when changing tracks manually" msgstr "Dissolvenza incrociata al cambio manuale di traccia" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maiusc+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maiusc+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Maiusc+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Il database risulta danneggiato. Leggi https://code.google.com/p/clementine-player/wiki/DatabaseCorruption per le istruzioni su come ripristinare il database" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data di modifica" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data di creazione" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Elimina i dati scaricati" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Elimina i file" @@ -1568,7 +1568,7 @@ msgstr "Elimina i file" msgid "Delete from device..." msgstr "Elimina da dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Elimina dal disco..." @@ -1593,15 +1593,16 @@ msgstr "Elimina i file originali" msgid "Deleting files" msgstr "Eliminazione dei file" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Rimuovi le tracce selezionate dalla coda" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Rimuovi tracce dalla coda" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinazione" @@ -1625,10 +1626,14 @@ msgstr "Nome del dispositivo" msgid "Device properties..." msgstr "Proprietà del dispositivo..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositivi" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Finestra" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Forse cercavi" @@ -1667,8 +1672,8 @@ msgstr "Disabilita la creazione della barra dell'atmosfera" msgid "Disabled" msgstr "Disabilitata" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1685,7 +1690,7 @@ msgstr "Opzioni di visualizzazione" msgid "Display the on-screen-display" msgstr "Visualizza l'on-screen-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Esegui una nuova scansione completa della raccolta" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Durata" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "La modalità dinamica è attiva" @@ -1819,12 +1828,12 @@ msgstr "Misto casuale dinamico" msgid "Edit smart playlist..." msgstr "Modifica la scaletta veloce..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Modifica tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Modifica tag..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Modifica informazioni della traccia" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Modifica informazioni sulla traccia..." @@ -1938,7 +1947,7 @@ msgstr "Digita questo IP nell'applicazione per connetterti a Clementine." msgid "Entire collection" msgstr "Collezione completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizzatore" @@ -1952,7 +1961,7 @@ msgstr "Equivalente a --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Errore" @@ -1972,7 +1981,7 @@ msgstr "Errore durante l'eliminazione dei brani" msgid "Error downloading Spotify plugin" msgstr "Errore di scaricamento del plugin di Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Errore durante il caricamento di %1" @@ -1982,12 +1991,12 @@ msgstr "Errore durante il caricamento di %1" msgid "Error loading di.fm playlist" msgstr "Errore durante il caricamento della scaletta di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Errore durante l'elaborazione di %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Errore nel caricamento del CD audio" @@ -2065,27 +2074,27 @@ msgstr "Esporta completate" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Esportate %1 copertine di %2 (%3 saltate)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Dissolvenza" msgid "Fading duration" msgstr "Durata della dissolvenza" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Lettura del CD non riuscita" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Recupero della cartella non riuscito" @@ -2163,6 +2176,10 @@ msgstr "Scaricamento della libreria di Subsonic" msgid "Fetching cover error" msgstr "Errore di scaricamento della copertina" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Formato file" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Estensione file" @@ -2171,19 +2188,19 @@ msgstr "Estensione file" msgid "File formats" msgstr "Formati dei file" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome file" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nome file (senza percorso)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dimensione file" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Tipo file" msgid "Filename" msgstr "Nome file" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "File" @@ -2313,9 +2330,10 @@ msgstr "Generale" msgid "General settings" msgstr "Impostazioni generali" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genere" @@ -2347,11 +2365,11 @@ msgstr "Dagli un nome:" msgid "Go" msgstr "Vai" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Vai alla scheda della scaletta successiva" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Vai alla scheda della scaletta precedente" @@ -2421,7 +2439,7 @@ msgstr "Raggruppa per genere/album" msgid "Group by Genre/Artist/Album" msgstr "Raggruppa per genere/artista/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppo" @@ -2576,6 +2594,10 @@ msgstr "Indicizzazione di %1 in corso..." msgid "Information" msgstr "Informazioni" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Inserisci..." @@ -2588,7 +2610,7 @@ msgstr "Installati" msgid "Integrity check" msgstr "Controllo d'integrità" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Chiave di sessione non valida" msgid "Invalid username and/or password" msgstr "Nome utente e/o password non valida" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Tracce preferite della settimana di Jamendo" msgid "Jamendo database" msgstr "Database di Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Salta alla traccia in riproduzione" @@ -2676,7 +2702,7 @@ msgstr "Mantieni l'esecuzione sullo sfondo quando la finestra è chiusa" msgid "Keep the original files" msgstr "Mantieni i file originali" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Gattini" @@ -2700,7 +2726,7 @@ msgstr "Copertina grande" msgid "Large sidebar" msgstr "Pannello laterale grande" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Ultima riproduzione" @@ -2783,12 +2809,12 @@ msgstr "Lascia vuoto il campo per il valore predefinito. Esempi: \"/dev/dsp\", \ msgid "Left" msgstr "Sinistra" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durata" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Raccolta" @@ -2796,7 +2822,7 @@ msgstr "Raccolta" msgid "Library advanced grouping" msgstr "Raggruppamento avanzato della raccolta" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Notifica nuova scansione della raccolta" @@ -2841,7 +2867,7 @@ msgstr "Carica copertina da disco..." msgid "Load playlist" msgstr "Carica la scaletta" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Carica la scaletta..." @@ -2870,11 +2896,11 @@ msgstr "Caricamento brani in corso" msgid "Loading stream" msgstr "Caricamento flusso" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Caricamento delle tracce" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Caricamento informazioni della traccia" @@ -2893,10 +2919,10 @@ msgstr "Carica file/URL, sostituendo la scaletta attuale" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Accedi" @@ -2908,7 +2934,7 @@ msgstr "Accesso non riuscito" msgid "Long term prediction profile (LTP)" msgstr "Profilo con predizione di lungo termine (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Mi piace" @@ -2971,7 +2997,7 @@ msgstr "Scaricamento di Magnatune completato" msgid "Main profile (MAIN)" msgstr "Profilo principale (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Procedi" @@ -3054,7 +3080,7 @@ msgstr "Riproduzione mono" msgid "Months" msgstr "Mesi" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Atmosfera" @@ -3084,7 +3110,7 @@ msgstr "Punti di mount" msgid "Move down" msgstr "Sposta in basso" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Sposta nella raccolta..." @@ -3093,7 +3119,7 @@ msgstr "Sposta nella raccolta..." msgid "Move up" msgstr "Sposta in alto" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musica" @@ -3101,7 +3127,7 @@ msgstr "Musica" msgid "Music Library" msgstr "Raccolta musicale" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Silenzia" @@ -3189,7 +3215,7 @@ msgstr "Non iniziare mai la riproduzione" msgid "New folder" msgstr "Nuova cartella" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nuova scaletta" @@ -3213,7 +3239,7 @@ msgstr "Tracce più recenti" msgid "Next" msgstr "Successivo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Traccia successiva" @@ -3252,7 +3278,7 @@ msgstr "Nessun blocco corto" msgid "None" msgstr "Nessuna" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nessuna delle canzoni selezionate era adatta alla copia su un dispositivo" @@ -3370,7 +3396,7 @@ msgstr "Opacità" msgid "Open %1 in browser" msgstr "Apri %1 nel browser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Apri CD &audio..." @@ -3386,7 +3412,7 @@ msgstr "Apri file OPML..." msgid "Open device" msgstr "Apri dispositivo" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Apri file..." @@ -3421,7 +3447,7 @@ msgstr "Ottimizza per bitrate" msgid "Optimize for quality" msgstr "Ottimizza per qualità" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opzioni..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizza file" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizza file..." @@ -3457,7 +3483,7 @@ msgstr "Uscita" msgid "Output device" msgstr "Dispositivo di uscita" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opzioni di uscita" @@ -3498,7 +3524,7 @@ msgstr "Festa" msgid "Password" msgstr "Password" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausa" @@ -3511,7 +3537,7 @@ msgstr "Sospendi riproduzione" msgid "Paused" msgstr "In pausa" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Musicista" @@ -3524,9 +3550,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Barra laterale semplice" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Riproduci" @@ -3539,7 +3565,7 @@ msgstr "Riproduci artista o tag" msgid "Play artist radio..." msgstr "Riproduci radio dell'artista..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Contatore di riproduzione" @@ -3594,7 +3620,7 @@ msgstr "Opzioni della scaletta" msgid "Playlist type" msgstr "Tipo di scaletta" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Scalette" @@ -3646,7 +3672,7 @@ msgstr "Preamplificazione" msgid "Preferences" msgstr "Preferenze" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferenze..." @@ -3701,7 +3727,7 @@ msgstr "Anteprima" msgid "Previous" msgstr "Precedente" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Traccia precedente" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Profilo" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Avanzamento" @@ -3744,16 +3770,16 @@ msgstr "Qualità" msgid "Querying device..." msgstr "Interrogazione dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestore della coda" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Accoda le tracce selezionate" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Accoda la traccia" @@ -3765,7 +3791,7 @@ msgstr "Radio (volume uguale per tutte le tracce)" msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Pioggia" @@ -3797,7 +3823,7 @@ msgstr "Valuta il brano corrente con 4 stelle" msgid "Rate the current song 5 stars" msgstr "Valuta il brano corrente con 5 stelle" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Valutazione" @@ -3855,7 +3881,7 @@ msgstr "Rimuovi" msgid "Remove action" msgstr "Rimuovi azione" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Rimuovi duplicati dalla scaletta" @@ -3871,7 +3897,7 @@ msgstr "Rimuovi dalla mia musica" msgid "Remove from favorites" msgstr "Rimuovi dai preferiti" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Rimuovi dalla scaletta" @@ -3908,7 +3934,7 @@ msgstr "Rinomina la scaletta" msgid "Rename playlist..." msgstr "Rinomina la scaletta..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Ricorda l'ordine delle tracce..." @@ -3999,6 +4025,18 @@ msgstr "Torna a Clementine" msgid "Right" msgstr "Destra" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Estrai CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Estrai CD &audio..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Rimuovi il dispositivo in sicurezza" msgid "Safely remove the device after copying" msgstr "Rimuovi il dispositivo in sicurezza al termine della copia" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Campionamento" @@ -4053,7 +4091,7 @@ msgstr "Salva l'immagine" msgid "Save playlist" msgstr "Salva la scaletta" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Salva la scaletta..." @@ -4089,7 +4127,7 @@ msgstr "Profilo con campionamento scalabile (SSR)" msgid "Scale size" msgstr "Riscala le dimensioni" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Punteggio" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobbling delle tracce ascoltate" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Sposta la traccia in riproduzione di una quantità relativa" msgid "Seek the currently playing track to an absolute position" msgstr "Sposta la traccia in riproduzione su una posizione assoluta" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleziona tutto" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Selezione nulla" @@ -4214,7 +4252,7 @@ msgstr "Seleziona visualizzazioni" msgid "Select visualizations..." msgstr "Seleziona visualizzazioni..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Seleziona..." @@ -4234,7 +4272,7 @@ msgstr "Dettagli del server" msgid "Service offline" msgstr "Servizio non in linea" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Imposta %1 a \"%2\"..." @@ -4243,7 +4281,7 @@ msgstr "Imposta %1 a \"%2\"..." msgid "Set the volume to percent" msgstr "Imposta il volume al percento" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Imposta valore per tutte le tracce selezionate..." @@ -4306,7 +4344,7 @@ msgstr "Mostra un OSD gradevole" msgid "Show above status bar" msgstr "Mostra la barra di stato superiore" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Mostra tutti i brani" @@ -4326,12 +4364,12 @@ msgstr "Mostra separatori" msgid "Show fullsize..." msgstr "Mostra a dimensioni originali..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostra nel navigatore file..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Mostra nella raccolta..." @@ -4343,11 +4381,11 @@ msgstr "Mostra in artisti vari" msgid "Show moodbar" msgstr "Mostra la barra dell'atmosfera" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostra solo i duplicati" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Mostra solo i brani senza tag" @@ -4387,7 +4425,7 @@ msgstr "Mescola gli album" msgid "Shuffle all" msgstr "Mescola tutto" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Mescola la scaletta" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Salta indietro nella scaletta" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Salta il conteggio" @@ -4463,7 +4501,7 @@ msgstr "Rock leggero" msgid "Song Information" msgstr "Informazioni brano" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info brano" @@ -4495,7 +4533,7 @@ msgstr "Ordina i brani per" msgid "Sorting" msgstr "Ordinamento" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Fonte" @@ -4531,6 +4569,10 @@ msgstr "Standard" msgid "Starred" msgstr "Preferiti" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Avvia la scaletta attualmente in riproduzione" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Inizia a scrivere qualcosa nella casella di ricerca per riempire l'elenco dei risultati di ricerca." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Avvio di %1" @@ -4559,7 +4601,7 @@ msgstr "Avvio in corso..." msgid "Stations" msgstr "Stazioni" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Ferma" @@ -4568,7 +4610,7 @@ msgstr "Ferma" msgid "Stop after" msgstr "Ferma dopo" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Ferma dopo questa traccia" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Il periodo di prova per il server Subsonic è scaduto. Effettua una donazione per ottenere una chiave di licenza. Visita subsonic.org per i dettagli." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Questi file saranno eliminati dal dispositivo, sei sicuro di voler continuare?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Questo flusso è riservato ai soli abbonati" msgid "This type of device is not supported: %1" msgstr "Questi tipo di dispositivo non è supportato: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titolo" @@ -4873,11 +4916,11 @@ msgstr "Commuta Pretty OSD" msgid "Toggle fullscreen" msgstr "Attiva la modalità a schermo intero" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Cambia lo stato della coda" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Commuta lo scrobbling" @@ -4909,12 +4952,13 @@ msgstr "Totale byte trasferiti" msgid "Total network requests made" msgstr "Totale richieste di rete effettuate" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Traccia" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transcodifica musica" @@ -5012,7 +5056,7 @@ msgstr "Aggiorna la scaletta di Grooveshark" msgid "Update all podcasts" msgstr "Aggiorna tutti i podcast" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Aggiorna le cartelle modificate della raccolta" @@ -5167,7 +5211,7 @@ msgstr "Visualizza" msgid "Visualization mode" msgstr "Modalità di visualizzazione" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualizzazioni" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Vuoi spostare anche gli altri brani di questo album in Artisti vari?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Vuoi eseguire subito una nuova scansione completa?" @@ -5307,10 +5351,10 @@ msgstr "Scrivi le statistiche dei brani nei file" msgid "Wrong username or password." msgstr "Nome utente o password non validi." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Anno" diff --git a/src/translations/ja.po b/src/translations/ja.po index e4316db6c..e046b70b5 100644 --- a/src/translations/ja.po +++ b/src/translations/ja.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/clementine/language/ja/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "中央揃え(&C)" msgid "&Custom" msgstr "カスタム(&C)" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "おまけ(&E)" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "ヘルプ(&H)" @@ -190,7 +190,7 @@ msgstr "非表示にする(&H)..." msgid "&Left" msgstr "左揃え(&L)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "ミュージック(&M)" @@ -198,15 +198,15 @@ msgstr "ミュージック(&M)" msgid "&None" msgstr "なし(&N)" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "プレイリスト(&P)" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "終了(&Q)" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "リピートモード(&R)" @@ -214,7 +214,7 @@ msgstr "リピートモード(&R)" msgid "&Right" msgstr "右揃え(&R)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "シャッフルモード(&S)" @@ -222,7 +222,7 @@ msgstr "シャッフルモード(&S)" msgid "&Stretch columns to fit window" msgstr "列の幅をウィンドウに合わせる(&S)" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "ツール(&T)" @@ -367,11 +367,11 @@ msgstr "中止" msgid "About %1" msgstr "%1 について" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine について..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt について..." @@ -419,19 +419,19 @@ msgstr "別のストリームを追加..." msgid "Add directory..." msgstr "ディレクトリを追加..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "ファイルを追加" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "ファイルを追加..." @@ -439,11 +439,11 @@ msgstr "ファイルを追加..." msgid "Add files to transcode" msgstr "トランスコードするファイルの追加" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "フォルダーを追加" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "フォルダーを追加..." @@ -455,7 +455,7 @@ msgstr "新しいフォルダーを追加..." msgid "Add podcast" msgstr "ポッドキャストを追加" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "ポッドキャストを追加..." @@ -531,7 +531,7 @@ msgstr "曲のトラックタグを追加" msgid "Add song year tag" msgstr "曲の年タグを追加" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "ストリームを追加..." @@ -543,7 +543,7 @@ msgstr "Grooveshark のお気に入りに追加" msgid "Add to Grooveshark playlists" msgstr "Grooveshark のプレイリストに追加" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "別のプレイリストに追加" @@ -604,12 +604,12 @@ msgstr "" msgid "After copying..." msgstr "コピー後..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "アルバム" @@ -617,7 +617,7 @@ msgstr "アルバム" msgid "Album (ideal loudness for all tracks)" msgstr "アルバム (すべてのトラックで最適な音量)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "カバー付きのアルバム" msgid "Albums without covers" msgstr "カバーなしのアルバム" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "すべてのファイル (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "アーティスト" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "アーティストの情報" @@ -796,7 +796,7 @@ msgstr "アーティストタグ" msgid "Artist's initial" msgstr "アーティストの頭文字" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "オーディオ形式" @@ -842,7 +842,7 @@ msgstr "平均画像サイズ" msgid "BBC Podcasts" msgstr "BBC ポッドキャスト" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "データベースをバックアップ中" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "はじき出す" @@ -900,7 +900,7 @@ msgstr "良" msgid "Biography from %1" msgstr "%1 からのバイオグラフィ" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ビットレート" @@ -1006,7 +1006,7 @@ msgstr "モノラル再生の設定変更は次に再生する曲から反映さ msgid "Check for new episodes" msgstr "新しいエピソードのチェック" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "更新のチェック..." @@ -1056,11 +1056,11 @@ msgstr "整理" msgid "Clear" msgstr "クリア" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "プレイリストをクリア" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "ここをクリックすると、残り時間と合計時間の表示を切り替えます" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "色" msgid "Comma separated list of class:level, level is 0-3" msgstr "コンマ区切りの クラス:レベル のリスト、レベルは 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "コメント" @@ -1199,11 +1199,11 @@ msgstr "コメント" msgid "Complete tags automatically" msgstr "タグの自動補完" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "タグを自動補完..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure global search..." msgstr "全体検索の設定..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "ライブラリの設定..." @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "コンソール" @@ -1299,12 +1299,12 @@ msgstr "デバイスが再生できないすべての曲を変換する" msgid "Copy to clipboard" msgstr "クリップボードにコピー" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "デバイスへコピー..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "ライブラリへコピー..." @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "GStreamer 要素 \"%1\" を作成できませんでした。必要な GStreamer プラグインがすべてインストールされていることを確認してください" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 のミュクサーを見つけることができませんでした。正しい GStreamer プラグインがインストールされていることをチェックしてください" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "出力ファイル %1 を開けませんでした" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "カバーマネージャー" @@ -1394,11 +1394,11 @@ msgstr "トラックが自動で変更するときにクロスフェードする msgid "Cross-fade when changing tracks manually" msgstr "トラックを手動で変更したときにクロスフェードする" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "データベースの破損が見つかりました。データベースの復旧方法については https://code.google.com/p/clementine-player/wiki/DatabaseCorruption をお読みください" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "作成日時" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "更新日時" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "ダウンロード済みデータを削除" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "ファイルの削除" @@ -1567,7 +1567,7 @@ msgstr "ファイルの削除" msgid "Delete from device..." msgstr "デバイスから削除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "ディスクから削除..." @@ -1592,15 +1592,16 @@ msgstr "元のファイルを削除する" msgid "Deleting files" msgstr "ファイルの削除中" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "選択されたトラックをキューから削除する" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "トラックをキューから削除" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "フォルダー" @@ -1624,10 +1625,14 @@ msgstr "デバイス名" msgid "Device properties..." msgstr "デバイスのプロパティ..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "デバイス" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "もしかして" @@ -1666,8 +1671,8 @@ msgstr "ムードバーの生成をやめる" msgid "Disabled" msgstr "無効" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ディスク" @@ -1684,7 +1689,7 @@ msgstr "画面のオプション" msgid "Display the on-screen-display" msgstr "OSD を表示する" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "ライブラリ全体を再スキャン" @@ -1806,6 +1811,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "ダイナミックモードはオンです" @@ -1818,12 +1827,12 @@ msgstr "ダイナミックランダムミックス" msgid "Edit smart playlist..." msgstr "スマートプレイリストの編集..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "タグの編集..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "トラック情報の編集" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "トラック情報の編集..." @@ -1937,7 +1946,7 @@ msgstr "" msgid "Entire collection" msgstr "コレクション全体" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "イコライザー" @@ -1951,7 +1960,7 @@ msgstr "--log-levels *:3 と同じ" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "エラー" @@ -1971,7 +1980,7 @@ msgstr "曲の削除エラー" msgid "Error downloading Spotify plugin" msgstr "Spotify プラグインのダウンロードエラー" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "%1 の読み込みエラー" @@ -1981,12 +1990,12 @@ msgstr "%1 の読み込みエラー" msgid "Error loading di.fm playlist" msgstr "di.fm プレイリストの読み込みエラー" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "%1 の処理エラー: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "音楽 CD を読み込み中にエラーが発生しました" @@ -2064,27 +2073,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "フェード" msgid "Fading duration" msgstr "フェードの長さ" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "ディレクトリの取得に失敗しました" @@ -2162,6 +2175,10 @@ msgstr "" msgid "Fetching cover error" msgstr "カバーの取得エラー" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "ファイル拡張子" @@ -2170,19 +2187,19 @@ msgstr "ファイル拡張子" msgid "File formats" msgstr "ファイル形式" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "ファイル名" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "ファイル名 (パスなし)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "ファイルサイズ" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "ファイルの種類" msgid "Filename" msgstr "ファイル名" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "ファイル" @@ -2312,9 +2329,10 @@ msgstr "全般" msgid "General settings" msgstr "全般設定" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "ジャンル" @@ -2346,11 +2364,11 @@ msgstr "名前を入力してください:" msgid "Go" msgstr "進む" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "次のプレイリストタブへ" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "前のプレイリストタブへ" @@ -2420,7 +2438,7 @@ msgstr "ジャンル/アルバムでグループ化" msgid "Group by Genre/Artist/Album" msgstr "ジャンル/アーティスト/アルバムでグループ化" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2575,6 +2593,10 @@ msgstr "%1 のインデックスを作成しています。" msgid "Information" msgstr "情報" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "挿入..." @@ -2587,7 +2609,7 @@ msgstr "インストール済み" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "インターネット" @@ -2627,6 +2649,10 @@ msgstr "不正なセッションキーです" msgid "Invalid username and/or password" msgstr "ユーザー名またはパスワードが違います" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Jamendo の今週のトップトラック" msgid "Jamendo database" msgstr "Jamendo のデータベース" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "現在再生中のトラックへジャンプ" @@ -2675,7 +2701,7 @@ msgstr "ウィンドウを閉じたときバックグラウンドで起動し続 msgid "Keep the original files" msgstr "元のファイルを保持する" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kittens" @@ -2699,7 +2725,7 @@ msgstr "大きいアルバムカバー" msgid "Large sidebar" msgstr "大きいサイドバー" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "最終再生" @@ -2782,12 +2808,12 @@ msgstr "既定にするには空のままにします。例: \"/dev/dsp\"、\"fr msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長さ" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "ライブラリ" @@ -2795,7 +2821,7 @@ msgstr "ライブラリ" msgid "Library advanced grouping" msgstr "ライブラリの高度なグループ化" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2840,7 +2866,7 @@ msgstr "ディスクからカバーの読み込み..." msgid "Load playlist" msgstr "プレイリストの読み込み" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "プレイリストの読み込み..." @@ -2869,11 +2895,11 @@ msgstr "曲の読み込み中" msgid "Loading stream" msgstr "ストリームの読み込み中" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "トラックの読み込み中" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "トラック情報の読み込み中" @@ -2892,10 +2918,10 @@ msgstr "ファイル・URL を読み込んで、現在のプレイリストを #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "ログイン" @@ -2907,7 +2933,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Love" @@ -2970,7 +2996,7 @@ msgstr "Magnatune ダウンロードが完了しました" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3053,7 +3079,7 @@ msgstr "モノラル再生" msgid "Months" msgstr "ヶ月" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "ムード" @@ -3083,7 +3109,7 @@ msgstr "マウントポイント" msgid "Move down" msgstr "下へ移動" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "ライブラリへ移動..." @@ -3092,7 +3118,7 @@ msgstr "ライブラリへ移動..." msgid "Move up" msgstr "上へ移動" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "ミュージック" @@ -3100,7 +3126,7 @@ msgstr "ミュージック" msgid "Music Library" msgstr "ミュージックライブラリ" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "ミュート" @@ -3188,7 +3214,7 @@ msgstr "再生を開始しない" msgid "New folder" msgstr "新しいフォルダー" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "新しいプレイリスト" @@ -3212,7 +3238,7 @@ msgstr "最新のトラック" msgid "Next" msgstr "次へ" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "次のトラック" @@ -3251,7 +3277,7 @@ msgstr "" msgid "None" msgstr "なし" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "デバイスへのコピーに適切な曲が選択されていません" @@ -3369,7 +3395,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "%1 をブラウザーで開く" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "オーディオ CD を開く(&A)..." @@ -3385,7 +3411,7 @@ msgstr "OPML ファイルを開く..." msgid "Open device" msgstr "デバイスを開く" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "ファイルを開く..." @@ -3420,7 +3446,7 @@ msgstr "ビットレートを最適化" msgid "Optimize for quality" msgstr "品質を最適化" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "オプション..." @@ -3432,7 +3458,7 @@ msgstr "" msgid "Organise Files" msgstr "ファイルの整理" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "ファイルの整理..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "出力のオプション" @@ -3497,7 +3523,7 @@ msgstr "Party" msgid "Password" msgstr "パスワード" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "一時停止" @@ -3510,7 +3536,7 @@ msgstr "再生を一時停止します" msgid "Paused" msgstr "一時停止中" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "プレーンサイドバー" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "再生" @@ -3538,7 +3564,7 @@ msgstr "アーティストまたはタグの再生" msgid "Play artist radio..." msgstr "アーティストラジオの再生..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "再生回数" @@ -3593,7 +3619,7 @@ msgstr "プレイリストのオプション" msgid "Playlist type" msgstr "プレイリストの種類" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "プレイリスト" @@ -3645,7 +3671,7 @@ msgstr "プリアンプ" msgid "Preferences" msgstr "環境設定" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "環境設定..." @@ -3700,7 +3726,7 @@ msgstr "プレビュー" msgid "Previous" msgstr "前へ" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "前のトラック" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "プロファイル" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "進行状況" @@ -3743,16 +3769,16 @@ msgstr "品質" msgid "Querying device..." msgstr "デバイスを照会しています..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "キューマネージャー" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "選択されたトラックをキューに追加" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "トラックをキューに追加" @@ -3764,7 +3790,7 @@ msgstr "ラジオ (すべてのトラックで均一の音量)" msgid "Radios" msgstr "ラジオ" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Rain" @@ -3796,7 +3822,7 @@ msgstr "現在の曲を星 4 つと評価します" msgid "Rate the current song 5 stars" msgstr "現在の曲を星 5 つと評価します" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "評価" @@ -3854,7 +3880,7 @@ msgstr "削除" msgid "Remove action" msgstr "アクションの削除" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "重複するものをプレイリストから削除" @@ -3870,7 +3896,7 @@ msgstr "マイミュージックから削除する" msgid "Remove from favorites" msgstr "お気に入りから削除する" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "プレイリストから削除" @@ -3907,7 +3933,7 @@ msgstr "プレイリストの名前の変更" msgid "Rename playlist..." msgstr "プレイリストの名前の変更..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "この順序でトラック番号を振る..." @@ -3998,6 +4024,18 @@ msgstr "Clementine に戻る" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "ロック" @@ -4024,7 +4062,7 @@ msgstr "デバイスを安全に取り外す" msgid "Safely remove the device after copying" msgstr "コピー後にデバイスを安全に取り外す" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "サンプルレート" @@ -4052,7 +4090,7 @@ msgstr "画像の保存" msgid "Save playlist" msgstr "プレイリストの保存" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "プレイリストの保存..." @@ -4088,7 +4126,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "スコア" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "聴取するトラックを Scrobble する" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "現在再生中のトラックを相対値でシークする" msgid "Seek the currently playing track to an absolute position" msgstr "現在再生中のトラックの絶対的な位置へシークする" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "すべて選択" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "選択しない" @@ -4213,7 +4251,7 @@ msgstr "ビジュアライゼーションの選択" msgid "Select visualizations..." msgstr "ビジュアライゼーションの選択..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "" msgid "Service offline" msgstr "サービスがオフラインです" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 を \"%2\" に設定します..." @@ -4242,7 +4280,7 @@ msgstr "%1 を \"%2\" に設定します..." msgid "Set the volume to percent" msgstr "音量を パーセントへ設定しました" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "すべての選択されたトラックの音量を設定しました..." @@ -4305,7 +4343,7 @@ msgstr "Pretty OSD を表示する" msgid "Show above status bar" msgstr "ステータスバーの上に表示" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "すべての曲を表示" @@ -4325,12 +4363,12 @@ msgstr "区切りを表示する" msgid "Show fullsize..." msgstr "原寸表示..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "ファイルブラウザーで表示..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "さまざまなアーティストに表示" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "重複するものだけ表示" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "タグのないものだけ表示" @@ -4386,7 +4424,7 @@ msgstr "アルバムをシャッフル" msgid "Shuffle all" msgstr "すべてシャッフル" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "プレイリストのシャッフル" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "プレイリストで後ろにスキップ" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "スキップ回数" @@ -4462,7 +4500,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "曲の情報" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "曲の情報" @@ -4494,7 +4532,7 @@ msgstr "曲の並べ替え" msgid "Sorting" msgstr "並べ替え中" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "ソース" @@ -4530,6 +4568,10 @@ msgstr "標準" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "現在再生中のプレイリストを開始する" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "この検索結果のリストを補完するには、上の検索ボックスに何か入力してください。" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 の開始中" @@ -4558,7 +4600,7 @@ msgstr "開始しています..." msgid "Stations" msgstr "局" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "停止" @@ -4567,7 +4609,7 @@ msgstr "停止" msgid "Stop after" msgstr "次で停止" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "このトラックで停止" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "これらのファイルはデバイスから削除されます。続行してもよろしいですか?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "このストリームは有料会員専用です" msgid "This type of device is not supported: %1" msgstr "この種類のデバイスはサポートされていません: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "タイトル" @@ -4872,11 +4915,11 @@ msgstr "Pretty OSD の切り替え" msgid "Toggle fullscreen" msgstr "全画面表示の切り替え" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "キュー状態の切り替え" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "scrobbling の切り替え" @@ -4908,12 +4951,13 @@ msgstr "合計転送バイト数" msgid "Total network requests made" msgstr "合計ネットワーク要求回数" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "トラック" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "ミュージックのトランスコード" @@ -5011,7 +5055,7 @@ msgstr "Grooveshark のプレイリストを更新" msgid "Update all podcasts" msgstr "すべてのポッドキャストを更新" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "変更されたライブラリフォルダーを更新" @@ -5166,7 +5210,7 @@ msgstr "表示" msgid "Visualization mode" msgstr "ビジュアライゼーションモード" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "ビジュアライゼーション" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "このアルバムにある他の曲も さまざまなアーティスト に移動しますか?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "全体の再スキャンを今すぐ実行しますか?" @@ -5306,10 +5350,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "年" diff --git a/src/translations/ka.po b/src/translations/ka.po index f2da7e714..f6e8690b9 100644 --- a/src/translations/ka.po +++ b/src/translations/ka.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/clementine/language/ka/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "&ცენტრირება" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "დამა&ტებითი" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&დახმარება" @@ -188,7 +188,7 @@ msgstr "" msgid "&Left" msgstr "მარ&ცხენა" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&მუსიკა" @@ -196,15 +196,15 @@ msgstr "&მუსიკა" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -212,7 +212,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -220,7 +220,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&ხელსაწყოები" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "%1-ის შესახებ" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine-ის შესახებ..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt-ის შესახებ..." @@ -417,19 +417,19 @@ msgstr "სხვა ნაკადის დამატება..." msgid "Add directory..." msgstr "დირექტორიის დამატება..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "ფაილის დამატება..." @@ -437,11 +437,11 @@ msgstr "ფაილის დამატება..." msgid "Add files to transcode" msgstr "გადასაკოდირებელი ფაილების დამატება" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "დასტის დამატება" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "დასტის დამატება..." @@ -453,7 +453,7 @@ msgstr "ახალი დასტის დამატება..." msgid "Add podcast" msgstr "პოდკასტის დამატება" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "პოდკასტის დამატება..." @@ -529,7 +529,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "ნაკადის დამატება..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "სხვა რეპერტუარში დამატება" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "კოპირების შემდეგ..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "ალბომი" @@ -615,7 +615,7 @@ msgstr "ალბომი" msgid "Album (ideal loudness for all tracks)" msgstr "ალბომი (იდეალური ხმის სიმაღლე ყველა ჩანაწერისთვის)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "ალბომები ყდებით" msgid "Albums without covers" msgstr "ალბომები ყდების გარეშე" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "ყველა ფაილი (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "შემსრულებელი" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "შემსრულებლის ინფო" @@ -794,7 +794,7 @@ msgstr "შემსრულებლის ჭდეები" msgid "Artist's initial" msgstr "შემსრულებლის ინიციალი" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "აუდიოფორმატი" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "BBC-ის პოდკასტები" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -898,7 +898,7 @@ msgstr "საუკეთესო" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ბიტური სიჩქარე" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "განახლებებზე შემოწმება..." @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "გასუფთავება" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "რეპერტუარის გასუფთავება" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "კომენტარი" @@ -1197,11 +1197,11 @@ msgstr "კომენტარი" msgid "Complete tags automatically" msgstr "ჭდეების ავტომატური შევსება" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "ჭდეების ავტომატური შევსება..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "ბიბლიოთეკის გამართვა..." @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1392,11 +1392,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "შექმნის თარიღი" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "ცვლილების თარიღი" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "ფაილების წაშლა" @@ -1565,7 +1565,7 @@ msgstr "ფაილების წაშლა" msgid "Delete from device..." msgstr "მოწყობილობიდან წაშლა..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "დისკიდან წაშლა..." @@ -1590,15 +1590,16 @@ msgstr "ორიგინალი ფაილების წაშლა" msgid "Deleting files" msgstr "ფაილების წაშლა" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1622,10 +1623,14 @@ msgstr "მოწყობილობის სახელი" msgid "Device properties..." msgstr "მოწყობილობის პარამეტრები..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "მოწყობილობები" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "თქვენ გულისხმობდით" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "გათიშული" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "დისკი" @@ -1682,7 +1687,7 @@ msgstr "პარამეტრების ჩვენება" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "ჭდის რედაქტირება..." @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "მთელი კოლექცია" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "ეკვალაიზერი" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "შეცდომა" @@ -1969,7 +1978,7 @@ msgstr "შეცდომა სიმღერების წაშლის msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1979,12 +1988,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2109,6 +2118,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "ფაილები" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2344,11 +2362,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2418,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "ინტერნეტი" @@ -2625,6 +2647,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2697,7 +2723,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2780,12 +2806,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "ბიბლიოთეკა" @@ -2793,7 +2819,7 @@ msgstr "ბიბლიოთეკა" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2867,11 +2893,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2890,10 +2916,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "შეყვარება" @@ -2968,7 +2994,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3090,7 +3116,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "მუსიკა" @@ -3098,7 +3124,7 @@ msgstr "მუსიკა" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "გაჩუმება" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3210,7 +3236,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "შემდეგი ჩანაწერი" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&აუდიო CD-ის გახსნა..." @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "ფაილის გახსნა..." @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "ფაილების ორგანიზება" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "ფაილების ორგანიზება..." @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3495,7 +3521,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3508,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "დაკვრა" @@ -3536,7 +3562,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3591,7 +3617,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3698,7 +3724,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "წინა ჩანაწერი" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3741,16 +3767,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3852,7 +3878,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3905,7 +3931,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4022,7 +4060,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4050,7 +4088,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4211,7 +4249,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4240,7 +4278,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4303,7 +4341,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4323,12 +4361,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4424,7 +4462,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4460,7 +4498,7 @@ msgstr "" msgid "Song Information" msgstr "ინფორმაცია სიმღერაზე" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "ინფორმაცია" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "გაჩერება" @@ -4565,7 +4607,7 @@ msgstr "გაჩერება" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "ყველა პოდკასტის განახლება" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/kk.po b/src/translations/kk.po index 32202a6ac..4d9440087 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Kazakh (http://www.transifex.com/projects/p/clementine/language/kk/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "Ор&тасы" msgid "&Custom" msgstr "Таң&дауыңызша" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Көмек" @@ -187,7 +187,7 @@ msgstr "Жа&сыру..." msgid "&Left" msgstr "&Сол жақ" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Му&зыка" @@ -195,15 +195,15 @@ msgstr "Му&зыка" msgid "&None" msgstr "&Ешнәрсе" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Шығу" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "&Оң жақ" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Са&ймандар" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "%1 туралы" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt туралы..." @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Файлды қосу" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Файлды қосу..." @@ -436,11 +436,11 @@ msgstr "Файлды қосу..." msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Буманы қосу" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Буманы қосу..." @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "Кейін" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Альбом" @@ -614,7 +614,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Барлық файлдар (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Орындайтын" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "Жаңа эпизодтарға тексеру" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Жаңартуларға тексеру..." @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "Тазарту" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "Түстер" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Түсіндірме" @@ -1196,11 +1196,11 @@ msgstr "Түсіндірме" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "Алмасу буферіне көшіру" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Жасалған күні" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Түзетілген күні" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Файлдарды өшіру" @@ -1564,7 +1564,7 @@ msgstr "Файлдарды өшіру" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "Файлдарды өшіру" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Мақсаты" @@ -1621,10 +1622,14 @@ msgstr "Құрылғы аты" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Құрылғылар" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "Сөндірулі" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Эквалайзер" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Қате" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Файл кеңейтілуі" @@ -2167,19 +2184,19 @@ msgstr "Файл кеңейтілуі" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Файл аты" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Файл өлшемі" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "Файл түрі" msgid "Filename" msgstr "Файл аты" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Файлдар" @@ -2309,9 +2326,10 @@ msgstr "Жалпы" msgid "General settings" msgstr "Жалпы баптаулары" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанры" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "Өту" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "Ақпарат" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Кірістіру..." @@ -2584,7 +2606,7 @@ msgstr "Орнатылған" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Интернет" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ұзындығы" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Жинақ" @@ -2792,7 +2818,7 @@ msgstr "Жинақ" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "Ойнату тізімін жүктеу" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Ойнату тізімін жүктеу..." @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Кіру" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Көңіл-күй" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "Төмен жылжыту" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "Жоғары жылжыту" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Музыка" @@ -3097,7 +3123,7 @@ msgstr "Музыка" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Дыбысын басу" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "Жаңа бума" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Жаңа ойнату тізімі" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "Келесі" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "Жоқ" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "Мөлдірсіздік" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Файлды ашу..." @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Опциялар..." @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Аялдату" @@ -3507,7 +3533,7 @@ msgstr "Ойнатуды аялдату" msgid "Paused" msgstr "Аялдатылған" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Орындайтын" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Ойнату" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "Баптаулар" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Баптаулар..." @@ -3697,7 +3723,7 @@ msgstr "Алдын-ала қарау" msgid "Previous" msgstr "Алдыңғы" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "Профиль" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Барысы" @@ -3740,16 +3766,16 @@ msgstr "Сапасы" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" @@ -3851,7 +3877,7 @@ msgstr "Өшіру" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "Таңдамалылардан өшіру" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "Ойнату тізімінің атын ауыстыру" msgid "Rename playlist..." msgstr "Ойнату тізімінің атын ауыстыру..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Рок" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "Суретті сақтау" msgid "Save playlist" msgstr "Ойнату тізімін сақтау" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Ойнату тізімін сақтау..." @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Нәтиже" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Барлығын таңдау" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ештеңе таңдамау" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "Альбомдарды араластыру" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "Ска" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "Сұрыптау" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Қайнар көзі" @@ -4527,6 +4565,10 @@ msgstr "Қалыпты" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 іске қосылу" @@ -4555,7 +4597,7 @@ msgstr "Іске қосылу..." msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Тоқтату" @@ -4564,7 +4606,7 @@ msgstr "Тоқтату" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Аталуы" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Толық экранға өту/шығу" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Трек" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "Түрі" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Шығ. жылы" diff --git a/src/translations/ko.po b/src/translations/ko.po index 9b6e2777c..7c4b21d9d 100644 --- a/src/translations/ko.po +++ b/src/translations/ko.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/clementine/language/ko/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -173,11 +173,11 @@ msgstr "가운데(&C)" msgid "&Custom" msgstr "사용자 정의(&C)" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "효과음(&E)" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "도움말(&H)" @@ -194,7 +194,7 @@ msgstr "숨기기(&H)..." msgid "&Left" msgstr "왼쪽(&L)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "음악(&M)" @@ -202,15 +202,15 @@ msgstr "음악(&M)" msgid "&None" msgstr "없음(&N)" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "재생목록(&P)" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "종료(&Q)" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "반복 모드(&R)" @@ -218,7 +218,7 @@ msgstr "반복 모드(&R)" msgid "&Right" msgstr "오른쪽(&R)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "셔플 모드(&S)" @@ -226,7 +226,7 @@ msgstr "셔플 모드(&S)" msgid "&Stretch columns to fit window" msgstr "창 크기에 맞게 글자열 넓히기(&S)" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "도구(&T)" @@ -371,11 +371,11 @@ msgstr "중단" msgid "About %1" msgstr "%1 정보" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "클레멘타인 정보" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt 정보" @@ -423,19 +423,19 @@ msgstr "다른 스트림 추가..." msgid "Add directory..." msgstr "디렉토리 추가..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "파일 추가" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "파일 추가..." @@ -443,11 +443,11 @@ msgstr "파일 추가..." msgid "Add files to transcode" msgstr "변환할 파일 추가" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "폴더 추가" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "폴더 추가..." @@ -459,7 +459,7 @@ msgstr "새로운 폴더 추가..." msgid "Add podcast" msgstr "팟케스트 추가" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "팟케스트 추가..." @@ -535,7 +535,7 @@ msgstr "트랙 태그 추가" msgid "Add song year tag" msgstr "연도 태그 추가" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "스트림 추가..." @@ -547,7 +547,7 @@ msgstr "그루브샤크 즐겨찾기에 추가" msgid "Add to Grooveshark playlists" msgstr "그루브샤크 재생목록에 추가" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "다른 재생목록에 추가" @@ -608,12 +608,12 @@ msgstr "이후" msgid "After copying..." msgstr "복사 한 후...." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "앨범" @@ -621,7 +621,7 @@ msgstr "앨범" msgid "Album (ideal loudness for all tracks)" msgstr "앨범 (모든 트랙에 이상적인 음량)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -643,11 +643,11 @@ msgstr "앨범 표지가 있는 앨범" msgid "Albums without covers" msgstr "앨범 표지가 없는 앨범" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "모든 파일 (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Hypnotoad에 모든 영광을!" @@ -774,17 +774,17 @@ msgid "" "the songs of your library?" msgstr "라이브러리의 모든 곡의 해당하는 음악 파일에 음악 통계를 작성 하시겠습니까?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "음악가" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "음악가 정보" @@ -800,7 +800,7 @@ msgstr "음악가 태그" msgid "Artist's initial" msgstr "음악가 이니셜" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "오디오 형식" @@ -846,7 +846,7 @@ msgstr "평균 이미지 크기" msgid "BBC Podcasts" msgstr "BBC 팟케스트" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -875,7 +875,7 @@ msgstr "데이터베이스 백업" msgid "Balance" msgstr "밸런스" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "싫어요" @@ -904,7 +904,7 @@ msgstr "최고" msgid "Biography from %1" msgstr "%1의 바이오그래피" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "비트 전송률" @@ -1010,7 +1010,7 @@ msgstr "" msgid "Check for new episodes" msgstr "새로운 에피소드 확인" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "업데이트 확인..." @@ -1060,11 +1060,11 @@ msgstr "자동 정리" msgid "Clear" msgstr "비우기" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "재생목록 비우기" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1155,8 +1155,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "남은 시간과 전체 시간을 바꾸려면 클릭하세요" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1194,7 +1194,7 @@ msgstr "색상" msgid "Comma separated list of class:level, level is 0-3" msgstr "콤마로 클래스:단계의 목록을 나눔, 단계는 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "설명" @@ -1203,11 +1203,11 @@ msgstr "설명" msgid "Complete tags automatically" msgstr "자동으로 태그 저장" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "자동으로 태그 저장..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "서브소닉 설정" msgid "Configure global search..." msgstr "글로벌 검색 설정..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "라이브러리 설정..." @@ -1283,7 +1283,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "콘솔" @@ -1303,12 +1303,12 @@ msgstr "장치가 재생할 수 없는 곡 변환" msgid "Copy to clipboard" msgstr "클립보드로 복사" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "장치에 복사..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "라이브러리에 복사..." @@ -1330,14 +1330,14 @@ msgid "" "required GStreamer plugins installed" msgstr "GStreamer 요소 \"%1\"를 찾을 수 없습니다 - 필요한 모든 GStreamer 플러그인이 설치되어 있는지 확인하세요" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 먹서를 찾을 수 없습니다, GStreamer 플러그인이 올바르게 설치되어 있는지 확인하세요" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1354,7 +1354,7 @@ msgid "Couldn't open output file %1" msgstr "출력 파일 %1를 열 수 없습니다" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "커버 관리자" @@ -1398,11 +1398,11 @@ msgstr "트랙을 자동으로 바꿀 때 크로스-페이드" msgid "Cross-fade when changing tracks manually" msgstr "트랙을 직접 바꿀 때 크로스-페이드" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1410,63 +1410,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1509,11 +1509,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "생성한 날짜" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "수정한 날짜" @@ -1563,7 +1563,7 @@ msgid "Delete downloaded data" msgstr "다운로드된 데이터 삭제" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "파일 삭제" @@ -1571,7 +1571,7 @@ msgstr "파일 삭제" msgid "Delete from device..." msgstr "장치에서 삭제..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "디스크에서 삭제..." @@ -1596,15 +1596,16 @@ msgstr "원본 파일 삭제" msgid "Deleting files" msgstr "파일 삭제 중" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "선택한 트랙을 대기열에서 해제" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "트랙을 대기열에서 해제" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "대상" @@ -1628,10 +1629,14 @@ msgstr "장치 이름" msgid "Device properties..." msgstr "장치 속성..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "장치" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "이것을 원하셨습니까" @@ -1670,8 +1675,8 @@ msgstr "분위기 막대 생성 " msgid "Disabled" msgstr "사용 안함" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "디스크" @@ -1688,7 +1693,7 @@ msgstr "옵션 표시" msgid "Display the on-screen-display" msgstr "OSD 표시" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "전체 라이브러리 다시 읽기" @@ -1810,6 +1815,10 @@ msgstr "드롭박스" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "다이나믹 모드가 켜졌습니다" @@ -1822,12 +1831,12 @@ msgstr "다이나믹 랜덤 믹스" msgid "Edit smart playlist..." msgstr "스마트 재생목록 편집..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "태그 편집..." @@ -1840,7 +1849,7 @@ msgid "Edit track information" msgstr "트랙 정보 편집" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "트랙 정보 편집..." @@ -1941,7 +1950,7 @@ msgstr "클레멘타인에 연결하기 위한 앱에서 다음의 IP를 입력 msgid "Entire collection" msgstr "전체 선택" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "이퀄라이저" @@ -1955,7 +1964,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "오류" @@ -1975,7 +1984,7 @@ msgstr "노래 삭제 오류" msgid "Error downloading Spotify plugin" msgstr "스포티피 플러그인 다운로드 오류" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "%1 불러오기 오류" @@ -1985,12 +1994,12 @@ msgstr "%1 불러오기 오류" msgid "Error loading di.fm playlist" msgstr "dl.fm 재생목록 불러오기 오류" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "%1: %2 처리 오류" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "오디오 CD 불러오기 오류" @@ -2068,27 +2077,27 @@ msgstr "내보내기 완료" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2115,6 +2124,10 @@ msgstr "페이드 아웃" msgid "Fading duration" msgstr "페이드 아웃 시간" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2166,6 +2179,10 @@ msgstr "서브소닉 라이브러리 가져오기" msgid "Fetching cover error" msgstr "커버 가져오기 오류" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "파일 확장자" @@ -2174,19 +2191,19 @@ msgstr "파일 확장자" msgid "File formats" msgstr "파일 " -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "파일 " -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "파일 이름 (경로 제외)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "파일 크기" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2196,7 +2213,7 @@ msgstr "파일 형태" msgid "Filename" msgstr "파일 " -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "파일" @@ -2316,9 +2333,10 @@ msgstr "일반 " msgid "General settings" msgstr "일반 " -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "장르" @@ -2350,11 +2368,11 @@ msgstr "이름 지정:" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "다음 재생목록 탭으로 가기" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "이전 재생목록 탭으로 가기" @@ -2424,7 +2442,7 @@ msgstr "장르/앨범에 의한 그룹" msgid "Group by Genre/Artist/Album" msgstr "장르/음악가/앨범에 의한 그룹" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "그룹화" @@ -2579,6 +2597,10 @@ msgstr "색인 %1" msgid "Information" msgstr "정보" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "추가..." @@ -2591,7 +2613,7 @@ msgstr "설치 됨" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "인터넷" @@ -2631,6 +2653,10 @@ msgstr "잘못된 세션 키" msgid "Invalid username and/or password" msgstr "잘못된 사용자명 또는(그리고) 비밀번호입니다." +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "자멘도" @@ -2655,7 +2681,7 @@ msgstr "자멘도 금주의 최그 트랙" msgid "Jamendo database" msgstr "자멘도 데이터베이스" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "현재 재생 중인 트랙 건너뛰기" @@ -2679,7 +2705,7 @@ msgstr "창을 닫을 때 백그라운드에서 계속 실행" msgid "Keep the original files" msgstr "원본 파일들 " -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "고양이" @@ -2703,7 +2729,7 @@ msgstr "큰 앨범 표지" msgid "Large sidebar" msgstr "큰 사이드바" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "마지막으로 재생됨" @@ -2786,12 +2812,12 @@ msgstr "" msgid "Left" msgstr "왼쪽" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "길이" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "라이브러리 " @@ -2799,7 +2825,7 @@ msgstr "라이브러리 " msgid "Library advanced grouping" msgstr "향상된 그룹 " -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "라이브러리 재탐색 알림" @@ -2844,7 +2870,7 @@ msgstr "디스크로부터 커버열기..." msgid "Load playlist" msgstr "재생목록 불러오기" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "재생목록 불러오기..." @@ -2873,11 +2899,11 @@ msgstr "음악 여는 중" msgid "Loading stream" msgstr "스트림 여는 중" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "트랙 여는 중" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "트랙 정보 불러오는중" @@ -2896,10 +2922,10 @@ msgstr "현재 재생목록을 교체할 파일/URL 불러오기" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "로그인" @@ -2911,7 +2937,7 @@ msgstr "로그인 실패" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "좋아요" @@ -2974,7 +3000,7 @@ msgstr "매그나튠 다운로드 완료됨" msgid "Main profile (MAIN)" msgstr "메인 프로필 (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3057,7 +3083,7 @@ msgstr "모노 재생" msgid "Months" msgstr "개월" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "분위기" @@ -3087,7 +3113,7 @@ msgstr "마운트 지점" msgid "Move down" msgstr "아래로 이동" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "라이브러리로 이동..." @@ -3096,7 +3122,7 @@ msgstr "라이브러리로 이동..." msgid "Move up" msgstr "위로 이동" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "음악" @@ -3104,7 +3130,7 @@ msgstr "음악" msgid "Music Library" msgstr "음악 라이브러리" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "음소거" @@ -3192,7 +3218,7 @@ msgstr "" msgid "New folder" msgstr "새 폴더" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "새로운 재생목록" @@ -3216,7 +3242,7 @@ msgstr "새로운 트랙" msgid "Next" msgstr "다음" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "다음 트랙" @@ -3255,7 +3281,7 @@ msgstr "" msgid "None" msgstr "없음" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3373,7 +3399,7 @@ msgstr "투명도" msgid "Open %1 in browser" msgstr "브라우저에서 %1 열기" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "오디오 CD 열기(&a)..." @@ -3389,7 +3415,7 @@ msgstr "OPML 파일 열기" msgid "Open device" msgstr "장치 열기" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "파일 열기..." @@ -3424,7 +3450,7 @@ msgstr "비트 전송률 최적화" msgid "Optimize for quality" msgstr "음질 최적화" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "옵션..." @@ -3436,7 +3462,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "파일 정리" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "파일 정리..." @@ -3460,7 +3486,7 @@ msgstr "" msgid "Output device" msgstr "출력 장치" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "저장 옵션" @@ -3501,7 +3527,7 @@ msgstr "파티" msgid "Password" msgstr "비밀번호" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "일시중지" @@ -3514,7 +3540,7 @@ msgstr "재생 일시중지" msgid "Paused" msgstr "일시중지됨" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "연주가" @@ -3527,9 +3553,9 @@ msgstr "픽셀" msgid "Plain sidebar" msgstr "일반 사이드바" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "재생" @@ -3542,7 +3568,7 @@ msgstr "음악가 또는 태그 재생" msgid "Play artist radio..." msgstr "음악가 라디오 재생..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "재생 횟수" @@ -3597,7 +3623,7 @@ msgstr "재생목록 옵션" msgid "Playlist type" msgstr "재생목록 종류" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "재생목록" @@ -3649,7 +3675,7 @@ msgstr "프리-엠프" msgid "Preferences" msgstr "환경설정" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "환경설정..." @@ -3704,7 +3730,7 @@ msgstr "미리보기" msgid "Previous" msgstr "이전" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "이전 트랙" @@ -3718,7 +3744,7 @@ msgid "Profile" msgstr "프로필" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "진행" @@ -3747,16 +3773,16 @@ msgstr "음질" msgid "Querying device..." msgstr "장치 질의..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "대기열 관리자" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "선택한 트랙을 큐에 추가" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "대기열 트랙" @@ -3768,7 +3794,7 @@ msgstr "라디오 (모든 트랙을 같은 볼륨으로)" msgid "Radios" msgstr "라디오" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "빗소리" @@ -3800,7 +3826,7 @@ msgstr "현재 음악에 별점 4점 평가" msgid "Rate the current song 5 stars" msgstr "현재 음악에 별점 5점 평가" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "등급" @@ -3858,7 +3884,7 @@ msgstr "제거" msgid "Remove action" msgstr "제거 행동" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "재생목록에서 중복 제거" @@ -3874,7 +3900,7 @@ msgstr "내 음악에서 제거" msgid "Remove from favorites" msgstr "즐겨찾기에서 제거" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "재생목록에서 제거" @@ -3911,7 +3937,7 @@ msgstr "재생목록 이름 바꾸기" msgid "Rename playlist..." msgstr "재생목록 이름 바꾸기..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -4002,6 +4028,18 @@ msgstr "클레멘타인으로 되돌아가기" msgid "Right" msgstr "오른쪽" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "록" @@ -4028,7 +4066,7 @@ msgstr "안전하게 장치 제거" msgid "Safely remove the device after copying" msgstr "복사 후 안전하게 장치 제거" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "샘플 레이트" @@ -4056,7 +4094,7 @@ msgstr "그림 저장" msgid "Save playlist" msgstr "재생목록 저장" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "재생목록 저장..." @@ -4092,7 +4130,7 @@ msgstr "Scalable sampling rate profile (SSR)" msgid "Scale size" msgstr "축척 크기" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "점수" @@ -4101,7 +4139,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4185,11 +4223,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "모두 선택" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "선택 없음" @@ -4217,7 +4255,7 @@ msgstr "시각화 선택" msgid "Select visualizations..." msgstr "시각화 선택..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4237,7 +4275,7 @@ msgstr "서버 자세히" msgid "Service offline" msgstr "서비스 오프라인" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4246,7 +4284,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "음량을 퍼센트로 설정" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "모든 선택 트랙의 값을 설정..." @@ -4309,7 +4347,7 @@ msgstr "예쁜 OSD 보기" msgid "Show above status bar" msgstr "상태 표시 줄 위에 보기" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "모든 음악 보기" @@ -4329,12 +4367,12 @@ msgstr "분할 표시" msgid "Show fullsize..." msgstr "전체화면 보기..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "파일 브라우져에서 보기..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4346,11 +4384,11 @@ msgstr "다양한 음악가에서 보기" msgid "Show moodbar" msgstr "분위기 막대 " -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "복사본만 보기" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "태그되지 않은 것만 보기" @@ -4390,7 +4428,7 @@ msgstr "앨범 섞기" msgid "Shuffle all" msgstr "전부 " -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "재생 목록 섞기" @@ -4430,7 +4468,7 @@ msgstr "스카" msgid "Skip backwards in playlist" msgstr "재생목록에서 뒤로 넘기기" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4466,7 +4504,7 @@ msgstr "소프트 록" msgid "Song Information" msgstr "음악 정보" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "음악 정보" @@ -4498,7 +4536,7 @@ msgstr "음악 정렬" msgid "Sorting" msgstr "정렬" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "출처" @@ -4534,6 +4572,10 @@ msgstr "표준" msgid "Starred" msgstr "볊점" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4549,7 +4591,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 시작중" @@ -4562,7 +4604,7 @@ msgstr "시작중..." msgid "Stations" msgstr "방송국" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "중지" @@ -4571,7 +4613,7 @@ msgstr "중지" msgid "Stop after" msgstr "이후 정지" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "이번 트랙 이후 정지" @@ -4739,7 +4781,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "서브소닉의 시험 기간이 끝났습니다. 라이센스 키를 얻기위한 기부를 해주세요. 자세한 사항은 subsonic.org 에서 확인하세요." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4780,7 +4822,7 @@ msgid "" "continue?" msgstr "파일들이 장치로 부터 삭제 될 것 입니다. 계속 진행 하시겠습니까?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4852,9 +4894,10 @@ msgstr "이 스트림은 유료 subscribers만 사용할 수 있습니다" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "제목" @@ -4876,11 +4919,11 @@ msgstr "예쁜 OSD 토글" msgid "Toggle fullscreen" msgstr "전체화면 토글" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "대기열 상황 토글" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4912,12 +4955,13 @@ msgstr "전송된 총 바이트" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "트랙" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "음악 변환" @@ -5015,7 +5059,7 @@ msgstr "그루브샤크 재생목록 업데이트" msgid "Update all podcasts" msgstr "모든 팟케스트 업데이트" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "변경된 라이브러리 폴더 업데이트" @@ -5170,7 +5214,7 @@ msgstr "보기" msgid "Visualization mode" msgstr "시각화 모드" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "시각화" @@ -5298,7 +5342,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "지금 전부 다시 검색해도 좋습니까?" @@ -5310,10 +5354,10 @@ msgstr "모든 음악에 통계를 작성" msgid "Wrong username or password." msgstr "잘못된 사용자명 또는 비밀번호 입니다." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "년도" diff --git a/src/translations/lt.po b/src/translations/lt.po index 4cf193ddb..71f665f0c 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Lithuanian (http://www.transifex.com/projects/p/clementine/language/lt/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&Centras" msgid "&Custom" msgstr "&Pasirinktinas" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Ekstra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Pagalba" @@ -191,7 +191,7 @@ msgstr "&Paslėpti..." msgid "&Left" msgstr "&Kairė" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Muzika" @@ -199,15 +199,15 @@ msgstr "Muzika" msgid "&None" msgstr "&Nieko" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Grojaraštis" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Baigti" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Kartojimo režimas" @@ -215,7 +215,7 @@ msgstr "Kartojimo režimas" msgid "&Right" msgstr "&Dešinė" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Maišymo veiksena" @@ -223,7 +223,7 @@ msgstr "Maišymo veiksena" msgid "&Stretch columns to fit window" msgstr "&Ištempti stulpelius, kad užpildytų langą" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Įrankiai" @@ -368,11 +368,11 @@ msgstr "Nutraukti" msgid "About %1" msgstr "Apie %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Apie Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Apie Qt..." @@ -420,19 +420,19 @@ msgstr "Pridėti kitą srautą..." msgid "Add directory..." msgstr "Pridėti nuorodą..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Pridėti failą" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Pridėti failą perkodavimui" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Pridėti failus perkodavimui" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Pridėti failą..." @@ -440,11 +440,11 @@ msgstr "Pridėti failą..." msgid "Add files to transcode" msgstr "Pridėti failus perkodavimui" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Pridėti aplankalą" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Pridėti aplanką..." @@ -456,7 +456,7 @@ msgstr "Pridėti naują aplankalą..." msgid "Add podcast" msgstr "Pridėti srautą" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pridėti srautą..." @@ -532,7 +532,7 @@ msgstr "Pridėti žymę kūrinio numeriui" msgid "Add song year tag" msgstr "Pridėti žymę kūrionio metams" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Pridėti srautą..." @@ -544,7 +544,7 @@ msgstr "Pridėti į Grooveshark mėgstamiausius" msgid "Add to Grooveshark playlists" msgstr "Pridėti į Grooveshark grojaraščius" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Pridėti prie kito grojaraščio" @@ -605,12 +605,12 @@ msgstr "Po" msgid "After copying..." msgstr "Po kopijavimo..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albumas" @@ -618,7 +618,7 @@ msgstr "Albumas" msgid "Album (ideal loudness for all tracks)" msgstr "Albumas (idealus garsumas visoms dainoms)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Albumai su viršeliais" msgid "Albums without covers" msgstr "Albumai be viršelių" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Visi Failai (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Šlovė Hypnotoad'ui!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "Ar tikrai norite įrašyti dainos statistiką į dainos failą visoms dainoms Jūsų fonotekoje?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Atlikėjas" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Atlikėjo info" @@ -797,7 +797,7 @@ msgstr "Atlikėjo žymės" msgid "Artist's initial" msgstr "Atlikėjo inicialai" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio formatas" @@ -843,7 +843,7 @@ msgstr "Vidutinis paveikslo dydis" msgid "BBC Podcasts" msgstr "BBC srautas" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Daroma duomenų bazės atsarginė kopija" msgid "Balance" msgstr "Balansas" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Užblokuoti" @@ -901,7 +901,7 @@ msgstr "Geriausias" msgid "Biography from %1" msgstr "Biografija iš %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitų greitis" @@ -1007,7 +1007,7 @@ msgstr "Mono perklausos nustatymų keitimas suveiks kitoms grojamoms dainoms." msgid "Check for new episodes" msgstr "Tikrinti, ar nėra naujų epizodų" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Atnaujinimų tikrinimas..." @@ -1057,11 +1057,11 @@ msgstr "Valoma" msgid "Clear" msgstr "Išvalyti" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Išvalyti grojaraštį" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "Spauskite, kad pažymėti šį grojaraštį, tam kad jis būtų išsaugo msgid "Click to toggle between remaining time and total time" msgstr "Spustelėkite, kad perjungti tarp likusio laiko ir viso laiko" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Spalvos" msgid "Comma separated list of class:level, level is 0-3" msgstr "Kableliais išskirtas sąrašas iš klasės:lygio, lygis yra nuo 0 iki 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentaras" @@ -1200,11 +1200,11 @@ msgstr "Komentaras" msgid "Complete tags automatically" msgstr "Užbaigti žymes automatiškai" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Pabaigti žymes automatiškai..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Konfigūruoti subsonix" msgid "Configure global search..." msgstr "Nustatyti visuotinę paiešką..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfigūruoti fonoteką..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Baigėsi prisijungimo laikas, patikrinkite serverio URL. Pavyzdys: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Pultas" @@ -1300,12 +1300,12 @@ msgstr "Konvertuoti visą įrenginio nepalaikomą muziką" msgid "Copy to clipboard" msgstr "Kopijuoti į atmintinę" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopijuoti į įrenginį..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopijuoti į fonoteką..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nepavyko sukurti „GStreamer“ elemento \"%1\" - įsitikinkite ar įdiegti visi reikalingi „GStreamer“ plėtiniai" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nepavyko rasti maišytuvo %1, įsitikinkite ar įdiegti visi reikalingi „GStreamer“ plėtiniai" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Nepavyko atverti išvesties failo %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Viršelių tvarkyklė" @@ -1395,11 +1395,11 @@ msgstr "Naudoti „Cross-fade“ funkciją kai takeliai keičiami automatiškai" msgid "Cross-fade when changing tracks manually" msgstr "Naudoti „Cross-fade“ funkciją kai takeliai keičiami savarankiškai" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Aptikta duomenų bazės klaida. Prašome skaityti https://code.google.com/p/clementine-player/wiki/DatabaseCorruption esančias instrukcijas kaip atstatyti Jūsų duomenų bazę" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Sukūrimo data" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Pakeitimo data" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Naikinti atsiųstus duomenis" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Ištrinti failus" @@ -1568,7 +1568,7 @@ msgstr "Ištrinti failus" msgid "Delete from device..." msgstr "Ištrinti iš įrenginio..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Ištrinti iš disko..." @@ -1593,15 +1593,16 @@ msgstr "Ištrinti originalius failus" msgid "Deleting files" msgstr "Trinami failai" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Iš eilės pažymėtus takelius" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Iš eilės takelį" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Kopijuoti į aplanką" @@ -1625,10 +1626,14 @@ msgstr "Įrenginio pavadinimas" msgid "Device properties..." msgstr "Įrenginio savybės..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Įrenginiai" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Ar turėjote omenyje" @@ -1667,8 +1672,8 @@ msgstr "Išjungti moodbar generavimą" msgid "Disabled" msgstr "Išjungtas" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diskas" @@ -1685,7 +1690,7 @@ msgstr "Rodymo nuostatos" msgid "Display the on-screen-display" msgstr "Rodyti OSD" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Pilnai perskanuoti fonoteką" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinaminė veiksena yra įjungta" @@ -1819,12 +1828,12 @@ msgstr "Dinaminis atsitiktinis maišymas" msgid "Edit smart playlist..." msgstr "Taisyti išmanųjį grojaraštį..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Taisyti žymę..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Taisyti takelio informaciją" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Taisyti takelio informaciją..." @@ -1938,7 +1947,7 @@ msgstr "Programoje įveskite šį adresą ir prisijungsite prie Clementine." msgid "Entire collection" msgstr "Visa kolekcija" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Glodintuvas" @@ -1952,7 +1961,7 @@ msgstr "Tai atitinka --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Klaida" @@ -1972,7 +1981,7 @@ msgstr "Klaida trinant dainas" msgid "Error downloading Spotify plugin" msgstr "Klaida siunčiant Spotify plėtinį" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Klaida įkeliant %1" @@ -1982,12 +1991,12 @@ msgstr "Klaida įkeliant %1" msgid "Error loading di.fm playlist" msgstr "Klaida įkeliant di.fm grojaraštį" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Klaida apdorojant %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Klaida įkeliant audio CD" @@ -2065,27 +2074,27 @@ msgstr "Eksportavimas baigtas" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Eksportuota %1 viršelių iš %2 (%3 praleista)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Pradingimas" msgid "Fading duration" msgstr "Suliejimo trukmė" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Nepavyko atsiųsti direktorijos" @@ -2163,6 +2176,10 @@ msgstr "Gaunama Subsonic biblioteka" msgid "Fetching cover error" msgstr "Viršelio atsiuntimo klaida" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Failo plėtinys" @@ -2171,19 +2188,19 @@ msgstr "Failo plėtinys" msgid "File formats" msgstr "Failų formatai" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Failo vardas" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Failo vardas (be kelio)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Failo dydis" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Failo tipas" msgid "Filename" msgstr "Failopavadinimas" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Failai" @@ -2313,9 +2330,10 @@ msgstr "Bendri" msgid "General settings" msgstr "Pagrindiniai nustatymai" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanras" @@ -2347,11 +2365,11 @@ msgstr "Suteikti pavadinimą" msgid "Go" msgstr "Eiti" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Eiti į sekančią grojaraščių kortelę" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Eiti į praeitą grojarasčių kortelę" @@ -2421,7 +2439,7 @@ msgstr "Grupuoti pagal Žanrą/Albumą" msgid "Group by Genre/Artist/Album" msgstr "Grupuoti pagal Žanrą/Atlikėją/Albumą" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupavimas" @@ -2576,6 +2594,10 @@ msgstr "Indeksuojama %1" msgid "Information" msgstr "Informacija" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Įterpti..." @@ -2588,7 +2610,7 @@ msgstr "Įdiegta" msgid "Integrity check" msgstr "Vientisumo tikrinimas" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internetas" @@ -2628,6 +2650,10 @@ msgstr "Netinkamas sesijos raktas" msgid "Invalid username and/or password" msgstr "Neteisingas naudotojo vardas ir/arba slaptažodis" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Jamendo savaitės Top takelia" msgid "Jamendo database" msgstr "Jamendo duomenų bazė" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Peršokti prie dabar grojamo takelio" @@ -2676,7 +2702,7 @@ msgstr "Veikti fone kai langas uždaromas" msgid "Keep the original files" msgstr "Palikti originialius failus" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kačiukai" @@ -2700,7 +2726,7 @@ msgstr "Didelis albumo viršelio paveikslėlis" msgid "Large sidebar" msgstr "Didelė juosta" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Vėliausiai grota" @@ -2783,12 +2809,12 @@ msgstr "Palikite tuščią numatytoms reikšmėms. Pavyzdžiai: \"/dev/dsp\", \" msgid "Left" msgstr "Kairė" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trukmė" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Fonoteka" @@ -2796,7 +2822,7 @@ msgstr "Fonoteka" msgid "Library advanced grouping" msgstr "Sudėtingesnis fonotekos grupavimas" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Fonotekos perskanavimo žinutė" @@ -2841,7 +2867,7 @@ msgstr "Įkelti viršelį iš disko..." msgid "Load playlist" msgstr "Įkelti grojaraštį" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Įkelti grojaraštį..." @@ -2870,11 +2896,11 @@ msgstr "Keliamos dainos" msgid "Loading stream" msgstr "Įkeliamas srautas" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Įkeliami takeliai" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Užkraunama kūrinio informacija" @@ -2893,10 +2919,10 @@ msgstr "Įkelia failus/URL, pakeičiant esamą sąrašą" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Prisijungti" @@ -2908,7 +2934,7 @@ msgstr "Prisijungimas nepavyko" msgid "Long term prediction profile (LTP)" msgstr "Ilgalaikio nuspėjimo profilis (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Meilė" @@ -2971,7 +2997,7 @@ msgstr "Magnatune atsiuntimas baigtas" msgid "Main profile (MAIN)" msgstr "Pagrindinis profilis" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Padaryti tai taip!" @@ -3054,7 +3080,7 @@ msgstr "Mono grojimas" msgid "Months" msgstr "Mėnesiai" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Nuotaika" @@ -3084,7 +3110,7 @@ msgstr "Prijungimo vietos" msgid "Move down" msgstr "Perkelti žemyn" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Perkelti į fonoteką" @@ -3093,7 +3119,7 @@ msgstr "Perkelti į fonoteką" msgid "Move up" msgstr "Perkelti aukštyn" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Muzika" @@ -3101,7 +3127,7 @@ msgstr "Muzika" msgid "Music Library" msgstr "Fonoteka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Nutildyti" @@ -3189,7 +3215,7 @@ msgstr "Niekada nepradėti groti" msgid "New folder" msgstr "Naujas aplankas" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Naujas grojaraštis" @@ -3213,7 +3239,7 @@ msgstr "Naujausi takeliai" msgid "Next" msgstr "Toliau" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Kitas takelis" @@ -3252,7 +3278,7 @@ msgstr "Jokių trumpų blokų" msgid "None" msgstr "Nėra" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nei viena iš pažymėtų dainų netinka kopijavimui į įrenginį" @@ -3370,7 +3396,7 @@ msgstr "Permatomumas" msgid "Open %1 in browser" msgstr "Atverti %1 naršyklėje" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Atverti &audio CD..." @@ -3386,7 +3412,7 @@ msgstr "Atverti OPML failą..." msgid "Open device" msgstr "Atverti įrenginį" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Atverti failą..." @@ -3421,7 +3447,7 @@ msgstr "Optimizuoti grojimo bitrate dydžiui" msgid "Optimize for quality" msgstr "Optimizuoti kokybei" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Pasirinktys..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Tvarkyti failus" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Tvarkyti failus..." @@ -3457,7 +3483,7 @@ msgstr "Išvestis" msgid "Output device" msgstr "Išvesties įrenginys" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Išvesties parinktys" @@ -3498,7 +3524,7 @@ msgstr "Vakarėlis" msgid "Password" msgstr "Slaptažodis" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pristabdyti" @@ -3511,7 +3537,7 @@ msgstr "Sulaikyti grojimą" msgid "Paused" msgstr "Pristabdyta" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Atlikėjas" @@ -3524,9 +3550,9 @@ msgstr "Pikselis" msgid "Plain sidebar" msgstr "Paprasta juosta" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Groti" @@ -3539,7 +3565,7 @@ msgstr "Groti Atlikėją ar Žymę" msgid "Play artist radio..." msgstr "Groti Atlikėjoradijo stotį" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Grojimo skaitiklis" @@ -3594,7 +3620,7 @@ msgstr "Grojaraščio parinktys" msgid "Playlist type" msgstr "Grojaraščio tipas" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Grojaraščiai" @@ -3646,7 +3672,7 @@ msgstr "Sustiprinti" msgid "Preferences" msgstr "Nustatymai" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Nustatymai..." @@ -3701,7 +3727,7 @@ msgstr "Peržiūra" msgid "Previous" msgstr "Atgal" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Ankstesnis takelis" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Profilis" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progresas" @@ -3744,16 +3770,16 @@ msgstr "Kokybė" msgid "Querying device..." msgstr "Pateikiama užklausa įrenginiui..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Eilės tvarkyklė" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "į eilę pažymėtus takelius" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "į eilę takelį" @@ -3765,7 +3791,7 @@ msgstr "Radijas (vienodas garsumas visiems takeliams)" msgid "Radios" msgstr "Radijai" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Lietus" @@ -3797,7 +3823,7 @@ msgstr "Įvertinti šią dainą 4 žvaigždėmis" msgid "Rate the current song 5 stars" msgstr "Įvertinti šią dainą 5 žvaigždėmis" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Įvertinimas" @@ -3855,7 +3881,7 @@ msgstr "Pašalinti" msgid "Remove action" msgstr "Pašalinti veiksmą" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Pašalinti dublikatus iš grojaraščio" @@ -3871,7 +3897,7 @@ msgstr "Pašalinti iš Mano muzika" msgid "Remove from favorites" msgstr "Pašalinti iš mėgstamiausių" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Ištrinti iš grojaraščio" @@ -3908,7 +3934,7 @@ msgstr "Pervadinti grojaraštį" msgid "Rename playlist..." msgstr "Pervadinti grojaraštį..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Pernumeruoti takelius šia tvarka..." @@ -3999,6 +4025,18 @@ msgstr "Grįžti į Clementine" msgid "Right" msgstr "Dešinė" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rokas" @@ -4025,7 +4063,7 @@ msgstr "Saugiai pašalinti įrenginį" msgid "Safely remove the device after copying" msgstr "Saugiai pašalinti įrenginį po kopijavimo" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Išrankos dažnis" @@ -4053,7 +4091,7 @@ msgstr "Išsaugoti paveikslėlį" msgid "Save playlist" msgstr "Įrašyti grojaraštį" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Įrašyti grojaraštį..." @@ -4089,7 +4127,7 @@ msgstr "Besikeičiantis kodavimo dažnio profilis (SSR)" msgid "Scale size" msgstr "Keisti dydį" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Įvertinimas" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Pateikti klausomų takelių informaciją" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Rasti dabar grojamą takelį pagal santykinį kiekį" msgid "Seek the currently playing track to an absolute position" msgstr "Rasti dabar grojamą takelį į absoliučiąją poziciją" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pažymėti visus" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "N" @@ -4214,7 +4252,7 @@ msgstr "Pasirinkti vaizdinius" msgid "Select visualizations..." msgstr "Parinkti vaizdinius" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "Serverio detalės" msgid "Service offline" msgstr "Servisas nepasiekiamas" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nustatyti %1 į \"%2\"..." @@ -4243,7 +4281,7 @@ msgstr "Nustatyti %1 į \"%2\"..." msgid "Set the volume to percent" msgstr "Nustatyti garsumą iki procentų" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Nustatyti vertę visiems pažymėtiems takeliams..." @@ -4306,7 +4344,7 @@ msgstr "Rodyti gražų OSD" msgid "Show above status bar" msgstr "Rodyti virš būsenos juostos" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Rodyti visas dainas" @@ -4326,12 +4364,12 @@ msgstr "Rodyti skirtukus" msgid "Show fullsize..." msgstr "Rodyti viso dydžio..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Rodyti failų naršyklėje..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "Rodyti įvairiuose atlikėjuose" msgid "Show moodbar" msgstr "Rodyti nuotaikos juostą" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Rodyti tik duplikatus" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Rodyti tik be žymių" @@ -4387,7 +4425,7 @@ msgstr "Maišyti albumus" msgid "Shuffle all" msgstr "Maišyti viską" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Maišyti grojaraštį" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Ankstesnis kūrinys grojaraštyje" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Praleisti skaičiavimą" @@ -4463,7 +4501,7 @@ msgstr "Ramus rokas" msgid "Song Information" msgstr "Dainos informacija" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Dainos info" @@ -4495,7 +4533,7 @@ msgstr "Rikiuoti dainas pagal" msgid "Sorting" msgstr "Rikiavimas" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Šaltinis" @@ -4531,6 +4569,10 @@ msgstr "Standartinis" msgid "Starred" msgstr "Su žvaigždute" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Pradėti grajaraštį nuo dabar grojančio" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Pradėkite rašyti paieškos laukelyje žemiau, kad užpildyti šį paieškos rezultatų sąrašą" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Paleidžiama %1" @@ -4559,7 +4601,7 @@ msgstr "Pradedama..." msgid "Stations" msgstr "Stotys" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stabdyti" @@ -4568,7 +4610,7 @@ msgstr "Stabdyti" msgid "Stop after" msgstr "Stabdyti po" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Sustabdyti po šio takelio" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Bandomasis subsonic laikotarpis baigėsi. Paaukokite ir gaukite licenciją. Norėdami sužinoti daugiau aplankykite subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Šie failai bus ištrinti iš įrenginio, ar tikrai norite tęsti?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Šis srautas yra tik apmokamiems prenumeratoriams" msgid "This type of device is not supported: %1" msgstr "Šio tipo įrenginys yra nepalaikomas: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Pavadinimas" @@ -4873,11 +4916,11 @@ msgstr "Išjungti gražųjį OSD" msgid "Toggle fullscreen" msgstr "Visame ekrane" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Perjungti eilės statusą" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Perjungti „scrobbling“ būseną" @@ -4909,12 +4952,13 @@ msgstr "Viso baitų perkelta" msgid "Total network requests made" msgstr "Viso tinklo užklausų padaryta" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Takelis" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Perkoduoti muziką" @@ -5012,7 +5056,7 @@ msgstr "Atnaujinti Grooveshark grojaraštį" msgid "Update all podcasts" msgstr "Atnaujinti visas garso prenumeratas" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Atnaujinti pakeistus fonotekos katalogus" @@ -5167,7 +5211,7 @@ msgstr "Rodymas" msgid "Visualization mode" msgstr "Vaizdinio veiksena" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vaizdiniai" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Ar norėtumėte perkelti kitas dainas į šio atlikėjo albumą?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Ar norite paleisti pilną perskenavimą dabar?" @@ -5307,10 +5351,10 @@ msgstr "Rašyti visą dainų statistiką į dainų failus" msgid "Wrong username or password." msgstr "Netinkamas naudotojo vardas ar slaptažodis." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Metai" diff --git a/src/translations/lv.po b/src/translations/lv.po index cd2ee9b06..be3ca4d75 100644 --- a/src/translations/lv.po +++ b/src/translations/lv.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/clementine/language/lv/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "&Centrs" msgid "&Custom" msgstr "&Izvēles" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Ekstras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Palīdzība" @@ -190,7 +190,7 @@ msgstr "%Paslēpt..." msgid "&Left" msgstr "Pa &kreisi" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Mūzika" @@ -198,15 +198,15 @@ msgstr "Mūzika" msgid "&None" msgstr "&Nav" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Dziesmu liste" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Iziet" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Atkārtošanas režīms" @@ -214,7 +214,7 @@ msgstr "Atkārtošanas režīms" msgid "&Right" msgstr "&Pa labi" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Jaukšanas režīms" @@ -222,7 +222,7 @@ msgstr "Jaukšanas režīms" msgid "&Stretch columns to fit window" msgstr "&mainīt stabu lielumu" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Rīki" @@ -367,11 +367,11 @@ msgstr "" msgid "About %1" msgstr "Par %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Par Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Par Qt..." @@ -419,19 +419,19 @@ msgstr "Pievienot citu straumi..." msgid "Add directory..." msgstr "Pievienot mapi..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Pievienot datni" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Pievienot failu..." @@ -439,11 +439,11 @@ msgstr "Pievienot failu..." msgid "Add files to transcode" msgstr "Pievienot failus pārkodēšanai" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Pievienot mapi" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Pievienot mapi..." @@ -455,7 +455,7 @@ msgstr "Pievienot jaunu mapi..." msgid "Add podcast" msgstr "Pievienot podraidi" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pievienot podraidi..." @@ -531,7 +531,7 @@ msgstr "Pievienot dziesmas numura birku" msgid "Add song year tag" msgstr "Pievienot dziesmas gada birku" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Pievienot straumi..." @@ -543,7 +543,7 @@ msgstr "Pievienot Grooveshark favorītiem" msgid "Add to Grooveshark playlists" msgstr "Pievienot Grooveshark dziesmu listēm" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Pievienot citai dziesmu listei" @@ -604,12 +604,12 @@ msgstr "Pēc" msgid "After copying..." msgstr "Pēc kopēšanas..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albums" @@ -617,7 +617,7 @@ msgstr "Albums" msgid "Album (ideal loudness for all tracks)" msgstr "Albums (ideāls skaļums visiem celiņiem)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "Albumi ar vāka attēlu" msgid "Albums without covers" msgstr "Albumi bez vāka attēla" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Visi faili (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Hypnotoad krupis no Futurama!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izpildītājs" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Izpildītāja info" @@ -796,7 +796,7 @@ msgstr "Izpildītāja birkas" msgid "Artist's initial" msgstr "Izpildītājā iciāļi" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio formāts" @@ -842,7 +842,7 @@ msgstr "Vidējais attēlu izmērs" msgid "BBC Podcasts" msgstr "BBC podraides" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Sitieni minūtē" @@ -871,7 +871,7 @@ msgstr "" msgid "Balance" msgstr "Balanss" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Bloķēt" @@ -900,7 +900,7 @@ msgstr "Labākais" msgid "Biography from %1" msgstr "Biogrāfija no %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitreits" @@ -1006,7 +1006,7 @@ msgstr "" msgid "Check for new episodes" msgstr "BBC podraides" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Pārbaudīt atjauninājumus..." @@ -1056,11 +1056,11 @@ msgstr "" msgid "Clear" msgstr "Attīrīt" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Attīrīt dziesmu listi" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Spiediet, lai pārslēgtos no atlikušā uz pilno garumu" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "Krāsas" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Piezīmes" @@ -1199,11 +1199,11 @@ msgstr "Piezīmes" msgid "Complete tags automatically" msgstr "Noformēt tagus automātiski" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Noformēt tagus automātiski..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "Konfigurēju Subsonic..." msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfigurēt bibliotēku..." @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsole" @@ -1299,12 +1299,12 @@ msgstr "Konvertēt mūziku, ko ierīce nespēj atskaņot" msgid "Copy to clipboard" msgstr "Kopēt starpliktuvē" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopēt uz ierīci..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopēt uz bibliotēku..." @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nespēj izveidot GStreamer elementu \"%1\" - pārbaudiet, vai ir uzstādīti visi nepieciešami GStreamer spraudņi" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nevar atrast jaucēju priekš %1, pārbaudiet vai jums ir uzstādīti pareizi GStreamer spraudņi" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "Nevar atvērt izejas failu %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Vāka attēlu pārvaldnieks" @@ -1394,11 +1394,11 @@ msgstr "Izmantot laidenu pāreju, kad dziesmas pārslēdzas automātiski" msgid "Cross-fade when changing tracks manually" msgstr "Izmantot laidenu pāreju, kad dziesmas pārslēdz lietotājs" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Izveides datums" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Pārveides datums" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "Dzēst lejuplādētos datus" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Dzēst failus" @@ -1567,7 +1567,7 @@ msgstr "Dzēst failus" msgid "Delete from device..." msgstr "Dzēst no ierīces..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Dzēst no diska..." @@ -1592,15 +1592,16 @@ msgstr "Dzēst oriģinālos failus" msgid "Deleting files" msgstr "Dzēš failus" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Izņemt dziesmas no rindas" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Izņemt dziesmu no rindas" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Galamērķis" @@ -1624,10 +1625,14 @@ msgstr "Ierīces nosaukums" msgid "Device properties..." msgstr "Ierīces īpašības..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Ierīces" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Vai jūs domājāt" @@ -1666,8 +1671,8 @@ msgstr "" msgid "Disabled" msgstr "Atslēgts" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disks" @@ -1684,7 +1689,7 @@ msgstr "Displeja opcijas" msgid "Display the on-screen-display" msgstr "Rādīt displeju-uz-ekrāna" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Veikt pilnu bibliotēkas skenēšanu" @@ -1806,6 +1811,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamiskais režīms ieslēgts" @@ -1818,12 +1827,12 @@ msgstr "Dinamisks nejaušs mikss" msgid "Edit smart playlist..." msgstr "Rediģēt gudro dziesmu listi..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Rediģēt birku" @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "Rediģēt dziesmas informāciju" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Rediģēt dziesmas informāciju..." @@ -1937,7 +1946,7 @@ msgstr "" msgid "Entire collection" msgstr "Visa kolekcija" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalaizers" @@ -1951,7 +1960,7 @@ msgstr "Vienāds ar --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Kļūda" @@ -1971,7 +1980,7 @@ msgstr "Kļūda dzēšot dziesmas" msgid "Error downloading Spotify plugin" msgstr "Kļūda lejupielādējot Spotify spraudni" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Kļūda ielādējot %1" @@ -1981,12 +1990,12 @@ msgstr "Kļūda ielādējot %1" msgid "Error loading di.fm playlist" msgstr "Kļūda ielādējot di.fm atskaņošanas sarakstu" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Kļūda apstrādājot %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Kļūda nolasot audio CD" @@ -2064,27 +2073,27 @@ msgstr "Eksportēšana pabeigta" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "Pāreja" msgid "Fading duration" msgstr "Pārejas garums" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2162,6 +2175,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Kļūda piemeklējot vāku attēlus" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Faila tips" @@ -2170,19 +2187,19 @@ msgstr "Faila tips" msgid "File formats" msgstr "Failu formāti" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Faila nosaukums" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Faila nosaukums (bez atrašanās vietas)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Faila izmērs" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "Faila tips" msgid "Filename" msgstr "Faila nosaukums" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Faili" @@ -2312,9 +2329,10 @@ msgstr "Pamatuzstādījumi" msgid "General settings" msgstr "Pamata iestatījumi" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanrs" @@ -2346,11 +2364,11 @@ msgstr "Dodiet tam vārdu:" msgid "Go" msgstr "Aiziet" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Iet uz nākamās dziesmu listes cilni" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Iet uz iepriekšējās dziesmu listes cilni" @@ -2420,7 +2438,7 @@ msgstr "Grupēt pēc Stils/Albums" msgid "Group by Genre/Artist/Album" msgstr "Grupēt pēc Stila/Izpildītāja/Albuma" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupēšana" @@ -2575,6 +2593,10 @@ msgstr "Indeksēju %1" msgid "Information" msgstr "Informācija" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Ievietot..." @@ -2587,7 +2609,7 @@ msgstr "Uzstādīts" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internets" @@ -2627,6 +2649,10 @@ msgstr "Nepareiza sesijas atslēga" msgid "Invalid username and/or password" msgstr "Nederīgs lietotājvārds un/vai parole" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Jamendo populārākās nedēļas dziesmas" msgid "Jamendo database" msgstr "Jamendo datubāze" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Pārslēgties uz šobrīd skanošo dziesmu" @@ -2675,7 +2701,7 @@ msgstr "Darboties fonā, kad logs ir aizvērts" msgid "Keep the original files" msgstr "Atstāt oriģinālos failus" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kakēni" @@ -2699,7 +2725,7 @@ msgstr "Liels vāka attēls" msgid "Large sidebar" msgstr "Liela sānjosla" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Pēdējo reizi atskaņots" @@ -2782,12 +2808,12 @@ msgstr "Atstājiet tukšu noklusētajam. Piemēri: /dev/dsp\", \"front\", utt." msgid "Left" msgstr "Pa kreisi" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ilgums" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotēka" @@ -2795,7 +2821,7 @@ msgstr "Bibliotēka" msgid "Library advanced grouping" msgstr "Advancēta Bibliotēkas grupēšana" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Bibliotēkās skenēšanas paziņojums" @@ -2840,7 +2866,7 @@ msgstr "Ielādēt vāka attēlu no diska..." msgid "Load playlist" msgstr "Ielādēt dziesmu listi" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Ielādēt dziesmu listi..." @@ -2869,11 +2895,11 @@ msgstr "Ielādē dziesmas" msgid "Loading stream" msgstr "Ielādē straumi" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Ielādē dziesmas" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Ielādē dziesmas info" @@ -2892,10 +2918,10 @@ msgstr "Ielādē failus/adreses, aizstājot pašreizējo dziesmu listi" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Pieslēgties" @@ -2907,7 +2933,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "Ilga termiņa paredzēšanas profils (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Patīk" @@ -2970,7 +2996,7 @@ msgstr "Magnatude lejupielāde pabeigta" msgid "Main profile (MAIN)" msgstr "Galvenais profils (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3053,7 +3079,7 @@ msgstr "Mono atskaņošana" msgid "Months" msgstr "Mēneši" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Noskaņojums" @@ -3083,7 +3109,7 @@ msgstr "Montēšanas punkti" msgid "Move down" msgstr "Pārvietot uz leju" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Pārvietot uz bibliotēku..." @@ -3092,7 +3118,7 @@ msgstr "Pārvietot uz bibliotēku..." msgid "Move up" msgstr "Pārvietot uz augšu" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3100,7 +3126,7 @@ msgstr "" msgid "Music Library" msgstr "Mūzikas bibliotēka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Klusums" @@ -3188,7 +3214,7 @@ msgstr "Nekad Nesākt atskaņot" msgid "New folder" msgstr "Jauna mape" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Jauna dziesmu liste" @@ -3212,7 +3238,7 @@ msgstr "Jaunākās dziesmas" msgid "Next" msgstr "Uz priekšu" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Nākamā" @@ -3251,7 +3277,7 @@ msgstr "Bez īsiem blokiem" msgid "None" msgstr "Nekas" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Neviena no izvēlētajām dziesmām nav piemērota kopēšanai uz ierīci" @@ -3369,7 +3395,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "Atvērt %1 pārlūkā" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Atvērt &audio CD..." @@ -3385,7 +3411,7 @@ msgstr "Atvērt OPML failu..." msgid "Open device" msgstr "Atvērt ierīci" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Atvērt datni..." @@ -3420,7 +3446,7 @@ msgstr "Optimizēts bitreitam" msgid "Optimize for quality" msgstr "Optimizēts kvalitātei" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opcijas..." @@ -3432,7 +3458,7 @@ msgstr "" msgid "Organise Files" msgstr "Organizēt Failus" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizēt failus..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Atskaņošanas opcijas" @@ -3497,7 +3523,7 @@ msgstr "Ballīte" msgid "Password" msgstr "Parole" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pauze" @@ -3510,7 +3536,7 @@ msgstr "Pauzēt atskaņošanu" msgid "Paused" msgstr "Nopauzēts" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Parasta sānjosla" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Atskaņot" @@ -3538,7 +3564,7 @@ msgstr "Atskaņot Izpildītāju vai Birku" msgid "Play artist radio..." msgstr "Atskaņot izpildītāja radio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Atskaņošanu skaits" @@ -3593,7 +3619,7 @@ msgstr "Dziesmu listes opcijas" msgid "Playlist type" msgstr "Dziesmu listes tips" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Atskaņošanas saraksti" @@ -3645,7 +3671,7 @@ msgstr "Priekšpastiprinājums" msgid "Preferences" msgstr "Uzstādījumi" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Iestatījumi..." @@ -3700,7 +3726,7 @@ msgstr "Priekšskatīt" msgid "Previous" msgstr "Iepriekšējais" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Iepriekšējā" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "Profils" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Virzība" @@ -3743,16 +3769,16 @@ msgstr "Kvalitāte" msgid "Querying device..." msgstr "Ierindoju ierīci..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Rindas pārvaldnieks" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Ierindot izvēlētās dziesmas" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Ierindot dziesmu" @@ -3764,7 +3790,7 @@ msgstr "Radio (ekvivalents skaļums visiem celiņiem)" msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Lietus" @@ -3796,7 +3822,7 @@ msgstr "Novērtēt ar 4 zvaigznēm" msgid "Rate the current song 5 stars" msgstr "Novērtēt ar 5 zvaigznēm" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Vērtējums" @@ -3854,7 +3880,7 @@ msgstr "Izņemt" msgid "Remove action" msgstr "Noņemt darbību" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3870,7 +3896,7 @@ msgstr "" msgid "Remove from favorites" msgstr "Izņemt no izlases" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Azivākt no dziesmu listes" @@ -3907,7 +3933,7 @@ msgstr "Pārdēvēt dziesmu listi" msgid "Rename playlist..." msgstr "Pārdēvēt dziesmu listi..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Pārkārtot šādā secībā..." @@ -3998,6 +4024,18 @@ msgstr "Atgriezties uz Clementine" msgid "Right" msgstr "Pa labi" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Roks" @@ -4024,7 +4062,7 @@ msgstr "Saudzīgi atvienot ierīci" msgid "Safely remove the device after copying" msgstr "Saudzīgi atvienot ierīci pēc kopēšanas" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Nolašu ātrums" @@ -4052,7 +4090,7 @@ msgstr "Salgabāt bildi" msgid "Save playlist" msgstr "Saglabāt dziesmu listi" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Saglabāt dziesmu listi..." @@ -4088,7 +4126,7 @@ msgstr "Maināms semplreita profils (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Vērtējums" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Skroblēt dziesmas, ko klausos" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "Patīt skanošo dziesmu par relatīvu attālumu" msgid "Seek the currently playing track to an absolute position" msgstr "Patīt skanošo dziesmu par absolūtu attālumu" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Iezīmēt visu" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Neiezīmēt neko" @@ -4213,7 +4251,7 @@ msgstr "Izvēlēties vizualizācijas" msgid "Select visualizations..." msgstr "Izvēlēties vizualizācijas..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "" msgid "Service offline" msgstr "Serviss atslēgts" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Uzstādīt %1 uz \"%2\"..." @@ -4242,7 +4280,7 @@ msgstr "Uzstādīt %1 uz \"%2\"..." msgid "Set the volume to percent" msgstr "Uzstādīt skaļumu uz procentiem" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Saglabāt vērtību izvēlētajām dziesmām..." @@ -4305,7 +4343,7 @@ msgstr "Rādīt skaistu paziņojumu logu" msgid "Show above status bar" msgstr "Rādīt virs statusa joslas" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Rādīt visas dziesmas" @@ -4325,12 +4363,12 @@ msgstr "Rādīt atdalītājus" msgid "Show fullsize..." msgstr "Radīt pa visu ekrānu..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Rādīt failu pārlūkā..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "Rādīt pie dažādiem izpildītājiem" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Rādīt tikai dublikātus" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Rādīt tikai bez birkām" @@ -4386,7 +4424,7 @@ msgstr "" msgid "Shuffle all" msgstr "Jaukt visu" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Jaukt dziesmu listi" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Izlaist atpakaļejot dziesmu listē" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Izlaista" @@ -4462,7 +4500,7 @@ msgstr "Vieglais roks" msgid "Song Information" msgstr "Dziesmas informācija" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Dziesmas info" @@ -4494,7 +4532,7 @@ msgstr "Kārtot pēc" msgid "Sorting" msgstr "Kārtošana" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Avots" @@ -4530,6 +4568,10 @@ msgstr "Standarts" msgid "Starred" msgstr "Novērtēts ar zvaigzni" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Sākt pašreiz atskaņoto dziesmu listi" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Palaiž %1" @@ -4558,7 +4600,7 @@ msgstr "Palaiž..." msgid "Stations" msgstr "Stacijas" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Apturēt" @@ -4567,7 +4609,7 @@ msgstr "Apturēt" msgid "Stop after" msgstr "Apturēt pēc" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Apturēt pēc šīs dziesmas" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "Šie faili tiks dzēsti no ierīces. Vai jūs tiešām vēlaties turpināt?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "Šī straume ir pieejama tikai maksas lietotājiem" msgid "This type of device is not supported: %1" msgstr "Šī tipa ierīce netiek atbalstīta: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nosaukums" @@ -4872,11 +4915,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Ieslēgt pilnu ekrānu" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Ieslēgt rindas statusu" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Ieslēgt skroblēšanu" @@ -4908,12 +4951,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Dziesma" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Kodēt Mūziku" @@ -5011,7 +5055,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Atjaunot mainītās bibliotēkas mapes" @@ -5166,7 +5210,7 @@ msgstr "Skats" msgid "Visualization mode" msgstr "Vizualizāciju režīms" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizācijas" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Vai jūs vēlaties palaist pilnu skenēšanu?" @@ -5306,10 +5350,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Gads" diff --git a/src/translations/mk_MK.po b/src/translations/mk_MK.po index a627cddd8..281f486d0 100644 --- a/src/translations/mk_MK.po +++ b/src/translations/mk_MK.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Macedonian (Macedonia) (http://www.transifex.com/projects/p/clementine/language/mk_MK/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "%Центрирај" msgid "&Custom" msgstr "&Прилагодено" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Помош" @@ -188,7 +188,7 @@ msgstr "&Сокриј..." msgid "&Left" msgstr "&Лево" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -196,15 +196,15 @@ msgstr "" msgid "&None" msgstr "&Без" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Излези" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -212,7 +212,7 @@ msgstr "" msgid "&Right" msgstr "&Десно" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -220,7 +220,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "&Истегни ги колоните за да го пополнат прозорецот" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Алатки" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "Околу %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "За Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "За Qt..." @@ -417,19 +417,19 @@ msgstr "Додади уште еден извор..." msgid "Add directory..." msgstr "Додади директориум..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Додади датотека..." @@ -437,11 +437,11 @@ msgstr "Додади датотека..." msgid "Add files to transcode" msgstr "Додади датотеки за транскодирање" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Додади папка" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Додади папка..." @@ -453,7 +453,7 @@ msgstr "Додади нова папка..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -529,7 +529,7 @@ msgstr "Додади поле за песна" msgid "Add song year tag" msgstr "Додади поле за песна на годината" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Додади извор..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Додади на друга плејлиста" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "После копирањето..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Албум" @@ -615,7 +615,7 @@ msgstr "Албум" msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална гласност за сите песни)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Албуми со насловни слики" msgid "Albums without covers" msgstr "Албуми без насловни слики" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Сите Датотеки (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Слава му на Хипножабецот!" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -794,7 +794,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -898,7 +898,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1197,11 +1197,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1392,11 +1392,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "" @@ -1404,63 +1404,63 @@ msgstr "" msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1565,7 +1565,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1590,15 +1590,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1622,10 +1623,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1682,7 +1687,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1969,7 +1978,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1979,12 +1988,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2109,6 +2118,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2344,11 +2362,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2418,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2625,6 +2647,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2697,7 +2723,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2780,12 +2806,12 @@ msgstr "" msgid "Left" msgstr "Лево" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2793,7 +2819,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2867,11 +2893,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2890,10 +2916,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2968,7 +2994,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3090,7 +3116,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3098,7 +3124,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3210,7 +3236,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3495,7 +3521,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3508,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3536,7 +3562,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3591,7 +3617,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3698,7 +3724,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3741,16 +3767,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3852,7 +3878,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3905,7 +3931,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "Десно" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4022,7 +4060,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4050,7 +4088,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4211,7 +4249,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4240,7 +4278,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4303,7 +4341,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4323,12 +4361,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4424,7 +4462,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4460,7 +4498,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4565,7 +4607,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/mr.po b/src/translations/mr.po index f5a73d445..bc6841e73 100644 --- a/src/translations/mr.po +++ b/src/translations/mr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Marathi (http://www.transifex.com/projects/p/clementine/language/mr/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "&लपवा...." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/ms.po b/src/translations/ms.po index 960362b03..9766fe1f7 100644 --- a/src/translations/ms.po +++ b/src/translations/ms.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Malay (http://www.transifex.com/projects/p/clementine/language/ms/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "&Tengah" msgid "&Custom" msgstr "&" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Ekstra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Bantuan" @@ -188,7 +188,7 @@ msgstr "&Sembunyikan..." msgid "&Left" msgstr "&Kiri" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Muzik" @@ -196,15 +196,15 @@ msgstr "Muzik" msgid "&None" msgstr "&Tiada" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Senarai main" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Keluar" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Mod ulang" @@ -212,7 +212,7 @@ msgstr "Mod ulang" msgid "&Right" msgstr "&Kanan" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mod kocok" @@ -220,7 +220,7 @@ msgstr "Mod kocok" msgid "&Stretch columns to fit window" msgstr "&Regangkan kolum-kolum untuk dimuat mengikut tetingkap" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Alatan" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "Perihal %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Perihal Clementine" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Perihal Qt..." @@ -417,19 +417,19 @@ msgstr "Tambah strim lain..." msgid "Add directory..." msgstr "Tambah direktori..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Tambah fail..." @@ -437,11 +437,11 @@ msgstr "Tambah fail..." msgid "Add files to transcode" msgstr "Tambah fail-fail untuk transkod" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Tambah folder" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Tambah folder..." @@ -453,7 +453,7 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -529,7 +529,7 @@ msgstr "Tambah tag trek lagu" msgid "Add song year tag" msgstr "Tambah tag tahun lagu" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Tambah stream..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Tambahkan ke senarai main lain" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "Selepas menyalin..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -615,7 +615,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kelantangan ideal untuk semua trek)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Album dengan kulit muka" msgid "Albums without covers" msgstr "Album tanpa kulit muka" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Semua Fail (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Hidup Hypnotoad!" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artis" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info artis" @@ -794,7 +794,7 @@ msgstr "Tag-tag artis" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format audio" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Larang" @@ -898,7 +898,7 @@ msgstr "Terbaik" msgid "Biography from %1" msgstr "Biografi dari %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Kadar bit" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Periksa kemaskini..." @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "Kosong" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Kosongkan senarai main" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komen" @@ -1197,11 +1197,11 @@ msgstr "Komen" msgid "Complete tags automatically" msgstr "Lengkapkan tag-tag secara automatik" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Lengkapkan tag-tag secara automatik..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "Tukar mana-mana muzik yang tidak boleh dimainkan oleh peranti" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Salin ke peranti..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Salin ke pustaka..." @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Pengurus Kulit Album" @@ -1392,11 +1392,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Tarikh dicipta" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Tarikg diubahsuai" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Padamkan fail-fail" @@ -1565,7 +1565,7 @@ msgstr "Padamkan fail-fail" msgid "Delete from device..." msgstr "Padamkan dari peranti..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Padam dari cakera..." @@ -1590,15 +1590,16 @@ msgstr "Padamkan fail-fail asal" msgid "Deleting files" msgstr "Memadam fail-fail" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinasi" @@ -1622,10 +1623,14 @@ msgstr "Nama peranti" msgid "Device properties..." msgstr "Ciri-ciri peranti..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Peranti-peranti" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Adakah anda maksudkan" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "Dilumpuhkan" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Cakera" @@ -1682,7 +1687,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Lakukan imbas semula pustaka penuh" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "Edit senarai main pintar..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Edit tag..." @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "Edit informasi trek" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Edit informasi trek..." @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "Kesemua koleksi" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Ralat" @@ -1969,7 +1978,7 @@ msgstr "Ralat memadam lagu-lagu" msgid "Error downloading Spotify plugin" msgstr "Ralat memuat turun plugin Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Ralat memuat %1" @@ -1979,12 +1988,12 @@ msgstr "Ralat memuat %1" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Ralat memproses %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2109,6 +2118,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "Format-format fail" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nama fail" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Saiz fail" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "Jenis fail" msgid "Filename" msgstr "Namafail" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fail-fail" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2344,11 +2362,11 @@ msgstr "Berikan ia nama" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Pergi ke tab senarai main berikutnya" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Pergi ke tab senarai main sebelumnya" @@ -2418,7 +2436,7 @@ msgstr "Kumpulkan mengikut Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Kumpulkan mengikut Genre/Artis/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "Informasi" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "Terpasang" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2625,6 +2647,10 @@ msgstr "Kunci sessi tidak sah" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "Pangkalan data Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "Kekalkan fail-fail asal" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2697,7 +2723,7 @@ msgstr "Kulim album besar" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Terakhir dimainkan" @@ -2780,12 +2806,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Panjang" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Pustaka" @@ -2793,7 +2819,7 @@ msgstr "Pustaka" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Notis imbas semula pustaka" @@ -2838,7 +2864,7 @@ msgstr "Muatkan kulit album dari cakera..." msgid "Load playlist" msgstr "Muatkan senarai main" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Muatkan senarai main..." @@ -2867,11 +2893,11 @@ msgstr "Memuat lagu-lagu" msgid "Loading stream" msgstr "Memuat strim" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Memuat trek-trek" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Memuat info trek-trek" @@ -2890,10 +2916,10 @@ msgstr "Memuat fail-fail/URL, menggantikan senarai main semasa" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Log masuk" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Suka" @@ -2968,7 +2994,7 @@ msgstr "Muat turun Magnatune selesai" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "Bulan" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "Alih ke bawah" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Alih ke pustaka..." @@ -3090,7 +3116,7 @@ msgstr "Alih ke pustaka..." msgid "Move up" msgstr "Alih ke atas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3098,7 +3124,7 @@ msgstr "" msgid "Music Library" msgstr "Pustaka Muzik" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Senarai main baru" @@ -3210,7 +3236,7 @@ msgstr "Trek-trek terbaru" msgid "Next" msgstr "Seterusnya" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Trek seterusnya" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Tiada satupun lagu-lagu yang dipilih sesuai untuk disalin ke peranti" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "Buka peranti" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opsyen..." @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "Aturkan Fail-fail" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3495,7 +3521,7 @@ msgstr "" msgid "Password" msgstr "Kata laluan" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3508,7 +3534,7 @@ msgstr "Hentikan sebentar mainbalik" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Mainkan" @@ -3536,7 +3562,7 @@ msgstr "Mainkan Artis atau Tag" msgid "Play artist radio..." msgstr "Mainkan radio artis..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Bilangan main" @@ -3591,7 +3617,7 @@ msgstr "Opsyen-opsyen senarai main" msgid "Playlist type" msgstr "Jenis senarai main" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3698,7 +3724,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Trek sebelumnya" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "Profail" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3741,16 +3767,16 @@ msgstr "Kualiti" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "Memberi kadar populariti lagu semasa 4 bintang" msgid "Rate the current song 5 stars" msgstr "Memberi kadar populariti lagu semasa 5 bintang" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Kadar populariti" @@ -3852,7 +3878,7 @@ msgstr "Buang" msgid "Remove action" msgstr "Buangkan tindakan" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Buangkan dari senarai main" @@ -3905,7 +3931,7 @@ msgstr "Namakan semula senarai main" msgid "Rename playlist..." msgstr "Namakan semula senarai main..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Nomborkan semula trek-trek mengikut tertib ini..." @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4022,7 +4060,7 @@ msgstr "Buangkan peranti dengan selamat" msgid "Safely remove the device after copying" msgstr "Buangkan peranti dengan selamat selepas menyalin" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4050,7 +4088,7 @@ msgstr "Simpankan imej" msgid "Save playlist" msgstr "Simpankan senarai main" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Simpankan senarai main..." @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pilih semua" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4211,7 +4249,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "Service di luar talian" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4240,7 +4278,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "Tetapkan kadar bunyi ke peratus" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4303,7 +4341,7 @@ msgstr "Tunjukkan OSD yang menarik" msgid "Show above status bar" msgstr "Tunjukkan di atas bar status" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Tunjukkan semua lagu" @@ -4323,12 +4361,12 @@ msgstr "Tunjukkan pembahagi" msgid "Show fullsize..." msgstr "Tunjukkan saiz penuh..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Tunjukkan dalam pelayar fail" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Tunjukkan hanya yang tidak ditag" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "Kocokkan semua" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Kocokkan senarai main" @@ -4424,7 +4462,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Bilangan langkau" @@ -4460,7 +4498,7 @@ msgstr "" msgid "Song Information" msgstr "Informasi lagu" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info lagu" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "Piawai" msgid "Starred" msgstr "Disukai" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Henti" @@ -4565,7 +4607,7 @@ msgstr "Henti" msgid "Stop after" msgstr "Henti selepas" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Henti selepas trek ini" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "Fail-fail ini akan dipadam dari peranti, adakah anda pasti untuk meneruskan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "Strim ini untun pelanggan berbayar sahaja" msgid "This type of device is not supported: %1" msgstr "Peranti jenis ini tidak disokong: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tajuk" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "Paparkan" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Inginkah anda menjalankan imbas semula penuh sekarang?" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Tahun" diff --git a/src/translations/my.po b/src/translations/my.po index 9a3a8a37a..b2b25b9fa 100644 --- a/src/translations/my.po +++ b/src/translations/my.po @@ -3,11 +3,11 @@ # This file is distributed under the same license as the Clementine package. # # Translators: -# Yhal Htet Aung , 2013 +# Yhal Htet Aung , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Burmese (http://www.transifex.com/projects/p/clementine/language/my/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "အလယ်(&C)" msgid "&Custom" msgstr "စိတ်ကြိုက်(&C)" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "အပိုများ(&E)" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "အကူအညီ(&H)" @@ -187,7 +187,7 @@ msgstr "ဖုံးကွယ်(&H)... " msgid "&Left" msgstr "ဘယ်(&L)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "ဂီတ(&M)" @@ -195,15 +195,15 @@ msgstr "ဂီတ(&M)" msgid "&None" msgstr "တစ်ခုမျှ(&N)" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "သီချင်းစာရင်း(&P)" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "ထွက်(&Q)" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "စနစ်ပြန်ဆို(&R)" @@ -211,7 +211,7 @@ msgstr "စနစ်ပြန်ဆို(&R)" msgid "&Right" msgstr "ညာ(&R)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "ကုလားဖန်ထိုးစနစ်(&S)" @@ -219,7 +219,7 @@ msgstr "ကုလားဖန်ထိုးစနစ်(&S)" msgid "&Stretch columns to fit window" msgstr "ဝင်းဒိုးနဲ့အံကိုက်ကော်လံများကိုဆွဲဆန့်(&S)" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "ကိရိယာများ(&T)" @@ -364,11 +364,11 @@ msgstr "ဖျက်သိမ်း" msgid "About %1" msgstr "ခန့် %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "ကလီမန်တိုင်းအကြောင်း" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "ကျူတီအကြောင်း..." @@ -416,19 +416,19 @@ msgstr "သီချင်းစီးကြောင်းနောက်တစ msgid "Add directory..." msgstr "ဖိုင်လမ်းညွှန်ထည့်..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "ဖိုင်ထည့်" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "ဖိုင်များကိုပံုစံပြောင်းလဲသူသို့ထည့်ပါ" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "ဖိုင်(များ)ကိုပံုစံပြောင်းလဲသူသို့ထည့်ပါ" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "ဖိုင်ထည့်..." @@ -436,11 +436,11 @@ msgstr "ဖိုင်ထည့်..." msgid "Add files to transcode" msgstr "ဖိုင်များကိုပံုစံပြောင်းလဲရန်ထည့်ပါ" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "ဖိုင်တွဲထည့်" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "ဖိုင်တွဲထည့်..." @@ -452,7 +452,7 @@ msgstr "ဖိုင်တွဲအသစ်ထည့်..." msgid "Add podcast" msgstr "ပို့စ်ကဒ်ထည့်" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "ပို့စ်ကဒ်ထည့်..." @@ -528,7 +528,7 @@ msgstr "သီချင်းတေးသံလမ်းကြောအမည် msgid "Add song year tag" msgstr "သီချင်းနှစ်အမည်ထည့်" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "သီချင်းစီးကြောင်းထည့်..." @@ -540,7 +540,7 @@ msgstr "ဂရုရှက်အနှစ်သက်ဆုံးများသ msgid "Add to Grooveshark playlists" msgstr "ဂရုရှက်သီချင်းစာရင်းများသို့ထည့်" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "သီချင်းစာရင်းနောက်တစ်ခုသို့ထည့်" @@ -601,12 +601,12 @@ msgstr "ပြီးနောက်" msgid "After copying..." msgstr "ကူးယူပြီးနောက်..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "အယ်လဘမ်" @@ -614,7 +614,7 @@ msgstr "အယ်လဘမ်" msgid "Album (ideal loudness for all tracks)" msgstr "အယ်လဘမ် (တေးသံလမ်းကြောများအားလံုးအတွက်အကောင်းဆုံးအသံကျယ်ကျယ်)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "အဖုံးများနဲ့အယ်လဘမ်များ" msgid "Albums without covers" msgstr "အဖုံးများနဲ့အယ်လဘမ်များ" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "ဖိုင်များအားလံုး(*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "အံ့မခန်းဖွယ်အားလံုးကိုဟိုက်ဖ်နိုဖားသို့!" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "သီချင်းတိုက်သီချင်းများအားလံုးအတွက်သီချင်းကိန်းဂဏန်းအချက်အလက်များကိုသီချင်းဖိုင်အဖြစ်ရေးလိုပါသလား?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "အနုပညာရှင်" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "အနုပညာရှင်အချက်အလက်" @@ -793,7 +793,7 @@ msgstr "အနုပညာရှင်အမည်များ" msgid "Artist's initial" msgstr "အနုပညာရှင်အမည်၏အစ" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "အသံပုံစံ" @@ -839,7 +839,7 @@ msgstr "ပျမ်းမျှပုံအရွယ်အစား" msgid "BBC Podcasts" msgstr "ဘီဘီစီပို့စ်ကဒ်များ" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ဘီပီအမ်" @@ -868,7 +868,7 @@ msgstr "အချက်အလက်အစုအရန်မှတ်သိမ် msgid "Balance" msgstr "ချိန်ညှိချက်" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "တားမြစ်" @@ -897,7 +897,7 @@ msgstr "အကောင်းဆုံး" msgid "Biography from %1" msgstr "%1 မှအတ္ထုပ္ပတ္တိ" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ဘစ်နှုန်း" @@ -1003,7 +1003,7 @@ msgstr "ပြန်ဖွင့်လိုလားချက်များပ msgid "Check for new episodes" msgstr "တွဲအသစ်များစစ်ဆေးခြင်း" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "မွမ်းမံများစစ်ဆေးခြင်း..." @@ -1053,11 +1053,11 @@ msgstr "ရှင်းထုတ်ဖြစ်" msgid "Clear" msgstr "ဖယ်ထုတ်" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "သီချင်းစာရင်းဖယ်ထုတ်" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "မှတ်သားသိမ်းဆည်းရန်ယခုသီ msgid "Click to toggle between remaining time and total time" msgstr "လက်ကျန်အချိန်နှင့်စုစုပေါင်းအချိန်အကြားဖွင့်ပိတ်လုပ်ရန်ကလစ်နှိပ်" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "အရောင်များ" msgid "Comma separated list of class:level, level is 0-3" msgstr "အမျိုးအစားစာရင်းခွဲခြားရန်ပုဒ်ရပ်: အမျိုးအစား, အမျိုးအစားက ၀-၃" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "ထင်မြင်ချက်" @@ -1196,11 +1196,11 @@ msgstr "ထင်မြင်ချက်" msgid "Complete tags automatically" msgstr "အမည်များအလိုအလျောက်ဖြည့်" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "အမည်များအလိုအလျောက်ဖြည့်..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "ဆပ်ဆိုးနစ်ပုံစံပြင်..." msgid "Configure global search..." msgstr "အနှံ့ရှာဖွေပုံစံပြင်..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "သီချင်းတိုက်ပုံစံပြင်..." @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "ဆက်သွယ်ချိန်ကုန်ဆံုး၊ ဆာဗာယူအာအယ်ပြန်စစ်ဆေးပါ။ ဥပမာ: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "ခလုတ်ခုံ" @@ -1296,12 +1296,12 @@ msgstr "ယခုပစ္စည်းမဖွင့်နိုင်သော msgid "Copy to clipboard" msgstr "အောက်ခံကတ်ပြားသို့ကူးယူ" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "ပစ္စည်းသို့ကူးယူ" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "သီချင်းတိုက်သို့ကူးယူ..." @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "ဂျီသီချင်းစီးကြောင်းအစိတ်အပိုင်းမဖန်တီးနိင် \"%1\" - လိုအပ်သောဂျီသီချင်းစီးကြောင်းဖြည့်စွက်ပရိုဂရမ်များအားလံုးသွင်းပြီးပါစေ" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 အတွက်မြုစာမရှာဖွေနိင်၊ ဂျီသီချင်းစီးကြောင်းလိုအပ်သောဖြည့်စွက်ပရိုဂရမ်များသွင်းပြီးမပြီးစစ်ဆေး" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "ပေးပို့ဖိုင်ဖွင့်မရ %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "အဖုံးမန်နေဂျာ" @@ -1391,11 +1391,11 @@ msgstr "တေးသံလမ်းကြောများအလိုအလျ msgid "Cross-fade when changing tracks manually" msgstr "တေးသံလမ်းကြောများလက်အားသံုးပြောင်းလဲသွားသောအခါအရောင်မှိန်ဖြတ်သန်း" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "ကွန်+အော်+ဗီ" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "ကွန်+ဘီ" @@ -1403,63 +1403,63 @@ msgstr "ကွန်+ဘီ" msgid "Ctrl+Down" msgstr "ကွန်+အောက်" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "ကွန်+အီး" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "ကွန်+အိပ်ရ့်ှ" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "ကွန်+ဂျေ" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "ကွန်+ကေ" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "ကွန်+အယ်လ်" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "ကွန်+အမ်" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "ကွန်+အန်" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "ကွန်+အို" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "ကွန်+ပီ" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "ကွန်+ကျူ" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "ကွန်+အက်စ်" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "ကွန်+ရှစ်ပ်+အေ" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "ကွန်+ရှစ်ပ်+အို" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "ကွန်+တီ" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "အချက်အလက်အစုပျက်ဆီးနေမှုတွေ့ရှိ။ https://code.google.com/p/clementine-player/wiki/DatabaseCorruption အချက်အလက်အစုမည်သို့ပြန်ယူရန်ဤတွင်ဖတ်ရှု" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "ရက်စွဲဖန်တီးပြီး" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "ရက်စွဲမွမ်းမံပြီး" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "ကူးဆွဲပြီးအချက်အလက်ပယ်ဖျက်" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "ဖိုင်များပယ်ဖျက်" @@ -1564,7 +1564,7 @@ msgstr "ဖိုင်များပယ်ဖျက်" msgid "Delete from device..." msgstr "ပစ္စည်းမှပယ်ဖျက်..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "ဓာတ်ပြားမှပယ်ဖျက်..." @@ -1589,15 +1589,16 @@ msgstr "မူရင်းဖိုင်များပယ်ဖျက်" msgid "Deleting files" msgstr "ဖိုင်များပယ်ဖျက်နေ" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "ရွေးချယ်တေးသံလမ်းကြောများမစီတန်း" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "တေးသံလမ်းကြောမစီတန်း" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "သွားမည့်နေရာ" @@ -1621,10 +1622,14 @@ msgstr "ပစ္စည်းနာမည်" msgid "Device properties..." msgstr "ပစ္စည်းဂုဏ်သတ္တိများ..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "ပစ္စည်းများ" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "သင်ဆိုလိုခဲ့သလား" @@ -1663,8 +1668,8 @@ msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းတို msgid "Disabled" msgstr "မလုပ်ဆောင်စေ" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ချပ်ပြားဝိုင်း" @@ -1681,7 +1686,7 @@ msgstr "ပြသခြင်းရွေးပိုင်ခွင့်မျ msgid "Display the on-screen-display" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်ပြသခြင်း" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "သီချင်းတိုက်အပြည့်ပြန်လည်ဖတ်ရှု" @@ -1803,6 +1808,10 @@ msgstr "တရော့ဘောက်စ့်" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "ကြာချိန်" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "စနစ်အရှင်ဖွင့်ထား" @@ -1815,12 +1824,12 @@ msgstr "ကျပန်းရောသမမွှေအရှင်" msgid "Edit smart playlist..." msgstr "ချက်ချာသီချင်းစာရင်းပြင်ဆင်..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "အမည်ပြင်ဆင် \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "အမည်ပြင်ဆင်..." @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "တေးသံလမ်းကြောအချက်အလက်ပြင်ဆင်" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "တေးသံလမ်းကြောအချက်အလက်ပြင်ဆင်..." @@ -1934,7 +1943,7 @@ msgstr "ကလီမန်တိုင်းသို့ချိတ်ဆက် msgid "Entire collection" msgstr "စုပေါင်းမှုတစ်ခုလုံး" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "အသံထိန်းညှိသူ" @@ -1948,7 +1957,7 @@ msgstr "Equivalent to --log-levels *:3တူညီ" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "အမှားပြ" @@ -1968,7 +1977,7 @@ msgstr "သီချင်းများပယ်ဖျက်မှုအမှ msgid "Error downloading Spotify plugin" msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိုဂရမ်ကူးဆွဲမှုအမှားပြ" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "ထည့်သွင်းခြင်းအမှားပြ %1" @@ -1978,12 +1987,12 @@ msgstr "ထည့်သွင်းခြင်းအမှားပြ %1" msgid "Error loading di.fm playlist" msgstr "ဒီအိုင်.အက်ဖ်အမ်သီချင်းစာရင်းထည့်သွင်းအမှားပြ" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "ဆောင်ရွက်ခြင်းအမှားပြ %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "အသံဓာတ်ပြားထည့်သွင်းနေခြင်းအမှားပြ" @@ -2061,27 +2070,27 @@ msgstr "တင်ပို့ခြင်းပြီးဆံုး" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "တင်ပို့ပြီး %1 အဖံုးများရရှိ %2 မှ (%3 ခုန်ကျော်)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "အက်ဖ်၁" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "အက်ဖ်၂" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "အက်ဖ်၅" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "အက်ဖ်၆" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "အက်ဖ်၇" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "အက်ဖ်၈" @@ -2108,6 +2117,10 @@ msgstr "အရောင်မှိန်" msgid "Fading duration" msgstr "အရောင်မှိန်ကြာချိန်" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "ဖိုင်လမ်းညွှန်များယူဆောင်ခြင်းမရ" @@ -2159,6 +2172,10 @@ msgstr "ဆပ်ဆိုးနစ်သီချင်းတိုက်ယူ msgid "Fetching cover error" msgstr "အဖုံးအမှားယူဆောင်နေ" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "ဖိုင်နောက်ဆက်တွဲ" @@ -2167,19 +2184,19 @@ msgstr "ဖိုင်နောက်ဆက်တွဲ" msgid "File formats" msgstr "ဖိုင်ပုံစံများ" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "ဖိုင်နာမည်" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "ဖိုင်နာမည် (လမ်းကြောင်းနှင့်မဟုတ်)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "ဖိုင်ပမာဏ" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "ဖိုင်အမျိုးအစား" msgid "Filename" msgstr "ဖိုင်နာမည်" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "ဖိုင်များ" @@ -2309,9 +2326,10 @@ msgstr "အထွေထွေ" msgid "General settings" msgstr "အထွေထွေချိန်ညှိချက်" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "အမျိုးအစား" @@ -2343,11 +2361,11 @@ msgstr "ဒီဟာကိုနာမည်ပေး:" msgid "Go" msgstr "သွား" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "နောက်သီချင်းစာရင်းမျက်နှာစာသို့သွား" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "ယခင်သီချင်းစာရင်းမျက်နှာစာသို့သွား" @@ -2417,7 +2435,7 @@ msgstr "အမျိုးအစား/အယ်လဘမ်အုပ်စု msgid "Group by Genre/Artist/Album" msgstr "အမျိုးအစား/အနုပညာရှင်/အယ်လဘမ်အုပ်စုအလိုက်" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "အုပ်စုအလိုက်စုခြင်း" @@ -2572,6 +2590,10 @@ msgstr "ရည်ညွှန်းခြင်း %1" msgid "Information" msgstr "အချက်အလက်" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "ထည့်သွင်း..." @@ -2584,7 +2606,7 @@ msgstr "သွင်းပြီး" msgid "Integrity check" msgstr "ခိုင်မြဲမှုစစ်ဆေး" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "အင်တာနက်" @@ -2624,6 +2646,10 @@ msgstr "စစ်ဆေးခြင်းသော့မမှန်" msgid "Invalid username and/or password" msgstr "အသင်းဝင်အမည်နှင့်/သို့စကားဝှက်မမှန်" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "ဂျမန်တို" @@ -2648,7 +2674,7 @@ msgstr "ဂျမန်တိုယခုအပတ်ထိပ်တန်းတ msgid "Jamendo database" msgstr "ဂျမန်တိုအချက်အလက်အစု" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြောသို့" @@ -2672,7 +2698,7 @@ msgstr "ဝင်းဒိုးပိတ်နေစဉ်နောက်ခံ msgid "Keep the original files" msgstr "မူရင်းဖိုင်များထိန်းထား" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "ကြောင်ပေါက်စများ" @@ -2696,7 +2722,7 @@ msgstr "အယ်လဘမ်အဖုံးကြီး" msgid "Large sidebar" msgstr "ဘေးတိုင်ကြီး" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "နောက်ဆံုးသီချင်းဖွင့်ခဲ့သမျှ" @@ -2779,12 +2805,12 @@ msgstr "မူလပံုစံအတွက်အလွတ်ထားရှိ msgid "Left" msgstr "ဘယ်" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "အလျား" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "သီချင်းတိုက်" @@ -2792,7 +2818,7 @@ msgstr "သီချင်းတိုက်" msgid "Library advanced grouping" msgstr "သီချင်းတိုက်အဆင့်မြင့်အုပ်စုဖွဲ့ခြင်း" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "သီချင်းတိုက်ပြန်လည်ဖတ်ရှုအကြောင်းကြားစာ" @@ -2837,7 +2863,7 @@ msgstr "ဓာတ်ပြားမှအဖုံးထည့်သွင်း msgid "Load playlist" msgstr "သီချင်းစာရင်းထည့်သွင်း" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "သီချင်းစာရင်းထည့်သွင်း..." @@ -2866,11 +2892,11 @@ msgstr "သီချင်းများထည့်သွင်းနေ" msgid "Loading stream" msgstr "သီချင်းစီးကြောင်းထည့်သွင်းနေ" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "တေးသံလမ်းကြောများထည့်သွင်းနေ" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "တေးသံလမ်းကြောအချက်အလက်များထည့်သွင်းနေ" @@ -2889,10 +2915,10 @@ msgstr "ဖိုင်များ/ယူအာအလ်များထည့ #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "ဖွင့်ဝင်" @@ -2904,7 +2930,7 @@ msgstr "ဖွင့်ဝင်၍မရ" msgid "Long term prediction profile (LTP)" msgstr "ကာလရှည်ခန့်မှန်းအကြောင်း (အယ်တီပီ)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "နှစ်သက်" @@ -2967,7 +2993,7 @@ msgstr "မက်နကျွန်းကူးဆွဲပြီးဆံုး msgid "Main profile (MAIN)" msgstr "အဓိကအကြောင်း(အဓိက)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "အဲဒီကဲ့သို့လုပ်" @@ -3050,7 +3076,7 @@ msgstr "မိုနိတစ်ခုတည်း" msgid "Months" msgstr "လများ" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "စိတ်နေစိတ်ထား" @@ -3080,7 +3106,7 @@ msgstr "အမှတ်များစီစဉ်" msgid "Move down" msgstr "အောက်သို့ရွှေ့" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "သီချင်းတိုက်သို့ရွှေ့..." @@ -3089,7 +3115,7 @@ msgstr "သီချင်းတိုက်သို့ရွှေ့..." msgid "Move up" msgstr "အပေါ်သို့ရွှေ့" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "ဂီတ" @@ -3097,7 +3123,7 @@ msgstr "ဂီတ" msgid "Music Library" msgstr "ဂီတတိုက်" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "အသံအုပ်" @@ -3185,7 +3211,7 @@ msgstr "သီချင်းလုံးဝစတင်မဖွင့်" msgid "New folder" msgstr "ဖိုင်တွဲအသစ်" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "သီချင်းစာရင်းအသစ်" @@ -3209,7 +3235,7 @@ msgstr "တေးသံလမ်းကြောအသစ်ဆုံးမျာ msgid "Next" msgstr "နောက်တစ်ခု" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "နောက်တေးသံလမ်းကြော" @@ -3248,7 +3274,7 @@ msgstr "ဘလောက်တိုများမရှိ" msgid "None" msgstr "ဘယ်တစ်ခုမျှ" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "ရွေးချယ်ပြီးသီချင်းများတစ်ခုမှပစ္စည်းသို့ကူးယူရန်မသင့်တော်" @@ -3366,7 +3392,7 @@ msgstr "အလင်းပိတ်မှု" msgid "Open %1 in browser" msgstr "ဘရောက်ဇာထဲတွင် %1 ဖွင့်" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "အသံဓာတ်ပြားဖွင့်(&a)..." @@ -3382,7 +3408,7 @@ msgstr "အိုပီအမ်အယ်ဖိုင်ဖွင့်..." msgid "Open device" msgstr "ပစ္စည်းဖွင့်" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "ဖိုင်ဖွင့်..." @@ -3398,7 +3424,7 @@ msgstr "သီချင်းစာရင်းအသစ်တွင်ဖွင #: songinfo/echonestbiographies.cpp:96 msgid "Open in your browser" -msgstr "" +msgstr "ဘရောက်ဇာထဲတွင်ဖွင့်" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 @@ -3417,7 +3443,7 @@ msgstr "ဘစ်နှုန်းအတွက်ဆောင်ရွက်" msgid "Optimize for quality" msgstr "အရည်အသွေးအတွက်ဆောင်ရွက်" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "ရွေးပိုင်ခွင့်များ..." @@ -3429,7 +3455,7 @@ msgstr "တေး" msgid "Organise Files" msgstr "ဖိုင်များစုစည်း" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "ဖိုင်များစုစည်း..." @@ -3453,7 +3479,7 @@ msgstr "ပေးပို့" msgid "Output device" msgstr "ပေးပို့ပစ္စည်း" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "ပေးပို့ရွေးပိုင်ခွင့်များ" @@ -3494,7 +3520,7 @@ msgstr "အဖွဲ့" msgid "Password" msgstr "စကားဝှက်" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "ရပ်တန့်" @@ -3507,7 +3533,7 @@ msgstr "ပြန်ဖွင့်ရပ်တန့်" msgid "Paused" msgstr "ရပ်တန့်ပြီး" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "တင်ဆင်သူ" @@ -3520,9 +3546,9 @@ msgstr "အစက်အပြောက်" msgid "Plain sidebar" msgstr "ဘေးတိုင်ရိုးရိုး" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "ဖွင့်" @@ -3535,7 +3561,7 @@ msgstr "အနုပညာရှင်သို့အမည်ဖွင့်" msgid "Play artist radio..." msgstr "အနုပညာရှင်ရေဒီယိုဖွင့်..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "ဖွင့်သံအရေအတွက်" @@ -3590,7 +3616,7 @@ msgstr "သီချင်းစာရင်းရွေးပိုင်ခွ msgid "Playlist type" msgstr "သီချင်းစာရင်းအမျိုးအစား" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "သီချင်းစာရင်းများ" @@ -3642,7 +3668,7 @@ msgstr "အသံချဲ့အကြို" msgid "Preferences" msgstr "လိုလားချက်များ" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "လိုလားချက်များ..." @@ -3697,7 +3723,7 @@ msgstr "ကြိုတင်ကြည့်ရှု" msgid "Previous" msgstr "ယခင်" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "ယခင်တေးသံလမ်းကြော" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "အကြောင်း" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "အခြေအနေ" @@ -3740,16 +3766,16 @@ msgstr "အရည်အသွေး" msgid "Querying device..." msgstr "ပစ္စည်းမေးမြန်းခြင်း..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "စီတန်းမန်နေဂျာ" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "ရွေးချယ်တေးသံလမ်းကြောများစီတန်း" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "တေးသံလမ်းကြောစီတန်း" @@ -3761,7 +3787,7 @@ msgstr "ရေဒီယို (တေးသံလမ်းကြောမျာ msgid "Radios" msgstr "ရေဒီယိုများ" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "မိုး" @@ -3793,7 +3819,7 @@ msgstr "လက်ရှိသီချင်း၄ကြယ်တန်ဖို msgid "Rate the current song 5 stars" msgstr "လက်ရှိသီချင်း၅ကြယ်တန်ဖိုးဖြတ်" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "အဆင့်သတ်မှတ်ချက်များ" @@ -3851,7 +3877,7 @@ msgstr "ဖယ်ရှား" msgid "Remove action" msgstr "လုပ်ဆောင်ချက်ဖယ်ရှား" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "သီချင်းစာရင်းမှပုံတူများဖယ်ရှား" @@ -3867,7 +3893,7 @@ msgstr "ငါ့ဂီတမှဖယ်ရှား" msgid "Remove from favorites" msgstr "အနှစ်သက်ဆုံးများမှဖယ်ရှား" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "သီချင်းစာရင်းမှဖယ်ရှား" @@ -3904,7 +3930,7 @@ msgstr "သီချင်းစာရင်းနာမည်ပြန်ရွ msgid "Rename playlist..." msgstr "သီချင်းစာရင်းနာမည်ပြန်ရွေး..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "တေးသံလမ်းကြောများယခုအစဉ်အလိုက်နံပါတ်ပြန်ပြောင်းပါ..." @@ -3995,6 +4021,18 @@ msgstr "ကလီမန်တိုင်းသို့ပြန်သွား msgid "Right" msgstr "ညာ" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "ရော့ခ်" @@ -4021,7 +4059,7 @@ msgstr "ပစ္စည်းလုံလုံခြုံခြုံဖယ် msgid "Safely remove the device after copying" msgstr "ကူးယူပြီးနောက်ပစ္စည်းလုံလုံခြုံခြုံဖယ်ရှား" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "နမူနာနှုန်း" @@ -4049,7 +4087,7 @@ msgstr "ပုံမှတ်သား" msgid "Save playlist" msgstr "သီချင်းစာရင်းမှတ်သား" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "သီချင်းစာရင်းမှတ်သား..." @@ -4085,7 +4123,7 @@ msgstr "သတ်မှတ်နမူနာနှုန်းအကြောင msgid "Scale size" msgstr "အတိုင်းအတာပမာဏ" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "ရမှတ်" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "နားဆင်နေကြတေးသံလမ်းကြောများလိုလျှောက်နာမည်ပေးပို့" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4118,7 +4156,7 @@ msgstr "ဆပ်ဆိုးနစ်ရှာဖွေ" #: ui/albumcoverchoicecontroller.cpp:66 msgid "Search automatically" -msgstr "" +msgstr "အလိုအလျောက်ရှာဖွေ" #: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." @@ -4178,11 +4216,11 @@ msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြ msgid "Seek the currently playing track to an absolute position" msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြောမှပကတိနေရာသို့ရှာဖွေ" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "အားလံုးရွေးချယ်" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "တစ်ခုမျှမရွေးချယ်" @@ -4210,7 +4248,7 @@ msgstr "ပုံဖော်ကြည့်ခြင်းများရွေ msgid "Select visualizations..." msgstr "ပုံဖော်ကြည့်ခြင်းများရွေးချယ်..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "ဆာဗာအသေးစိတ်အကြောင်းအရာမ msgid "Service offline" msgstr "အောဖ့်လိုင်းဝန်ဆောင်မှု" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 မှ \"%2\" ထိန်းညှိ..." @@ -4239,7 +4277,7 @@ msgstr "%1 မှ \"%2\" ထိန်းညှိ..." msgid "Set the volume to percent" msgstr "အသံပမာဏ ရာခိုင်နှုန်းခန့်ထိန်းညှိ" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "ရွေးချယ်တေးသံလမ်းကြောများအားလံုးအတွက်တန်ဖိုးထိန်းညှိ..." @@ -4302,7 +4340,7 @@ msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလ msgid "Show above status bar" msgstr "အခြေအနေပြတိုင်အပေါ်မှာပြသ" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "သီချင်းများအားလံုးပြသ" @@ -4322,12 +4360,12 @@ msgstr "ခွဲခြားမှုများပြသ" msgid "Show fullsize..." msgstr "အရွယ်အပြည့်ပြသ..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "ဖိုင်ဘရောက်ဇာထဲမှာပြသ..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "အနုပညာရှင်များအမျိုးမျို msgid "Show moodbar" msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းပြသ" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "ပုံတူများသာပြသ" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "အမည်မရှိများသာပြသ" @@ -4383,7 +4421,7 @@ msgstr "အယ်လဘမ်များကုလားဖန်ထိုး" msgid "Shuffle all" msgstr "ကုလားဖန်အားလံုးထိုး" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "သီချင်းစာရင်းကုလားဖန်ထိုး" @@ -4423,7 +4461,7 @@ msgstr "စကာဂီတ" msgid "Skip backwards in playlist" msgstr "စာရင်းရှိနောက်ပြန်များခုန်ကျော်" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "အရေအတွက်ခုန်ကျော်" @@ -4459,7 +4497,7 @@ msgstr "ပျော့ရော့ခ်ဂီတ" msgid "Song Information" msgstr "သီချင်းအချက်အလက်" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "သီချင်းအချက်အလက်" @@ -4491,7 +4529,7 @@ msgstr "သီချင်းများအားဖြင့်မျိုး msgid "Sorting" msgstr "မျိုးတူစုခြင်း" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "ရင်းမြစ်" @@ -4527,6 +4565,10 @@ msgstr "အဆင့်အတန်း" msgid "Starred" msgstr "ကြည့်ခဲ့ပြီး" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "လက်ရှိဖွင့်ဆဲသီချင်းစာရင်းစတင်" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "ရှာဖွေရလဒ်များစာရင်းများကိုဖြည့်ရန်ရှာဖွေနေရာတွင်တစ်ခုခုရိုက်ထည့်ပါ" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 စတင်နေ" @@ -4555,7 +4597,7 @@ msgstr "စတင်နေ..." msgid "Stations" msgstr "ထုတ်လွှင့်မှုဌာနများ" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "ရပ်" @@ -4564,7 +4606,7 @@ msgstr "ရပ်" msgid "Stop after" msgstr "ပြီးနောက်ရပ်" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "ဒီတေးသံလမ်းကြောပြီးနောက်ရပ်" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "ဆပ်ဆိုးနစ်ဆာဗာအစမ်းသံုးကာလပြီးဆံုး။ လိုင်စင်ကီးရယူရန်ငွေလှုပါ။ အသေးစိတ်အကြောင်းအရာများအတွက် subsonic.org သို့လည်ပတ်ပါ။" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "ပစ္စည်းမှယခုဖို်င်များအားလံုးပယ်ဖျက်မည်၊ လုပ်ဆောင်မည်လား?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "ယခုသီချင်းစီးကြောင်းသည်အ msgid "This type of device is not supported: %1" msgstr "ယခုပစ္စည်းအမျိုးအစားမလက်ခံ: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "ခေါင်းစဉ်" @@ -4869,11 +4912,11 @@ msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလ msgid "Toggle fullscreen" msgstr "ဖန်သားပြင်အပြည့်ဖွင့်ပိတ်လုပ်" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "စီတန်းအခြေအနေဖွင့်ပိတ်လုပ်" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "သီချင်းနာမည်ပေးပို့ခြင်းဖွင့်ပိတ်လုပ်" @@ -4905,12 +4948,13 @@ msgstr "ဘိုက်စုစုပေါင်းများကူးပြ msgid "Total network requests made" msgstr "ကွန်ရက်တောင်းခံချက်စုစုပေါင်းများပြုလုပ်ပြီး" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "တေးသံလမ်းကြော" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "ဂီတပံုစံပြောင်းလဲခြင်း" @@ -5008,7 +5052,7 @@ msgstr "ဂရုရှက်သီချင်းစာရင်းစစ်ဆ msgid "Update all podcasts" msgstr "ပို့စ်ကဒ်များစစ်ဆေးခြင်း" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "ပြောင်းလဲပြီးသီချင်းတိုက်ဖိုင်တွဲများမွမ်းမံ" @@ -5163,7 +5207,7 @@ msgstr "ကြည့်ရှု" msgid "Visualization mode" msgstr "ပုံဖော်ကြည့်ခြင်းစနစ်" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "ပုံဖော်ကြည့်ခြင်းများ" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "အနုပညာရှင်များအမျိုးမျိုးသို့ယခုအယ်လဘမ်မှတစ်ခြားသီချင်းများကိုရွှေ့" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "ယခုနောက်တစ်ချိန်အပြည့်ပြန်လည်ဖတ်ရှု?" @@ -5303,10 +5347,10 @@ msgstr "သီချင်းဖိုင်များထဲသို့သီ msgid "Wrong username or password." msgstr "အသင်းဝင်အမည်နှင့်/သို့စကားဝှက်မမှန်" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "နှစ်" diff --git a/src/translations/nb.po b/src/translations/nb.po index 7120c276e..c7817e94d 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/clementine/language/nb/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "Sentr&er" msgid "&Custom" msgstr "&Egendefinert" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Ekstra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Hjelp" @@ -189,7 +189,7 @@ msgstr "Skjul..." msgid "&Left" msgstr "&Venstre" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Musikk" @@ -197,15 +197,15 @@ msgstr "Musikk" msgid "&None" msgstr "&Ingen" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Spilleliste" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Avslutt" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Repeteringsmodus" @@ -213,7 +213,7 @@ msgstr "Repeteringsmodus" msgid "&Right" msgstr "&Høyre" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Stokkemodus" @@ -221,7 +221,7 @@ msgstr "&Stokkemodus" msgid "&Stretch columns to fit window" msgstr "Fyll &kolonner i vinduet" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Verktøy" @@ -366,11 +366,11 @@ msgstr "Avbryt" msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Om Qt..." @@ -418,19 +418,19 @@ msgstr "Legg til enda en strøm..." msgid "Add directory..." msgstr "Legg til katalog..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Legg til fil" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Legg fil til konvertering" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Legg fil(er) til konvertering" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Legg til fil..." @@ -438,11 +438,11 @@ msgstr "Legg til fil..." msgid "Add files to transcode" msgstr "Legg filer til i konverterer" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Legg til katalog" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Legg til katalog..." @@ -454,7 +454,7 @@ msgstr "Legg til katalog..." msgid "Add podcast" msgstr "Legg til Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Legg til Podcast..." @@ -530,7 +530,7 @@ msgstr "Legg til spornummer-tagg" msgid "Add song year tag" msgstr "Legg til årstall-tagg" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Legg til strøm..." @@ -542,7 +542,7 @@ msgstr "Legg til i Grooveshark-favoritter" msgid "Add to Grooveshark playlists" msgstr "Legg til i Grooveshark-spillelister" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Legg til en annen spilleliste" @@ -603,12 +603,12 @@ msgstr "Etter" msgid "After copying..." msgstr "Etter kopiering..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideell lydstyrke for alle spor)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "Album med cover" msgid "Albums without covers" msgstr "Album uten cover" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alle filer (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Ære være Hypnotoad!" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "Er du sikker på at du ønsker å skrive statistikken for sangene til filene, for alle sangene i biblioteket?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artist info" @@ -795,7 +795,7 @@ msgstr "Artist etiketter" msgid "Artist's initial" msgstr "Artistens initial" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Lydformat" @@ -841,7 +841,7 @@ msgstr "Gjennomsittlig bildestørrelse" msgid "BBC Podcasts" msgstr "BBC-Podcast" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -870,7 +870,7 @@ msgstr "Tar sikkerhetskopi av databasen" msgid "Balance" msgstr "Balanse" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Bannlys" @@ -899,7 +899,7 @@ msgstr "Best" msgid "Biography from %1" msgstr "Biografi fra %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -1005,7 +1005,7 @@ msgstr "Når du endrer innstillingen for mono-avspilling, vil dette bli tatt i b msgid "Check for new episodes" msgstr "Se etter nye episoder" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Sjekk for oppdateringer..." @@ -1055,11 +1055,11 @@ msgstr "Rydder" msgid "Clear" msgstr "Tøm" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Tøm spillelisten" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "Klikk her for å merke spillelisten som favoritt, så den lagres og blir msgid "Click to toggle between remaining time and total time" msgstr "Klikk for å bytte mellom gjenværende tid og total tid" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "Farger" msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separert liste av klasse:level, level er 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1198,11 +1198,11 @@ msgstr "Kommentar" msgid "Complete tags automatically" msgstr "Fullfør tags automatisk" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Fullfør tags automatisk..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "Konfigurere Subsonic.." msgid "Configure global search..." msgstr "Konfigurér globalt søk..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Sett opp bibliotek..." @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Tidsavbrudd i tilkoblingen; sjekk tjener-URL. For eksempel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsoll" @@ -1298,12 +1298,12 @@ msgstr "Konverter musikk som enheten ikke kan spille" msgid "Copy to clipboard" msgstr "Kopiér til utklippstavla" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopier til enhet..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopier til bibliotek..." @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Kunne ikke lage GStreamer element \"%1\" - sørg for at du har alle de nødvendige GStreamer programutvidelsene installert" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunne ikke finne multiplekser for %1, sjekk at du har de riktige GStreamer programutvidelsene installert" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "Kunne ikke åpne output fil %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Behandling av plateomslag" @@ -1393,11 +1393,11 @@ msgstr "Mikse overgang når spor skiftes automatisk" msgid "Cross-fade when changing tracks manually" msgstr "Mikse overgang når du skifter spor selv" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Skift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "Oppdaget feil i databasen. Vennligst les https://code.google.com/p/clementine-player/wiki/DatabaseCorruption for å finne ut hvordan du kan gjenoprette den." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Laget dato" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Endringsdato" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "Slett nedlastede data" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Slett filer" @@ -1566,7 +1566,7 @@ msgstr "Slett filer" msgid "Delete from device..." msgstr "Slett fra enhet..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Slett fra harddisk..." @@ -1591,15 +1591,16 @@ msgstr "Slett de originale filene" msgid "Deleting files" msgstr "Sletter filer" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Fjern valgte spor fra avspillingskøen" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Fjern sporet fra avspillingskøen" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinasjon" @@ -1623,10 +1624,14 @@ msgstr "Enhetsnavn" msgid "Device properties..." msgstr "Egenskaper for enhet..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Enheter" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Mente du" @@ -1665,8 +1670,8 @@ msgstr "Slå av opprettelse av stemningsstolper" msgid "Disabled" msgstr "Deaktivert" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1683,7 +1688,7 @@ msgstr "Visningsegenskaper" msgid "Display the on-screen-display" msgstr "Vis overlegg-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Sjekk hele biblioteket" @@ -1805,6 +1810,10 @@ msgstr "Dropbo" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamisk modus er på" @@ -1817,12 +1826,12 @@ msgstr "Dynamisk tilfeldig miks" msgid "Edit smart playlist..." msgstr "Rediger smart spilleliste..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Redigér taggen \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Endre merkelapp..." @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "Redigér informasjon om sporet" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Rediger informasjon om sporet..." @@ -1936,7 +1945,7 @@ msgstr "Skriv in denne IPen i Appen for å koble til Clementine." msgid "Entire collection" msgstr "Hele samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Lydbalanse" @@ -1950,7 +1959,7 @@ msgstr "Tilsvarer --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Feil" @@ -1970,7 +1979,7 @@ msgstr "Kunne ikke slette sanger" msgid "Error downloading Spotify plugin" msgstr "Kunne ikke laste ned Spotify-modul" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Kunne ikke laste inn %1" @@ -1980,12 +1989,12 @@ msgstr "Kunne ikke laste inn %1" msgid "Error loading di.fm playlist" msgstr "Kunne ikke laste ned spillelista fra di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Kunne ikke behandle %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Kunne ikke laste lyd-CD" @@ -2063,27 +2072,27 @@ msgstr "Eksport fullført" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Esportert %1 av %2 omslag (hoppet over %3)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2110,6 +2119,10 @@ msgstr "Ton inn/ut" msgid "Fading duration" msgstr "Toning-varighet" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Kunne ikke hente katalogen" @@ -2161,6 +2174,10 @@ msgstr "Henter Subsonic-bibliotek" msgid "Fetching cover error" msgstr "Kunne ikke hente albumgrafikk" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Filetternavn" @@ -2169,19 +2186,19 @@ msgstr "Filetternavn" msgid "File formats" msgstr "Filformat" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnavn" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Filnavn (uten sti)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstørrelse" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "Filtype" msgid "Filename" msgstr "Filnavn" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Filer" @@ -2311,9 +2328,10 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle innstillinger" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Sjanger" @@ -2345,11 +2363,11 @@ msgstr "Gi den et navn:" msgid "Go" msgstr "Gå" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Gå til neste flik på spillelista" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Gå til forrige flik på spillelista" @@ -2419,7 +2437,7 @@ msgstr "Gruppér etter Sjanger/Album" msgid "Group by Genre/Artist/Album" msgstr "Gruppér etter Sjanger/Artist/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering" @@ -2574,6 +2592,10 @@ msgstr "Indekserer %1" msgid "Information" msgstr "Informasjon" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Sett inn..." @@ -2586,7 +2608,7 @@ msgstr "Installert" msgid "Integrity check" msgstr "Integritetskontrol" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internett" @@ -2626,6 +2648,10 @@ msgstr "Ugyldig sesjonsnøkkel" msgid "Invalid username and/or password" msgstr "Ugyldig brukernavn og/eller passord" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2650,7 +2676,7 @@ msgstr "Ukas favoritter på Jamendo" msgid "Jamendo database" msgstr "Jamendo-database" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Gå til sporet som spilles av nå" @@ -2674,7 +2700,7 @@ msgstr "Fortsett i bakgrunnen selv om du lukker vinduet" msgid "Keep the original files" msgstr "Belhold originalfiler" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kattunger" @@ -2698,7 +2724,7 @@ msgstr "Stort albumbilde" msgid "Large sidebar" msgstr "Stort sidefelt" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Sist spilt" @@ -2781,12 +2807,12 @@ msgstr "La stå tom for standardvalg. Eksempler: \"/dev/dsp\", \"front\", osv." msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengde" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotek" @@ -2794,7 +2820,7 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avansert biblioteksgruppering" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Melding om gjennomsyn av biblioteket" @@ -2839,7 +2865,7 @@ msgstr "Hent albumgrafikk fra disk..." msgid "Load playlist" msgstr "Åpne spilleliste" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Åpne spilleliste..." @@ -2868,11 +2894,11 @@ msgstr "Åpner sanger" msgid "Loading stream" msgstr "Lader lydstrøm" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Åpner spor" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Henter informasjon om spor" @@ -2891,10 +2917,10 @@ msgstr "Åpne filer/URLer; erstatt gjeldende spilleliste" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Innlogging" @@ -2906,7 +2932,7 @@ msgstr "Login feilet" msgid "Long term prediction profile (LTP)" msgstr "Long term prediction-profil (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Elsk" @@ -2969,7 +2995,7 @@ msgstr "Magnatune-nedlasting fullført" msgid "Main profile (MAIN)" msgstr "Hovedprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Kjør på!" @@ -3052,7 +3078,7 @@ msgstr "Spill av i mono" msgid "Months" msgstr "Måneder" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Stemning" @@ -3082,7 +3108,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flytt ned" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Flytt til bibliotek..." @@ -3091,7 +3117,7 @@ msgstr "Flytt til bibliotek..." msgid "Move up" msgstr "Flytt opp" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musikk" @@ -3099,7 +3125,7 @@ msgstr "Musikk" msgid "Music Library" msgstr "Musikkbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Demp" @@ -3187,7 +3213,7 @@ msgstr "Begynn aldri avspilling" msgid "New folder" msgstr "Ny mappe" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Ny spilleliste" @@ -3211,7 +3237,7 @@ msgstr "Nyeste spor" msgid "Next" msgstr "Neste" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Neste spor" @@ -3250,7 +3276,7 @@ msgstr "Ikke korte blokker" msgid "None" msgstr "Ingen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Kunne ikke kopiere noen av de valgte sangene til enheten" @@ -3368,7 +3394,7 @@ msgstr "Dekkevne" msgid "Open %1 in browser" msgstr "Åpne %1 i nettleser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Åpne lyd-&CD" @@ -3384,7 +3410,7 @@ msgstr "Åpne OPML-fil..." msgid "Open device" msgstr "Åpne enhet" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Åpne fil..." @@ -3419,7 +3445,7 @@ msgstr "Optimalisert for bitrate" msgid "Optimize for quality" msgstr "Optimalisert for kvalitet" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Innstillinger..." @@ -3431,7 +3457,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organisér filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organisér filer..." @@ -3455,7 +3481,7 @@ msgstr "Ut" msgid "Output device" msgstr "Ut-enhet" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Utputt-innstillinger" @@ -3496,7 +3522,7 @@ msgstr "Fest" msgid "Password" msgstr "Passord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pause" @@ -3509,7 +3535,7 @@ msgstr "Pause" msgid "Paused" msgstr "Pauset" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Utøver" @@ -3522,9 +3548,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Enkelt sidefelt" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Spill" @@ -3537,7 +3563,7 @@ msgstr "Spill artist eller merkelapp" msgid "Play artist radio..." msgstr "Spill artistradio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antall ganger spilt av" @@ -3592,7 +3618,7 @@ msgstr "Innstillinger for spilleliste" msgid "Playlist type" msgstr "Type spilleliste" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Spillelister" @@ -3644,7 +3670,7 @@ msgstr "Lydforsterkning" msgid "Preferences" msgstr "Innstillinger" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Innstillinger …" @@ -3699,7 +3725,7 @@ msgstr "Forhåndsvisning" msgid "Previous" msgstr "Forrige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Forrige spor" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fremgang" @@ -3742,16 +3768,16 @@ msgstr "Kvalitet" msgid "Querying device..." msgstr "Spør enhet..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Købehandler" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Legg valgte spor i kø" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Legg spor i kø" @@ -3763,7 +3789,7 @@ msgstr "Radio (lik loudness for alle spor)" msgid "Radios" msgstr "Radioer" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Regn" @@ -3795,7 +3821,7 @@ msgstr "Gi 4 stjerner til sangen" msgid "Rate the current song 5 stars" msgstr "Gi 5 stjerner til sangen" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Poenggiving" @@ -3853,7 +3879,7 @@ msgstr "Fjern" msgid "Remove action" msgstr "Fjern handling" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Fjern duplikater fra spillelisten" @@ -3869,7 +3895,7 @@ msgstr "Fjern fra Musikk" msgid "Remove from favorites" msgstr "Fjern fra favoritter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Fjern fra spillelisten" @@ -3906,7 +3932,7 @@ msgstr "Gi nytt navn til spillelista" msgid "Rename playlist..." msgstr "Gi nytt navn til spillelista..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renummerér sporene i denne rekkefølgen..." @@ -3997,6 +4023,18 @@ msgstr "Returnér til Clementine" msgid "Right" msgstr "Høyre" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4023,7 +4061,7 @@ msgstr "Trygg fjerning av enhet" msgid "Safely remove the device after copying" msgstr "Kjør trygg fjerning av enhet etter kopiering" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsrate" @@ -4051,7 +4089,7 @@ msgstr "Lagre bilde" msgid "Save playlist" msgstr "Lagre spillelista" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Lagre spillelista..." @@ -4087,7 +4125,7 @@ msgstr "Skalerbar samplingrate-profil (SSR)" msgid "Scale size" msgstr "Skalér til størrelse" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Karakte" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Fortell last.fm om (\"scrobble\") sangene jeg har lyttet til" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "Gå frem-/bakover en viss tidsperiode i sporet" msgid "Seek the currently playing track to an absolute position" msgstr "Gå til et bestemt tidspunkt i sporet" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Velg alle" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Velg ingen" @@ -4212,7 +4250,7 @@ msgstr "Velg visualiseringer" msgid "Select visualizations..." msgstr "Velg visualiseringer..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4232,7 +4270,7 @@ msgstr "Tjenerdetaljer" msgid "Service offline" msgstr "Tjenesten er utilgjengelig" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Sett %1 to \"%2\"..." @@ -4241,7 +4279,7 @@ msgstr "Sett %1 to \"%2\"..." msgid "Set the volume to percent" msgstr "Sett lydstyrken til prosent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Sett verdi for alle de valgte sporene..." @@ -4304,7 +4342,7 @@ msgstr "Vis en Clementine-spesifikk skrivebordsmelding" msgid "Show above status bar" msgstr "Vis over statuslinja" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Vis alle sanger" @@ -4324,12 +4362,12 @@ msgstr "Vis delere" msgid "Show fullsize..." msgstr "Vis i fullskjerm..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Vis i filbehandler..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4341,11 +4379,11 @@ msgstr "Vis under Diverse Artister" msgid "Show moodbar" msgstr "Vis Stemningsstolpe" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Vis bare duplikate" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Vis bare filer uten tagger" @@ -4385,7 +4423,7 @@ msgstr "Stokk om album" msgid "Shuffle all" msgstr "Stokk alle" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Stokk om spillelista" @@ -4425,7 +4463,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Gå bakover i spillelista" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antall ganger hoppet over" @@ -4461,7 +4499,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informasjon om sange" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info om sangen" @@ -4493,7 +4531,7 @@ msgstr "Sorter sanger etter" msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Kilde" @@ -4529,6 +4567,10 @@ msgstr "Standard" msgid "Starred" msgstr "Har stjerner" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Begynn på spillelista nå" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "Skriv noe i søkeboksen over for å fylle denne resultatlisten" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Starter %1" @@ -4557,7 +4599,7 @@ msgstr "Starter …" msgid "Stations" msgstr "Stasjoner" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stopp" @@ -4566,7 +4608,7 @@ msgstr "Stopp" msgid "Stop after" msgstr "Stopp etter" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stopp etter denne sangen" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Prøveperioden for Subsonic er over. Vennligst gi en donasjon for å få en lisensnøkkel. Besøk subsonic.org for mer informasjon." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "Filene vil bli slettet fra enheten. Er du sikker?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "Denne tjenesten er kun for betalende kunder" msgid "This type of device is not supported: %1" msgstr "Denne enhetstypen (%1) støttes ikke." -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tittel" @@ -4871,11 +4914,11 @@ msgstr "Slå av/på Pent Display" msgid "Toggle fullscreen" msgstr "Slå av/på fullskjerm-modus" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Slå av/på køstatus" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Slå av/på deling av lyttevaner" @@ -4907,12 +4950,13 @@ msgstr "Totalt overført, bytes" msgid "Total network requests made" msgstr "Totalt antall forespørsler over nettet" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spor" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Kod om musikk" @@ -5010,7 +5054,7 @@ msgstr "Oppdater Grooveshark-spilleliste" msgid "Update all podcasts" msgstr "Oppdatér alle podcaster" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Oppdatér endrede bibliotekkataloge" @@ -5165,7 +5209,7 @@ msgstr "Vis" msgid "Visualization mode" msgstr "Visualiseringsmodus" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualiseringer" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "Ønsker du å flytte også resten av sangene i dette albumet til Diverse Artister?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Vil du se gjennom hele biblioteket på ny nå?" @@ -5305,10 +5349,10 @@ msgstr "Skriv all statistikk til sangfilene" msgid "Wrong username or password." msgstr "Ugyldig brukernavn og/eller passord" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "År" diff --git a/src/translations/nl.po b/src/translations/nl.po index 096fcdde2..7855aab18 100644 --- a/src/translations/nl.po +++ b/src/translations/nl.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-17 21:20+0000\n" +"PO-Revision-Date: 2014-01-27 08:30+0000\n" "Last-Translator: Senno Kaasjager\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/clementine/language/nl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -174,11 +174,11 @@ msgstr "&Centreren" msgid "&Custom" msgstr "Aan&gepast" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extra's" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Hulp" @@ -195,7 +195,7 @@ msgstr "&Verbergen…" msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Muziek" @@ -203,15 +203,15 @@ msgstr "&Muziek" msgid "&None" msgstr "Gee&n" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Afspeellijst" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Afsluiten" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Herhaalmodus" @@ -219,7 +219,7 @@ msgstr "&Herhaalmodus" msgid "&Right" msgstr "&Rechts" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Willekeurige modus" @@ -227,7 +227,7 @@ msgstr "&Willekeurige modus" msgid "&Stretch columns to fit window" msgstr "Kolommen &uitstrekken totdat ze het venster vullen" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Hulpmiddelen" @@ -372,11 +372,11 @@ msgstr "Afbreken" msgid "About %1" msgstr "Over %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Over Clementine…" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Over Qt…" @@ -424,19 +424,19 @@ msgstr "Nog een radiostream toevoegen…" msgid "Add directory..." msgstr "Map toevoegen…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Bestand toevoegen" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Bestand toevoegen voor conversie." -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Bestand(en) toevoegen voor conversie." -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Bestand toevoegen…" @@ -444,11 +444,11 @@ msgstr "Bestand toevoegen…" msgid "Add files to transcode" msgstr "Te converteren bestanden toevoegen" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Map toevoegen" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Map toevoegen…" @@ -460,7 +460,7 @@ msgstr "Nieuwe map toevoegen…" msgid "Add podcast" msgstr "Voeg podcast toe" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Voeg podcast toe..." @@ -536,7 +536,7 @@ msgstr "Nummer-label toevoegen" msgid "Add song year tag" msgstr "Jaar-label toevoegen" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Radiostream toevoegen…" @@ -548,7 +548,7 @@ msgstr "Aan Grooveshark favorieten toevoegen" msgid "Add to Grooveshark playlists" msgstr "Aan Grooveshark afspeellijst toevoegen" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Aan een andere afspeellijst toevoegen" @@ -609,12 +609,12 @@ msgstr "Na" msgid "After copying..." msgstr "Na het kopiëren…" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideaal volume voor alle nummers)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -644,11 +644,11 @@ msgstr "Albums met albumhoes" msgid "Albums without covers" msgstr "Albums zonder albumhoes" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alle bestanden (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -775,17 +775,17 @@ msgid "" "the songs of your library?" msgstr "Weet u zeker dat u de waarderingen en statistieken in alle bestanden van uw muziekbibliotheek wilt opslaan?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artiest" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artiestinfo" @@ -801,7 +801,7 @@ msgstr "Artiestlabels" msgid "Artist's initial" msgstr "Artiest's initiaal" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audioformaat" @@ -847,7 +847,7 @@ msgstr "Gemiddelde afbeeldinggrootte" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -876,7 +876,7 @@ msgstr "Bezig met het maken van een backup van de database" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Verbannen" @@ -905,7 +905,7 @@ msgstr "Beste" msgid "Biography from %1" msgstr "Biografie van %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -1011,7 +1011,7 @@ msgstr "Het aanpassen naar mono afspelen zal actief worden bij het afspelen van msgid "Check for new episodes" msgstr "Zoek naar nieuwe afleveringen" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Zoeken naar updates..." @@ -1061,11 +1061,11 @@ msgstr "Bezig met opschonen" msgid "Clear" msgstr "Wissen" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Afspeellijst wissen" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1156,8 +1156,8 @@ msgstr "Klik hier om een afspeellijst aan uw favorieten toe te voegen, hierdoor msgid "Click to toggle between remaining time and total time" msgstr "Klik om te schakelen tussen resterende duur en totale duur" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1195,7 +1195,7 @@ msgstr "Kleuren" msgid "Comma separated list of class:level, level is 0-3" msgstr "Door komma's gescheiden lijst van van klasse:niveau, het niveau is 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opmerking" @@ -1204,11 +1204,11 @@ msgstr "Opmerking" msgid "Complete tags automatically" msgstr "Labels automatisch voltooien" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Labels automatisch voltooien…" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Subsonic configureren..." msgid "Configure global search..." msgstr "Globaal zoeken instellen..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Bibliotheek configureren…" @@ -1284,7 +1284,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Time-out van verbinding, controleer de URL van de server. Bijvoorbeeld: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Console" @@ -1304,12 +1304,12 @@ msgstr "Alle muziek die het apparaat niet kan afspelen converteren" msgid "Copy to clipboard" msgstr "Kopieer naar klembord" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Naar apparaat kopiëren…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Naar bibliotheek kopiëren…" @@ -1331,14 +1331,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Kan GStreamer element ‘%1’ niet aanmaken - zorg ervoor dat u alle vereiste GStreamer plug-ins geïnstalleerd heeft" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kan muxer voor %1 niet vinden, controleer of u de juiste GStreamer plug-ins geïnstalleerd heeft" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1355,7 +1355,7 @@ msgid "Couldn't open output file %1" msgstr "Kan uitvoerbestand %1 niet openen" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Albumhoesbeheerder" @@ -1399,11 +1399,11 @@ msgstr "Cross-fade wanneer automatisch van nummer veranderd wordt" msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade wanneer handmatig van nummer veranderd wordt" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1411,63 +1411,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1510,11 +1510,11 @@ msgid "" "recover your database" msgstr "De database lijkt corrupt. Instructies om om de database te herstellen staan op: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Aanmaakdatum" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Wijzigingsdatum" @@ -1564,7 +1564,7 @@ msgid "Delete downloaded data" msgstr "Verwijder gedownloadde gegevens" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Bestanden verwijderen" @@ -1572,7 +1572,7 @@ msgstr "Bestanden verwijderen" msgid "Delete from device..." msgstr "Van apparaat verwijderen…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Van schijf verwijderen…" @@ -1597,15 +1597,16 @@ msgstr "Oorspronkelijke bestanden verwijderen" msgid "Deleting files" msgstr "Bestanden worden verwijderd" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Geselecteerde nummers uit wachtrij verwijderen" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Nummer uit wachtrij verwijderen" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Bestemming" @@ -1629,10 +1630,14 @@ msgstr "Apparaatnaam" msgid "Device properties..." msgstr "Apparaateigenschappen…" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Apparaten" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Dialoog" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Bedoelde u" @@ -1671,8 +1676,8 @@ msgstr "Schakel het aanmaken van de stemmingsbalk uit" msgid "Disabled" msgstr "Uitgeschakeld" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Schijf" @@ -1689,7 +1694,7 @@ msgstr "Weergaveopties" msgid "Display the on-screen-display" msgstr "Infoschermvenster weergeven" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "De volledige database opnieuw scannen" @@ -1811,6 +1816,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Duur" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamische-modus ingeschakeld" @@ -1823,12 +1832,12 @@ msgstr "Dynamische random mix" msgid "Edit smart playlist..." msgstr "Slimme-afspeellijst bewerken…" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Label ‘%1’ bewerken…" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Label bewerken…" @@ -1841,7 +1850,7 @@ msgid "Edit track information" msgstr "Nummerinformatie bewerken" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Nummerinformatie bewerken…" @@ -1942,7 +1951,7 @@ msgstr "Geef in de App dit IP-adres op om verbinding met Clementine te maken" msgid "Entire collection" msgstr "Gehele verzameling" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1956,7 +1965,7 @@ msgstr "Gelijkwaardig aan --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fout" @@ -1976,7 +1985,7 @@ msgstr "Fout tijdens het verwijderen van de nummers" msgid "Error downloading Spotify plugin" msgstr "Fout bij het downloaden van de Spotify plug-in" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Fout bij laden van %1" @@ -1986,12 +1995,12 @@ msgstr "Fout bij laden van %1" msgid "Error loading di.fm playlist" msgstr "Fout bij laden di.fm afspeellijst" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Fout bij verwerken van %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Fout bij het laden van audio-cd" @@ -2069,27 +2078,27 @@ msgstr "Klaar me exporteren" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%1 van %2 albumhoezen geëxporteerd (%3 overgeslagen)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2116,6 +2125,10 @@ msgstr "Uitvagen" msgid "Fading duration" msgstr "Uitvaagduur" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "CD-station lezen mislukt" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Ophalen van de map is mislukt" @@ -2167,6 +2180,10 @@ msgstr "Ophalen van Subsonic bibliotheek" msgid "Fetching cover error" msgstr "Fout bij ophalen albumhoes" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Bestandsformaat" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Bestandsextensie" @@ -2175,19 +2192,19 @@ msgstr "Bestandsextensie" msgid "File formats" msgstr "Bestandsformaten" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Bestandsnaam" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Bestandsnaam (zonder pad)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Bestandsgrootte" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2197,7 +2214,7 @@ msgstr "Bestandstype" msgid "Filename" msgstr "Bestandsnaam" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Bestanden" @@ -2317,9 +2334,10 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellingen" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2351,11 +2369,11 @@ msgstr "Geef het een naam:" msgid "Go" msgstr "Ga" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Ga naar het volgende afspeellijst tabblad" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Ga naar het vorige afspeellijst tabblad" @@ -2425,7 +2443,7 @@ msgstr "Groeperen op genre/album" msgid "Group by Genre/Artist/Album" msgstr "Groeperen op genre/artiest/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groepering" @@ -2580,6 +2598,10 @@ msgstr "Indexeren %1" msgid "Information" msgstr "Informatie" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "Invoeropties" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Invoegen…" @@ -2592,7 +2614,7 @@ msgstr "Geïnstalleerd" msgid "Integrity check" msgstr "Integriteits check" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2632,6 +2654,10 @@ msgstr "Ongeldige sessiesleutel" msgid "Invalid username and/or password" msgstr "Ongeldige gebruikersnaam en/of wachtwoord" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "Selectie omkeren" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2656,7 +2682,7 @@ msgstr "Jamendo, beste nummers van de week" msgid "Jamendo database" msgstr "Jamendo database" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Spring naar het huidige nummer" @@ -2680,7 +2706,7 @@ msgstr "In de achtergrond laten draaien als het venter gesloten wordt" msgid "Keep the original files" msgstr "De originele bestanden behouden" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Poesjes" @@ -2704,7 +2730,7 @@ msgstr "Grote albumhoes" msgid "Large sidebar" msgstr "Grote zijbalk" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Laast afgespeeld" @@ -2787,12 +2813,12 @@ msgstr "Leeglaten voor standaardwaarde. Voorbeelden: ‘/dev/dsp’, ‘front msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duur" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotheek" @@ -2800,7 +2826,7 @@ msgstr "Bibliotheek" msgid "Library advanced grouping" msgstr "Bibliotheek geavanceerd groeperen" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Database herscan-melding" @@ -2845,7 +2871,7 @@ msgstr "Albumhoes van schijf laden…" msgid "Load playlist" msgstr "Afspeellijst laden" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Afspeellijst laden…" @@ -2874,11 +2900,11 @@ msgstr "Nummers laden" msgid "Loading stream" msgstr "Radiostream laden" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Nummers laden" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Nummerinformatie laden" @@ -2897,10 +2923,10 @@ msgstr "Bestanden/URLs laden, en vervangt de huidige afspeellijst" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Inloggen" @@ -2912,7 +2938,7 @@ msgstr "Inloggen mislukt" msgid "Long term prediction profile (LTP)" msgstr "Lange termijn voorspellingsprofiel (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Mooi" @@ -2975,7 +3001,7 @@ msgstr "Magnatune-download voltooid" msgid "Main profile (MAIN)" msgstr "Normaal profiel (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Voer uit!" @@ -3058,7 +3084,7 @@ msgstr "Mono afspelen" msgid "Months" msgstr "Maanden" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Stemming" @@ -3088,7 +3114,7 @@ msgstr "Koppelpunten" msgid "Move down" msgstr "Omlaag verplaatsen" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Naar bibliotheek verplaatsen…" @@ -3097,7 +3123,7 @@ msgstr "Naar bibliotheek verplaatsen…" msgid "Move up" msgstr "Omhoog verplaatsen" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Muziek" @@ -3105,7 +3131,7 @@ msgstr "Muziek" msgid "Music Library" msgstr "Muziekbibliotheek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Dempen" @@ -3193,7 +3219,7 @@ msgstr "Nooit afspelen" msgid "New folder" msgstr "Nieuwe map" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nieuwe afspeellijst" @@ -3217,7 +3243,7 @@ msgstr "Nieuwste nummers" msgid "Next" msgstr "Volgende" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Volgend nummer" @@ -3256,7 +3282,7 @@ msgstr "Geen korte blokken" msgid "None" msgstr "Geen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Geen van de geselecteerde nummers waren geschikt voor het kopiëren naar een apparaat" @@ -3374,7 +3400,7 @@ msgstr "Doorzichtigheid" msgid "Open %1 in browser" msgstr "%1 in de browser openen" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Audio-CD openen…" @@ -3390,7 +3416,7 @@ msgstr "OML bestand openen..." msgid "Open device" msgstr "Apparaat openen" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Bestand openen..." @@ -3425,7 +3451,7 @@ msgstr "Optimaliseer voor bitrate" msgid "Optimize for quality" msgstr "Optimaliseer voor kwaliteit" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opties…" @@ -3437,7 +3463,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Bestanden sorteren" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Bestanden sorteren..." @@ -3461,7 +3487,7 @@ msgstr "Output" msgid "Output device" msgstr "Uitvoer apparaat" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Uitvoeropties" @@ -3502,7 +3528,7 @@ msgstr "Party" msgid "Password" msgstr "Wachtwoord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pauze" @@ -3515,7 +3541,7 @@ msgstr "Afspelen pauzeren" msgid "Paused" msgstr "Gepauzeerd" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Uitvoerend artiest" @@ -3528,9 +3554,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Normale zijbalk" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Afspelen" @@ -3543,7 +3569,7 @@ msgstr "Artiest of label afspelen" msgid "Play artist radio..." msgstr "Artiestradio afspelen…" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Aantal maal afgespeeld" @@ -3598,7 +3624,7 @@ msgstr "Afspeellijst-opties" msgid "Playlist type" msgstr "Afspeellijst type" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Afspeellijsten" @@ -3650,7 +3676,7 @@ msgstr "Voorversterking" msgid "Preferences" msgstr "Voorkeuren" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Voorkeuren..." @@ -3705,7 +3731,7 @@ msgstr "Voorbeeld" msgid "Previous" msgstr "Vorige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Vorig nummer" @@ -3719,7 +3745,7 @@ msgid "Profile" msgstr "Profiel" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Voortgang" @@ -3748,16 +3774,16 @@ msgstr "Kwaliteit" msgid "Querying device..." msgstr "apparaat afzoeken..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Wachtrijbeheer" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Geselecteerde nummers in de wachtrij plaatsen" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Nummer in de wachtrij plaatsen" @@ -3769,7 +3795,7 @@ msgstr "Radio (gelijk volume voor alle nummers)" msgid "Radios" msgstr "Radio's" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Regen" @@ -3801,7 +3827,7 @@ msgstr "Waardeer huidig nummer met 4 sterren" msgid "Rate the current song 5 stars" msgstr "Waardeer huidig nummer met 5 sterren" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Waardering" @@ -3859,7 +3885,7 @@ msgstr "Verwijderen" msgid "Remove action" msgstr "Actie verwijderen" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Verwijder dubbelen uit afspeellijst" @@ -3875,7 +3901,7 @@ msgstr "Verwijder uit Mijn Muziek" msgid "Remove from favorites" msgstr "Uit favorieten verwijderen" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Uit afspeellijst verwijderen" @@ -3912,7 +3938,7 @@ msgstr "Afspeellijst hernoemen" msgid "Rename playlist..." msgstr "Afspeellijst hernoemen..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Nummers in deze volgorde een nieuw nummer geven…" @@ -4003,6 +4029,18 @@ msgstr "Keer terug naar Clementine" msgid "Right" msgstr "Rechts" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "Rip" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Rip CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Rip audio CD" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4029,7 +4067,7 @@ msgstr "Apparaat veilig verwijderen" msgid "Safely remove the device after copying" msgstr "Apparaat veilig verwijderen na het kopiëren" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplerate" @@ -4057,7 +4095,7 @@ msgstr "plaatje opslaan" msgid "Save playlist" msgstr "Afspeellijst opslaan" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Afspeellijst opslaan..." @@ -4093,7 +4131,7 @@ msgstr "Schaalbare samplerateprofiel (SSR)" msgid "Scale size" msgstr "Groote schalen" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Score" @@ -4102,7 +4140,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble de nummers waar ik naar luister" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4186,11 +4224,11 @@ msgstr "Spoel momenteel spelende nummer met een relatieve hoeveelheid door" msgid "Seek the currently playing track to an absolute position" msgstr "Spoel het momenteel spelende nummer naar een absolute positie door" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Alles selecteren" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Niets selecteren" @@ -4218,7 +4256,7 @@ msgstr "Visualisaties kiezen" msgid "Select visualizations..." msgstr "Visualisaties kiezen..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Selecteer..." @@ -4238,7 +4276,7 @@ msgstr "Server gegevens" msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Stel %1 in op \"%2\"..." @@ -4247,7 +4285,7 @@ msgstr "Stel %1 in op \"%2\"..." msgid "Set the volume to percent" msgstr "Zet het volume op procent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Waarde voor alle geselecteerde nummers instellen…" @@ -4310,7 +4348,7 @@ msgstr "Mooi infoschermvenster weergeven" msgid "Show above status bar" msgstr "Boven statusbalk weergeven" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Alle nummers weergeven" @@ -4330,12 +4368,12 @@ msgstr "Verdelers tonen" msgid "Show fullsize..." msgstr "Volledig weergeven..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "In bestandsbeheer tonen…" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Tonen in bibliotheek..." @@ -4347,11 +4385,11 @@ msgstr "In diverse artiesten weergeven" msgid "Show moodbar" msgstr "Toon stemmingsbalk" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Alleen dubbelen tonen" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Nummers zonder labels tonen" @@ -4391,7 +4429,7 @@ msgstr "Albums willekeurig afspelen" msgid "Shuffle all" msgstr "Alles willekeurig" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Afspeellijst schudden" @@ -4431,7 +4469,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Terug in afspeellijst" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Aantal maal overgeslagen" @@ -4467,7 +4505,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Nummerinformatie" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Nummerinfo" @@ -4499,7 +4537,7 @@ msgstr "Nummers sorteren op" msgid "Sorting" msgstr "Sorteren" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Bron" @@ -4535,6 +4573,10 @@ msgstr "Standaard" msgid "Starred" msgstr "Met ster" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "Begin met rippen" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Momenteel spelende afspeellijst starten" @@ -4550,7 +4592,7 @@ msgid "" "list" msgstr "Typ iets in de bovenstaande zoekbalk om de lijst met zoekresultaten te zien" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 wordt gestart" @@ -4563,7 +4605,7 @@ msgstr "Starten…" msgid "Stations" msgstr "Stations" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stoppen" @@ -4572,7 +4614,7 @@ msgstr "Stoppen" msgid "Stop after" msgstr "Stop na" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Na dit nummer stoppen" @@ -4740,7 +4782,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "De proefperiode voor de Subsonic server is afgelopen. Doneer om een licentie sleutel te krijgen. Ga naar subsonic.org voor details." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4781,7 +4823,7 @@ msgid "" "continue?" msgstr "Deze bestanden zullen definitief van het apparaat verwijderd worden. Weet u zeker dat u door wilt gaan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4853,9 +4895,10 @@ msgstr "Deze stream is alleen voor betalende abonnees" msgid "This type of device is not supported: %1" msgstr "Dit type apparaat wordt niet ondersteund: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" @@ -4877,11 +4920,11 @@ msgstr "Mooi infoschermvenster aan/uit" msgid "Toggle fullscreen" msgstr "Volledig scherm aan/uit" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Wachtrijstatus aan/uit" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Zet scrobbling aan/uit" @@ -4913,12 +4956,13 @@ msgstr "Totaal aantal verzonden bytes" msgid "Total network requests made" msgstr "Totaal aantal netwerk-verzoeken" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Nummer" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Muziek converteren" @@ -5016,7 +5060,7 @@ msgstr "Grooveshark afspeellijsten bijwerken" msgid "Update all podcasts" msgstr "Vernieuw alle podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Aangepaste databasemappen updaten" @@ -5171,7 +5215,7 @@ msgstr "Weergave" msgid "Visualization mode" msgstr "Visualisatiemodus" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualisaties" @@ -5299,7 +5343,7 @@ msgid "" "well?" msgstr "Wilt u de andere nummers van dit album ook verplaatsen naar Diverse Artiesten?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Wilt u op dit moment een volledige herscan laten uitvoeren?" @@ -5311,10 +5355,10 @@ msgstr "Sla alle statistieken op in muziekbestanden" msgid "Wrong username or password." msgstr "Verkeerde gebruikersnaam of wachwoord." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Jaar" diff --git a/src/translations/oc.po b/src/translations/oc.po index d44f20df7..2494b3cc2 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/clementine/language/oc/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "&Personalizat" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Ajuda" @@ -187,7 +187,7 @@ msgstr "Amagar..." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Musica" @@ -195,15 +195,15 @@ msgstr "Musica" msgid "&None" msgstr "&Pas cap" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lista de lectura" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Quitar" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Lectura en bocla" @@ -211,7 +211,7 @@ msgstr "Lectura en bocla" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mòde aleatòri" @@ -219,7 +219,7 @@ msgstr "Mòde aleatòri" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Aisinas" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "A prepaus de « %1 »" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "A prepaus de Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Seleccionar un fichièr vidèo..." @@ -436,11 +436,11 @@ msgstr "Seleccionar un fichièr vidèo..." msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Apondre un dorsièr" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Apondre un flux..." @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Bandir" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Debit binari" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Voidar la lista de lectura" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" @@ -1196,11 +1196,11 @@ msgstr "Comentari" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestionari de pochetas" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificacion" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinacion" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "Desactivat" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Egalizador" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "Fondut" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nom del fichièr" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Talha del fichièr" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "Tipe de fichièr" msgid "Filename" msgstr "Nom del fichièr" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fichièrs" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "Paramètres generals" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Sus Internet" @@ -2624,6 +2646,10 @@ msgstr "Clau de sesilha invalida" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Longor" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotèca" @@ -2792,7 +2818,7 @@ msgstr "Bibliotèca" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "Cargament del flux" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "M'agrada fòrça" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "Discotèca" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mut" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Pista seguenta" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "Pas cap" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opcions de creacion" @@ -3494,7 +3520,7 @@ msgstr "Fèsta" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausa" @@ -3507,7 +3533,7 @@ msgstr "Metre en pausa la lectura" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Lectura" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "Pre-amp" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Pista precedenta" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progression" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "Suprimir" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Arrestar" @@ -4564,7 +4606,7 @@ msgstr "Arrestar" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Títol" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "Afichatge" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Annada" diff --git a/src/translations/pa.po b/src/translations/pa.po index 0c7411992..cb78ac4eb 100644 --- a/src/translations/pa.po +++ b/src/translations/pa.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/clementine/language/pa/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/pl.po b/src/translations/pl.po index d09415a6f..397aa1c7e 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/clementine/language/pl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -174,11 +174,11 @@ msgstr "Wyśrodkowanie" msgid "&Custom" msgstr "&Własny" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Dodatki" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Pomoc" @@ -195,7 +195,7 @@ msgstr "Ukryj..." msgid "&Left" msgstr "Do &lewej" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Muzyka" @@ -203,15 +203,15 @@ msgstr "Muzyka" msgid "&None" msgstr "&Brak" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lista odtwarzania" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Zakończ" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Tryb powtarzania" @@ -219,7 +219,7 @@ msgstr "Tryb powtarzania" msgid "&Right" msgstr "Do p&rawej" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Tryb losowy" @@ -227,7 +227,7 @@ msgstr "Tryb losowy" msgid "&Stretch columns to fit window" msgstr "&Rozciągaj kolumny, aby dopasować do okna" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Narzędzia" @@ -372,11 +372,11 @@ msgstr "Przerwij" msgid "About %1" msgstr "O programie %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt..." @@ -424,19 +424,19 @@ msgstr "Dodaj następny strumień..." msgid "Add directory..." msgstr "Dodaj katalog..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Dodaj plik" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Dodaj plik do transkodera" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Dodaj plik(i) do transkodera" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Dodaj plik..." @@ -444,11 +444,11 @@ msgstr "Dodaj plik..." msgid "Add files to transcode" msgstr "Dodaj pliki to transkodowania" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Dodaj katalog" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Dodaj katalog..." @@ -460,7 +460,7 @@ msgstr "Dodaj nowy katalog..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodaj podcast..." @@ -536,7 +536,7 @@ msgstr "Dodaj tag numeru utworu" msgid "Add song year tag" msgstr "Dodaj tag roku" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Dodaj strumień..." @@ -548,7 +548,7 @@ msgstr "Dodaj do ulubionych Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Dodaj do list odtwarzania w serwisie Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Dodaj do innej listy odtwarzania" @@ -609,12 +609,12 @@ msgstr "Po następującej ilości dni:" msgid "After copying..." msgstr "Po skopiowaniu..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Według albumów (najlepsza głośność dla wszystkich ścieżek)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -644,11 +644,11 @@ msgstr "Albumy z okładkami" msgid "Albums without covers" msgstr "Albumy bez okładek" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Wszystkie pliki (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Chwała Tobie Hypnoropucho!" @@ -775,17 +775,17 @@ msgid "" "the songs of your library?" msgstr "Czy na pewno chcesz zapisać w plikach wszystkie statystyki każdego utworu z twojej biblioteki?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Wykonawca" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "O artyście" @@ -801,7 +801,7 @@ msgstr "Tagi wykonawcy" msgid "Artist's initial" msgstr "Inicjały wykonawcy" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format audio" @@ -847,7 +847,7 @@ msgstr "Przeciętny rozmiar grafiki" msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Uderzenia na minutę" @@ -876,7 +876,7 @@ msgstr "Tworzenie kopii zapasowej bazy danych" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Ignoruj" @@ -905,7 +905,7 @@ msgstr "Najlepsza" msgid "Biography from %1" msgstr "Biografia z %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" @@ -1011,7 +1011,7 @@ msgstr "Zmiana trybu odtwarzania na tryb mono nastąpi dopiero od następnej odt msgid "Check for new episodes" msgstr "Sprawdzaj, czy są nowe audycje" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Sprawdź aktualizacje..." @@ -1061,11 +1061,11 @@ msgstr "Czyszczenie" msgid "Clear" msgstr "Wyczyść" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Wyczyść listę odtwarzania" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1156,8 +1156,8 @@ msgstr "Kliknij tutaj i dodaj tę playlistę do ulubionych żeby ją zapisać i msgid "Click to toggle between remaining time and total time" msgstr "Przełącz pomiędzy czasem odtwarzania a czasem pozostałym" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1195,7 +1195,7 @@ msgstr "Kolory" msgid "Comma separated list of class:level, level is 0-3" msgstr "Rozdzielona przecinkami lista klasa:poziom, gdzie poziom wynosi 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentarz" @@ -1204,11 +1204,11 @@ msgstr "Komentarz" msgid "Complete tags automatically" msgstr "Automatycznie uzupełnij znaczniki" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Automatycznie uzupełnij znaczniki..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Skonfiguruj Subsonic..." msgid "Configure global search..." msgstr "Skonfiguruj globalne wyszukiwanie..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfiguruj bibliotekę..." @@ -1284,7 +1284,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Przekroczono limit czasu, sprawdź URL serwera. Przykład: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsola" @@ -1304,12 +1304,12 @@ msgstr "Przekonwertuj muzykę, której nie może odtworzyć urządzenie" msgid "Copy to clipboard" msgstr "Kopiuj do schowka" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Skopiuj na urządzenie..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Skopiuj do biblioteki..." @@ -1331,14 +1331,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nie można utworzyć elementu \"%1\" GStreamera - upewnij się, czy są zainstalowane wszystkie wymagane wtyczki GStreamera" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nie można odnaleźć muxera dla %1. Sprawdź czy posiadasz zainstalowane prawidłowe wtyczki GStreamera" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1355,7 +1355,7 @@ msgid "Couldn't open output file %1" msgstr "Nie można otworzyć pliku %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Menedżer okładek" @@ -1399,11 +1399,11 @@ msgstr "Płynne przejście przy automatycznej zmianie ścieżek" msgid "Cross-fade when changing tracks manually" msgstr "Płynne przejście przy ręcznej zmianie ścieżek" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1411,63 +1411,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1510,11 +1510,11 @@ msgid "" "recover your database" msgstr "Wykryto uszkodzenie bazy danych. Proszę, zapoznaj się z https://code.google.com/p/clementine-player/wiki/DatabaseCorruption, jeżeli potrzebujesz instrukcji jak naprawić ten błąd." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data utworzenia" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data modyfikacji" @@ -1564,7 +1564,7 @@ msgid "Delete downloaded data" msgstr "Usuń pobrane dane" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Usuń pliki" @@ -1572,7 +1572,7 @@ msgstr "Usuń pliki" msgid "Delete from device..." msgstr "Usuń z urządzenia..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Usuń z dysku..." @@ -1597,15 +1597,16 @@ msgstr "Usuń oryginalne pliki" msgid "Deleting files" msgstr "Usuwanie plików" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Usuń ścieżki z kolejki odtwarzania" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Usuń ścieżkę z kolejki odtwarzania" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Miejsce docelowe" @@ -1629,10 +1630,14 @@ msgstr "Nazwa urządzenia" msgid "Device properties..." msgstr "Ustawienia urządzenia..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Urządzenia" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Czy chodziło o" @@ -1671,8 +1676,8 @@ msgstr "Wyłącz generowanie pasków humoru" msgid "Disabled" msgstr "Wyłączone" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Płyta" @@ -1689,7 +1694,7 @@ msgstr "Opcje wyświetlania" msgid "Display the on-screen-display" msgstr "Pokaż menu ekranowe" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Przeskanuj całą bibliotekę od nowa" @@ -1811,6 +1816,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Tryb dynamiczny włączony" @@ -1823,12 +1832,12 @@ msgstr "Dynamiczny, losowy miks" msgid "Edit smart playlist..." msgstr "Edytuj inteligentną listę odtwarzania..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Edytuj tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Edytuj znacznik..." @@ -1841,7 +1850,7 @@ msgid "Edit track information" msgstr "Edytuj informacje o utworze" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Edytuj informacje o utworze..." @@ -1942,7 +1951,7 @@ msgstr "Wpisz ten adres IP do aplikacji w celu połączenia z Clementine." msgid "Entire collection" msgstr "Cała kolekcja" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Korektor dźwięku" @@ -1956,7 +1965,7 @@ msgstr "Rownoważny --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Błąd" @@ -1976,7 +1985,7 @@ msgstr "Błąd przy usuwaniu utworów" msgid "Error downloading Spotify plugin" msgstr "Plugin Spotify - nieudane pobieranie" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Błąd wczytywania %1" @@ -1986,12 +1995,12 @@ msgstr "Błąd wczytywania %1" msgid "Error loading di.fm playlist" msgstr "Problem podczas ładowania listy odtwarzania di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Błąd przetwarzania %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Błąd przy wczytywaniu audio CD" @@ -2069,27 +2078,27 @@ msgstr "Eksportowanie zakończone" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Wyodrębniono okładek: %1 / %2 (pominięto: %3)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2116,6 +2125,10 @@ msgstr "Przejście" msgid "Fading duration" msgstr "Czas przejścia" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Nie udało się pobrać katalogu" @@ -2167,6 +2180,10 @@ msgstr "Pobieranie bibliotek Subsonic" msgid "Fetching cover error" msgstr "Błąd podczas pobierania okładki" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Rozszerzenie pliku" @@ -2175,19 +2192,19 @@ msgstr "Rozszerzenie pliku" msgid "File formats" msgstr "Formaty pliku" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nazwa pliku" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nazwa pliku (bez ścieżki)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Wielkość pliku" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2197,7 +2214,7 @@ msgstr "Typ pliku" msgid "Filename" msgstr "Nazwa pliku" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Pliki" @@ -2317,9 +2334,10 @@ msgstr "Ogólne" msgid "General settings" msgstr "Podstawowe ustawienia" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gatunek" @@ -2351,11 +2369,11 @@ msgstr "Nadaj nazwę:" msgid "Go" msgstr "Idź" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Przejdź do kolejnej karty z listą odtwarzania" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Przejdź do poprzedniej karty z listą odtwarzania" @@ -2425,7 +2443,7 @@ msgstr "Grupuj według Gatunek/Artysta" msgid "Group by Genre/Artist/Album" msgstr "Grupuj według Gatunek/Artysta/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupowanie" @@ -2580,6 +2598,10 @@ msgstr "Indeksowanie %1" msgid "Information" msgstr "Informacja" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Wstaw..." @@ -2592,7 +2614,7 @@ msgstr "Zainstalowano" msgid "Integrity check" msgstr "Sprawdzanie integralności" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2632,6 +2654,10 @@ msgstr "Zły klucz sesji" msgid "Invalid username and/or password" msgstr "Zła nazwa użytkownika i/lub hasło" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2656,7 +2682,7 @@ msgstr "Najlepsze ścieżki tego tygodnia na Jamendo" msgid "Jamendo database" msgstr "Baza danych Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Przeskocz do aktualnie odtwarzanej ścieżki" @@ -2680,7 +2706,7 @@ msgstr "Pozostań w tle po zamknięciu okna" msgid "Keep the original files" msgstr "Zachowaj oryginalne pliki" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kotki" @@ -2704,7 +2730,7 @@ msgstr "Duża okładka albumu" msgid "Large sidebar" msgstr "Duży pasek boczny" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Ostatnio odtwarzane" @@ -2787,12 +2813,12 @@ msgstr "Pozostaw puste, by użyć wartości domyślnej. Przykłady: \"/dev/dsp\" msgid "Left" msgstr "Lewy" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Długość" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Biblioteka" @@ -2800,7 +2826,7 @@ msgstr "Biblioteka" msgid "Library advanced grouping" msgstr "Zaawansowanie grupowanie biblioteki" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Konieczność odświeżenia biblioteki" @@ -2845,7 +2871,7 @@ msgstr "Wczytaj okładkę z dysku..." msgid "Load playlist" msgstr "Wczytaj listę odtwarzania" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Wczytaj listę odtwarzania..." @@ -2874,11 +2900,11 @@ msgstr "Wczytywanie utworów" msgid "Loading stream" msgstr "Wczytywanie strumienia" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Wczytywanie ścieżek" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Wczytywanie informacji o utworze" @@ -2897,10 +2923,10 @@ msgstr "Wczytuje pliki/adresy URL, zastępując obecną listę odtwarzania" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Zaloguj się" @@ -2912,7 +2938,7 @@ msgstr "Logowanie nieudane" msgid "Long term prediction profile (LTP)" msgstr "Profil przewidywania długoterminowego (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Dodaj do ulubionych" @@ -2975,7 +3001,7 @@ msgstr "Pobieranie z Magnatune zakończone" msgid "Main profile (MAIN)" msgstr "Profil główny (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Zrób tak!" @@ -3058,7 +3084,7 @@ msgstr "Odtwarzanie mono" msgid "Months" msgstr "Miesięcy" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Humor" @@ -3088,7 +3114,7 @@ msgstr "Punkty montowania" msgid "Move down" msgstr "Przesuń w dół" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Przenieś do biblioteki..." @@ -3097,7 +3123,7 @@ msgstr "Przenieś do biblioteki..." msgid "Move up" msgstr "Przesuń w górę" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Muzyka" @@ -3105,7 +3131,7 @@ msgstr "Muzyka" msgid "Music Library" msgstr "Biblioteka muzyki" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Wycisz" @@ -3193,7 +3219,7 @@ msgstr "Nie odtwarzaj automatycznie" msgid "New folder" msgstr "Nowy folder" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nowa lista odtwarzania" @@ -3217,7 +3243,7 @@ msgstr "Najnowsze ścieżki" msgid "Next" msgstr "Dalej" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Następny utwór" @@ -3256,7 +3282,7 @@ msgstr "Bez krótkich bloków" msgid "None" msgstr "Brak" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Żaden z zaznaczonych utworów nie był odpowiedni do skopiowania na urządzenie" @@ -3374,7 +3400,7 @@ msgstr "Krycie" msgid "Open %1 in browser" msgstr "Otwórz %1 w przeglądarce" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Otwórz audio CD" @@ -3390,7 +3416,7 @@ msgstr "Otwórz plik OPML..." msgid "Open device" msgstr "Otwórz urządzenie" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Otwórz plik..." @@ -3425,7 +3451,7 @@ msgstr "Optymalizuj pod względem szybkości transmisji (bitrate)" msgid "Optimize for quality" msgstr "Optymalizuj pod względem jakości" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opcje" @@ -3437,7 +3463,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Uporządkuj pliki" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Uporządkuj pliki..." @@ -3461,7 +3487,7 @@ msgstr "Wyjście" msgid "Output device" msgstr "Urządzenie wyjściowe" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opcje wyjścia" @@ -3502,7 +3528,7 @@ msgstr "Impreza" msgid "Password" msgstr "Hasło" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pauza" @@ -3515,7 +3541,7 @@ msgstr "Wstrzymaj odtwarzanie" msgid "Paused" msgstr "Zatrzymane" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Wykonawca" @@ -3528,9 +3554,9 @@ msgstr "Piksel" msgid "Plain sidebar" msgstr "Zwykły pasek boczny" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Odtwarzaj" @@ -3543,7 +3569,7 @@ msgstr "Odtwarzaj Wykonawcę lub Znacznik" msgid "Play artist radio..." msgstr "Odtwarzaj radio wykonawcy..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Ilość odtworzeń" @@ -3598,7 +3624,7 @@ msgstr "Opcje listy odtwarzania" msgid "Playlist type" msgstr "Typ listy odtwarzania" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listy odtwarzania" @@ -3650,7 +3676,7 @@ msgstr "Wzmocnienie" msgid "Preferences" msgstr "Ustawienia" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Ustawienia..." @@ -3705,7 +3731,7 @@ msgstr "Podgląd" msgid "Previous" msgstr "Wstecz" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Poprzedni utwór" @@ -3719,7 +3745,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Postęp" @@ -3748,16 +3774,16 @@ msgstr "Jakość" msgid "Querying device..." msgstr "Odpytywanie urządzenia..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Menedżer kolejki odtwarzania" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Kolejkuj wybrane ścieżki" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Kolejkuj ścieżkę" @@ -3769,7 +3795,7 @@ msgstr "Radio (równa głośność dla wszystkich ścieżek)" msgid "Radios" msgstr "Radia" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Deszcz" @@ -3801,7 +3827,7 @@ msgstr "Ocena utworu: 4" msgid "Rate the current song 5 stars" msgstr "Ocena utworu: 5" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocena" @@ -3859,7 +3885,7 @@ msgstr "Usuń" msgid "Remove action" msgstr "Usuń akcję" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Usuń duplikaty z playlisty" @@ -3875,7 +3901,7 @@ msgstr "Usuń z Mojej Muzyki" msgid "Remove from favorites" msgstr "Usuń z ulubionych" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Usuń z listy odtwarzania" @@ -3912,7 +3938,7 @@ msgstr "Zmień nazwę listy odtwarzania" msgid "Rename playlist..." msgstr "Zmień nazwę listy odtwarzania..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Ponumeruj utwory według tej kolejności..." @@ -4003,6 +4029,18 @@ msgstr "Powróć do Clementine" msgid "Right" msgstr "Prawy" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4029,7 +4067,7 @@ msgstr "Bezpiecznie usuń urządzenie" msgid "Safely remove the device after copying" msgstr "Bezpiecznie usuń urządzenie po kopiowaniu" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Próbkowanie" @@ -4057,7 +4095,7 @@ msgstr "Zapisz obraz" msgid "Save playlist" msgstr "Zapisz listę odtwarzania" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Zapisz listę odtwarzania..." @@ -4093,7 +4131,7 @@ msgstr "Profil skalowalnego próbkowania (SSR)" msgid "Scale size" msgstr "Wielkość po przeskalowaniu" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Wynik" @@ -4102,7 +4140,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Wysyłaj informacje o utworach, których słucham" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4186,11 +4224,11 @@ msgstr "Przesuń obecnie odtwarzaną ścieżkę o względną wartość" msgid "Seek the currently playing track to an absolute position" msgstr "Przesuń obecnie odtwarzaną ścieżkę do określonej pozycji" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Zaznacz wszystko" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odznacz wszystkie" @@ -4218,7 +4256,7 @@ msgstr "Wybierz wizualizacje" msgid "Select visualizations..." msgstr "Wybierz wizualizacje..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4238,7 +4276,7 @@ msgstr "Szczegóły serwera" msgid "Service offline" msgstr "Usługa niedostępna" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ustaw %1 na \"%2\"..." @@ -4247,7 +4285,7 @@ msgstr "Ustaw %1 na \"%2\"..." msgid "Set the volume to percent" msgstr "Ustaw głośność na procent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Ustaw wartość dla wszystkich zaznaczonych utworów..." @@ -4310,7 +4348,7 @@ msgstr "Pokazuj ładne OSD (menu ekranowe)" msgid "Show above status bar" msgstr "Pokaż ponad paskiem stanu" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Pokaż wszystkie utwory" @@ -4330,12 +4368,12 @@ msgstr "Pokaż separatory" msgid "Show fullsize..." msgstr "Pokaż w pełnej wielkości..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Pokaż w menadżerze plików..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4347,11 +4385,11 @@ msgstr "Pokaż w różni wykonawcy" msgid "Show moodbar" msgstr "Pokaż pasek humoru" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Pokaż tylko duplikaty" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Pokaż tylko nieoznaczone" @@ -4391,7 +4429,7 @@ msgstr "Losuj albumy" msgid "Shuffle all" msgstr "Losuj wszystko" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Wymieszaj listę odtwarzania" @@ -4431,7 +4469,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Przeskocz wstecz w liście odtwarzania" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Ilość przeskoczeń utworu" @@ -4467,7 +4505,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informacje o utworze" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "O utworze" @@ -4499,7 +4537,7 @@ msgstr "Sortuj według" msgid "Sorting" msgstr "Sortowanie" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Źródło" @@ -4535,6 +4573,10 @@ msgstr "Standardowy" msgid "Starred" msgstr "Oznaczone gwiazdką" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Rozpocznij aktualnie odtwarzaną listę" @@ -4550,7 +4592,7 @@ msgid "" "list" msgstr "Zacznij wpisywać frazę w polu powyżej, aby rozpocząć wyszukiwanie" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Uruchamianie %1" @@ -4563,7 +4605,7 @@ msgstr "Uruchamianie..." msgid "Stations" msgstr "Stacje" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Zatrzymaj" @@ -4572,7 +4614,7 @@ msgstr "Zatrzymaj" msgid "Stop after" msgstr "Zatrzymaj po" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Zatrzymaj po tym utworze" @@ -4740,7 +4782,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Okres próbny dla serwera Subsonic wygasł. Zapłać, aby otrzymać klucz licencyjny. Szczegóły na subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4781,7 +4823,7 @@ msgid "" "continue?" msgstr "Te pliki zostaną usunięte z urządzenia. Na pewno chcesz kontynuować?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4853,9 +4895,10 @@ msgstr "Strumień wyłącznie dla płacących subskrybentów" msgid "This type of device is not supported: %1" msgstr "Ten typ urządzenia nie jest obsługiwany: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nazwa" @@ -4877,11 +4920,11 @@ msgstr "Przełącz ładne OSD" msgid "Toggle fullscreen" msgstr "Przełącz tryb pełnoekranowy" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Przełącz stan kolejki" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Włącz scroblowanie" @@ -4913,12 +4956,13 @@ msgstr "Całkowita ilość przesłanych w bajtach" msgid "Total network requests made" msgstr "Całkowita ilość zapytań sieciowych" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Utwór" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transkoduj muzykę" @@ -5016,7 +5060,7 @@ msgstr "Uaktualnij listę odtwarzania w serwisie Grooveshark" msgid "Update all podcasts" msgstr "Uaktualnij wszystkie podcasty" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Odśwież zmienione katalogi biblioteki" @@ -5171,7 +5215,7 @@ msgstr "Pokaż" msgid "Visualization mode" msgstr "Tryb wizualizacji" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Wizualizacje" @@ -5299,7 +5343,7 @@ msgid "" "well?" msgstr "Czy chciałbyś przenieść także inny piosenki z tego albumu do Różnych wykonawców?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Czy chcesz teraz rozpocząć odświeżanie biblioteki?" @@ -5311,10 +5355,10 @@ msgstr "Zapisz wszystkie statystyki w plikach muzycznych" msgid "Wrong username or password." msgstr "Zły login lub hasło." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Rok" diff --git a/src/translations/pt.po b/src/translations/pt.po index cad035a93..981c90c72 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 22:12+0000\n" -"Last-Translator: Sérgio Marques \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/clementine/language/pt/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -171,11 +171,11 @@ msgstr "&Centro" msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Aj&uda" @@ -192,7 +192,7 @@ msgstr "&Ocultar..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Música" @@ -200,15 +200,15 @@ msgstr "&Música" msgid "&None" msgstr "&Nenhum" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lista de re&produção" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Sair" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Modo de &repetição" @@ -216,7 +216,7 @@ msgstr "Modo de &repetição" msgid "&Right" msgstr "Di&reita" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Modo de de&sordenação" @@ -224,7 +224,7 @@ msgstr "Modo de de&sordenação" msgid "&Stretch columns to fit window" msgstr "Ajustar coluna&s à janela" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Ferramen&tas" @@ -369,11 +369,11 @@ msgstr "Abortar" msgid "About %1" msgstr "Sobre o %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Sobre o Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Sobre o Qt..." @@ -421,19 +421,19 @@ msgstr "Adicionar outra emissão..." msgid "Add directory..." msgstr "Adicionar diretório..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Adicionar ficheiro" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Adicionar ficheiro ao conversor" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Adicionar ficheiro(s) ao conversor" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Adicionar ficheiro..." @@ -441,11 +441,11 @@ msgstr "Adicionar ficheiro..." msgid "Add files to transcode" msgstr "Adicionar ficheiros a converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Adicionar pasta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Adicionar pasta..." @@ -457,7 +457,7 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Adicionar podcast..." @@ -533,7 +533,7 @@ msgstr "Adicionar número da faixa" msgid "Add song year tag" msgstr "Adicionar ano" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Adicionar emissão..." @@ -545,7 +545,7 @@ msgstr "Adicionar aos favoritos Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Adicionar às listas de reprodução Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Adicionar noutra lista de reprodução" @@ -606,12 +606,12 @@ msgstr "Após " msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Álbum" @@ -619,7 +619,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -641,11 +641,11 @@ msgstr "Álbuns com capas" msgid "Albums without covers" msgstr "Álbuns sem capas" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Todos os ficheiros (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -772,17 +772,17 @@ msgid "" "the songs of your library?" msgstr "Tem a certeza que pretende gravar as estatísticas e avaliações para todas as faixas da sua coleção?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info do artista" @@ -798,7 +798,7 @@ msgstr "\"Tags\" do artista" msgid "Artist's initial" msgstr "Iniciais do artista" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Formato áudio" @@ -844,7 +844,7 @@ msgstr "Tamanho médio" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -873,7 +873,7 @@ msgstr "A copiar base de dados" msgid "Balance" msgstr "Equilíbrio" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Banir" @@ -902,7 +902,7 @@ msgstr "Melhor" msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de dados" @@ -1008,7 +1008,7 @@ msgstr "A alteração a esta preferência de reprodução produzirá efeito nas msgid "Check for new episodes" msgstr "Procurar novos episódios" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Procurar atualizações..." @@ -1058,11 +1058,11 @@ msgstr "Eliminação" msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Limpar lista de reprodução" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1153,8 +1153,8 @@ msgstr "Clique aqui para adicionar esta lista de reprodução como favorita para msgid "Click to toggle between remaining time and total time" msgstr "Clique para alternar entre tempo restante e tempo total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1192,7 +1192,7 @@ msgstr "Cores" msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista de classes separadas por vírgula: nível entre 0 e 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" @@ -1201,11 +1201,11 @@ msgstr "Comentário" msgid "Complete tags automatically" msgstr "Preencher detalhes automaticamente" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Preencher detalhes automaticamente..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "Configurar Subsonic..." msgid "Configure global search..." msgstr "Configurar procura global..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurar coleção..." @@ -1281,7 +1281,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Ligação expirada. Verifique o URL. Por exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Consola" @@ -1301,12 +1301,12 @@ msgstr "Converter quaisquer faixas não reconhecidas pelo dispositivo" msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copiar para a coleção..." @@ -1328,14 +1328,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Incapaz de criar o elemento GStreamer \"%1\" - certifique-se que tem instalados todos os suplementos necessários" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Incapaz de encontrar o recurso para %1 - certifique-se que tem instalados todos os suplementos necessários" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1352,7 +1352,7 @@ msgid "Couldn't open output file %1" msgstr "Não foi possível abrir o ficheiro %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestor de capas" @@ -1396,11 +1396,11 @@ msgstr "Sobreposição ao mudar automaticamente de faixas" msgid "Cross-fade when changing tracks manually" msgstr "Sobreposição ao mudar manualmente de faixas" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1408,63 +1408,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Seta para baixo" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1507,11 +1507,11 @@ msgid "" "recover your database" msgstr "Foram detetados erros na base de dados. Por favor consulte https://code.google.com/p/clementine-player/wiki/DatabaseCorruption para obter as informações sobre a recuperação das bases de dados" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criação" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificação" @@ -1561,7 +1561,7 @@ msgid "Delete downloaded data" msgstr "Eliminar dados transferidos" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Eliminar ficheiros" @@ -1569,7 +1569,7 @@ msgstr "Eliminar ficheiros" msgid "Delete from device..." msgstr "Eliminar do dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Eliminar do disco..." @@ -1594,15 +1594,16 @@ msgstr "Eliminar ficheiros originais" msgid "Deleting files" msgstr "A eliminar ficheiros" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Retirar da fila as faixas selecionadas" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Retirar esta faixa da fila" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1626,10 +1627,14 @@ msgstr "Nome do dispositivo" msgid "Device properties..." msgstr "Propriedades do dispositivo..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositivos" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Caixa de diálogo" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Será que queria dizer" @@ -1668,8 +1673,8 @@ msgstr "Desativar barra de estado de espírito" msgid "Disabled" msgstr "Inativa" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1686,7 +1691,7 @@ msgstr "Opções de exibição" msgid "Display the on-screen-display" msgstr "Mostrar notificação" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Reanalisar coleção" @@ -1808,6 +1813,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dub" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Duração" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "O modo dinâmico está ativo" @@ -1820,12 +1829,12 @@ msgstr "Combinação aleatória dinâmica" msgid "Edit smart playlist..." msgstr "Editar lista de reprodução inteligente..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Editar \"tag\"..." @@ -1838,7 +1847,7 @@ msgid "Edit track information" msgstr "Editar informações da faixa" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Editar informações da faixa..." @@ -1939,7 +1948,7 @@ msgstr "Introduza este IP na aplicação para se ligar ao Clementine" msgid "Entire collection" msgstr "Toda a coleção" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizador" @@ -1953,7 +1962,7 @@ msgstr "Equivalente a --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Erro" @@ -1973,7 +1982,7 @@ msgstr "Erro ao eliminar faixas" msgid "Error downloading Spotify plugin" msgstr "Erro ao transferir o suplemento Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Erro ao carregar %1" @@ -1983,12 +1992,12 @@ msgstr "Erro ao carregar %1" msgid "Error loading di.fm playlist" msgstr "Erro ao carregar a lista de reprodução di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Erro ao processar %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Erro ao carregar o CD áudio" @@ -2066,27 +2075,27 @@ msgstr "Exportação terminada" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportada(s) %1 de %2 capa(s) (%3 ignoradas)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2113,6 +2122,10 @@ msgstr "Desvanecimento" msgid "Fading duration" msgstr "Duração" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Falha ao ler a unidade de CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Erro ao obter o diretório" @@ -2164,6 +2177,10 @@ msgstr "A obter coleção Subsonic" msgid "Fetching cover error" msgstr "Erro ao obter a capa do álbum" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Formato de ficheiro" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensão do ficheiro" @@ -2172,19 +2189,19 @@ msgstr "Extensão do ficheiro" msgid "File formats" msgstr "Formatos de ficheiro" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome do ficheiro" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nome do ficheiro (sem caminho)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamanho do ficheiro" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2194,7 +2211,7 @@ msgstr "Tipo de ficheiro" msgid "Filename" msgstr "Nome do ficheiro" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Ficheiros" @@ -2314,9 +2331,10 @@ msgstr "Geral" msgid "General settings" msgstr "Definições gerais" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Género" @@ -2348,11 +2366,11 @@ msgstr "Nome:" msgid "Go" msgstr "Procurar" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Ir para o separador seguinte" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Ir para o separador anterior" @@ -2422,7 +2440,7 @@ msgstr "Agrupar por género/álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupo" @@ -2577,6 +2595,10 @@ msgstr "A indexar %1" msgid "Information" msgstr "Informações" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Inserir..." @@ -2589,7 +2611,7 @@ msgstr "Instalado" msgid "Integrity check" msgstr "Verificação de integridade" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2629,6 +2651,10 @@ msgstr "Chave de sessão inválida" msgid "Invalid username and/or password" msgstr "Senha e/ou utilizador inválido" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2653,7 +2679,7 @@ msgstr "As melhores faixas da semana no Jamendo" msgid "Jamendo database" msgstr "Base de dados Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Ir para a faixa em reprodução" @@ -2677,7 +2703,7 @@ msgstr "Executar em segundo plano ao fechar a janela principal" msgid "Keep the original files" msgstr "Manter ficheiros originais" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Gatinhos" @@ -2701,7 +2727,7 @@ msgstr "Capa de álbum grande" msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Última reprodução" @@ -2784,12 +2810,12 @@ msgstr "Deixar em branco para as predefinições. Exemplos: \"/dev/dsp\", \"fron msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Coleção" @@ -2797,7 +2823,7 @@ msgstr "Coleção" msgid "Library advanced grouping" msgstr "Agrupamento avançado da coleção" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Aviso de análise da coleção" @@ -2842,7 +2868,7 @@ msgstr "Carregar capa de álbum no disco..." msgid "Load playlist" msgstr "Carregar lista de reprodução" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Carregar lista de reprodução..." @@ -2871,11 +2897,11 @@ msgstr "A carregar faixas" msgid "Loading stream" msgstr "A carregar emissão" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "A carregar faixas" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "A carregar informação das faixas" @@ -2894,10 +2920,10 @@ msgstr "Carregar ficheiros/URLs, substituindo a lista de reprodução atual" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Iniciar sessão" @@ -2909,7 +2935,7 @@ msgstr "Falha ao iniciar sessão" msgid "Long term prediction profile (LTP)" msgstr "Perfil para predição (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Gosto" @@ -2972,7 +2998,7 @@ msgstr "Transferência Magnatune concluída" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Make it so!" @@ -3055,7 +3081,7 @@ msgstr "Reprodução mono" msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Estado de espírito" @@ -3085,7 +3111,7 @@ msgstr "Pontos de montagem" msgid "Move down" msgstr "Mover para baixo" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mover para a coleção..." @@ -3094,7 +3120,7 @@ msgstr "Mover para a coleção..." msgid "Move up" msgstr "Mover para cima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Música" @@ -3102,7 +3128,7 @@ msgstr "Música" msgid "Music Library" msgstr "Coleção de músicas" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Sem áudio" @@ -3190,7 +3216,7 @@ msgstr "Nunca iniciar a reprodução" msgid "New folder" msgstr "Nova pasta" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nova lista de reprodução" @@ -3214,7 +3240,7 @@ msgstr "Faixas recentes" msgid "Next" msgstr "Seguinte" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Faixa seguinte" @@ -3253,7 +3279,7 @@ msgstr "Sem blocos curtos" msgid "None" msgstr "Nenhum" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nenhuma das faixas selecionadas eram adequadas à cópia para o dispositivo" @@ -3371,7 +3397,7 @@ msgstr "Opacidade" msgid "Open %1 in browser" msgstr "Abrir %1 no navegador" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Abrir CD áudio..." @@ -3387,7 +3413,7 @@ msgstr "Abrir um ficheiro OPML..." msgid "Open device" msgstr "Abrir dispositivo..." -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Abrir ficheiro..." @@ -3422,7 +3448,7 @@ msgstr "Otimizar para taxa de dados" msgid "Optimize for quality" msgstr "Otimizar para qualidade" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opções..." @@ -3434,7 +3460,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizar ficheiros" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizar ficheiros..." @@ -3458,7 +3484,7 @@ msgstr "Destino" msgid "Output device" msgstr "Dispositivo" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opções de saída" @@ -3499,7 +3525,7 @@ msgstr "Festa" msgid "Password" msgstr "Senha" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausa" @@ -3512,7 +3538,7 @@ msgstr "Pausar a reprodução" msgid "Paused" msgstr "Em pausa" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3525,9 +3551,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Barra lateral simples" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Reproduzir" @@ -3540,7 +3566,7 @@ msgstr "Reproduzir artista ou \"tag\"" msgid "Play artist radio..." msgstr "Reproduzir rádio do artista..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Número de reproduções" @@ -3595,7 +3621,7 @@ msgstr "Opções da lista de reprodução" msgid "Playlist type" msgstr "Tipo de lista de reprodução" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listas de reprodução" @@ -3647,7 +3673,7 @@ msgstr "Amplificador" msgid "Preferences" msgstr "Preferências" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferências..." @@ -3702,7 +3728,7 @@ msgstr "Antevisão" msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Faixa anterior" @@ -3716,7 +3742,7 @@ msgid "Profile" msgstr "Perfil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Evolução" @@ -3745,16 +3771,16 @@ msgstr "Qualidade" msgid "Querying device..." msgstr "A consultar dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestor da fila" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Colocar em fila as faixas selecionadas" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Colocar esta faixa na fila" @@ -3766,7 +3792,7 @@ msgstr "Faixa (volume igual para todas as faixas)" msgid "Radios" msgstr "Rádios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Chuva" @@ -3798,7 +3824,7 @@ msgstr "Atribuir 4 estrelas à faixa atual" msgid "Rate the current song 5 stars" msgstr "Atribuir 5 estrelas à faixa atual" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliação" @@ -3856,7 +3882,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Remover ação" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Remover duplicados da lista de reprodução" @@ -3872,7 +3898,7 @@ msgstr "Remover das Minhas músicas" msgid "Remove from favorites" msgstr "Remover dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Remover da lista de reprodução" @@ -3909,7 +3935,7 @@ msgstr "Mudar nome da lista de reprodução" msgid "Rename playlist..." msgstr "Mudar nome da lista de reprodução..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renumerar faixas por esta ordem..." @@ -4000,6 +4026,18 @@ msgstr "Voltar ao Clementine" msgid "Right" msgstr "Direita" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Extrair CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Extrair CD áudio..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4026,7 +4064,7 @@ msgstr "Remover dispositivo em segurança" msgid "Safely remove the device after copying" msgstr "Depois de copiar, remover dispositivo em segurança" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frequência" @@ -4054,7 +4092,7 @@ msgstr "Gravar imagem" msgid "Save playlist" msgstr "Gravar lista de reprodução" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Gravar lista de reprodução..." @@ -4090,7 +4128,7 @@ msgstr "Perfil de taxa de amostragem ajustável (SSR)" msgid "Scale size" msgstr "Escala" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontuação" @@ -4099,7 +4137,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Enviar as faixas que eu oiço" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4183,11 +4221,11 @@ msgstr "Avançar um tempo relativo na faixa atual" msgid "Seek the currently playing track to an absolute position" msgstr "Avançar para uma posição absoluta na faixa atual" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Todas" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nenhuma" @@ -4215,7 +4253,7 @@ msgstr "Escolha as visualizações" msgid "Select visualizations..." msgstr "Escolha as visualizações..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Selecionar..." @@ -4235,7 +4273,7 @@ msgstr "Detalhes do servidor" msgid "Service offline" msgstr "Serviço desligado" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Definir %1 para \"%2\"..." @@ -4244,7 +4282,7 @@ msgstr "Definir %1 para \"%2\"..." msgid "Set the volume to percent" msgstr "Ajustar volume para por cento" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Utilizar valor para todas as faixas selecionadas..." @@ -4307,7 +4345,7 @@ msgstr "Mostrar notificação personalizada" msgid "Show above status bar" msgstr "Mostrar acima da barra de estado" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Mostrar todas as faixas" @@ -4327,12 +4365,12 @@ msgstr "Mostrar separadores" msgid "Show fullsize..." msgstr "Mostrar em ecrã completo..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostrar no gestor de ficheiros..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Mostrar na coleção..." @@ -4344,11 +4382,11 @@ msgstr "Mostrar em vários artistas" msgid "Show moodbar" msgstr "Mostrar barra de estado de espírito" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostrar apenas as repetidas" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Mostrar apenas faixas sem detalhes" @@ -4388,7 +4426,7 @@ msgstr "Desordenar álbuns" msgid "Shuffle all" msgstr "Desordenar tudo" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Desordenar lista de reprodução" @@ -4428,7 +4466,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Recuar na lista de reprodução" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Reproduções ignoradas" @@ -4464,7 +4502,7 @@ msgstr "Rock suave" msgid "Song Information" msgstr "Informações da faixa" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info da faixa" @@ -4496,7 +4534,7 @@ msgstr "Organizar faixas por" msgid "Sorting" msgstr "Organização" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Fonte" @@ -4532,6 +4570,10 @@ msgstr "Padrão" msgid "Starred" msgstr "Com estrela" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Iniciar lista de reprodução atual" @@ -4547,7 +4589,7 @@ msgid "" "list" msgstr "Escreva algo na caixa de procura para preencher a lista de resultados" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "A iniciar %1" @@ -4560,7 +4602,7 @@ msgstr "A iniciar..." msgid "Stations" msgstr "Estações" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Parar" @@ -4569,7 +4611,7 @@ msgstr "Parar" msgid "Stop after" msgstr "Parar após" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Parar após esta faixa" @@ -4737,7 +4779,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "O período de testes do Subsonic terminou. Efetue um donativo para obter uma licença. Consulte subsonic.org para mais detalhes." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4778,7 +4820,7 @@ msgid "" "continue?" msgstr "Estes ficheiros vão ser eliminados do dispositivo. Tem a certeza que quer continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4850,9 +4892,10 @@ msgstr "Só os assinantes têm acesso a esta emissão" msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" @@ -4874,11 +4917,11 @@ msgstr "Alternar notificação" msgid "Toggle fullscreen" msgstr "Trocar para ecrã completo" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Trocar estado da fila" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Alternar envio" @@ -4910,12 +4953,13 @@ msgstr "Total de dados transferidos" msgid "Total network requests made" msgstr "Total de pedidos efetuados" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Faixa" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Conversão de ficheiros" @@ -5013,7 +5057,7 @@ msgstr "Atualizar lista de reprodução Grooveshark" msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Atualizar pastas alteradas" @@ -5168,7 +5212,7 @@ msgstr "Ver" msgid "Visualization mode" msgstr "Modo de visualização" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualizações" @@ -5296,7 +5340,7 @@ msgid "" "well?" msgstr "Pretende mover as outras faixas deste álbum para Vários artistas?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Pretende executar a nova análise?" @@ -5308,10 +5352,10 @@ msgstr "Gravar todas as estatísticas nos detalhes dos ficheiros" msgid "Wrong username or password." msgstr "Nome de utilizador ou senha inválido(a)" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Ano" diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index d8c45edaf..70aa719c0 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -6,6 +6,7 @@ # salmora8 , 2013-2014 # amiltonpc , 2013 # bedi1982 , 2012 +# carlo_valente , 2014 # FIRST AUTHOR , 2010 # Israel IsraeLins , 2012 # aramaicus , 2013 @@ -16,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-17 18:53+0000\n" -"Last-Translator: salmora8 \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/clementine/language/pt_BR/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -175,11 +176,11 @@ msgstr "&Centro" msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Ajuda" @@ -196,7 +197,7 @@ msgstr "&Ocultar..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Música" @@ -204,15 +205,15 @@ msgstr "Música" msgid "&None" msgstr "&Nenhum" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Lista de Reprodução" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Sair" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Mode de Repetição" @@ -220,7 +221,7 @@ msgstr "&Mode de Repetição" msgid "&Right" msgstr "&Direita" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Modo aleatório" @@ -228,7 +229,7 @@ msgstr "Modo aleatório" msgid "&Stretch columns to fit window" msgstr "&Esticar colunas para ajustar a janela" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Ferramentas" @@ -373,11 +374,11 @@ msgstr "Abortar" msgid "About %1" msgstr "Sobre %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Sobre o Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Sobre o Qt..." @@ -425,19 +426,19 @@ msgstr "Adicionar outro canal..." msgid "Add directory..." msgstr "Adicionar diretório..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Adicionar Arquivo" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Adicionar arquivo para conversor" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Adicionar arquivo(s) para conversor" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Adicionar arquivo..." @@ -445,11 +446,11 @@ msgstr "Adicionar arquivo..." msgid "Add files to transcode" msgstr "Adicionar arquivos para converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Adicionar pasta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Adicionar pasta..." @@ -461,7 +462,7 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Adicionar Podcast..." @@ -537,7 +538,7 @@ msgstr "Adicionar a tag faixa da música" msgid "Add song year tag" msgstr "Adicionar a tag ano da música" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Adicionar transmissão..." @@ -549,7 +550,7 @@ msgstr "Adicionar às favoritas do Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Adicionar à lista de reprodução Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Adicionar à outra lista de reprodução" @@ -610,12 +611,12 @@ msgstr "Depois" msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Álbum" @@ -623,7 +624,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -645,11 +646,11 @@ msgstr "Álbuns com capas" msgid "Albums without covers" msgstr "Álbuns sem capas" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Todos os arquivos (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Toda a Glória para o Hypnotoad!" @@ -776,17 +777,17 @@ msgid "" "the songs of your library?" msgstr "Tem certeza de que deseja escrever estatísticas de música em arquivo de músicas para todas as músicas da sua biblioteca?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Sobre o Artista" @@ -802,7 +803,7 @@ msgstr "Tags do artista" msgid "Artist's initial" msgstr "Inicial do artista" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Formato de áudio" @@ -848,7 +849,7 @@ msgstr "Tamanho médio de imagem" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -877,7 +878,7 @@ msgstr "Cópia do banco de dados" msgid "Balance" msgstr "Balança" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Não curti" @@ -906,7 +907,7 @@ msgstr "Melhor" msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" @@ -1012,7 +1013,7 @@ msgstr "Alterar a saída mono terá efeito para as próximas músicas a serem to msgid "Check for new episodes" msgstr "Procurar por novos episódios" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Procurar por atualizações..." @@ -1062,11 +1063,11 @@ msgstr "Limpando" msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Limpar lista de reprodução" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1157,8 +1158,8 @@ msgstr "Clique aqui para favoritar esta lista de reprodução, para ser salva e msgid "Click to toggle between remaining time and total time" msgstr "Clique para alternar entre tempo restante e tempo total" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1196,7 +1197,7 @@ msgstr "Cores" msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por vírgulas de classe: o nível, o nível é 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" @@ -1205,11 +1206,11 @@ msgstr "Comentário" msgid "Complete tags automatically" msgstr "Completar tags automaticamente" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Preencher tags automaticamente..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1248,7 +1249,7 @@ msgstr "Configurar Subsonic..." msgid "Configure global search..." msgstr "Configurar busca global..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurar biblioteca..." @@ -1285,7 +1286,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Conexão expirou, verifique a URL do servidor. Exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Painel" @@ -1305,12 +1306,12 @@ msgstr "Converter qualquer música que o dispositivo não puder tocar" msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copiar para biblioteca..." @@ -1332,14 +1333,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Incapaz de criar o elemento GStreamer \"%1\" - confira se você possui todos os plugins requeridos pelo GStreamer instalados" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Não foi possível encontrar um multiplexador para %1, verifique se você tem os plugins corretos do GStreamer instalados" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1356,7 +1357,7 @@ msgid "Couldn't open output file %1" msgstr "Não foi possível abrir o arquivo de saída %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gerenciador de capas" @@ -1400,11 +1401,11 @@ msgstr "Transição suave quando mudar de faixa automaticamente" msgid "Cross-fade when changing tracks manually" msgstr "Transição suave quando mudar de faixa manualmente" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1412,63 +1413,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1511,11 +1512,11 @@ msgid "" "recover your database" msgstr "Banco de dados corrompido detectado. Por favor, leia https://code.google.com/p/clementine-player/wiki/Database para instruções de como recuperar seu banco de dados" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criação" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificação" @@ -1565,7 +1566,7 @@ msgid "Delete downloaded data" msgstr "Apagar dados baixados" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Excluir arquivos" @@ -1573,7 +1574,7 @@ msgstr "Excluir arquivos" msgid "Delete from device..." msgstr "Apagar do dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Apagar do disco..." @@ -1598,15 +1599,16 @@ msgstr "Apagar os arquivos originais" msgid "Deleting files" msgstr "Apagando arquivos" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Retirar faixas selecionadas da fila" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Retirar faixa da fila" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1630,10 +1632,14 @@ msgstr "Nome do dispositivo" msgid "Device properties..." msgstr "Propriedades do dispositivo..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispositivos" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Diálogo" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Você quis dizer" @@ -1672,8 +1678,8 @@ msgstr "Desabilitar criação da moodbar." msgid "Disabled" msgstr "Desativado" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1690,7 +1696,7 @@ msgstr "Opções de exibição" msgid "Display the on-screen-display" msgstr "Mostrar na tela" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Reescanear por completo a biblioteca" @@ -1812,6 +1818,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Duração" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Modo dinâmico ligado" @@ -1824,12 +1834,12 @@ msgstr "Mix aleatório dinâmico" msgid "Edit smart playlist..." msgstr "Editar lista de reprodução inteligente..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Editar tag..." @@ -1842,7 +1852,7 @@ msgid "Edit track information" msgstr "Editar informações da faixa" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Editar informações da faixa..." @@ -1943,7 +1953,7 @@ msgstr "Digite este IP no Aplicativo para conectar ao Clementine." msgid "Entire collection" msgstr "Toda a coletânia" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizador" @@ -1957,7 +1967,7 @@ msgstr "Equivalente ao --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Erro" @@ -1977,7 +1987,7 @@ msgstr "Erro ao apagar músicas" msgid "Error downloading Spotify plugin" msgstr "Erro ao baixar o plugin Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Erro carregando %1" @@ -1987,12 +1997,12 @@ msgstr "Erro carregando %1" msgid "Error loading di.fm playlist" msgstr "Erro carregando a lista de reprodução: di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Erro processando %1:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Erro ao carregar o CD de áudio" @@ -2070,27 +2080,27 @@ msgstr "Exportação terminou" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportado %1 capa(s) de %2 (%3 pulado)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2117,6 +2127,10 @@ msgstr "Diminuindo" msgid "Fading duration" msgstr "Duração da dimunuição" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Falha ao ler o CD" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Falha ao acessar o diretório" @@ -2168,6 +2182,10 @@ msgstr "Buscando biblioteca Subsonic" msgid "Fetching cover error" msgstr "Erro ao buscar a capa" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Formato de arquivo" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensão de arquivo" @@ -2176,19 +2194,19 @@ msgstr "Extensão de arquivo" msgid "File formats" msgstr "Formatos de arquivo" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome de arquivo" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nome do arquivo (sem pasta)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamanho do arquivo" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2198,7 +2216,7 @@ msgstr "Tipo de arquivo" msgid "Filename" msgstr "Nome do arquivo" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Arquivos" @@ -2318,9 +2336,10 @@ msgstr "Geral" msgid "General settings" msgstr "Configurações gerais" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gênero" @@ -2352,11 +2371,11 @@ msgstr "Nome da transmissão:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Ir até a aba do próximo playlist" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Ir até a aba lista de reprodução anterior" @@ -2426,7 +2445,7 @@ msgstr "Organizar por Gênero/Álbum" msgid "Group by Genre/Artist/Album" msgstr "Organizar por Gênero/Artista/Álbum" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupamento" @@ -2581,6 +2600,10 @@ msgstr "Indexando %1" msgid "Information" msgstr "Informação" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Inserir..." @@ -2593,7 +2616,7 @@ msgstr "Instalado" msgid "Integrity check" msgstr "Verificar integridade" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2633,6 +2656,10 @@ msgstr "Chave de sessão inválida" msgid "Invalid username and/or password" msgstr "Usuário e/ou senha inválido(s)" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2657,7 +2684,7 @@ msgstr "Faixas principais no Jamendo esta semana" msgid "Jamendo database" msgstr "Banco de dados Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Pular para a faixa em execução" @@ -2681,7 +2708,7 @@ msgstr "Continuar executando quando a janela é fechada" msgid "Keep the original files" msgstr "Manter arquivos originais" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Gatinhos" @@ -2705,7 +2732,7 @@ msgstr "Capa grande de álbum" msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Última reprodução" @@ -2788,12 +2815,12 @@ msgstr "Deixe em branco por padrão. Exemplos: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Biblioteca" @@ -2801,7 +2828,7 @@ msgstr "Biblioteca" msgid "Library advanced grouping" msgstr "Organização avançada de biblioteca" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Aviso de reescaneamento da biblioteca" @@ -2846,7 +2873,7 @@ msgstr "Carregar capa do disco..." msgid "Load playlist" msgstr "Carregar lista de reprodução" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Carregar lista de reprodução..." @@ -2875,11 +2902,11 @@ msgstr "Carregando músicas" msgid "Loading stream" msgstr "Carregando transmissão" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Carregando faixas" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Carregando informações da faixa" @@ -2898,10 +2925,10 @@ msgstr "Carregar arquivos/sites, substiuindo a lista de reprodução atual" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Login" @@ -2913,7 +2940,7 @@ msgstr "Falha ao conectar" msgid "Long term prediction profile (LTP)" msgstr "Perfil de previsão a longo prazo (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Curtir" @@ -2976,7 +3003,7 @@ msgstr "Download do Magnatune finalizado" msgid "Main profile (MAIN)" msgstr "Menu perfil (PRINCIPAL)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Agora!" @@ -3059,7 +3086,7 @@ msgstr "Saída Mono" msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Modo" @@ -3089,7 +3116,7 @@ msgstr "Pontos de montagem" msgid "Move down" msgstr "Para baixo" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mover para biblioteca..." @@ -3098,7 +3125,7 @@ msgstr "Mover para biblioteca..." msgid "Move up" msgstr "Para cima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Música" @@ -3106,7 +3133,7 @@ msgstr "Música" msgid "Music Library" msgstr "Biblioteca de Músicas" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mudo" @@ -3194,7 +3221,7 @@ msgstr "Nunca iniciar tocando" msgid "New folder" msgstr "Nova pasta" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nova lista de reprodução" @@ -3218,7 +3245,7 @@ msgstr "Faixas mais recentes" msgid "Next" msgstr "Próximo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Próxima faixa" @@ -3257,7 +3284,7 @@ msgstr "Sem blocos curtos" msgid "None" msgstr "Nenhum" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nenhuma das músicas selecionadas estão adequadas para copiar para um dispositivo" @@ -3375,7 +3402,7 @@ msgstr "Opacidade" msgid "Open %1 in browser" msgstr "Abrir %1 no browser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Abrir CD de &áudio..." @@ -3391,7 +3418,7 @@ msgstr "Abrir arquivo OPML..." msgid "Open device" msgstr "Abrir dispositivo" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Abrir arquivo..." @@ -3426,7 +3453,7 @@ msgstr "Otimizar por taxa de bits" msgid "Optimize for quality" msgstr "Otimizar por qualidade" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opções..." @@ -3438,7 +3465,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizar Arquivos" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizar arquivos..." @@ -3462,7 +3489,7 @@ msgstr "Saída" msgid "Output device" msgstr "Dispositivo de saída" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opções de Saída" @@ -3503,7 +3530,7 @@ msgstr "Festa" msgid "Password" msgstr "Senha" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pausar" @@ -3516,7 +3543,7 @@ msgstr "Pausar reprodução" msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Artista" @@ -3529,9 +3556,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Barra lateral simples" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Reproduzir" @@ -3544,7 +3571,7 @@ msgstr "Reproduzir Artista ou Tag" msgid "Play artist radio..." msgstr "Reproduzir rádio do artista..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Número de reproduções" @@ -3599,7 +3626,7 @@ msgstr "Opções da lista de reprodução" msgid "Playlist type" msgstr "Tipo de lista de reprodução" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Listas de reprodução" @@ -3651,7 +3678,7 @@ msgstr "Pré-amplificação" msgid "Preferences" msgstr "Preferências" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferências..." @@ -3706,7 +3733,7 @@ msgstr "Pré-visualização" msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Faixa anterior" @@ -3720,7 +3747,7 @@ msgid "Profile" msgstr "Perfil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Andamento" @@ -3749,16 +3776,16 @@ msgstr "Qualidade" msgid "Querying device..." msgstr "Consultando dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gerenciador de Fila" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Colocar as faixas selecionadas na fila" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Colocar a faixa na fila" @@ -3770,7 +3797,7 @@ msgstr "Rádio (volume igual para todas as faixas)" msgid "Radios" msgstr "Rádios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Chuva" @@ -3802,7 +3829,7 @@ msgstr "Classificar a música atual com 4 estrelas" msgid "Rate the current song 5 stars" msgstr "Classificar a música atual com 5 estrelas" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliação" @@ -3860,7 +3887,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Remover ação" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Remover duplicados da lista de reprodução" @@ -3876,7 +3903,7 @@ msgstr "Remover de Minha Música" msgid "Remove from favorites" msgstr "Remover dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Remover da lista de reprodução" @@ -3913,7 +3940,7 @@ msgstr "Renomear lista de reprodução" msgid "Rename playlist..." msgstr "Renomear lista de reprodução..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Renumerar faixas nesta ordem..." @@ -4004,6 +4031,18 @@ msgstr "Voltar ao Clementine" msgid "Right" msgstr "Direita" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Extrair CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Extrair CD de áudio..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4030,7 +4069,7 @@ msgstr "Remover o dispositivo com segurança" msgid "Safely remove the device after copying" msgstr "Remover o dispositivo com segurança após copiar" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Taxa de amostragem" @@ -4058,7 +4097,7 @@ msgstr "Salvar imagem" msgid "Save playlist" msgstr "Salvar lista de reprodução" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Salvar lista de reprodução..." @@ -4094,7 +4133,7 @@ msgstr "Perfil evolutivo taxa de amostragem (SSR)" msgid "Scale size" msgstr "Tamanho de escala" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontuação" @@ -4103,7 +4142,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Adicionar ao meu perfil os dados das músicas que eu ouvir" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4187,11 +4226,11 @@ msgstr "Avançar na faixa atual por um tempo relativo" msgid "Seek the currently playing track to an absolute position" msgstr "Avançar na faixa atual para uma posição absoluta" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Selecionar Tudo" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Desmarcar Tudo" @@ -4219,7 +4258,7 @@ msgstr "Selecionar visualizações" msgid "Select visualizations..." msgstr "Selecione as visualizações..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Selecionar..." @@ -4239,7 +4278,7 @@ msgstr "Detalhes do servidor" msgid "Service offline" msgstr "Serviço indisponível" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Mudar %1 para \"%2\"..." @@ -4248,7 +4287,7 @@ msgstr "Mudar %1 para \"%2\"..." msgid "Set the volume to percent" msgstr "Mudar volume para por cento" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Mudar o valor para todas as faixas selecionadas..." @@ -4311,7 +4350,7 @@ msgstr "Mostrar aviso estilizado na tela" msgid "Show above status bar" msgstr "Mostrar acima da barra de status" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Mostrar todas as músicas" @@ -4331,12 +4370,12 @@ msgstr "Mostrar divisores" msgid "Show fullsize..." msgstr "Exibir em tamanho real..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mostrar no navegador de arquivos..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Mostrar na biblioteca..." @@ -4348,11 +4387,11 @@ msgstr "Exibir em vários artistas" msgid "Show moodbar" msgstr "Exibir moodbar" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Mostrar somente os duplicados" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Mostrar somente os sem tag" @@ -4392,7 +4431,7 @@ msgstr "Embaralhar albuns" msgid "Shuffle all" msgstr "Embaralhar tudo" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Embaralhar lista de reprodução" @@ -4432,7 +4471,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Pular para a música anterior da lista" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Número de pulos" @@ -4468,7 +4507,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informações da Música" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Sobre a Música" @@ -4500,7 +4539,7 @@ msgstr "Organizar músicas por" msgid "Sorting" msgstr "Organizando" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Fonte" @@ -4536,6 +4575,10 @@ msgstr "Padrão" msgid "Starred" msgstr "Favoritos" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Iniciar a lista que está em execução" @@ -4551,7 +4594,7 @@ msgid "" "list" msgstr "Comece a digitar algo na caixa de pesquisa para preencher esta lista de resultados." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Iniciando %1" @@ -4564,7 +4607,7 @@ msgstr "Iniciando..." msgid "Stations" msgstr "Estações" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Parar" @@ -4573,7 +4616,7 @@ msgstr "Parar" msgid "Stop after" msgstr "Parar depois" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Parar depois desta música" @@ -4741,7 +4784,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "O período de testes para o servidor Subsonic acabou. Por favor, doe para obter uma chave de licença. Visite subsonic.org para mais detalhes." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4782,7 +4825,7 @@ msgid "" "continue?" msgstr "Estes arquivos serão deletados do dispositivo, tem certeza que deseja continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4854,9 +4897,10 @@ msgstr "Este canal é apenas para assinantes" msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tí­tulo" @@ -4878,11 +4922,11 @@ msgstr "Ativar/desativar Pretty OSD" msgid "Toggle fullscreen" msgstr "Ativar/desativar tela cheia" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Mudar status da fila" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Ativar/desativar scrobbling" @@ -4914,12 +4958,13 @@ msgstr "Total de bytes transferido" msgid "Total network requests made" msgstr "Total de requisições de rede feitas" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Faixa" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Converter Música" @@ -5017,7 +5062,7 @@ msgstr "Atualizar lista de reprodução Grooveshark" msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Atualizar pastas da biblioteca modificadas" @@ -5172,7 +5217,7 @@ msgstr "Exibir" msgid "Visualization mode" msgstr "Modo de visualização" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualizações" @@ -5300,7 +5345,7 @@ msgid "" "well?" msgstr "Gostaria de mover as outras músicas deste álbum para Vários Artistas?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Gostaria de realizar um reescaneamento completo agora?" @@ -5312,10 +5357,10 @@ msgstr "Escrever todas as estatísticas de músicas em arquivos de canções" msgid "Wrong username or password." msgstr "Nome de usuário ou senha incorreta." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Ano" diff --git a/src/translations/ro.po b/src/translations/ro.po index ded423b87..e99c070c0 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/clementine/language/ro/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "&Centrat" msgid "&Custom" msgstr "&Personalizat" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Ajutor" @@ -190,7 +190,7 @@ msgstr "&Ascunde..." msgid "&Left" msgstr "La &stânga" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Muzică" @@ -198,15 +198,15 @@ msgstr "&Muzică" msgid "&None" msgstr "&Nespecificat" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Listă de redare" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Ieși" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Mod repetitiv" @@ -214,7 +214,7 @@ msgstr "Mod repetitiv" msgid "&Right" msgstr "La &dreapta" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Mod &aleator" @@ -222,7 +222,7 @@ msgstr "Mod &aleator" msgid "&Stretch columns to fit window" msgstr "&Îngustează coloanele pentru a se potrivi în fereastră" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Unelte" @@ -367,11 +367,11 @@ msgstr "" msgid "About %1" msgstr "Despre %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Despre Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Despre Qt..." @@ -419,19 +419,19 @@ msgstr "Adaugă alt flux..." msgid "Add directory..." msgstr "Adaugă dosar..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Adaugă fisier" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Adaugă fișier..." @@ -439,11 +439,11 @@ msgstr "Adaugă fișier..." msgid "Add files to transcode" msgstr "Adaugă fișiere pentru transcodat" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Adaugă dosar" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Adăugă dosar..." @@ -455,7 +455,7 @@ msgstr "Adaugă un dosar nou..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -531,7 +531,7 @@ msgstr "Adaugă tagul de pistă al melodiei" msgid "Add song year tag" msgstr "Adaugă tagul de an al melodiei" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Adaugă flux..." @@ -543,7 +543,7 @@ msgstr "Adaugă la favoritele Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Adaugă la listele de redare Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Adaugă la altă listă de redare" @@ -604,12 +604,12 @@ msgstr "" msgid "After copying..." msgstr "După copiere..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -617,7 +617,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volum ideal pentru toate piesele)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "Albume cu coperți" msgid "Albums without covers" msgstr "Albume fără coperți" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Toate fișierele (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Glorie Hypnotoadului!" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Info artist" @@ -796,7 +796,7 @@ msgstr "Etichetele artistului" msgid "Artist's initial" msgstr "Inițiala artistului" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Format audio" @@ -842,7 +842,7 @@ msgstr "Dimensiunea medie a imaginii" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Blochează" @@ -900,7 +900,7 @@ msgstr "Optim" msgid "Biography from %1" msgstr "Biografie de la %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Rată de biți" @@ -1006,7 +1006,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Verifică după actualizări..." @@ -1056,11 +1056,11 @@ msgstr "" msgid "Clear" msgstr "Golește" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Golește lista de redare" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Click aici pentru a comuta între timpul rămas şi durata totală" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "Listă separată prin virgulă de clasă:nivel, nivel este 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentariu" @@ -1199,11 +1199,11 @@ msgstr "Comentariu" msgid "Complete tags automatically" msgstr "Completează etichetele automat" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Taguri complete în mod automat ..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Configurează biblioteca..." @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1299,12 +1299,12 @@ msgstr "Convertește muzica pe care nu o poate reda dispozitivul" msgid "Copy to clipboard" msgstr "Copiază în clipboard" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiază pe dispozitiv..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Copiază în bibliotecă..." @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nu este posibilă crearea elementului GStreamer \"%1\" - asiguraţi-vă că aveţi toate plugin-urile necesare GStreamer instalat" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nu s-a putut găsi un muxer de %1, verifică dacă ai instalat plugin-uri corecte GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "Nu s-a putut deschide fișierul de ieșire %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Gestionar de coperți" @@ -1394,11 +1394,11 @@ msgstr "Cross-fade la schimbarea automată a pieselor" msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade la schimbarea manuală a pieselor" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data creării" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data modificării" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Șterge fișiere" @@ -1567,7 +1567,7 @@ msgstr "Șterge fișiere" msgid "Delete from device..." msgstr "Șterge de pe dispozitiv..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Șterge de pe disc..." @@ -1592,15 +1592,16 @@ msgstr "Șterge fișierele originale" msgid "Deleting files" msgstr "Se șterg fișierele" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Elimină melodiile selectate din coadă" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Elimină melodie din coadă" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinaţie" @@ -1624,10 +1625,14 @@ msgstr "Numele dispozitivului" msgid "Device properties..." msgstr "Dispozitiv de proprietăți..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Dispozitive" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Aţi vrut să spuneți" @@ -1666,8 +1671,8 @@ msgstr "" msgid "Disabled" msgstr "Dezactivat" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1684,7 +1689,7 @@ msgstr "Afișează opțiunile" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Efectuează o scanare completa la librăriei" @@ -1806,6 +1811,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Modul dinamic este pornit" @@ -1818,12 +1827,12 @@ msgstr "Mix aleator dinamic" msgid "Edit smart playlist..." msgstr "Editare listă de redare inteligentă..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Modifică etichetă..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "Modifică informații melodie" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Modifică informații melodie..." @@ -1937,7 +1946,7 @@ msgstr "" msgid "Entire collection" msgstr "Toată colecția" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Egalizator" @@ -1951,7 +1960,7 @@ msgstr "Echivalent cu --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Eroare" @@ -1971,7 +1980,7 @@ msgstr "Eroare ștergere melodii" msgid "Error downloading Spotify plugin" msgstr "Eroare la descărcarea pluginului Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Eroare încărcare %1" @@ -1981,12 +1990,12 @@ msgstr "Eroare încărcare %1" msgid "Error loading di.fm playlist" msgstr "Eroare la încărcarea liste de redare last.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Eroare procesare %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Eroare la încărcarea CD-ului audio" @@ -2064,27 +2073,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "" msgid "Fading duration" msgstr "Durată fade" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2162,6 +2175,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Eroare la obținerea coperții de album" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Extensie fișier" @@ -2170,19 +2187,19 @@ msgstr "Extensie fișier" msgid "File formats" msgstr "Formate de fișier" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nume fișier" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Nume fișier (fără cale)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dimensiune fișier" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "Tip fișier" msgid "Filename" msgstr "Nume de fișier" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fișiere" @@ -2312,9 +2329,10 @@ msgstr "" msgid "General settings" msgstr "Setări generale" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gen" @@ -2346,11 +2364,11 @@ msgstr "Dați-i un nume:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Mergi la fila listei de redare următoare" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Mergi la fila listei de redare precedente" @@ -2420,7 +2438,7 @@ msgstr "Grupează după gen/album" msgid "Group by Genre/Artist/Album" msgstr "Grupează după gen/artist/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2575,6 +2593,10 @@ msgstr "" msgid "Information" msgstr "Informații" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Introduce..." @@ -2587,7 +2609,7 @@ msgstr "Instalat" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2627,6 +2649,10 @@ msgstr "Cheie de sesiune invalidă" msgid "Invalid username and/or password" msgstr "Nume de utilizator și/sau parolă incorect(e)" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Jamedo melodii de top ale săptămănii" msgid "Jamendo database" msgstr "Jamendo bază de date" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Salt la melodia în curs de redare" @@ -2675,7 +2701,7 @@ msgstr "Mențineți rularea în fundal atunci când fereastra este închisă" msgid "Keep the original files" msgstr "Mențineți fișierele originale" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Pisoi" @@ -2699,7 +2725,7 @@ msgstr "Copertă de album mare" msgid "Large sidebar" msgstr "Bară laterală mare" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Ultimele redate" @@ -2782,12 +2808,12 @@ msgstr "Lăsați necompletat pentru implicit. Exemple: \"/ dev /dsp\", \"front\" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durată" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotecă" @@ -2795,7 +2821,7 @@ msgstr "Bibliotecă" msgid "Library advanced grouping" msgstr "Grupare avansată bibliotecă" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2840,7 +2866,7 @@ msgstr "Încarcă coperta pentru disc..." msgid "Load playlist" msgstr "Încarcă listă de redare" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Încarcă listă de redare..." @@ -2869,11 +2895,11 @@ msgstr "Încărcare melodii" msgid "Loading stream" msgstr "Se încarcă fluxul" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Încărcare melodii" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Încărcare info melodii" @@ -2892,10 +2918,10 @@ msgstr "Încarcă fișiere/URL-uri, înlocuind lista de redare curentă" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Logare" @@ -2907,7 +2933,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "Profil de predicție pe termen lung (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Iubește" @@ -2970,7 +2996,7 @@ msgstr "Descărcarea Magnatune completă" msgid "Main profile (MAIN)" msgstr "Profil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3053,7 +3079,7 @@ msgstr "" msgid "Months" msgstr "Luni" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3083,7 +3109,7 @@ msgstr "Puncte de montură" msgid "Move down" msgstr "Mută in jos" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Mută în bibliotecă..." @@ -3092,7 +3118,7 @@ msgstr "Mută în bibliotecă..." msgid "Move up" msgstr "Mută in sus" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3100,7 +3126,7 @@ msgstr "" msgid "Music Library" msgstr "Biblioteca audio" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Mut" @@ -3188,7 +3214,7 @@ msgstr "Nu începe redarea niciodată" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Listă de redare nouă" @@ -3212,7 +3238,7 @@ msgstr "Cele mai noi melodii" msgid "Next" msgstr "Următoarea" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Melodia următoare" @@ -3251,7 +3277,7 @@ msgstr "Fără blocuri scurte" msgid "None" msgstr "Niciunul" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3369,7 +3395,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "Deschide %1 in browser" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Deschide CD &audio..." @@ -3385,7 +3411,7 @@ msgstr "" msgid "Open device" msgstr "Deschide dispozitiv" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Deschide fișier..." @@ -3420,7 +3446,7 @@ msgstr "Optimizează pentru rată de biți" msgid "Optimize for quality" msgstr "Optimizează pentru calitate" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opțiuni..." @@ -3432,7 +3458,7 @@ msgstr "" msgid "Organise Files" msgstr "Organizează Fișiere" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organizează fișiere..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Opțiuni ieșire" @@ -3497,7 +3523,7 @@ msgstr "Petrecere" msgid "Password" msgstr "Parolă" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pauză" @@ -3510,7 +3536,7 @@ msgstr "Întrerupe redarea" msgid "Paused" msgstr "În pauză" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "Bară laterală simplă" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Redă" @@ -3538,7 +3564,7 @@ msgstr "Ascultă Artist sau Tag" msgid "Play artist radio..." msgstr "Ascultă radio artist..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Număr ascultări" @@ -3593,7 +3619,7 @@ msgstr "Opțiuni listă de redare" msgid "Playlist type" msgstr "Tipul listei de redare" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Liste de redare" @@ -3645,7 +3671,7 @@ msgstr "Preamplificare" msgid "Preferences" msgstr "Preferinţe" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Preferinţe..." @@ -3700,7 +3726,7 @@ msgstr "Previzualizare" msgid "Previous" msgstr "Precedenta" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Melodia precedentă" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progres" @@ -3743,16 +3769,16 @@ msgstr "Calitate" msgid "Querying device..." msgstr "Interoghez dispozitiv..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Gestionar de listă" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Adaugă în coadă melodiile selectate" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Adaugă în coadă melodia" @@ -3764,7 +3790,7 @@ msgstr "" msgid "Radios" msgstr "Radiouri" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Ploaie" @@ -3796,7 +3822,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3854,7 +3880,7 @@ msgstr "Elimină" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3870,7 +3896,7 @@ msgstr "" msgid "Remove from favorites" msgstr "Scoate din favorite" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Elimină din lista de redare" @@ -3907,7 +3933,7 @@ msgstr "Redenumește listă de redare" msgid "Rename playlist..." msgstr "Redenumește listă de redare..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3998,6 +4024,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4024,7 +4062,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Rată de eșantionare" @@ -4052,7 +4090,7 @@ msgstr "Salvează imagine" msgid "Save playlist" msgstr "Salvează listă de redare" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Salvează listă de redare..." @@ -4088,7 +4126,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Scor" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Selectează Tot" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4213,7 +4251,7 @@ msgstr "Selectează vizualizări" msgid "Select visualizations..." msgstr "Selectează vizualizări..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "" msgid "Service offline" msgstr "Serviciu offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4242,7 +4280,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4305,7 +4343,7 @@ msgstr "Arată un OSD drăguț" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Arată toate melodiile" @@ -4325,12 +4363,12 @@ msgstr "Arată separatori" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Arată în browser-ul de fișiere..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "Arată în artiști diferiți" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Arată numai duplicatele" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Arată numai fără taguri" @@ -4386,7 +4424,7 @@ msgstr "Amestecă albume" msgid "Shuffle all" msgstr "Amestecă tot" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Amestecă lista de melodii" @@ -4426,7 +4464,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Sare în listă înapoi" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4462,7 +4500,7 @@ msgstr "" msgid "Song Information" msgstr "Informații melodie" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Info melodie" @@ -4494,7 +4532,7 @@ msgstr "Sortează melodii după" msgid "Sorting" msgstr "Sortare" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4530,6 +4568,10 @@ msgstr "Standard" msgid "Starred" msgstr "Cu steluță" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Pornire %1" @@ -4558,7 +4600,7 @@ msgstr "Pornire..." msgid "Stations" msgstr "Posturi" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Oprește" @@ -4567,7 +4609,7 @@ msgstr "Oprește" msgid "Stop after" msgstr "Oprește după" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Oprește după pista aceasta" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titlu" @@ -4872,11 +4915,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4908,12 +4951,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pistă" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transcodează Muzică" @@ -5011,7 +5055,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Actualizează foldere schimbate din bibliotecă" @@ -5166,7 +5210,7 @@ msgstr "Vizualizare" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizări" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5306,10 +5350,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "An" diff --git a/src/translations/ru.po b/src/translations/ru.po index 64538547e..8d773438c 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/clementine/language/ru/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -188,11 +188,11 @@ msgstr "По &центру" msgid "&Custom" msgstr "&Другой" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Дополнения" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Помощь" @@ -209,7 +209,7 @@ msgstr "Скрыть..." msgid "&Left" msgstr "По &левому краю" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Музыка" @@ -217,15 +217,15 @@ msgstr "Музыка" msgid "&None" msgstr "&Нет" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Список воспроизведения" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Выход" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Режим повтора" @@ -233,7 +233,7 @@ msgstr "Режим повтора" msgid "&Right" msgstr "По &правому краю" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Случайное воспроизведение" @@ -241,7 +241,7 @@ msgstr "Случайное воспроизведение" msgid "&Stretch columns to fit window" msgstr "Выровнять поля по размеру окна" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Инструменты" @@ -386,11 +386,11 @@ msgstr "Прервать" msgid "About %1" msgstr "О «%1»" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "О программе Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Информация о Qt..." @@ -438,19 +438,19 @@ msgstr "Добавить другой поток…" msgid "Add directory..." msgstr "Добавить каталог…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Добавить файл" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Добавить файл для перекодирования" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Добавить файлы для перекодирования" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Добавить файл..." @@ -458,11 +458,11 @@ msgstr "Добавить файл..." msgid "Add files to transcode" msgstr "Добавить файлы для перекодирования" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Добавить папку" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Добавить папку…" @@ -474,7 +474,7 @@ msgstr "Добавить новую папку..." msgid "Add podcast" msgstr "Добавить подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Добавить подкаст..." @@ -550,7 +550,7 @@ msgstr "Добавить тег \"Номер дорожки\"" msgid "Add song year tag" msgstr "Добавить тег \"Год\"" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Добавить поток..." @@ -562,7 +562,7 @@ msgstr "Добавить в избранное Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Добавить в списки воспроизведения Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Добавить в другой список воспроизведения" @@ -623,12 +623,12 @@ msgstr "После " msgid "After copying..." msgstr "После копирования..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Альбом" @@ -636,7 +636,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (идеальная громкость всех композиций)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -658,11 +658,11 @@ msgstr "Альбомы с обложками" msgid "Albums without covers" msgstr "Альбомы без обложек" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Все файлы (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Вся слава Гипножабе!" @@ -789,17 +789,17 @@ msgid "" "the songs of your library?" msgstr "Вы действительно хотите записать статистические данные композиции в файл для всех композиций вашей медиатеки?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Исполнитель" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Артист" @@ -815,7 +815,7 @@ msgstr "Теги испольнителя" msgid "Artist's initial" msgstr "Инициалы исполнителя" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Формат аудио" @@ -861,7 +861,7 @@ msgstr "Примерный размер изображения" msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -890,7 +890,7 @@ msgstr "Резервное копирование базы данных" msgid "Balance" msgstr "Баланс" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Запретить" @@ -919,7 +919,7 @@ msgstr "Наилучший" msgid "Biography from %1" msgstr "Биография из %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Скорость передачи данных" @@ -1025,7 +1025,7 @@ msgstr "Изменение настроек воспроизведения мо msgid "Check for new episodes" msgstr "Проверить новые выпуски" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Проверить обновления..." @@ -1075,11 +1075,11 @@ msgstr "Очистка" msgid "Clear" msgstr "Очистить" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Очистить список воспроизведения" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1170,8 +1170,8 @@ msgstr "Нажмите здесь, чтобы добавить этот плей msgid "Click to toggle between remaining time and total time" msgstr "Нажмите для переключения между остающимся временем и полной длительностью" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1209,7 +1209,7 @@ msgstr "Цвета" msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделенный запятыми список \"класс:уровень\", где уровень от 0 до 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Комментарий" @@ -1218,11 +1218,11 @@ msgstr "Комментарий" msgid "Complete tags automatically" msgstr "Заполнить поля автоматически" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Заполнить поля автоматически..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1261,7 +1261,7 @@ msgstr "Настроить Subsonic..." msgid "Configure global search..." msgstr "Настроить глобальный поиск..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Настроить коллекцию..." @@ -1298,7 +1298,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Превышено время ожидания при установке соединения, проверьте адрес сервера. Пример: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Консоль" @@ -1318,12 +1318,12 @@ msgstr "Конвертировать всю музыку, которую мож msgid "Copy to clipboard" msgstr "Скопировать в буфер" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копировать на устройство..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Копировать в коллекцию..." @@ -1345,14 +1345,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Невозможно создать элемент GStreamer \"%1\" - убедитесь, что у вас установлены все необходимые дополнения GStreamer" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не возможно найти мультиплексор для %1. Убедитесь, что установлены необходимые модули GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1369,7 +1369,7 @@ msgid "Couldn't open output file %1" msgstr "Невозможно открыть выходной файл %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Менеджер обложек" @@ -1413,11 +1413,11 @@ msgstr "Перекрестное затухание при автоматиче msgid "Cross-fade when changing tracks manually" msgstr "Перекрестное затухание при ручной смене композиции" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1425,63 +1425,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1524,11 +1524,11 @@ msgid "" "recover your database" msgstr "Обнаружен сбой в базе данных. Инструкции по восстановлению можно прочитать по адресу https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата создания" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата изменения" @@ -1578,7 +1578,7 @@ msgid "Delete downloaded data" msgstr "Удалить загруженные данные" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Удалить файлы" @@ -1586,7 +1586,7 @@ msgstr "Удалить файлы" msgid "Delete from device..." msgstr "Удалить с устройства" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Удалить с диска..." @@ -1611,15 +1611,16 @@ msgstr "Удалить оригинальные файлы" msgid "Deleting files" msgstr "Удаление файлов" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Убрать из очереди выбранные композиции" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Убрать из очереди композицию" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Назначение" @@ -1643,10 +1644,14 @@ msgstr "Имя устройства" msgid "Device properties..." msgstr "Свойства носителя..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Носители" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Возможно, вы имели в виду" @@ -1685,8 +1690,8 @@ msgstr "Отключить создание индикатора настрое msgid "Disabled" msgstr "Отключено" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1703,7 +1708,7 @@ msgstr "Настройки отображения" msgid "Display the on-screen-display" msgstr "Показывать экранное уведомление" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Заново сканировать музыкальную коллекцию" @@ -1825,6 +1830,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Динамический режим включён" @@ -1837,12 +1846,12 @@ msgstr "Случайный динамичный микс" msgid "Edit smart playlist..." msgstr "Изменить умный список воспроизведения…" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Редактировать тег..." @@ -1855,7 +1864,7 @@ msgid "Edit track information" msgstr "Изменение информации о композиции" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Изменить информацию о композиции..." @@ -1956,7 +1965,7 @@ msgstr "Введите этот IP-адрес в App для подключени msgid "Entire collection" msgstr "Вся коллекция" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Эквалайзер" @@ -1970,7 +1979,7 @@ msgstr "Аналогично --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Ошибка" @@ -1990,7 +1999,7 @@ msgstr "Ошибка удаления композиций" msgid "Error downloading Spotify plugin" msgstr "Ошибка загрузки модуля Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Ошибка загрузки %1" @@ -2000,12 +2009,12 @@ msgstr "Ошибка загрузки %1" msgid "Error loading di.fm playlist" msgstr "Ошибка при загрузке списка воспроизведения di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Ошибка при обработке %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Ошибка при загрузке Аудио CD" @@ -2083,27 +2092,27 @@ msgstr "Экспорт завершён" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Экспортировано %1 обложек из %2 (%3 пропущено)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2130,6 +2139,10 @@ msgstr "Затухание" msgid "Fading duration" msgstr "Длительность затухания" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Ошибка получения каталога" @@ -2181,6 +2194,10 @@ msgstr "Получение библиотеки Subsonic" msgid "Fetching cover error" msgstr "Ошибка поиска обложки" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Расширение файла" @@ -2189,19 +2206,19 @@ msgstr "Расширение файла" msgid "File formats" msgstr "Форматы файлов" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Имя файла" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Имя файла (без указания пути)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Размер файла" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2211,7 +2228,7 @@ msgstr "Тип файла" msgid "Filename" msgstr "Имя файла" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Файлы" @@ -2331,9 +2348,10 @@ msgstr "Общие" msgid "General settings" msgstr "Общие настройки" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" @@ -2365,11 +2383,11 @@ msgstr "Название:" msgid "Go" msgstr "Перейти" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Перейти к следующему списку воспроизведения" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Перейти к предудыщему списку воспроизведения" @@ -2439,7 +2457,7 @@ msgstr "Группировать по жанру/альбому" msgid "Group by Genre/Artist/Album" msgstr "Группировать по жанру/исполнителю/альбому" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Группа" @@ -2594,6 +2612,10 @@ msgstr "Индексация %1" msgid "Information" msgstr "Сведения" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Вставить..." @@ -2606,7 +2628,7 @@ msgstr "Установлено" msgid "Integrity check" msgstr "Проверка целостности" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Интернет" @@ -2646,6 +2668,10 @@ msgstr "Неверный ключ сессии" msgid "Invalid username and/or password" msgstr "Неверное имя пользователя и(или) пароль" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2670,7 +2696,7 @@ msgstr "Треки недели на Jamendo" msgid "Jamendo database" msgstr "База данных Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Перейти к проигрываемой композиции" @@ -2694,7 +2720,7 @@ msgstr "Продолжить работу в фоновом режиме при msgid "Keep the original files" msgstr "Сохранять оригинальные файлы" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Котята" @@ -2718,7 +2744,7 @@ msgstr "Большая обложка альбома" msgid "Large sidebar" msgstr "Широкая боковая панель" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Последнее прослушивание" @@ -2801,12 +2827,12 @@ msgstr "Оставьте пустым для значения по-умолча msgid "Left" msgstr "Левый канал" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Длительность" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Фонотека" @@ -2814,7 +2840,7 @@ msgstr "Фонотека" msgid "Library advanced grouping" msgstr "Расширенная сортировка коллекции" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Уведомление о сканировании коллекции" @@ -2859,7 +2885,7 @@ msgstr "Загрузить обложку с диска..." msgid "Load playlist" msgstr "Загрузить список воспроизведения" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Загрузить список воспроизведения..." @@ -2888,11 +2914,11 @@ msgstr "Загрузка песен" msgid "Loading stream" msgstr "Загрузка потока" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Загрузка композиций" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Загрузка информации о композициях" @@ -2911,10 +2937,10 @@ msgstr "Загрузка файлов или ссылок с заменой те #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Вход" @@ -2926,7 +2952,7 @@ msgstr "Ошибка входа" msgid "Long term prediction profile (LTP)" msgstr "Профиль Long term prediction (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Любимое" @@ -2989,7 +3015,7 @@ msgstr "Загрузка Magnatune окончена" msgid "Main profile (MAIN)" msgstr "Основной профиль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Да будет так!" @@ -3072,7 +3098,7 @@ msgstr "Воспроизведение моно" msgid "Months" msgstr "Месяцев" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Настроение" @@ -3102,7 +3128,7 @@ msgstr "Точки монтирования" msgid "Move down" msgstr "Переместить вниз" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Переместить в коллекцию..." @@ -3111,7 +3137,7 @@ msgstr "Переместить в коллекцию..." msgid "Move up" msgstr "Переместить вверх" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Музыка" @@ -3119,7 +3145,7 @@ msgstr "Музыка" msgid "Music Library" msgstr "Музыкальная коллекция" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Выключить звук" @@ -3207,7 +3233,7 @@ msgstr "Никогда не начинать проигрывать" msgid "New folder" msgstr "Новая папка" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Новый список воспроизведения" @@ -3231,7 +3257,7 @@ msgstr "Новейшие треки" msgid "Next" msgstr "Дальше" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Следующая композиция" @@ -3270,7 +3296,7 @@ msgstr "Без коротких блоков" msgid "None" msgstr "Ничего" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ни одна из выбранных песен не будет скопирована на устройство" @@ -3388,7 +3414,7 @@ msgstr "Прозрачность" msgid "Open %1 in browser" msgstr "Открыть «%1» в браузере" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Открыть аудио-&диск..." @@ -3404,7 +3430,7 @@ msgstr "Открыть файл OPML ..." msgid "Open device" msgstr "Открыть устройство" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Открыть файл..." @@ -3439,7 +3465,7 @@ msgstr "Оптимизировать по битрейту" msgid "Optimize for quality" msgstr "Оптимизировать по качеству" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Настройки..." @@ -3451,7 +3477,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Упорядочить файлы" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Упорядочить файлы..." @@ -3475,7 +3501,7 @@ msgstr "Вывод" msgid "Output device" msgstr "Устройство вывода" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Настройки вывода" @@ -3516,7 +3542,7 @@ msgstr "Party" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Приостановить" @@ -3529,7 +3555,7 @@ msgstr "Приостановить воспроизведение" msgid "Paused" msgstr "Приостановлен" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Исполнитель" @@ -3542,9 +3568,9 @@ msgstr "Пиксель" msgid "Plain sidebar" msgstr "Нормальная боковая панель" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Воспроизвести" @@ -3557,7 +3583,7 @@ msgstr "Проиграть исполнителя или тег" msgid "Play artist radio..." msgstr "Проиграть радио артиста..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Количество проигрываний" @@ -3612,7 +3638,7 @@ msgstr "Настройки списка воспроизведения" msgid "Playlist type" msgstr "Тип списка воспроизведения" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Списки воспроизведения" @@ -3664,7 +3690,7 @@ msgstr "Предусиление" msgid "Preferences" msgstr "Настройки" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Настройки..." @@ -3719,7 +3745,7 @@ msgstr "Предпросмотр" msgid "Previous" msgstr "Предыдущий" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Предыдущая композиция" @@ -3733,7 +3759,7 @@ msgid "Profile" msgstr "Профиль" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Ход выполнения" @@ -3762,16 +3788,16 @@ msgstr "Качество" msgid "Querying device..." msgstr "Опрашиваем устройство..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Управление очередью" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Добавить в очередь выбранные композиции" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Добавить в очередь композицию" @@ -3783,7 +3809,7 @@ msgstr "Радио (одинаковая громкость для всех ко msgid "Radios" msgstr "Радио" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Дождь" @@ -3815,7 +3841,7 @@ msgstr "Оценка текущей песни 4 звезды" msgid "Rate the current song 5 stars" msgstr "Оценка текущей песни 5 звёзд" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" @@ -3873,7 +3899,7 @@ msgstr "Удалить" msgid "Remove action" msgstr "Удалить действие" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Удалить повторы из списка воспроизведения" @@ -3889,7 +3915,7 @@ msgstr "Удалить из Моей музыки" msgid "Remove from favorites" msgstr "Удалить из избранных" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Удалить из списка воспроизведения" @@ -3926,7 +3952,7 @@ msgstr "Переименовать список воспроизведения" msgid "Rename playlist..." msgstr "Переименовать список воспроизведения..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Перенумеровать композиции в таком порядке..." @@ -4017,6 +4043,18 @@ msgstr "Вернуться в Clementine" msgid "Right" msgstr "Правый канал" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4043,7 +4081,7 @@ msgstr "Безопасно извлечь устройство" msgid "Safely remove the device after copying" msgstr "Безопасно извлечь устройство после копирования" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Частота" @@ -4071,7 +4109,7 @@ msgstr "Сохранить изображение" msgid "Save playlist" msgstr "Сохранить список воспроизведения" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Сохранить список воспроизведения..." @@ -4107,7 +4145,7 @@ msgstr "Профиль Scalable sampling rate (SSR)" msgid "Scale size" msgstr "Масштаб" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Счет" @@ -4116,7 +4154,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Скробблить треки, которые я слушаю" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4200,11 +4238,11 @@ msgstr "Перемотать текущую композицию на относ msgid "Seek the currently playing track to an absolute position" msgstr "Перемотать текущую композицию на абсолютную позицию" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Выбрать все" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Отменить выбор" @@ -4232,7 +4270,7 @@ msgstr "Выбрать визуализации" msgid "Select visualizations..." msgstr "Выбрать визуализации..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4252,7 +4290,7 @@ msgstr "Параметры сервера" msgid "Service offline" msgstr "Служба недоступна" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Установить %1 в \"%2\"..." @@ -4261,7 +4299,7 @@ msgstr "Установить %1 в \"%2\"..." msgid "Set the volume to percent" msgstr "Установить громкость в процентов" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Установить значение для всех выделенных композиций..." @@ -4324,7 +4362,7 @@ msgstr "Показывать OSD" msgid "Show above status bar" msgstr "Показать над строкой состояния" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Показать все композиции" @@ -4344,12 +4382,12 @@ msgstr "Показывать разделители" msgid "Show fullsize..." msgstr "Показать в полный размер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Показать в обозревателе файлов" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4361,11 +4399,11 @@ msgstr "Показать в \"Разных исполнителях\"" msgid "Show moodbar" msgstr "Показывать индикаторы настроения" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Показывать только повторяющиеся" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Показывать только без тегов" @@ -4405,7 +4443,7 @@ msgstr "Перемешать альбомы" msgid "Shuffle all" msgstr "Перемешать все" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Перемешать список воспроизведения" @@ -4445,7 +4483,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Переместить назад в списке воспроизведения" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Пропустить подсчет" @@ -4481,7 +4519,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Сведения о композиции" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "О песне" @@ -4513,7 +4551,7 @@ msgstr "Сортировать песни по" msgid "Sorting" msgstr "Сортировка" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Источник" @@ -4549,6 +4587,10 @@ msgstr "Стандартный" msgid "Starred" msgstr "Оцененные" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Запустить проигрываемый сейчас список воспроизведения" @@ -4564,7 +4606,7 @@ msgid "" "list" msgstr "Введите что-нибудь в поле для поиска" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Запуск %1" @@ -4577,7 +4619,7 @@ msgstr "Запуск..." msgid "Stations" msgstr "Станции" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Остановить" @@ -4586,7 +4628,7 @@ msgstr "Остановить" msgid "Stop after" msgstr "Остановить после" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Остановить после этой композиции" @@ -4754,7 +4796,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Пробный период для сервера Subsonic закончен. Пожалуйста, поддержите разработчика, чтобы получить лицензионный ключ. Посетите subsonic.org для подробной информации." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4795,7 +4837,7 @@ msgid "" "continue?" msgstr "Эти файлы будут удалены с устройства. Вы точно хотите продолжить?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4867,9 +4909,10 @@ msgstr "Поток только для платных подписчиков" msgid "This type of device is not supported: %1" msgstr "Тип устройства не поддерживается: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Название" @@ -4891,11 +4934,11 @@ msgstr "Включить OSD" msgid "Toggle fullscreen" msgstr "Развернуть на весь экран" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Переключить состояние очереди" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Вкл/выкл скробблинг" @@ -4927,12 +4970,13 @@ msgstr "Всего передано байт" msgid "Total network requests made" msgstr "Всего выполнено сетевых запросов" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Композиция" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Перекодировать музыку" @@ -5030,7 +5074,7 @@ msgstr "Обновить список воспроизведения на Groove msgid "Update all podcasts" msgstr "Обновить все подкасты" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Обновить измененные папки коллекции" @@ -5185,7 +5229,7 @@ msgstr "Просмотр" msgid "Visualization mode" msgstr "Режим визуализации" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Визуализации" @@ -5313,7 +5357,7 @@ msgid "" "well?" msgstr "Переместить другие композиции из этого альбома в Разные исполнители?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Желаете запустить повторное сканирование?" @@ -5325,10 +5369,10 @@ msgstr "Записать все статистические данные в ф msgid "Wrong username or password." msgstr "Неверное имя или пароль" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Год" diff --git a/src/translations/si_LK.po b/src/translations/si_LK.po index cd0ff4f3d..111fe6878 100644 --- a/src/translations/si_LK.po +++ b/src/translations/si_LK.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/clementine/language/si_LK/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -165,11 +165,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -186,7 +186,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -194,15 +194,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -210,7 +210,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -218,7 +218,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -363,11 +363,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -415,19 +415,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -435,11 +435,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -451,7 +451,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -527,7 +527,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -539,7 +539,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -600,12 +600,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -613,7 +613,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -635,11 +635,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -766,17 +766,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -792,7 +792,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -838,7 +838,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -867,7 +867,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -896,7 +896,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1052,11 +1052,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1147,8 +1147,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1186,7 +1186,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1195,11 +1195,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1238,7 +1238,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1275,7 +1275,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1295,12 +1295,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1322,14 +1322,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1346,7 +1346,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1390,11 +1390,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "" @@ -1402,63 +1402,63 @@ msgstr "" msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "" @@ -1501,11 +1501,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1555,7 +1555,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1563,7 +1563,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1588,15 +1588,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1620,10 +1621,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1662,8 +1667,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1680,7 +1685,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1802,6 +1807,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1814,12 +1823,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1832,7 +1841,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1933,7 +1942,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1947,7 +1956,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1967,7 +1976,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1977,12 +1986,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2060,27 +2069,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2107,6 +2116,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2158,6 +2171,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2166,19 +2183,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2188,7 +2205,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2308,9 +2325,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2342,11 +2360,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2416,7 +2434,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2571,6 +2589,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2583,7 +2605,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2623,6 +2645,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2647,7 +2673,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2671,7 +2697,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2695,7 +2721,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2778,12 +2804,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2791,7 +2817,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2836,7 +2862,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2865,11 +2891,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2888,10 +2914,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2903,7 +2929,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2966,7 +2992,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3049,7 +3075,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3079,7 +3105,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3088,7 +3114,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3096,7 +3122,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3184,7 +3210,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3208,7 +3234,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3247,7 +3273,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3365,7 +3391,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3381,7 +3407,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3416,7 +3442,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3428,7 +3454,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3452,7 +3478,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3493,7 +3519,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3506,7 +3532,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3519,9 +3545,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3534,7 +3560,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3589,7 +3615,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3641,7 +3667,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3696,7 +3722,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3710,7 +3736,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3739,16 +3765,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3760,7 +3786,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3792,7 +3818,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3850,7 +3876,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3866,7 +3892,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3903,7 +3929,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3994,6 +4020,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4020,7 +4058,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4048,7 +4086,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4084,7 +4122,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4093,7 +4131,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4177,11 +4215,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4209,7 +4247,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4229,7 +4267,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4238,7 +4276,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4301,7 +4339,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4321,12 +4359,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4338,11 +4376,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4382,7 +4420,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4422,7 +4460,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4458,7 +4496,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4490,7 +4528,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4526,6 +4564,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4541,7 +4583,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4554,7 +4596,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4563,7 +4605,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4731,7 +4773,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4772,7 +4814,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4844,9 +4886,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4868,11 +4911,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4904,12 +4947,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5007,7 +5051,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5162,7 +5206,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5290,7 +5334,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5302,10 +5346,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/sk.po b/src/translations/sk.po index 30f549f30..33583a1ed 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 08:01+0000\n" -"Last-Translator: Ján Ďanovský \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/clementine/language/sk/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -168,11 +168,11 @@ msgstr "Na &stred" msgid "&Custom" msgstr "&Vlastná" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Bonusy" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Nápoveda" @@ -189,7 +189,7 @@ msgstr "&Skryť..." msgid "&Left" msgstr "&Vľavo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Hudba" @@ -197,15 +197,15 @@ msgstr "Hudba" msgid "&None" msgstr "&Nijaká" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Zavrieť" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Režim opakovania" @@ -213,7 +213,7 @@ msgstr "Režim opakovania" msgid "&Right" msgstr "Vp&ravo" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Režim zamiešavania" @@ -221,7 +221,7 @@ msgstr "Režim zamiešavania" msgid "&Stretch columns to fit window" msgstr "Roztiahnuť &stĺpce na prispôsobenie oknu" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Nástroje" @@ -366,11 +366,11 @@ msgstr "Zrušiť" msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clemetine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt.." @@ -418,19 +418,19 @@ msgstr "Pridať ďalší stream..." msgid "Add directory..." msgstr "Pridať priečinok..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Pridať súbor" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Pridať súbor na prekódovanie" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Pridať súbor(y) na prekódovanie" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Pridať súbor..." @@ -438,11 +438,11 @@ msgstr "Pridať súbor..." msgid "Add files to transcode" msgstr "Pridať súbory na transkódovanie" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Pridať priečinok" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Pridať priečinok..." @@ -454,7 +454,7 @@ msgstr "Pridať nový priečinok..." msgid "Add podcast" msgstr "Pridať podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pridať podcast..." @@ -530,7 +530,7 @@ msgstr "Pridať tag čísla skladby" msgid "Add song year tag" msgstr "Pridať tag roka piesne" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Pridať stream..." @@ -542,7 +542,7 @@ msgstr "Pridať k obľúbeným na Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Pridať do Grooveshark playlistov" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Pridať do iného playlistu" @@ -603,12 +603,12 @@ msgstr "Po " msgid "After copying..." msgstr "Po kopírovaní..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideálna hlasitosť pre všetky skladby)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "Albumy s obalmi" msgid "Albums without covers" msgstr "Albumy bez obalov" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Všetky súbory (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "Ste si istý, že chcete ukladať štatistiky piesní do súboru piesne pri všetkých piesňach vo vašej zbierke?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Interprét" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Interprét" @@ -795,7 +795,7 @@ msgstr "Tagy interpréta" msgid "Artist's initial" msgstr "Iniciálky interpréta" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio formát" @@ -841,7 +841,7 @@ msgstr "Priemerná veľkosť obrázku" msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -870,7 +870,7 @@ msgstr "Zálohuje sa databáza" msgid "Balance" msgstr "Vyváženie" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Zakázané" @@ -899,7 +899,7 @@ msgstr "Najlepšia" msgid "Biography from %1" msgstr "Životopis z %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" @@ -1005,7 +1005,7 @@ msgstr "Zmena nastavenia mono prehrávania bude účinná pre nasledujúce prehr msgid "Check for new episodes" msgstr "Skontrolovať, či sú nové časti" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Skontrolovať aktualizácie..." @@ -1055,11 +1055,11 @@ msgstr "Upratovanie" msgid "Clear" msgstr "Vyprázdniť" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Vyprázdniť playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "Kliknite sem pre označenie tohto playlitu ako obľúbeného, uloží sa msgid "Click to toggle between remaining time and total time" msgstr "Kliknite na prepínanie medzi zostávajúcim a celkovým časom" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "Farby" msgid "Comma separated list of class:level, level is 0-3" msgstr "Čiarkou oddelený zoznam class:level, level je 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentár" @@ -1198,11 +1198,11 @@ msgstr "Komentár" msgid "Complete tags automatically" msgstr "Vyplniť tagy automaticky" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Vyplniť tagy automaticky..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "Nastaviť Subsonic..." msgid "Configure global search..." msgstr "Nastaviť globálne vyhľadávanie..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Nastaviť zbierku..." @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Čas na spojenie vypršal, skontrolujte URL adresu serveru. Príklad: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konzola" @@ -1298,12 +1298,12 @@ msgstr "Konvertovať hudbu ktorú zariadenie nemôže prehrať" msgid "Copy to clipboard" msgstr "Kopírovať do schránky" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Skopírovať na zariadenie..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Skopírovať do zbierky..." @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Nedal sa vytvoriť GStreamer element \"%1\" - uistite sa, že máte nainštalované všetky potrebné pluginy GStreamera." -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nedal sa nájsť muxer pre %1, skontrolujte či máte korektne nainštalované GStreamer pluginy" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "Nedá sa otvoriť výstupný súbor %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Správca obalov" @@ -1393,11 +1393,11 @@ msgstr "Prelínať keď sa zmení skladba automaticky" msgid "Cross-fade when changing tracks manually" msgstr "Prelínať keď sa zmení skladba ručne" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "Bolo zistené porušenie databázy. Prosím, prečítajte si https://code.google.com/p/clementine-player/wiki/DatabaseCorruption pre inštrukcie, ako zotaviť vašu databázu" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Dátum vytvorenia" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Dátum zmeny" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "Vymazať stiahnuté dáta" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Vymazať súbory" @@ -1566,7 +1566,7 @@ msgstr "Vymazať súbory" msgid "Delete from device..." msgstr "Vymazať zo zariadenia..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Vymazať z disku..." @@ -1591,15 +1591,16 @@ msgstr "Vymazať pôvodné súbory" msgid "Deleting files" msgstr "Odstraňujú sa súbory" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Vybrať z radu vybrané skladby" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Vybrať z radu skladbu" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cieľ" @@ -1623,10 +1624,14 @@ msgstr "Názov zariadenia" msgid "Device properties..." msgstr "Vlastnosti zariadenia..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Zariadenia" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Dialóg" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Mysleli ste" @@ -1665,8 +1670,8 @@ msgstr "Zakázať vytváranie panelu nálady" msgid "Disabled" msgstr "Žiadne" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1683,7 +1688,7 @@ msgstr "Možnosti zobrazovania" msgid "Display the on-screen-display" msgstr "Zobrazovať OSD" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Vykonať preskenovanie celej zbierky" @@ -1805,6 +1810,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Dĺžka" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamický režim je zapnutý" @@ -1817,12 +1826,12 @@ msgstr "Dynamicky náhodná zmes" msgid "Edit smart playlist..." msgstr "Upraviť inteligentný playlist..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Upraviť tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Upraviť tag..." @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "Upravť informácie o skladbe" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Upravť informácie o skladbe..." @@ -1936,7 +1945,7 @@ msgstr "Zadajte túto IP adresu v programe na spojenie s Clementine." msgid "Entire collection" msgstr "Celá zbierka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalizér" @@ -1950,7 +1959,7 @@ msgstr "Ekvivalent k --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Chyba" @@ -1970,7 +1979,7 @@ msgstr "Chyba pri vymazávaní piesní" msgid "Error downloading Spotify plugin" msgstr "Chyba pri sťahovaní Spotify pluginu." -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Chyba pri načítavaní %1" @@ -1980,12 +1989,12 @@ msgstr "Chyba pri načítavaní %1" msgid "Error loading di.fm playlist" msgstr "Chyba pri načítavaní di.fm playlistu" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Chyba spracovania %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Chyba pri čítaní zvukového CD" @@ -2063,27 +2072,27 @@ msgstr "Exportovanie dokončené" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportovaných %1 obalov z %2 (%3 preskočených)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2110,6 +2119,10 @@ msgstr "Zoslabovanie" msgid "Fading duration" msgstr "Trvanie zoslabovania" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Zlyhalo čítanie CD v mechanike" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Zlyhalo získanie priečinka" @@ -2161,6 +2174,10 @@ msgstr "Získava sa zbierka zo Subsonicu" msgid "Fetching cover error" msgstr "Chyba pri získavaní obalu" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Formát súboru" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Prípona súboru" @@ -2169,19 +2186,19 @@ msgstr "Prípona súboru" msgid "File formats" msgstr "Formáty súborov" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Názov súboru" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Názov súboru (bez cesty)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Veľkosť súboru" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "Typ súboru" msgid "Filename" msgstr "Názov súboru" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Súbory" @@ -2311,9 +2328,10 @@ msgstr "Všeobecné" msgid "General settings" msgstr "Všeobecné nastavenia" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žáner" @@ -2345,11 +2363,11 @@ msgstr "Pomenujte:" msgid "Go" msgstr "Prejsť" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Prejsť na kartu ďalšieho playlistu" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Prejsť na kartu predchádzajúceho playlistu" @@ -2419,7 +2437,7 @@ msgstr "Zoradiť podľa žáner/album" msgid "Group by Genre/Artist/Album" msgstr "Zoradiť podľa žáner/interprét/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Zoskupenie" @@ -2574,6 +2592,10 @@ msgstr "Indexuje sa %1" msgid "Information" msgstr "Informácie" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Vložiť..." @@ -2586,7 +2608,7 @@ msgstr "Nainštalované" msgid "Integrity check" msgstr "Kontrola integrity" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2626,6 +2648,10 @@ msgstr "Neplatný kľúč sedenia" msgid "Invalid username and/or password" msgstr "Neplatné meno používateľa a/alebo heslo" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2650,7 +2676,7 @@ msgstr "Jamendo naj skladby týždňa" msgid "Jamendo database" msgstr "Jamendo databáza" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Skočiť na práve prehrávanú skladbu" @@ -2674,7 +2700,7 @@ msgstr "Nechať bežať na pozadí, keď sa zavrie hlavné okno" msgid "Keep the original files" msgstr "Zachovať pôvodné súbory" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Mačiatka" @@ -2698,7 +2724,7 @@ msgstr "Veľký obal albumu" msgid "Large sidebar" msgstr "Veľký bočný panel" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Naposledy prehrávané" @@ -2781,12 +2807,12 @@ msgstr "Nechajte prázdne, ak chcete pôvodné. Príklady: \"/dev/dsp\", \"front msgid "Left" msgstr "Ľavý" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dĺžka" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Zbierka" @@ -2794,7 +2820,7 @@ msgstr "Zbierka" msgid "Library advanced grouping" msgstr "Pokročilé zoraďovanie zbierky" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Poznámka k preskenovaniu zbierky" @@ -2839,7 +2865,7 @@ msgstr "Načítať obal z disku..." msgid "Load playlist" msgstr "Načítať playlist" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Načítať playlist..." @@ -2868,11 +2894,11 @@ msgstr "Načítavanie piesní" msgid "Loading stream" msgstr "Načítava sa stream" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Načítavajú sa skladby" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Načítavajú sa informácie o skladbe" @@ -2891,10 +2917,10 @@ msgstr "Načítať súbory/URL adresy, nahradiť nimi aktuálny playlist" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Prihlásiť sa" @@ -2906,7 +2932,7 @@ msgstr "Prihlásenie zlyhalo" msgid "Long term prediction profile (LTP)" msgstr "Profil dlhodobej predpovede (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Obľúbené" @@ -2969,7 +2995,7 @@ msgstr "Magnatune sťahovanie dokončené" msgid "Main profile (MAIN)" msgstr "Hlavný profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Make it so!" @@ -3052,7 +3078,7 @@ msgstr "Mono prehrávanie" msgid "Months" msgstr "Mesiace" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Nálada" @@ -3082,7 +3108,7 @@ msgstr "Body pripojenia" msgid "Move down" msgstr "Posunúť nižšie" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Presunúť do zbierky..." @@ -3091,7 +3117,7 @@ msgstr "Presunúť do zbierky..." msgid "Move up" msgstr "Posunúť vyššie" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Hudba" @@ -3099,7 +3125,7 @@ msgstr "Hudba" msgid "Music Library" msgstr "Hudobná zbierka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Stlmiť" @@ -3187,7 +3213,7 @@ msgstr "Nezačne sa prehrávať" msgid "New folder" msgstr "Nový playlist" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nový playlist" @@ -3211,7 +3237,7 @@ msgstr "Najnovšie skladby" msgid "Next" msgstr "Ďalšia" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Nasledujúca skladba" @@ -3250,7 +3276,7 @@ msgstr "Žiadne krátke bloky" msgid "None" msgstr "Nijako" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Žiadna z vybratých piesní nieje vhodná na kopírovanie do zariadenia" @@ -3368,7 +3394,7 @@ msgstr "Nepriehľadnosť" msgid "Open %1 in browser" msgstr "Otvoriť %1 v prehliadači" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Otvoriť &zvukové CD..." @@ -3384,7 +3410,7 @@ msgstr "Otvoriť OPML súbor..." msgid "Open device" msgstr "Otvoriť zariadenie" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Otvoriť súbor ..." @@ -3419,7 +3445,7 @@ msgstr "Optimalizovať na dátový tok" msgid "Optimize for quality" msgstr "Optimalizovať na kvalitu" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Možnosti..." @@ -3431,7 +3457,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organizovať súbory" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Spravovať súbory..." @@ -3455,7 +3481,7 @@ msgstr "Výstup" msgid "Output device" msgstr "Výstupné zariadenie" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Možnosti výstupu" @@ -3496,7 +3522,7 @@ msgstr "Party" msgid "Password" msgstr "Heslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Pozastaviť" @@ -3509,7 +3535,7 @@ msgstr "Pozastaviť prehrávanie" msgid "Paused" msgstr "Pozastavené" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkujúci" @@ -3522,9 +3548,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Obyčajný bočný panel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Hrať" @@ -3537,7 +3563,7 @@ msgstr "Hrať interpréta alebo tag" msgid "Play artist radio..." msgstr "Hrať rádio interpréta..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Počet prehraní" @@ -3592,7 +3618,7 @@ msgstr "Možnosti playlistu" msgid "Playlist type" msgstr "Typ playlistu" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Playlisty" @@ -3644,7 +3670,7 @@ msgstr "Predzosilnenie" msgid "Preferences" msgstr "Nastavenia" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Nastavenia..." @@ -3699,7 +3725,7 @@ msgstr "Ukážka" msgid "Previous" msgstr "Predchádzajúca" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Predchádzajúca skladba" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Priebeh" @@ -3742,16 +3768,16 @@ msgstr "Kvalita" msgid "Querying device..." msgstr "Zaraďuje sa zariadenie..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Správca poradia" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Zaradiť vybrané skladby" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Zaradiť skladbu" @@ -3763,7 +3789,7 @@ msgstr "Rádio (rovnaká hlasitosť pre všetky skladby)" msgid "Radios" msgstr "Rádiá" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Dážď" @@ -3795,7 +3821,7 @@ msgstr "Ohodnotiť aktuálnu pieseň 4 hviezdičkami" msgid "Rate the current song 5 stars" msgstr "Ohodnotiť aktuálnu pieseň 5 hviezdičkami" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hodnotenie" @@ -3853,7 +3879,7 @@ msgstr "Odstrániť" msgid "Remove action" msgstr "Odstrániť akciu" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Odstrániť duplikáty z playlistu" @@ -3869,7 +3895,7 @@ msgstr "Odstrániť z Mojej hudby" msgid "Remove from favorites" msgstr "Odstrániť z obľúbených" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Odstrániť z playlistu" @@ -3906,7 +3932,7 @@ msgstr "Premenovať playlist" msgid "Rename playlist..." msgstr "Premenovať playlist..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Prečíslovať skladby v tomto poradí..." @@ -3997,6 +4023,18 @@ msgstr "Vrátiť sa do Clementine" msgid "Right" msgstr "Pravý" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Ripovať CD" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Ripovať zvukové CD..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4023,7 +4061,7 @@ msgstr "Bezpečne odpojiť zariadenie" msgid "Safely remove the device after copying" msgstr "Bezpečne odpojiť zariadenie po skončení kopírovania" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Rýchlosť vzorkovania" @@ -4051,7 +4089,7 @@ msgstr "Uložiť obrázok" msgid "Save playlist" msgstr "Uložiť playlist" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Uložiť playlist..." @@ -4087,7 +4125,7 @@ msgstr "Profil so škálovateľnou vzorkovacou frekvenciou" msgid "Scale size" msgstr "Veľkosť škály" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Skóre" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Skroblovať skladby, ktoré počúvam" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "Pretočiť súčasnú skladbu o určitý čas" msgid "Seek the currently playing track to an absolute position" msgstr "Pretočiť súčasnú skladbu na presné miesto" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Označiť všetko" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nevybrať nič" @@ -4212,7 +4250,7 @@ msgstr "Vybrať vizualizácie" msgid "Select visualizations..." msgstr "Vybrať vizualizácie..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Vybrať..." @@ -4232,7 +4270,7 @@ msgstr "Podrobnosti servera" msgid "Service offline" msgstr "Služba je offline" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastaviť %1 do \"%2\"..." @@ -4241,7 +4279,7 @@ msgstr "Nastaviť %1 do \"%2\"..." msgid "Set the volume to percent" msgstr "Nastaviť hlasitosť na percent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Nastaviť hodnotu pre všetky vybraté skladby..." @@ -4304,7 +4342,7 @@ msgstr "Zobrazovať krásne OSD" msgid "Show above status bar" msgstr "Zobraziť nad stavovou lištou" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Zobraziť všetky piesne" @@ -4324,12 +4362,12 @@ msgstr "Zobraziť oddeľovače" msgid "Show fullsize..." msgstr "Zobraziť celú veľkosť..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Zobraziť v prehliadači súborov..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Zobraziť v zbierke..." @@ -4341,11 +4379,11 @@ msgstr "Zobrazovať v rôznych interprétoch" msgid "Show moodbar" msgstr "Zobraziť panel nálady" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Zobraziť iba duplikáty" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Zobraziť iba neotagované" @@ -4385,7 +4423,7 @@ msgstr "Zamiešať albumy" msgid "Shuffle all" msgstr "Zamiešať všetko" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Zamiešať playlist" @@ -4425,7 +4463,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Preskočiť dozadu v playliste" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Počet preskočení" @@ -4461,7 +4499,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informácie o piesni" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Pieseň" @@ -4493,7 +4531,7 @@ msgstr "Zoradiť piesne podľa" msgid "Sorting" msgstr "Triedenie" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Zdroj" @@ -4529,6 +4567,10 @@ msgstr "Štandardný" msgid "Starred" msgstr "S hviezdičkou" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Začať playlist práve prehrávanou" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "Začnite písať niečo do vyhľadávacieho políčka vyššie, aby ste naplnili tento zoznam výsledkov hľadania" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Začína sa %1" @@ -4557,7 +4599,7 @@ msgstr "Začína sa ..." msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Zastaviť" @@ -4566,7 +4608,7 @@ msgstr "Zastaviť" msgid "Stop after" msgstr "Zastaviť po" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Zastaviť po tejto skladbe" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Skúšobná verzia Subsonic servera uplynula. Prosím prispejte, aby ste získali licenčný kľúč. Navštívte subsonic.org pre detaily." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "Tieto súbory budú vymazané zo zariadenia, ste si istý, že chcete pokračovať?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "Tento stream je len pre platiacich predplatiteľov" msgid "This type of device is not supported: %1" msgstr "Tento typ zariadení nieje podporovaný: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Názov" @@ -4871,11 +4914,11 @@ msgstr "Prepnúť Krásne OSD" msgid "Toggle fullscreen" msgstr "Prepnúť na celú obrazovku" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Prepínať stav radu" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Prepnúť skroblovanie" @@ -4907,12 +4950,13 @@ msgstr "Spolu prenesených bytov" msgid "Total network requests made" msgstr "Spolu urobených požiadavok cez sieť" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Č." -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Transkódovať hudbu" @@ -5010,7 +5054,7 @@ msgstr "Aktualizovať Grooveshark playlist" msgid "Update all podcasts" msgstr "Aktualizovať všetky podcasty" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Aktualizovať zmenené priečinky v zbierke" @@ -5165,7 +5209,7 @@ msgstr "Zobraziť" msgid "Visualization mode" msgstr "Režim vizualizácií" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizácie" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "Chceli by ste presunúť tiež ostatné piesne v tomto albume do rôznych interprétov?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Chcete teraz spustiť úplné preskenovanie?" @@ -5305,10 +5349,10 @@ msgstr "Zapísať všetky štatistiky piesní do súborov piesní" msgid "Wrong username or password." msgstr "Nesprávne meno používateľa alebo heslo." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Rok" diff --git a/src/translations/sl.po b/src/translations/sl.po index 1809fbd75..9898163f7 100644 --- a/src/translations/sl.po +++ b/src/translations/sl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/clementine/language/sl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -172,11 +172,11 @@ msgstr "U&sredini" msgid "&Custom" msgstr "Po &meri" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Dodatki" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Pomoč" @@ -193,7 +193,7 @@ msgstr "&Skrij ..." msgid "&Left" msgstr "&Levo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Glasba" @@ -201,15 +201,15 @@ msgstr "&Glasba" msgid "&None" msgstr "&Brez" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Seznam &predvajanja" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Končaj" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Način p&onavljanja" @@ -217,7 +217,7 @@ msgstr "Način p&onavljanja" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Pre&mešani način" @@ -225,7 +225,7 @@ msgstr "Pre&mešani način" msgid "&Stretch columns to fit window" msgstr "Raztegni &stolpce, da se prilegajo oknu" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Orodja" @@ -370,11 +370,11 @@ msgstr "Prekini" msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "O Clementine ..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "O Qt ..." @@ -422,19 +422,19 @@ msgstr "Dodaj še en pretok ..." msgid "Add directory..." msgstr "Dodaj mapo ..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Dodaj datoteko" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Dodaj datoteko v prekodirnik" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Dodaj datoteko(-e) v prekodirnik" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Dodaj datoteko ..." @@ -442,11 +442,11 @@ msgstr "Dodaj datoteko ..." msgid "Add files to transcode" msgstr "Dodajte datoteke za prekodiranje" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Dodaj mapo" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Dodaj mapo ..." @@ -458,7 +458,7 @@ msgstr "Dodaj novo mapo ..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodaj podcast ..." @@ -534,7 +534,7 @@ msgstr "Dodaj oznako: številka skladbe" msgid "Add song year tag" msgstr "Dodaj oznako: leto" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Dodaj pretok ..." @@ -546,7 +546,7 @@ msgstr "Dodaj med priljubljene v Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Dodaj v sezname predvajanja Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Dodaj na drug seznam predvajanja" @@ -607,12 +607,12 @@ msgstr "Po " msgid "After copying..." msgstr "Po kopiranju ..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -620,7 +620,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (najboljša glasnost za vse skladbe)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -642,11 +642,11 @@ msgstr "Albumi z ovitkom" msgid "Albums without covers" msgstr "Albumi brez ovitka" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Vse datoteke (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -773,17 +773,17 @@ msgid "" "the songs of your library?" msgstr "Ali ste prepričani, da želite zapisati statistike skladbe v datoteko skladbe za vse skladbe v vaši knjižnici?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvajalec" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "O izvajalcu" @@ -799,7 +799,7 @@ msgstr "Oznake izvajalcev" msgid "Artist's initial" msgstr "Začetnice izvajalca" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Vrsta zvoka" @@ -845,7 +845,7 @@ msgstr "Povprečna velikost slike" msgid "BBC Podcasts" msgstr "BBC-jevi podcasti" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "udarcev/min" @@ -874,7 +874,7 @@ msgstr "Varnostno kopiranje podatkovne zbirke" msgid "Balance" msgstr "Ravnovesje" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Izobči" @@ -903,7 +903,7 @@ msgstr "Najboljše" msgid "Biography from %1" msgstr "Biografija iz %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitna hitrost" @@ -1009,7 +1009,7 @@ msgstr "Sprememba nastavitve predvajanja mono, bo dejavna za naslednje skladbe, msgid "Check for new episodes" msgstr "Preveri za novimi epizodami" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Preveri za posodobitvami ..." @@ -1059,11 +1059,11 @@ msgstr "Čiščenje" msgid "Clear" msgstr "Počisti" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Počisti seznam predvajanja" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1154,8 +1154,8 @@ msgstr "Kliknite sem, da dodate ta seznam predvajanja med priljubljene. Na ta na msgid "Click to toggle between remaining time and total time" msgstr "Kliknite za preklop med preostalim in celotnim časom" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1193,7 +1193,7 @@ msgstr "Barve" msgid "Comma separated list of class:level, level is 0-3" msgstr "Z vejicami ločen seznam razred:raven, raven je 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opomba" @@ -1202,11 +1202,11 @@ msgstr "Opomba" msgid "Complete tags automatically" msgstr "Samodejno dopolni oznake" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Samodejno dopolni oznake ..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "Nastavite Subsonic ..." msgid "Configure global search..." msgstr "Nastavi splošno iskanje" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Nastavi knjižnico ..." @@ -1282,7 +1282,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Povezava je časovno pretekla, preverite naslov URL strežnika. Primer: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konzola" @@ -1302,12 +1302,12 @@ msgstr "Pretvori vso glasbo, ki je naprava ne more predvajati" msgid "Copy to clipboard" msgstr "Kopiraj v odložišče" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiraj na napravo ..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiraj v knjižnico ..." @@ -1329,14 +1329,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Ni bilo mogoče ustvariti GStreamer-jevega elementa \"%1\" - prepričajte se, da imate nameščene vse zahtevane vstavke GStreamer" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Zvijalnika za %1 ni bilo mogoče najti. Preverite, če so nameščeni pravilni vstavki GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1353,7 +1353,7 @@ msgid "Couldn't open output file %1" msgstr "Izhodne datoteke %1 ni bilo mogoče odpreti" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Upravljalnik ovitkov" @@ -1397,11 +1397,11 @@ msgstr "Postopni prehod med samodejno spremembo skladb" msgid "Cross-fade when changing tracks manually" msgstr "Postopni prehod med ročno spremembo skladb" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1409,63 +1409,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Dol" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1508,11 +1508,11 @@ msgid "" "recover your database" msgstr "Zaznana je bila okvara podatkovne zbirke. Za navodila obnovitve podatkovne zbirke si oglejte: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum ustvarjenja" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum spremembe" @@ -1562,7 +1562,7 @@ msgid "Delete downloaded data" msgstr "Izbriši prejete podatke" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Izbriši datoteke" @@ -1570,7 +1570,7 @@ msgstr "Izbriši datoteke" msgid "Delete from device..." msgstr "Izbriši iz naprave ..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Izbriši iz diska ..." @@ -1595,15 +1595,16 @@ msgstr "Izbriši izvorne datoteke" msgid "Deleting files" msgstr "Brisanje datotek" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Odstrani izbrane skladbe iz vrste" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Odstrani skladbo iz vrste" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cilj" @@ -1627,10 +1628,14 @@ msgstr "Ime naprave" msgid "Device properties..." msgstr "Lastnosti naprave ..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Naprave" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Ste mislili" @@ -1669,8 +1674,8 @@ msgstr "Onemogoči ustvarjanje moodbara" msgid "Disabled" msgstr "Onemogočeno" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1687,7 +1692,7 @@ msgstr "Možnosti prikaza" msgid "Display the on-screen-display" msgstr "Pokaži prikaz na zaslonu" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Ponovno preišči celotno knjižnico" @@ -1809,6 +1814,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamični način je vključen" @@ -1821,12 +1830,12 @@ msgstr "Dinamični naključni miks" msgid "Edit smart playlist..." msgstr "Uredi pametni seznam predvajanja ..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Uredi oznako \"%1\" ..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Uredi oznako ..." @@ -1839,7 +1848,7 @@ msgid "Edit track information" msgstr "Uredi podrobnosti o skladbi" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Uredi podrobnosti o skladbi ..." @@ -1940,7 +1949,7 @@ msgstr "Vnesite ta IP v App, da se povežete s Clementine." msgid "Entire collection" msgstr "Celotna zbirka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Uravnalnik" @@ -1954,7 +1963,7 @@ msgstr "Enakovredno --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Napaka" @@ -1974,7 +1983,7 @@ msgstr "Napaka med brisanjem skladb" msgid "Error downloading Spotify plugin" msgstr "Napaka med prejemanjem vstavka Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Napaka med nalaganjem %1" @@ -1984,12 +1993,12 @@ msgstr "Napaka med nalaganjem %1" msgid "Error loading di.fm playlist" msgstr "Napaka med nalaganjem seznama predvajanja di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Napaka med obdelavo %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Napaka med nalaganjem glasbenega CD-ja" @@ -2067,27 +2076,27 @@ msgstr "Izvoz končan" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Izvoženih %1 od %2 ovitkov (%3 preskočenih)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2114,6 +2123,10 @@ msgstr "Pojemanje" msgid "Fading duration" msgstr "Trajanje pojemanja" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Imenika ni bilo mogoče prejeti" @@ -2165,6 +2178,10 @@ msgstr "Pridobivanje knjižnice Subsonic" msgid "Fetching cover error" msgstr "Napaka med pridobivanjem ovitka" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Pripona datoteke" @@ -2173,19 +2190,19 @@ msgstr "Pripona datoteke" msgid "File formats" msgstr "Vrste datotek" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Ime datoteke" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Ime datoteke (brez poti)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Velikost datoteke" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2195,7 +2212,7 @@ msgstr "Vrsta datoteke" msgid "Filename" msgstr "Ime datoteke" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Datoteke" @@ -2315,9 +2332,10 @@ msgstr "Splošno" msgid "General settings" msgstr "Splošne nastavitve" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Zvrst" @@ -2349,11 +2367,11 @@ msgstr "Vnesite ime:" msgid "Go" msgstr "Pojdi" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Pojdi na naslednji zavihek seznama predvajanja" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Pojdi na predhodni zavihek seznama predvajanja" @@ -2423,7 +2441,7 @@ msgstr "Združi po zvrsti/albumu" msgid "Group by Genre/Artist/Album" msgstr "Združi po zvrsti/izvajalcu/albumu" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Združevanje" @@ -2578,6 +2596,10 @@ msgstr "Izgradnja kazala za %1" msgid "Information" msgstr "Podrobnosti" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Vstavi ..." @@ -2590,7 +2612,7 @@ msgstr "Nameščeno" msgid "Integrity check" msgstr "Preverjanje celovitosti" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2630,6 +2652,10 @@ msgstr "Neveljavni ključ seje" msgid "Invalid username and/or password" msgstr "Neveljavno uporabniško ime in/ali geslo" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2654,7 +2680,7 @@ msgstr "Jamendo: najboljše skladbe tedna" msgid "Jamendo database" msgstr "Podatkovna zbirka Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Skoči na trenutno predvajano skladbo" @@ -2678,7 +2704,7 @@ msgstr "Ostani zagnan v ozadju dokler se ne zapre okno" msgid "Keep the original files" msgstr "Ohrani izvorne datoteke" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Mucke" @@ -2702,7 +2728,7 @@ msgstr "Velik ovitek albuma" msgid "Large sidebar" msgstr "Velika stranska vrstica" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Zadnjič predvajano" @@ -2785,12 +2811,12 @@ msgstr "Pustite prazno za privzeto. Primeri: \"/dev/dsp\", \"front\", itd." msgid "Left" msgstr "Levo" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dolžina" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Knjižnica" @@ -2798,7 +2824,7 @@ msgstr "Knjižnica" msgid "Library advanced grouping" msgstr "Napredno združevanje v knjižnici" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Obvestilo ponovnega preiskovanja knjižnice" @@ -2843,7 +2869,7 @@ msgstr "Naloži ovitek iz diska ..." msgid "Load playlist" msgstr "Naloži seznam predvajanja" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Naloži seznam predvajanja ..." @@ -2872,11 +2898,11 @@ msgstr "Nalaganje skladb" msgid "Loading stream" msgstr "Nalaganje pretoka" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Nalaganje skladb" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Nalaganje podrobnosti o skladbah" @@ -2895,10 +2921,10 @@ msgstr "Naloži datoteke/naslove URL in zamenjaj trenutni seznam predvajanja" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Prijava" @@ -2910,7 +2936,7 @@ msgstr "Prijava je spodletela" msgid "Long term prediction profile (LTP)" msgstr "Profil daljnosežnega predvidevanja (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Priljubljena" @@ -2973,7 +2999,7 @@ msgstr "Prejem Magnatune je končan" msgid "Main profile (MAIN)" msgstr "Glavni profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Make it so!" @@ -3056,7 +3082,7 @@ msgstr "Predvajanje v načinu mono" msgid "Months" msgstr "Meseci" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Razpoloženje" @@ -3086,7 +3112,7 @@ msgstr "Priklopne točke" msgid "Move down" msgstr "Premakni dol" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Premakni v knjižnico ..." @@ -3095,7 +3121,7 @@ msgstr "Premakni v knjižnico ..." msgid "Move up" msgstr "Premakni gor" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Glasba" @@ -3103,7 +3129,7 @@ msgstr "Glasba" msgid "Music Library" msgstr "Glasbena knjižnica" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Utišaj" @@ -3191,7 +3217,7 @@ msgstr "Nikoli ne začni s predvajanjem" msgid "New folder" msgstr "Nova mapa" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Nov seznam predvajanja" @@ -3215,7 +3241,7 @@ msgstr "Najnovejše skladbe" msgid "Next" msgstr "Naslednji" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Naslednja skladba" @@ -3254,7 +3280,7 @@ msgstr "Brez kratkih blokov" msgid "None" msgstr "Brez" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nobena izmed izbranih skladb ni bila primerna za kopiranje na napravo" @@ -3372,7 +3398,7 @@ msgstr "Motnost" msgid "Open %1 in browser" msgstr "Odpri %1 v brskalniku" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Odpri &zvočni CD ..." @@ -3388,7 +3414,7 @@ msgstr "Odpri datoteko OPML ..." msgid "Open device" msgstr "Odpri napravo" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Odpri datoteko ..." @@ -3423,7 +3449,7 @@ msgstr "Optimiziraj za bitno hitrost" msgid "Optimize for quality" msgstr "Optimiziraj za kakovost" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Možnosti ..." @@ -3435,7 +3461,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organiziraj datoteke" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organiziraj datoteke ..." @@ -3459,7 +3485,7 @@ msgstr "Izhod" msgid "Output device" msgstr "Izhodna naprava" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Možnosti izhoda" @@ -3500,7 +3526,7 @@ msgstr "Zabava" msgid "Password" msgstr "Geslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Naredi premor" @@ -3513,7 +3539,7 @@ msgstr "Naredi premor predvajanja" msgid "Paused" msgstr "V premoru" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvajalec" @@ -3526,9 +3552,9 @@ msgstr "Slikovna točka" msgid "Plain sidebar" msgstr "Navadna stranska vrstica" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Predvajaj" @@ -3541,7 +3567,7 @@ msgstr "Predvajaj izvajalca ali oznako" msgid "Play artist radio..." msgstr "Predvajaj radio izvajalca ..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Število predvajanj" @@ -3596,7 +3622,7 @@ msgstr "Možnosti seznama predvajanja" msgid "Playlist type" msgstr "Vrsta seznama predvajanja" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Seznami predvajanja" @@ -3648,7 +3674,7 @@ msgstr "Predojačanje" msgid "Preferences" msgstr "Možnosti" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Možnosti ..." @@ -3703,7 +3729,7 @@ msgstr "Predogled" msgid "Previous" msgstr "Predhodni" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Predhodna skladba" @@ -3717,7 +3743,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Napredek" @@ -3746,16 +3772,16 @@ msgstr "Kakovost" msgid "Querying device..." msgstr "Poizvedovanje po napravi ..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Upravljalnik vrste" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Postavi izbrane skladbe v vrsto" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Postavi skladbo v vrsto" @@ -3767,7 +3793,7 @@ msgstr "Radio (enaka glasnost za vse skladbe)" msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Dež" @@ -3799,7 +3825,7 @@ msgstr "Oceni trenutno skladbo: 4 zvezdice" msgid "Rate the current song 5 stars" msgstr "Oceni trenutno skladbo: 5 zvezdic" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocena" @@ -3857,7 +3883,7 @@ msgstr "Odstrani" msgid "Remove action" msgstr "Odstrani dejanje" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Odstrani podvojene iz seznama predvajanja" @@ -3873,7 +3899,7 @@ msgstr "Odstrani iz Moje glasbe" msgid "Remove from favorites" msgstr "Odstrani iz priljubljenih" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Odstrani iz seznama predvajanja" @@ -3910,7 +3936,7 @@ msgstr "Preimenuj seznam predvajanja" msgid "Rename playlist..." msgstr "Preimenuj seznam predvajanja ..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Znova oštevilči skladbe v naslednjem vrstnem redu ..." @@ -4001,6 +4027,18 @@ msgstr "Vrni se v Clementine" msgid "Right" msgstr "Desno" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4027,7 +4065,7 @@ msgstr "Varno odstrani napravo" msgid "Safely remove the device after copying" msgstr "Varno odstrani napravo po kopiranju" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Hitrost vzorčenja" @@ -4055,7 +4093,7 @@ msgstr "Shrani sliko" msgid "Save playlist" msgstr "Shrani seznam predvajanja" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Shrani seznam predvajanja ..." @@ -4091,7 +4129,7 @@ msgstr "Profil prilagodljive vzorčne hitrosti (SSR)" msgid "Scale size" msgstr "Umeri velikost" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Rezultat" @@ -4100,7 +4138,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Pošlji podatke o predvajanih skladbah" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4184,11 +4222,11 @@ msgstr "Previj trenutno predvajano skladbo za relativno količino" msgid "Seek the currently playing track to an absolute position" msgstr "Previj trenutno predvajano skladbo na absoluten položaj" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Izberi vse" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odstrani izbor" @@ -4216,7 +4254,7 @@ msgstr "Izberi predočenja" msgid "Select visualizations..." msgstr "Izberi predočenja ..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4236,7 +4274,7 @@ msgstr "Podrobnosti strežnika" msgid "Service offline" msgstr "Storitev je nepovezana" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastavi %1 na \"%2\" ..." @@ -4245,7 +4283,7 @@ msgstr "Nastavi %1 na \"%2\" ..." msgid "Set the volume to percent" msgstr "Nastavi glasnost na odstotkov" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Nastavi vrednost za vse izbrane skladbe ..." @@ -4308,7 +4346,7 @@ msgstr "Pokaži lep prikaz na zaslonu" msgid "Show above status bar" msgstr "Pokaži nad vrstico stanja" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Pokaži vse skladbe" @@ -4328,12 +4366,12 @@ msgstr "Pokaži razdelilnike" msgid "Show fullsize..." msgstr "Pokaži v polni velikosti ..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Pokaži v brskalniku datotek ..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4345,11 +4383,11 @@ msgstr "Pokaži med \"Različni izvajalci\"" msgid "Show moodbar" msgstr "Pokaži vrstico razpoloženja" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Pokaži samo podvojene" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Pokaži samo tiste brez oznak" @@ -4389,7 +4427,7 @@ msgstr "Premešaj albume" msgid "Shuffle all" msgstr "Premešaj vse" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Premešaj seznam predvajanja" @@ -4429,7 +4467,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Skoči nazaj po seznamu predvajanja" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Število preskočenih" @@ -4465,7 +4503,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Podrobnosti o skladbi" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "O skladbi" @@ -4497,7 +4535,7 @@ msgstr "Razvrsti skladbe po" msgid "Sorting" msgstr "Razvrščanje" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Vir" @@ -4533,6 +4571,10 @@ msgstr "Običajno" msgid "Starred" msgstr "Z zvezdico" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Predvajaj skladbo, ki je označena v seznamu predvajanja" @@ -4548,7 +4590,7 @@ msgid "" "list" msgstr "Natipkajte nekaj v iskalno polje, da napolnite te seznam z rezultati iskanja" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Začenjanje %1" @@ -4561,7 +4603,7 @@ msgstr "Začenjanje ..." msgid "Stations" msgstr "Postaje" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Zaustavi" @@ -4570,7 +4612,7 @@ msgstr "Zaustavi" msgid "Stop after" msgstr "Zaustavi po" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Zaustavi po tej skladbi" @@ -4738,7 +4780,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Preizkusno obdobje za strežnik Subsonic je končano. Da pridobite licenčni ključ, morate donirati. Za podrobnosti si oglejte subsonic.org." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4779,7 +4821,7 @@ msgid "" "continue?" msgstr "Te datoteke bodo izbrisane iz naprave. Ali ste prepričani, da želite nadaljevati?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4851,9 +4893,10 @@ msgstr "Ta pretok je le za plačane naročnike" msgid "This type of device is not supported: %1" msgstr "Ta vrsta naprave ni podprta: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Naslov" @@ -4875,11 +4918,11 @@ msgstr "Preklopi lep prikaz na zaslonu" msgid "Toggle fullscreen" msgstr "Preklopi celozaslonski način" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Preklopi stanje vrste" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Preklopi med pošiljanjem podatkov o predvajanih skladbah" @@ -4911,12 +4954,13 @@ msgstr "Skupno prenesenih bajtov" msgid "Total network requests made" msgstr "Skupno število omrežnih zahtev" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Skladba" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Prekodiraj glasbo" @@ -5014,7 +5058,7 @@ msgstr "Posodobi seznam predvajanja Grooveshark" msgid "Update all podcasts" msgstr "Posodobi vse podcaste" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Posodobi spremenjene mape v knjižnici" @@ -5169,7 +5213,7 @@ msgstr "Pogled" msgid "Visualization mode" msgstr "Način predočenja" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Predočenja" @@ -5297,7 +5341,7 @@ msgid "" "well?" msgstr "Ali bi želeli tudi druge skladbe v tem albumu premakniti med kategorijo Različni izvajalci?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Ali želite opraviti ponovno preiskovanje celotne knjižnice?" @@ -5309,10 +5353,10 @@ msgstr "Zapiši vse statistike skladb v datoteke skladb" msgid "Wrong username or password." msgstr "Napačno uporabniško ime ali geslo." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Leto" diff --git a/src/translations/sr.po b/src/translations/sr.po index edd055830..576d0ddc3 100644 --- a/src/translations/sr.po +++ b/src/translations/sr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/clementine/language/sr/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "&Centrirano" msgid "&Custom" msgstr "&Посебно" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Специјалитети" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Помоћ" @@ -188,7 +188,7 @@ msgstr "Сакриј..." msgid "&Left" msgstr "&Лево" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Музика" @@ -196,15 +196,15 @@ msgstr "Музика" msgid "&None" msgstr "&Ниједна" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Листа нумера" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Напусти" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Режим понављања" @@ -212,7 +212,7 @@ msgstr "Режим понављања" msgid "&Right" msgstr "&Десно" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Испретумбани режим" @@ -220,7 +220,7 @@ msgstr "Испретумбани режим" msgid "&Stretch columns to fit window" msgstr "&Развуци редове да одговарају прозору" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Алатке" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "О %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "О Клементини" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Више о Qt..." @@ -417,19 +417,19 @@ msgstr "Додај још један ток" msgid "Add directory..." msgstr "Додај фасциклу" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Додај фајл" @@ -437,11 +437,11 @@ msgstr "Додај фајл" msgid "Add files to transcode" msgstr "Додај фајлове за транскодирање" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Додај фасциклу" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Додај фасциклу..." @@ -453,7 +453,7 @@ msgstr "Додај нову фасциклу..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -529,7 +529,7 @@ msgstr "" msgid "Add song year tag" msgstr "Додај ознаку године песме" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Додај ток..." @@ -541,7 +541,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Додај у другу листу" @@ -602,12 +602,12 @@ msgstr "" msgid "After copying..." msgstr "После умножавања...." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Албум" @@ -615,7 +615,7 @@ msgstr "Албум" msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална јачина за све песме)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Албуми са омотима" msgid "Albums without covers" msgstr "Албуми без омота" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Сви фајлови (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Извођач" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Инфо извођача" @@ -794,7 +794,7 @@ msgstr "Ознаке извођача" msgid "Artist's initial" msgstr "Иницијали извођача" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Формат звука" @@ -840,7 +840,7 @@ msgstr "Просечна величина слике" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ОПМ" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Забрани" @@ -898,7 +898,7 @@ msgstr "Најбољи" msgid "Biography from %1" msgstr "Биографија из %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Битски проток" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Потражи ажурирања..." @@ -1054,11 +1054,11 @@ msgstr "" msgid "Clear" msgstr "Очисти" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Очисти листу нумера" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Кликни да би мењао између преосталог и укупног времена" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "Зарез раздваја листу од класа:ниво, ниво је 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" @@ -1197,11 +1197,11 @@ msgstr "Коментар" msgid "Complete tags automatically" msgstr "Попуни ознаке аутоматски" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Попуни ознаке аутоматски..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Подеси библиотеку" @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1297,12 +1297,12 @@ msgstr "Претвори сву музику коју уређај не може msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Умножи на уређај...." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Копирај у библиотеку" @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Не могу да направим Гстример елемент \"%1\" - проверите да ли су инсталирани сви Гстример прикључци" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не може да нађе муксер за %1, провери да ли имаш уграђен исправан додатак Гстримера" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "Не могу да отворим излазни фајл %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Менаџер омота" @@ -1392,11 +1392,11 @@ msgstr "Претапање при аутоматској измени нумер msgid "Cross-fade when changing tracks manually" msgstr "Претапање при ручној измени нумера" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Направљено" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Измењено" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Obriši fajlove" @@ -1565,7 +1565,7 @@ msgstr "Obriši fajlove" msgid "Delete from device..." msgstr "Избруши са уређаја" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Обриши са диска..." @@ -1590,15 +1590,16 @@ msgstr "Избриши оригиналне фајлове" msgid "Deleting files" msgstr "Бришем фајлове" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Избаци означене нумере из реда" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Избаци нумеру из реда" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Одредиште" @@ -1622,10 +1623,14 @@ msgstr "Ime uređaja" msgid "Device properties..." msgstr "Својства уређаја..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Уређаји" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Да ли сте мислили" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "Искључено" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1682,7 +1687,7 @@ msgstr "Опције приказа" msgid "Display the on-screen-display" msgstr "Прикажи екрански преглед" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Уради поновно скенирање библиотеке" @@ -1804,6 +1809,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Промењив режим је укључен" @@ -1816,12 +1825,12 @@ msgstr "Промењиво насумично мешање" msgid "Edit smart playlist..." msgstr "Измени паметну листу" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Уреди ознаку..." @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "Уреди податке о нумери" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Уреди податке о нумери..." @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "Читава колекција" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Еквилајзер" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Грешка" @@ -1969,7 +1978,7 @@ msgstr "Грешка при брисању песама" msgid "Error downloading Spotify plugin" msgstr "Грешка преузимања Spotify додатка" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Грешка при учитавању %1" @@ -1979,12 +1988,12 @@ msgstr "Грешка при учитавању %1" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Грешка при обради %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Грешка приликом учитавања аудио CD-a" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2109,6 +2118,10 @@ msgstr "С утапањем" msgid "Fading duration" msgstr "Трајање утапања" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "Грешка добављања омотнице" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "наставак фајла" @@ -2168,19 +2185,19 @@ msgstr "наставак фајла" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "име фајла" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Име фајла (без путање)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "величина фајла" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "тип фајла" msgid "Filename" msgstr "Име фајла" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Фајлови" @@ -2310,9 +2327,10 @@ msgstr "" msgid "General settings" msgstr "Опште поставке" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" @@ -2344,11 +2362,11 @@ msgstr "Дајте јој име:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Иди на нову картицу листе" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Иди на предходну картицу листе" @@ -2418,7 +2436,7 @@ msgstr "Уреди према жанровима и албумима" msgid "Group by Genre/Artist/Album" msgstr "Групиши према Жанру/Извођачу/Албуму" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "информација" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Убаци..." @@ -2585,7 +2607,7 @@ msgstr "Instalirano" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Интернет" @@ -2625,6 +2647,10 @@ msgstr "Неважећи кључ сесије" msgid "Invalid username and/or password" msgstr "Pogrešno koriničko ime i / ili šifra" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2649,7 +2675,7 @@ msgstr "Џамендо врх нумере ове седмице" msgid "Jamendo database" msgstr "Jamendo baza podataka" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Скочи на нумеру која се тренутно пушта" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "Задржи оригиналне фајлове" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Мачићи" @@ -2697,7 +2723,7 @@ msgstr "Велики омот албума" msgid "Large sidebar" msgstr "Велики" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Последње пуштано" @@ -2780,12 +2806,12 @@ msgstr "Оставите празно за подразмевано. Приме msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Трајање" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Библиотека" @@ -2793,7 +2819,7 @@ msgstr "Библиотека" msgid "Library advanced grouping" msgstr "Напредно груписање библиотеке" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "Учитај омот са диска" msgid "Load playlist" msgstr "Учитај листу нумера" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Учитај листу нумера" @@ -2867,11 +2893,11 @@ msgstr "Учитавање песама" msgid "Loading stream" msgstr "Учитавам ток" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Учитавам нумере" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Учитавање инфо песама" @@ -2890,10 +2916,10 @@ msgstr "Учитава датотеке/УРЛ-е, замењујући трен #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Пријава" @@ -2905,7 +2931,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Воли" @@ -2968,7 +2994,7 @@ msgstr "Завршено преузимање са Магнатјуна" msgid "Main profile (MAIN)" msgstr "Главни налог (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "Meseci" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "Тачке монтирања" msgid "Move down" msgstr "Помери доле" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Премести у библиотеку" @@ -3090,7 +3116,7 @@ msgstr "Премести у библиотеку" msgid "Move up" msgstr "Помери горе" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3098,7 +3124,7 @@ msgstr "" msgid "Music Library" msgstr "Музичка библиотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Утишај" @@ -3186,7 +3212,7 @@ msgstr "Никад пуштано" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Нова листа нумера" @@ -3210,7 +3236,7 @@ msgstr "Најновије нумере" msgid "Next" msgstr "Sledeće" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Следећа нумера" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "Ништа" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ниједна од одабраних песама није погодна за умножавање на уређај" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "Отвори уређај" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3418,7 +3444,7 @@ msgstr "Намештено за битрејт" msgid "Optimize for quality" msgstr "Намештено за квалитет" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Opcije..." @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "Организуј фајлове" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Организуј фајлове..." @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Излазне опције" @@ -3495,7 +3521,7 @@ msgstr "Журке" msgid "Password" msgstr "Лозинка" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Паузирај" @@ -3508,7 +3534,7 @@ msgstr "Паузирај пуштање" msgid "Paused" msgstr "Паузирано" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Пусти" @@ -3536,7 +3562,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "број пуштања" @@ -3591,7 +3617,7 @@ msgstr "Опције листе нуера" msgid "Playlist type" msgstr "Тип листе" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3643,7 +3669,7 @@ msgstr "Претпојачање" msgid "Preferences" msgstr "Поставке" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Поставке..." @@ -3698,7 +3724,7 @@ msgstr "Преглед" msgid "Previous" msgstr "Prethodno" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Претходна нумера" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "Налог" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Напредак" @@ -3741,16 +3767,16 @@ msgstr "Квалитет" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Menaxer редоследа" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Стави у ред одабране нумере" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Стави нумеру у ред" @@ -3762,7 +3788,7 @@ msgstr "Радио (једнака јачина за све песме)" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Киша" @@ -3794,7 +3820,7 @@ msgstr "Оцени тренутну песму 4 звезда" msgid "Rate the current song 5 stars" msgstr "Оцени тренутну песму 5 звезда" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocena" @@ -3852,7 +3878,7 @@ msgstr "Уклони" msgid "Remove action" msgstr "Ukloni radnju" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Уклони са листе нумера" @@ -3905,7 +3931,7 @@ msgstr "Преименуј листу нумера" msgid "Rename playlist..." msgstr "Преименуј листу нумера..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3996,6 +4022,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Рок" @@ -4022,7 +4060,7 @@ msgstr "Безбедно извади уређај" msgid "Safely remove the device after copying" msgstr "Безбедно извади уређај после умножавања" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "узорковање" @@ -4050,7 +4088,7 @@ msgstr "Сачувај слику" msgid "Save playlist" msgstr "Сачувај листу нумера" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Сачувај листу нумера..." @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "оцена" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "Нађи тренутну нумеру по релативном изн msgid "Seek the currently playing track to an absolute position" msgstr "Нађи тренутну нумеру на тачној позицији" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Изабери све" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Означи ништа" @@ -4211,7 +4249,7 @@ msgstr "Одабери визуелизације" msgid "Select visualizations..." msgstr "Одабери визуелизације..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "Сервис ван мреже" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Подешено %1 од \"%2\"..." @@ -4240,7 +4278,7 @@ msgstr "Подешено %1 од \"%2\"..." msgid "Set the volume to percent" msgstr "Намести јачини звука на процента" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Подеси вредност за све означене нумере" @@ -4303,7 +4341,7 @@ msgstr "Прикажи лепи OSD" msgid "Show above status bar" msgstr "Прикажи изнад статусне траке" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Prikaži sve pesme" @@ -4323,12 +4361,12 @@ msgstr "Прикажи раздвајаче" msgid "Show fullsize..." msgstr "Прикажи пуну величину..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Прикажи у фајл прегледачу..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "Прикажи у разним извођачима" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Прикажи само дупликате" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Прикажи само неозначене" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "Испретумбај све" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Претумбај листу" @@ -4424,7 +4462,7 @@ msgstr "Ска" msgid "Skip backwards in playlist" msgstr "Прескочи уназад у листи нумера" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Прескочи збир" @@ -4460,7 +4498,7 @@ msgstr "Лагани рок" msgid "Song Information" msgstr "Подаци о песми" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Подаци о песми" @@ -4492,7 +4530,7 @@ msgstr "Поређај песме по" msgid "Sorting" msgstr "Ређање" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4528,6 +4566,10 @@ msgstr "Стандард" msgid "Starred" msgstr "Звездицом" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Почни листу тренутно пуштаним" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Покрећем %1" @@ -4556,7 +4598,7 @@ msgstr "Почињем..." msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Заустави" @@ -4565,7 +4607,7 @@ msgstr "Заустави" msgid "Stop after" msgstr "Стани после" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Стани после ове нумере" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "Ови фајлови ће се избрисати са уређаја, да ли сигурно желите да наставите?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "Овај ток је само за претплатнике" msgid "This type of device is not supported: %1" msgstr "Овај тип уређаја није подржан: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Наслов" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Преко читавог екрана" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "Укупно бајтова пребачено" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Нумера" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Транскодирај музику" @@ -5009,7 +5053,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Освежи промењене директоријуме библиотеке" @@ -5164,7 +5208,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Визуелизације" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Година" diff --git a/src/translations/sr@latin.po b/src/translations/sr@latin.po index 787f6a404..9f2ddf1a6 100644 --- a/src/translations/sr@latin.po +++ b/src/translations/sr@latin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/clementine/language/sr@latin/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "" msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1403,63 +1403,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/sv.po b/src/translations/sv.po index 3ec51d78b..8753cee99 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/clementine/language/sv/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -175,11 +175,11 @@ msgstr "&Centrera" msgid "&Custom" msgstr "A&npassad" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Extrafunktioner" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Hjälp" @@ -196,7 +196,7 @@ msgstr "Dölj..." msgid "&Left" msgstr "&Vänster" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Musik" @@ -204,15 +204,15 @@ msgstr "Musik" msgid "&None" msgstr "I&nga" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Spellista" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "A&vsluta" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Upprepningsläge" @@ -220,7 +220,7 @@ msgstr "Upprepningsläge" msgid "&Right" msgstr "&Höger" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Blandningsläge" @@ -228,7 +228,7 @@ msgstr "Blandningsläge" msgid "&Stretch columns to fit window" msgstr "Justera kolumner så de passar fönstret" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "Verktyg" @@ -373,11 +373,11 @@ msgstr "Avbryt" msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Om Qt..." @@ -425,19 +425,19 @@ msgstr "Lägg till en annan ström..." msgid "Add directory..." msgstr "Lägg till katalog..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Lägg till fil" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Lägg till fil till transkodaren" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Lägg till fil(er) till transkodaren" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Lägg till fil..." @@ -445,11 +445,11 @@ msgstr "Lägg till fil..." msgid "Add files to transcode" msgstr "Lägg till filer för omkodning" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Lägg till mapp" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Lägg till mapp..." @@ -461,7 +461,7 @@ msgstr "Lägg till mapp..." msgid "Add podcast" msgstr "Lägg till podsändning" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Lägg till podsändning..." @@ -537,7 +537,7 @@ msgstr "Lägg till etikett för spårnummer" msgid "Add song year tag" msgstr "Lägg till etikett för år" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Lägg till ström..." @@ -549,7 +549,7 @@ msgstr "Lägg till i Grooveshark-favoriter" msgid "Add to Grooveshark playlists" msgstr "Lägg till i Grooveshark-spellistor" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Lägg till i en annan spellista" @@ -610,12 +610,12 @@ msgstr "Efter " msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -623,7 +623,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (lämplig ljudstyrka för alla spår)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -645,11 +645,11 @@ msgstr "Album med omslag" msgid "Albums without covers" msgstr "Album utan omslag" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Alla filer (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -776,17 +776,17 @@ msgid "" "the songs of your library?" msgstr "Är du säker på att du vill skriva låtstatistik till låtfilerna på alla låtar i ditt musikbibliotek?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artistinfo" @@ -802,7 +802,7 @@ msgstr "Artist-taggar" msgid "Artist's initial" msgstr "Artistens initialer" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Ljudformat" @@ -848,7 +848,7 @@ msgstr "Genomsnittlig bildstorlek" msgid "BBC Podcasts" msgstr "BBC podsändningar" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -877,7 +877,7 @@ msgstr "Säkerhetskopiera databasen" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Blockera" @@ -906,7 +906,7 @@ msgstr "Bästa" msgid "Biography from %1" msgstr "Biografi från %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bithastighet" @@ -1012,7 +1012,7 @@ msgstr "Byte från/till Monoljud börjar gälla från nästa låt" msgid "Check for new episodes" msgstr "Kolla efter nya avsnitt" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Leta efter uppdateringar..." @@ -1062,11 +1062,11 @@ msgstr "Rensar upp" msgid "Clear" msgstr "Rensa" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Rensa spellistan" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1157,8 +1157,8 @@ msgstr "Klicka här för att favorisera denna spellista så att den sparas och f msgid "Click to toggle between remaining time and total time" msgstr "Klicka för att växla mellan återstående tid och total tid" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1196,7 +1196,7 @@ msgstr "Färger" msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista, separerad med komma, över class:level; level är 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1205,11 +1205,11 @@ msgstr "Kommentar" msgid "Complete tags automatically" msgstr "Fyll i etiketter automatiskt" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Fyll i etiketter automatiskt..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1248,7 +1248,7 @@ msgstr "Konfigurera Subsonic..." msgid "Configure global search..." msgstr "Ställ in Global sökning..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Konfigurera biblioteket..." @@ -1285,7 +1285,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Uppkopplingen har avbrutits, kontrollera serverns URL. Exempel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsoll" @@ -1305,12 +1305,12 @@ msgstr "Konvertera all musik som enheten inte kan spela upp" msgid "Copy to clipboard" msgstr "Kopiera till klippbordet" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiera till enhet..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kopiera till biblioteket..." @@ -1332,14 +1332,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Kunde inte skapa GStreamer-elementet \"%1\" - kontrollera att du har alla GStreamer-insticken som krävs installerade" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunde inte hitta en muxer för %1, kontrollera att du har de korrekta GStreamer-insticken installerade" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1356,7 +1356,7 @@ msgid "Couldn't open output file %1" msgstr "Kunde inte öppna utdatafilen %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Omslagshanterare" @@ -1400,11 +1400,11 @@ msgstr "Korstona vid automatiskt byte av spår" msgid "Cross-fade when changing tracks manually" msgstr "Korstona vid manuellt byte av spår" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1412,63 +1412,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1511,11 +1511,11 @@ msgid "" "recover your database" msgstr "Databas-korruption upptäckt. Läs https://code.google.com/p/clementine-player/wiki/DatabaseCorruption för instruktioner om hur du återställer din databas" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum skapad" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum ändrad" @@ -1565,7 +1565,7 @@ msgid "Delete downloaded data" msgstr "Ta bort nedladdad data" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Ta bort filer" @@ -1573,7 +1573,7 @@ msgstr "Ta bort filer" msgid "Delete from device..." msgstr "Ta bort från enhet..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Ta bort från disk..." @@ -1598,15 +1598,16 @@ msgstr "Ta bort originalfilerna" msgid "Deleting files" msgstr "Tar bort filer" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Avköa valda spår" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Avköa spår" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Mål" @@ -1630,10 +1631,14 @@ msgstr "Enhetsnamn" msgid "Device properties..." msgstr "Enhetsinställningar..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Enheter" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Menade du" @@ -1672,8 +1677,8 @@ msgstr "Inaktivera moodbar-generering" msgid "Disabled" msgstr "Inaktiverat" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skiva" @@ -1690,7 +1695,7 @@ msgstr "Visningsalternativ" msgid "Display the on-screen-display" msgstr "Visa on-screen-display" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Gör en fullständig omsökning av biblioteket" @@ -1812,6 +1817,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamisk läge är på" @@ -1824,12 +1833,12 @@ msgstr "Dynamisk slumpmässig blandning" msgid "Edit smart playlist..." msgstr "Redigera smart spellista..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Redigera etikett \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Redigera tagg..." @@ -1842,7 +1851,7 @@ msgid "Edit track information" msgstr "Redigera spårinformation" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Redigera spårinformation..." @@ -1943,7 +1952,7 @@ msgstr "Ange detta IP-nummer i Appen för att ansluta till Clementine." msgid "Entire collection" msgstr "Hela samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Equalizer" @@ -1957,7 +1966,7 @@ msgstr "Motsvarar --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Fel" @@ -1977,7 +1986,7 @@ msgstr "Fel vid borttagning av låtar" msgid "Error downloading Spotify plugin" msgstr "Fel vid hämtning av Spotify-insticket" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Fel vid insläsning av %1" @@ -1987,12 +1996,12 @@ msgstr "Fel vid insläsning av %1" msgid "Error loading di.fm playlist" msgstr "Fel vid laddning av di.fm spellista" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Fel vid bearbetning av %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Fel vid läsning av ljud-CD" @@ -2070,27 +2079,27 @@ msgstr "Exporteringen är färdig" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exporterat %1 omslag av %2 (%3 överhoppade)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2117,6 +2126,10 @@ msgstr "Toning" msgid "Fading duration" msgstr "Toningslängd" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Misslyckades hämta katalog" @@ -2168,6 +2181,10 @@ msgstr "Hämtar bibliotek från Subsonic" msgid "Fetching cover error" msgstr "Fel vid hämtning av omslag" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Filändelse" @@ -2176,19 +2193,19 @@ msgstr "Filändelse" msgid "File formats" msgstr "Filformat" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnamn" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Filnamn (utan sökväg)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstorlek" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2198,7 +2215,7 @@ msgstr "Filtyp" msgid "Filename" msgstr "Filnamn" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Filer" @@ -2318,9 +2335,10 @@ msgstr "Allmänt" msgid "General settings" msgstr "Allmänna inställningar" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" @@ -2352,11 +2370,11 @@ msgstr "Ge den ett namn:" msgid "Go" msgstr "Starta" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Gå till nästa spellisteflik" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Gå till föregående spellisteflik" @@ -2426,7 +2444,7 @@ msgstr "Gruppera efter genre/album" msgid "Group by Genre/Artist/Album" msgstr "Gruppera efter genre/artist/album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppera" @@ -2581,6 +2599,10 @@ msgstr "Indexerar %1" msgid "Information" msgstr "Information" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Infoga..." @@ -2593,7 +2615,7 @@ msgstr "Installerad" msgid "Integrity check" msgstr "Integritetskontroll" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2633,6 +2655,10 @@ msgstr "Felaktig sessionsnyckel" msgid "Invalid username and/or password" msgstr "Fel användarnamn och/eller lösenord" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2657,7 +2683,7 @@ msgstr "Jamendos favoritspår för veckan" msgid "Jamendo database" msgstr "Jamendos databas" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Hoppa till spåret som spelas just nu" @@ -2681,7 +2707,7 @@ msgstr "Fortsätt köra i bakgrunden när fönstret är stängt" msgid "Keep the original files" msgstr "Behåll originalfilerna" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kittens" @@ -2705,7 +2731,7 @@ msgstr "Stort albumomslag" msgid "Large sidebar" msgstr "Stor sidopanel" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Senast spelad" @@ -2788,12 +2814,12 @@ msgstr "Lämna tomt för standardvärdet. Exempel: \"/dev/dsp\", \"front\", etc. msgid "Left" msgstr "Vänster" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Speltid" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Bibliotek" @@ -2801,7 +2827,7 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avancerad bibliotekgruppering" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Notis om omsökning av biblioteket" @@ -2846,7 +2872,7 @@ msgstr "Läs in omslagsbild från disk..." msgid "Load playlist" msgstr "Läs in spellista" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Läs in spellista..." @@ -2875,11 +2901,11 @@ msgstr "Laddar låtar" msgid "Loading stream" msgstr "Läser in ström" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Läser in spår" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Laddar låtinformation" @@ -2898,10 +2924,10 @@ msgstr "Läser in filer/webbadresser, ersätter aktuell spellista" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Inloggning" @@ -2913,7 +2939,7 @@ msgstr "Misslyckad inloggning" msgid "Long term prediction profile (LTP)" msgstr "Långsiktig förutsägelseprofil (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Älska" @@ -2976,7 +3002,7 @@ msgstr "Magnatude-hämtning slutförd" msgid "Main profile (MAIN)" msgstr "Huvudprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Gör så!" @@ -3059,7 +3085,7 @@ msgstr "Mono uppspeling" msgid "Months" msgstr "Månader" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Stämning" @@ -3089,7 +3115,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flytta nedåt" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Flytta till biblioteket..." @@ -3098,7 +3124,7 @@ msgstr "Flytta till biblioteket..." msgid "Move up" msgstr "Flytta uppåt" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musik" @@ -3106,7 +3132,7 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Tyst" @@ -3194,7 +3220,7 @@ msgstr "Starta aldrig uppspelning" msgid "New folder" msgstr "Ny mapp" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Ny spellista" @@ -3218,7 +3244,7 @@ msgstr "Nyaste spåren" msgid "Next" msgstr "Nästa" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Nästa spår" @@ -3257,7 +3283,7 @@ msgstr "Inga korta block" msgid "None" msgstr "Inga" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ingen av de valda låtarna lämpar sig för kopiering till en enhet" @@ -3375,7 +3401,7 @@ msgstr "Opacitet" msgid "Open %1 in browser" msgstr "Öppna %1 i webbläsare" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Öppna &ljud-CD..." @@ -3391,7 +3417,7 @@ msgstr "Öppna OPML fil..." msgid "Open device" msgstr "Öppna enhet" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Öppna fil..." @@ -3426,7 +3452,7 @@ msgstr "Optimera för bithastighet" msgid "Optimize for quality" msgstr "Optimera för kvalitet" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Alternativ..." @@ -3438,7 +3464,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Organisera filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Organisera filer..." @@ -3462,7 +3488,7 @@ msgstr "Utgång" msgid "Output device" msgstr "Utgångsenhet" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Utdataalternativ" @@ -3503,7 +3529,7 @@ msgstr "Party" msgid "Password" msgstr "Lösenord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Gör paus" @@ -3516,7 +3542,7 @@ msgstr "Gör paus i uppspelning" msgid "Paused" msgstr "Pausad" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Artist" @@ -3529,9 +3555,9 @@ msgstr "Pixel" msgid "Plain sidebar" msgstr "Vanlig sidorad" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Spela upp" @@ -3544,7 +3570,7 @@ msgstr "Spela upp artist eller tagg" msgid "Play artist radio..." msgstr "Spela upp artistradio..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antal uppspelningar" @@ -3599,7 +3625,7 @@ msgstr "Alternativ för spellista" msgid "Playlist type" msgstr "Spellistetyp" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Spellistor" @@ -3651,7 +3677,7 @@ msgstr "Förförstärkare" msgid "Preferences" msgstr "Inställningar" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Inställningar..." @@ -3706,7 +3732,7 @@ msgstr "Förhandsvisning" msgid "Previous" msgstr "Föregående" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Föregående spår" @@ -3720,7 +3746,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Förlopp" @@ -3749,16 +3775,16 @@ msgstr "Kvalitet" msgid "Querying device..." msgstr "Förfrågar enhet..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Köhanterare" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Kölägg valda spår" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Kölägg spår" @@ -3770,7 +3796,7 @@ msgstr "Radio (likvärdig ljudstyrka för alla spår)" msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Regn" @@ -3802,7 +3828,7 @@ msgstr "Betygsätt den aktuella låten 4 stjärnor" msgid "Rate the current song 5 stars" msgstr "Betygsätt den aktuella låten 5 stjärnor" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Betyg" @@ -3860,7 +3886,7 @@ msgstr "Ta bort" msgid "Remove action" msgstr "Ta bort åtgärd" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Ta bort dubbletter från spellistan" @@ -3876,7 +3902,7 @@ msgstr "Ta bort från Min Musik" msgid "Remove from favorites" msgstr "Ta bort från favoriter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Ta bort från spellistan" @@ -3913,7 +3939,7 @@ msgstr "Döp om spellista" msgid "Rename playlist..." msgstr "Döp om spellistan..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Omnumrera spår i denna ordning..." @@ -4004,6 +4030,18 @@ msgstr "Återgå till Clementine" msgid "Right" msgstr "Höger" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4030,7 +4068,7 @@ msgstr "Säker borttagning av enhet" msgid "Safely remove the device after copying" msgstr "Säker borttagning av enheten efter kopiering" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsfrekvens" @@ -4058,7 +4096,7 @@ msgstr "Spara bild" msgid "Save playlist" msgstr "Spara spellista" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Spara spellistan..." @@ -4094,7 +4132,7 @@ msgstr "Skalbar samplingsfrekvensprofil (SSR)" msgid "Scale size" msgstr "Skalnings storlek" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Poäng" @@ -4103,7 +4141,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Skrobbla låtar som jag lyssnar på" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4187,11 +4225,11 @@ msgstr "Hoppa till en relativ position i spåret som spelas för närvarande" msgid "Seek the currently playing track to an absolute position" msgstr "Hoppa till en absolut position i spåret som spelas för närvarande" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Välj alla" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Välj ingen" @@ -4219,7 +4257,7 @@ msgstr "Välj visualiseringar" msgid "Select visualizations..." msgstr "Välj visualiseringar..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "Serverdetaljer" msgid "Service offline" msgstr "Tjänst inte tillgänglig" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ställ in %1 till \"%2\"..." @@ -4248,7 +4286,7 @@ msgstr "Ställ in %1 till \"%2\"..." msgid "Set the volume to percent" msgstr "Ställ in volymen till procent" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Ställ in värde för alla valda spår..." @@ -4311,7 +4349,7 @@ msgstr "Visa en skön notifiering" msgid "Show above status bar" msgstr "Visa ovanför statusraden" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Visa alla låtar" @@ -4331,12 +4369,12 @@ msgstr "Visa avdelare" msgid "Show fullsize..." msgstr "Visa full storlek..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Visa i filhanterare..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4348,11 +4386,11 @@ msgstr "Visa i diverse artister" msgid "Show moodbar" msgstr "Visa stämningsdiagram" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Visa endast dubbletter" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Visa otaggade endast" @@ -4392,7 +4430,7 @@ msgstr "Blanda album" msgid "Shuffle all" msgstr "Blanda allt" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Blanda spellistan" @@ -4432,7 +4470,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Gå bakåt i spellista" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antal överhoppningar" @@ -4468,7 +4506,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Låtinformation" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Låtinfo" @@ -4500,7 +4538,7 @@ msgstr "Ordna låtar efter" msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Källa" @@ -4536,6 +4574,10 @@ msgstr "Standard" msgid "Starred" msgstr "Stjärnmärkta" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Starta spellistan som spelas för närvarande" @@ -4551,7 +4593,7 @@ msgid "" "list" msgstr "Skriv nånting i sökrutan ovan för att få sökresultat i denna lista" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Startar %1" @@ -4564,7 +4606,7 @@ msgstr "Startar..." msgid "Stations" msgstr "Stationer" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Stoppa" @@ -4573,7 +4615,7 @@ msgstr "Stoppa" msgid "Stop after" msgstr "Stoppa efter" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Stoppa efter detta spår" @@ -4741,7 +4783,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Testperioden för Subsonics server är över. Var vänlig och donera för att få en licensnyckel. Besök subsonic.org för mer detaljer." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4782,7 +4824,7 @@ msgid "" "continue?" msgstr "Filerna kommer att tas bort från enheten, är du säker på att du vill fortsätta?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4854,9 +4896,10 @@ msgstr "Denna ström är endast för betalkunder" msgid "This type of device is not supported: %1" msgstr "Denna typ av enhet är inte stödd: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" @@ -4878,11 +4921,11 @@ msgstr "Växla Pretty OSD" msgid "Toggle fullscreen" msgstr "Växla fullskärm" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Växla köstatus" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Växla skrobbling" @@ -4914,12 +4957,13 @@ msgstr "Totalt antal byte överfört" msgid "Total network requests made" msgstr "Totalt antal nätverksbegäran" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spår" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Omkoda musik" @@ -5017,7 +5061,7 @@ msgstr "Uppdatera Groovesharkspellista " msgid "Update all podcasts" msgstr "Uppdatera alla podsändningar" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Uppdatera ändrade bibliotekskataloger" @@ -5172,7 +5216,7 @@ msgstr "Visa" msgid "Visualization mode" msgstr "Visualiseringsläge" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Visualiseringar" @@ -5300,7 +5344,7 @@ msgid "" "well?" msgstr "Vill du flytta på 'andra låtar' i det här albumet till Blandade Artister också?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Vill du köra en fullständig omsökning nu?" @@ -5312,10 +5356,10 @@ msgstr "Skriv all låtstatistik till låtfilerna" msgid "Wrong username or password." msgstr "Fel användarnamn eller lösenord." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "År" diff --git a/src/translations/te.po b/src/translations/te.po index 494fe1261..f2c2aee52 100644 --- a/src/translations/te.po +++ b/src/translations/te.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/clementine/language/te/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -166,11 +166,11 @@ msgstr "&మధ్యస్థం" msgid "&Custom" msgstr "&అనురూపితం" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "" @@ -195,15 +195,15 @@ msgstr "" msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "" @@ -364,11 +364,11 @@ msgstr "" msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "" @@ -416,19 +416,19 @@ msgstr "" msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "" @@ -436,11 +436,11 @@ msgstr "" msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -528,7 +528,7 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "" @@ -540,7 +540,7 @@ msgstr "" msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "" @@ -601,12 +601,12 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -636,11 +636,11 @@ msgstr "" msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "" @@ -767,17 +767,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "" @@ -793,7 +793,7 @@ msgstr "" msgid "Artist's initial" msgstr "" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -868,7 +868,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "" @@ -897,7 +897,7 @@ msgstr "" msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "" @@ -1053,11 +1053,11 @@ msgstr "" msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1148,8 +1148,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1187,7 +1187,7 @@ msgstr "" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1196,11 +1196,11 @@ msgstr "" msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1239,7 +1239,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "" @@ -1276,7 +1276,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1296,12 +1296,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "" @@ -1323,14 +1323,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1347,7 +1347,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "" @@ -1391,11 +1391,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "" @@ -1403,63 +1403,63 @@ msgstr "" msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "" @@ -1502,11 +1502,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" @@ -1556,7 +1556,7 @@ msgid "Delete downloaded data" msgstr "" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "" @@ -1564,7 +1564,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "" @@ -1589,15 +1589,16 @@ msgstr "" msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1621,10 +1622,14 @@ msgstr "" msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1663,8 +1668,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1681,7 +1686,7 @@ msgstr "" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1803,6 +1808,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1815,12 +1824,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "" @@ -1833,7 +1842,7 @@ msgid "Edit track information" msgstr "" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "" @@ -1934,7 +1943,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "" @@ -1948,7 +1957,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "" @@ -1968,7 +1977,7 @@ msgstr "" msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "" @@ -1978,12 +1987,12 @@ msgstr "" msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "" @@ -2061,27 +2070,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "" @@ -2108,6 +2117,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2159,6 +2172,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2167,19 +2184,19 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2189,7 +2206,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "" @@ -2309,9 +2326,10 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" @@ -2343,11 +2361,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2417,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2572,6 +2590,10 @@ msgstr "" msgid "Information" msgstr "" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2584,7 +2606,7 @@ msgstr "" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "" @@ -2624,6 +2646,10 @@ msgstr "" msgid "Invalid username and/or password" msgstr "" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "" @@ -2648,7 +2674,7 @@ msgstr "" msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2672,7 +2698,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "" @@ -2696,7 +2722,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2779,12 +2805,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "" @@ -2792,7 +2818,7 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2837,7 +2863,7 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "" @@ -2866,11 +2892,11 @@ msgstr "" msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "" @@ -2889,10 +2915,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "" @@ -2904,7 +2930,7 @@ msgstr "" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2967,7 +2993,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "" @@ -3050,7 +3076,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3080,7 +3106,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "" @@ -3097,7 +3123,7 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3185,7 +3211,7 @@ msgstr "" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "" @@ -3209,7 +3235,7 @@ msgstr "" msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "" @@ -3248,7 +3274,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3366,7 +3392,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "" @@ -3382,7 +3408,7 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "" @@ -3417,7 +3443,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "" @@ -3429,7 +3455,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "" @@ -3453,7 +3479,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "" @@ -3494,7 +3520,7 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3507,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3520,9 +3546,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3535,7 +3561,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3590,7 +3616,7 @@ msgstr "" msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "" @@ -3642,7 +3668,7 @@ msgstr "" msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "" @@ -3697,7 +3723,7 @@ msgstr "" msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "" @@ -3711,7 +3737,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3740,16 +3766,16 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3761,7 +3787,7 @@ msgstr "" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3793,7 +3819,7 @@ msgstr "" msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" @@ -3851,7 +3877,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3867,7 +3893,7 @@ msgstr "" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3904,7 +3930,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3995,6 +4021,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "" @@ -4021,7 +4059,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4049,7 +4087,7 @@ msgstr "" msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "" @@ -4085,7 +4123,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4094,7 +4132,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4178,11 +4216,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4210,7 +4248,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4230,7 +4268,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4239,7 +4277,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4302,7 +4340,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "" @@ -4322,12 +4360,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4339,11 +4377,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4383,7 +4421,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4423,7 +4461,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4459,7 +4497,7 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "" @@ -4491,7 +4529,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "" @@ -4527,6 +4565,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4542,7 +4584,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4555,7 +4597,7 @@ msgstr "" msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4564,7 +4606,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4732,7 +4774,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4773,7 +4815,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,9 +4887,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4869,11 +4912,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4905,12 +4948,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "" @@ -5008,7 +5052,7 @@ msgstr "" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5163,7 +5207,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "" @@ -5291,7 +5335,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5303,10 +5347,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "" diff --git a/src/translations/tr.po b/src/translations/tr.po index df765bdb7..6d2ae3048 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 12:42+0000\n" -"Last-Translator: volkangezer \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/clementine/language/tr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -183,11 +183,11 @@ msgstr "&Ortala" msgid "&Custom" msgstr "&Özel" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Ekler" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Yardım" @@ -204,7 +204,7 @@ msgstr "&Gizle..." msgid "&Left" msgstr "&Sol" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Müzik" @@ -212,15 +212,15 @@ msgstr "Müzik" msgid "&None" msgstr "&Hiçbiri" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Çalma Listesi" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Çık" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Tekrar kipi" @@ -228,7 +228,7 @@ msgstr "Tekrar kipi" msgid "&Right" msgstr "&Sağ" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Rastgele kipi" @@ -236,7 +236,7 @@ msgstr "Rastgele kipi" msgid "&Stretch columns to fit window" msgstr "&Sütunları pencereye sığacak şekilde ayarla" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Araçlar" @@ -381,11 +381,11 @@ msgstr "İptal" msgid "About %1" msgstr "%1 Hakkında" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine Hakkında..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt Hakkında..." @@ -433,19 +433,19 @@ msgstr "Başka bir yayın ekle..." msgid "Add directory..." msgstr "Dizin ekle..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Dosya ekle" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Dosyayı dönüştürücüye ekle" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Dosyayı/dosyaları dönüştürücüye ekle" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Dosya ekle..." @@ -453,11 +453,11 @@ msgstr "Dosya ekle..." msgid "Add files to transcode" msgstr "Dönüştürülecek dosyaları ekle" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Klasör ekle" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Klasör ekle..." @@ -469,7 +469,7 @@ msgstr "Yeni klasör ekle..." msgid "Add podcast" msgstr "Podcast ekle" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast ekle..." @@ -545,7 +545,7 @@ msgstr "Şarkıya parça etiketi ekle" msgid "Add song year tag" msgstr "Yıl etiketi ekle" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Yayın ekle..." @@ -557,7 +557,7 @@ msgstr "Grooveshark'i favorilere ekle" msgid "Add to Grooveshark playlists" msgstr "Grooveshark'i müzik listelerine ekle" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Başka bir çalma listesine ekle" @@ -618,12 +618,12 @@ msgstr "Sonra " msgid "After copying..." msgstr "Kopyalandıktan sonra..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albüm" @@ -631,7 +631,7 @@ msgstr "Albüm" msgid "Album (ideal loudness for all tracks)" msgstr "Albüm (tüm parçalar için ideal ses yüksekliği)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -653,11 +653,11 @@ msgstr "Kapak resmine olan albümler" msgid "Albums without covers" msgstr "Kapak resmi olmayan albümler" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Tüm şeref Hypnotoad'a gitsin!" @@ -784,17 +784,17 @@ msgid "" "the songs of your library?" msgstr "Şarkıların istatistiklerini, kütüphanenizdeki tüm şarkıların kendi dosyalarına yazmak istediğinizden emin misiniz?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Sanatçı" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Sanatçı bilgisi" @@ -810,7 +810,7 @@ msgstr "Sanatçı etiketleri" msgid "Artist's initial" msgstr "Sanatçının kısaltması" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Ses biçimi" @@ -856,7 +856,7 @@ msgstr "Ortalama resim boyutu" msgid "BBC Podcasts" msgstr "BBC Podcastları" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -885,7 +885,7 @@ msgstr "Veritabanını yedekliyor" msgid "Balance" msgstr "Denge" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Yasakla" @@ -914,7 +914,7 @@ msgstr "En iyi" msgid "Biography from %1" msgstr "%1 sitesinden biyografi" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit oranı" @@ -1020,7 +1020,7 @@ msgstr "Mono çalma ayarını değiştirmek sonraki şarkılarda da etkili olur" msgid "Check for new episodes" msgstr "Yeni bölümler için kontrol et" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Güncellemeleri denetle..." @@ -1070,11 +1070,11 @@ msgstr "Temizliyor" msgid "Clear" msgstr "Temizle" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Çalma listesini temizle" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1165,8 +1165,8 @@ msgstr "Bu çalma listesini beğenmek için buraya tıkladığınızda, kenar ç msgid "Click to toggle between remaining time and total time" msgstr "Toplam zaman ve kalan zaman arasında seçim yapmak için tıklayın" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1204,7 +1204,7 @@ msgstr "Renk" msgid "Comma separated list of class:level, level is 0-3" msgstr "Virgülle ayrılmış sınıf:seviye listesi, sınıf 0-3 arasında olabilir " -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Yorum" @@ -1213,11 +1213,11 @@ msgstr "Yorum" msgid "Complete tags automatically" msgstr "Etiketleri otomatik tamamla" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Etiketleri otomatik tamamla..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1256,7 +1256,7 @@ msgstr "Subsonic'i yapılandır..." msgid "Configure global search..." msgstr "Genel aramayı düzenle..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Kütüphaneyi düzenle..." @@ -1293,7 +1293,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Bağlantı zaman aşımına uğradı, sunucu adresini denetleyin. Örnek: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsol" @@ -1313,12 +1313,12 @@ msgstr "Aygıtın çalamadığı müzikleri dönüştür" msgid "Copy to clipboard" msgstr "Panoya kopyala" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Aygıta kopyala..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kütüphaneye kopyala..." @@ -1340,14 +1340,14 @@ msgid "" "required GStreamer plugins installed" msgstr "GStreamer elementi \"%1\" oluşturulamadı - tüm Gstreamer eklentilerinin kurulu olduğundan emin olun" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 için ayrıştırıcı bulunamadı, gerekli GStreamer eklentilerinin kurulu olup olmadığını kontrol edin" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1364,7 +1364,7 @@ msgid "Couldn't open output file %1" msgstr "%1 çıktı dosyası açılamadı" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Kapak Yöneticisi" @@ -1408,11 +1408,11 @@ msgstr "Parça değiştirirken otomatik olarak çapraz geçiş yap" msgid "Cross-fade when changing tracks manually" msgstr "Parça değiştirirken elle çapraz geçiş yap" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1420,63 +1420,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1519,11 +1519,11 @@ msgid "" "recover your database" msgstr "Veritabanında bozulma tespit edildi. Lütfen https://code.google.com/p/clementine-player/wiki/DatabaseCorruption adresindeki veritabanınızı nasıl kurtaracağınıza ilişkin talimatları okuyun." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Oluşturulduğu tarih" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Değiştirildiği tarih" @@ -1573,7 +1573,7 @@ msgid "Delete downloaded data" msgstr "İndirilmiş veriyi sil" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Dosyaları sil" @@ -1581,7 +1581,7 @@ msgstr "Dosyaları sil" msgid "Delete from device..." msgstr "Aygıttan sil..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Diskten sil..." @@ -1606,15 +1606,16 @@ msgstr "Orijinal dosyaları sil" msgid "Deleting files" msgstr "Dosyalar siliniyor" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Seçili parçaları kuyruktan çıkar" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Parçayı kuyruktan çıkar" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Hedef" @@ -1638,10 +1639,14 @@ msgstr "Aygıt adı" msgid "Device properties..." msgstr "Aygıt özellikleri..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Aygıtlar" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "İletişim Kutusu" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Bunu mu demek istediniz" @@ -1680,8 +1685,8 @@ msgstr "Moodbar oluşturmayı kapat" msgid "Disabled" msgstr "Devre Dışı" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1698,7 +1703,7 @@ msgstr "Gösterim seçenekleri" msgid "Display the on-screen-display" msgstr "Ekran görselini göster" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Tüm kütüphaneyi yeniden tara" @@ -1820,6 +1825,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Dubstep" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Süre" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamik kip açık" @@ -1832,12 +1841,12 @@ msgstr "Dinamik rastgele karışım" msgid "Edit smart playlist..." msgstr "Akıllı çalma listesini düzenleyin" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "\"%1\" etiketini düzenle..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Etiketi düzenle..." @@ -1850,7 +1859,7 @@ msgid "Edit track information" msgstr "Parça bilgisini düzenle" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Parça bilgisini düzenle..." @@ -1951,7 +1960,7 @@ msgstr "App Clementine için bağlanmak için IP girin." msgid "Entire collection" msgstr "Tüm koleksiyon" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekolayzır" @@ -1965,7 +1974,7 @@ msgstr "--log-levels *:3'e eşdeğer" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Hata" @@ -1985,7 +1994,7 @@ msgstr "Şarkılar silinirken hata" msgid "Error downloading Spotify plugin" msgstr "Spotify eklentisini indirirken hata" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "%1 yüklenirken hata" @@ -1995,12 +2004,12 @@ msgstr "%1 yüklenirken hata" msgid "Error loading di.fm playlist" msgstr "di.fm çalma listesi yüklenirken hata oluştu" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "%1 işlenirken hata: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Ses CD'si yüklenirken hata" @@ -2078,27 +2087,27 @@ msgstr "Biteni aktar" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%2 kapağın %1 tanesi aktarıldı (%3 atlandı)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2125,6 +2134,10 @@ msgstr "Yumuşak geçiş" msgid "Fading duration" msgstr "Yumuşak geçiş süresi" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "CD sürücünü okuma başarısız" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Dizin getirme başarısız oldu" @@ -2176,6 +2189,10 @@ msgstr "Subsonic kütüphanesi eşleştiriliyor" msgid "Fetching cover error" msgstr "Kapak alınırken bir hata oluştu" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Dosya Biçimi" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Dosya uzantısı" @@ -2184,19 +2201,19 @@ msgstr "Dosya uzantısı" msgid "File formats" msgstr "Dosya biçimleri" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Dosya adı" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Dosya adı (yol hariç)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dosya boyutu" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2223,7 @@ msgstr "Dosya türü" msgid "Filename" msgstr "Dosya adı" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Dosyalar" @@ -2326,9 +2343,10 @@ msgstr "Genel" msgid "General settings" msgstr "Genel ayarlar" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Tür" @@ -2360,11 +2378,11 @@ msgstr "Bir isim verin:" msgid "Go" msgstr "Git" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Sıradaki listeye git" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Önceki listeye git" @@ -2434,7 +2452,7 @@ msgstr "Tür/Albüme göre grupla" msgid "Group by Genre/Artist/Album" msgstr "Tür/Sanatçı/Albüme göre grupla" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruplandırma" @@ -2589,6 +2607,10 @@ msgstr "%1 İndekslendi" msgid "Information" msgstr "Bilgi" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Ekle..." @@ -2601,7 +2623,7 @@ msgstr "Kuruldu" msgid "Integrity check" msgstr "Bütünlük doğrulaması" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2641,6 +2663,10 @@ msgstr "Geçersiz oturum anahtarı" msgid "Invalid username and/or password" msgstr "Geçersiz kullanici adi yada şifre" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2665,7 +2691,7 @@ msgstr "Jamendo Haftanın Zirvedeki Parçaları" msgid "Jamendo database" msgstr "Jamendo veritabanı" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Şu anda çalınan parçaya atla" @@ -2689,7 +2715,7 @@ msgstr "Pencere kapandığında arkaplanda çalışmaya devam et" msgid "Keep the original files" msgstr "Orijinal dosyaları sakla" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kedicikler" @@ -2713,7 +2739,7 @@ msgstr "Geniş albüm kapağı" msgid "Large sidebar" msgstr "Büyük kenar çubuğu" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Son çalınan" @@ -2796,12 +2822,12 @@ msgstr "Öntanımlıların kullanılması için boş bırakın. Örnekler: \"/de msgid "Left" msgstr "So" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Süre" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Kütüphane" @@ -2809,7 +2835,7 @@ msgstr "Kütüphane" msgid "Library advanced grouping" msgstr "Kütüphane gelişmiş gruplama" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Kütüphane yeniden tarama bildirisi" @@ -2854,7 +2880,7 @@ msgstr "Albüm kapağını diskten yükle..." msgid "Load playlist" msgstr "Çalma listesini yükle" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Çalma listesi yükle..." @@ -2883,11 +2909,11 @@ msgstr "Şarkılar yükleniyor" msgid "Loading stream" msgstr "Yayın akışı yükleniyor" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Parçalar yükleniyor" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Parça bilgileri yükleniyor" @@ -2906,10 +2932,10 @@ msgstr "Dosyaları/URLleri yükler, mevcut çalma listesinin yerine koyar" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Oturum aç" @@ -2921,7 +2947,7 @@ msgstr "Giriş başarısız oldu." msgid "Long term prediction profile (LTP)" msgstr "Long term prediction profile (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Beğen" @@ -2984,7 +3010,7 @@ msgstr "Magnatune indirme bitti" msgid "Main profile (MAIN)" msgstr "Ana profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Yap gitsin!" @@ -3067,7 +3093,7 @@ msgstr "Tekli oynat" msgid "Months" msgstr "Ay" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Atmosfer" @@ -3097,7 +3123,7 @@ msgstr "Bağlama noktaları" msgid "Move down" msgstr "Aşağı taşı" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Kütüphaneye taşı..." @@ -3106,7 +3132,7 @@ msgstr "Kütüphaneye taşı..." msgid "Move up" msgstr "Yukarı taşı" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Müzik" @@ -3114,7 +3140,7 @@ msgstr "Müzik" msgid "Music Library" msgstr "Müzik Kütüphanesi" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Sessiz" @@ -3202,7 +3228,7 @@ msgstr "Asla çalarak başlama" msgid "New folder" msgstr "Yeni klasör" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Yeni çalma listesi" @@ -3226,7 +3252,7 @@ msgstr "En yeni parçalar" msgid "Next" msgstr "İleri" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Sonraki parça" @@ -3265,7 +3291,7 @@ msgstr "Kısa blok yok" msgid "None" msgstr "Hiçbiri" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Seçili şarkıların hiçbiri aygıta yüklemeye uygun değil" @@ -3383,7 +3409,7 @@ msgstr "Opaklık" msgid "Open %1 in browser" msgstr "Tarayıcıda aç: %1" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Ses CD'si aç..." @@ -3399,7 +3425,7 @@ msgstr "OPML dosyasını aç..." msgid "Open device" msgstr "Aygıtı aç" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Dosya aç..." @@ -3434,7 +3460,7 @@ msgstr "Bit oranı için eniyileştir" msgid "Optimize for quality" msgstr "Kalite için eniyileştir" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Seçenekler..." @@ -3446,7 +3472,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Dosyaları Düzenle" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Dosyaları düzenle..." @@ -3470,7 +3496,7 @@ msgstr "Çıktı" msgid "Output device" msgstr "Çıktı aygıtı" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Çıktı seçenekleri" @@ -3511,7 +3537,7 @@ msgstr "Parti" msgid "Password" msgstr "Parola" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Duraklat" @@ -3524,7 +3550,7 @@ msgstr "Beklet" msgid "Paused" msgstr "Duraklatıldı" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Sanatçı" @@ -3537,9 +3563,9 @@ msgstr "Piksel" msgid "Plain sidebar" msgstr "Düz kenar çubuğu" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Çal" @@ -3552,7 +3578,7 @@ msgstr "Sanatçı veya Etiket Çal" msgid "Play artist radio..." msgstr "Sanatçı radyosu çal..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Çalma sayısı" @@ -3607,7 +3633,7 @@ msgstr "Çalma listesi seçenekleri" msgid "Playlist type" msgstr "Çalma listesi türü" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Çalma listeleri" @@ -3659,7 +3685,7 @@ msgstr "Ön yükseltici" msgid "Preferences" msgstr "Tercihler" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Tercihler..." @@ -3714,7 +3740,7 @@ msgstr "Önizleme" msgid "Previous" msgstr "Önceki" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Önceki parça" @@ -3728,7 +3754,7 @@ msgid "Profile" msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "İlerleme" @@ -3757,16 +3783,16 @@ msgstr "Kalite" msgid "Querying device..." msgstr "Aygıt sorgulanıyor..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Kuyruk Yöneticisi" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Seçili parçaları kuyruğa ekle" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Parçayı kuyruğa ekle" @@ -3778,7 +3804,7 @@ msgstr "Radyo (tüm parçalar için eşit ses seviyesi)" msgid "Radios" msgstr "Radyolar" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Yağmur" @@ -3810,7 +3836,7 @@ msgstr "Geçerli şarkıyı 4 yıldızla oyla" msgid "Rate the current song 5 stars" msgstr "Geçerli şarkıyı 5 yıldızla oyla" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Beğeni" @@ -3868,7 +3894,7 @@ msgstr "Kaldır" msgid "Remove action" msgstr "Eylemi kaldır" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Şarkı listesindeki çiftleri birleştir" @@ -3884,7 +3910,7 @@ msgstr "Müziklerimden sil" msgid "Remove from favorites" msgstr "Favorilerden kaldır" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Çalma listesinden kaldır" @@ -3921,7 +3947,7 @@ msgstr "Çalma listesini yeniden adlandır" msgid "Rename playlist..." msgstr "Çalma listesini yeniden adlandır..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Parçaları bu sırada hatırla..." @@ -4012,6 +4038,18 @@ msgstr "Clementine'e Geri Dön" msgid "Right" msgstr "Sağ" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "CD Dönüştür" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Ses CD'si dönüştür..." + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4038,7 +4076,7 @@ msgstr "Aygıtı güvenli kaldır" msgid "Safely remove the device after copying" msgstr "Kopyalama işleminden sonra aygıtı güvenli kaldır" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Örnekleme oranı" @@ -4066,7 +4104,7 @@ msgstr "Görüntüyü kaydet" msgid "Save playlist" msgstr "Çalma listesini kaydet" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Çalma listesini kaydet..." @@ -4102,7 +4140,7 @@ msgstr "Ölçeklenebilir örnekleme oranı profili (SSR)" msgid "Scale size" msgstr "ÖLçek boyutu" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puan" @@ -4111,7 +4149,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Dinlediğim parçaları skropla" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4195,11 +4233,11 @@ msgstr "Çalan parçayı görece miktara göre ara" msgid "Seek the currently playing track to an absolute position" msgstr "Çalan parçayı kesin bir konuma göre ara" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Tümünü Seç" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Hiçbirini Seçme" @@ -4227,7 +4265,7 @@ msgstr "Görsel seç" msgid "Select visualizations..." msgstr "Görselleştirmeleri seç..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Seç..." @@ -4247,7 +4285,7 @@ msgstr "Sunucu ayrıntıları" msgid "Service offline" msgstr "Hizmet çevrim dışı" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1'i \"%2\" olarak ayarla" @@ -4256,7 +4294,7 @@ msgstr "%1'i \"%2\" olarak ayarla" msgid "Set the volume to percent" msgstr "Ses seviyesini yüzde yap" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Seçili tüm parçalar için değeri ayarla..." @@ -4319,7 +4357,7 @@ msgstr "Şirin bir OSD göster" msgid "Show above status bar" msgstr "Durum çubuğunun üzerinde göster" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Tüm şarkıları göster" @@ -4339,12 +4377,12 @@ msgstr "Ayırıcıları göster" msgid "Show fullsize..." msgstr "Tam boyutta göster" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Dosya gözatıcısında göster..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Kütüphanede göster..." @@ -4356,11 +4394,11 @@ msgstr "Çeşitli sanatçılarda göster" msgid "Show moodbar" msgstr "Atmosfer çubuğunu göster" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Sadece aynı olanları göster" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Sadece etiketi olmayanları göster" @@ -4400,7 +4438,7 @@ msgstr "Albümleri karıştır" msgid "Shuffle all" msgstr "Hepsini karıştır" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Çalma listesini karıştır" @@ -4440,7 +4478,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Parça listesinde geri git" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Atlama sayısı" @@ -4476,7 +4514,7 @@ msgstr "Hafif Rock" msgid "Song Information" msgstr "Şarkı Bilgisi" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Şarkı bilgisi" @@ -4508,7 +4546,7 @@ msgstr "Şarkıları şuna göre diz" msgid "Sorting" msgstr "Dizim" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Kaynak" @@ -4544,6 +4582,10 @@ msgstr "Standart" msgid "Starred" msgstr "Yıldızlı" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Çalma listesini mevcut çalınanla başlat" @@ -4559,7 +4601,7 @@ msgid "" "list" msgstr "Arama sonucunu görmek için arama kutusuna bir şeyler yazmaya başlayın." -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "%1 Başlatılıyor" @@ -4572,7 +4614,7 @@ msgstr "Başlatılıyor..." msgid "Stations" msgstr "İstasyonlar" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Durdur" @@ -4581,7 +4623,7 @@ msgstr "Durdur" msgid "Stop after" msgstr "Şundan sonra durdur" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Bu parçadan sonra durdur" @@ -4749,7 +4791,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Subsonic sunucusunun deneme süresi bitti. Lisans anahtarı almak için lütfen bağış yapın. Ayrıntılar için subsonic.org'u ziyaret edin." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4790,7 +4832,7 @@ msgid "" "continue?" msgstr "Bu dosyalar aygıttan silinecek, devam etmek istiyor musunuz?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4862,9 +4904,10 @@ msgstr "Bu yayın sadece abone olan kullanıcılar içindir" msgid "This type of device is not supported: %1" msgstr "Bu tür bir aygıt desteklenmiyor: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Başlık" @@ -4886,11 +4929,11 @@ msgstr "Şirin OSD'yi Aç/Kapa" msgid "Toggle fullscreen" msgstr "Tam ekran göster/gizle" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Kuyruk durumunu göster/gizle" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Skroplamayı aç/kapa" @@ -4922,12 +4965,13 @@ msgstr "Aktarılan toplam bayt" msgid "Total network requests made" msgstr "Yapılmış toplam ağ istemi" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Parça" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Müzik Dönüştür" @@ -5025,7 +5069,7 @@ msgstr "Grooveshark çalma listesini güncelle" msgid "Update all podcasts" msgstr "Bütün podcastları güncelle" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Değişen kütüphane klasörlerini güncelle" @@ -5180,7 +5224,7 @@ msgstr "Görünüm" msgid "Visualization mode" msgstr "Görüntüleme kipi" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Görseller" @@ -5308,7 +5352,7 @@ msgid "" "well?" msgstr "Bu albümdeki diğer şarkıları da Çeşitli Sanatçılar'a taşımak ister misiniz?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Şu anda tam bir yeniden tarama çalıştırmak ister misiniz?" @@ -5320,10 +5364,10 @@ msgstr "Tüm şarkı istatistiklerini şarkı dosyalarına yaz" msgid "Wrong username or password." msgstr "Yanlış kullanıcı adı veya parola." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Yıl" diff --git a/src/translations/tr_TR.po b/src/translations/tr_TR.po new file mode 100644 index 000000000..e1fcce684 --- /dev/null +++ b/src/translations/tr_TR.po @@ -0,0 +1,5711 @@ +# Clementine. +# Copyright (C) 2010 David Sansome +# This file is distributed under the same license as the Clementine package. +# +# Translators: +# Ahmet Sezgin Duran , 2013 +# apshalasha , 2013 +# arnaudbienner , 2011 +# devingregory , 2012 +# devingregory , 2012 +# emfi , 2013 +# Erhan BURHAN <>, 2012 +# H. İbrahim Güngör , 2011 +# H. İbrahim Güngör , 2010 +# H. İbrahim Güngör , 2011 +# Irfan YAZICI , 2011 +# kadirc , 2012 +# Kardanadam , 2013 +# mutlucan96 , 2013 +# Muhammet Kara , 2012 +# Murat Ikilik <>, 2012 +# Murat Sahin , 2012 +# Necdet Yücel , 2012 +# farukuzun , 2012 +# volkangezer , 2013 +# volkangezer , 2014 +# yusufbesir1 , 2012 +# zeugma , 2012 +msgid "" +msgstr "" +"Project-Id-Version: Clementine Music Player\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" +"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/clementine/language/tr_TR/)\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: playlist/playlistlistview.cpp:39 +msgid "" +"\n" +"\n" +"You can favorite playlists by clicking the star icon next to a playlist name\n" +"\n" +"Favorited playlists will be saved here" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:246 +msgid " days" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:130 +#: ../bin/src/ui_transcoderoptionsmp3.h:195 +#: ../bin/src/ui_transcoderoptionsopus.h:81 +#: ../bin/src/ui_transcoderoptionsspeex.h:220 +#: ../bin/src/ui_transcoderoptionsspeex.h:223 +#: ../bin/src/ui_transcoderoptionsvorbis.h:205 +#: ../bin/src/ui_transcoderoptionsvorbis.h:208 +#: ../bin/src/ui_transcoderoptionsvorbis.h:211 +#: ../bin/src/ui_transcoderoptionswma.h:80 +msgid " kbps" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:305 +#: ../bin/src/ui_playbacksettingspage.h:308 +#: ../bin/src/ui_playbacksettingspage.h:328 +msgid " ms" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:157 +msgid " pt" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:439 +#: ../bin/src/ui_visualisationselector.h:116 +msgid " seconds" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:143 +msgid " songs" +msgstr "" + +#: widgets/osd.cpp:193 +#, qt-format +msgid "%1 albums" +msgstr "" + +#: core/utilities.cpp:110 +#, qt-format +msgid "%1 days" +msgstr "" + +#: core/utilities.cpp:131 +#, qt-format +msgid "%1 days ago" +msgstr "" + +#: podcasts/gpoddersync.cpp:79 +#, qt-format +msgid "%1 on %2" +msgstr "" + +#: playlistparsers/playlistparser.cpp:76 +#, qt-format +msgid "%1 playlists (%2)" +msgstr "" + +#: playlist/playlistmanager.cpp:413 +#, qt-format +msgid "%1 selected of" +msgstr "" + +#: devices/deviceview.cpp:123 +#, qt-format +msgid "%1 song" +msgstr "" + +#: devices/deviceview.cpp:125 +#, qt-format +msgid "%1 songs" +msgstr "" + +#: smartplaylists/searchpreview.cpp:133 +#, qt-format +msgid "%1 songs found" +msgstr "" + +#: smartplaylists/searchpreview.cpp:130 +#, qt-format +msgid "%1 songs found (showing %2)" +msgstr "" + +#: playlist/playlistmanager.cpp:419 +#, qt-format +msgid "%1 tracks" +msgstr "" + +#: ui/albumcovermanager.cpp:459 +#, qt-format +msgid "%1 transferred" +msgstr "" + +#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 +#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#, qt-format +msgid "%1: Wiimotedev module" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:94 +#, qt-format +msgid "%L1 other listeners" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:92 +#, qt-format +msgid "%L1 total plays" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:427 +msgid "%filename%" +msgstr "" + +#: transcoder/transcodedialog.cpp:207 +#, c-format, qt-plural-format +msgid "%n failed" +msgstr "" + +#: transcoder/transcodedialog.cpp:202 +#, c-format, qt-plural-format +msgid "%n finished" +msgstr "" + +#: transcoder/transcodedialog.cpp:197 +#, c-format, qt-plural-format +msgid "%n remaining" +msgstr "" + +#: playlist/playlistheader.cpp:37 +msgid "&Align text" +msgstr "" + +#: playlist/playlistheader.cpp:40 +msgid "&Center" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +msgid "&Custom" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:735 +msgid "&Extras" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:734 +msgid "&Help" +msgstr "" + +#: playlist/playlistheader.cpp:70 +#, qt-format +msgid "&Hide %1" +msgstr "" + +#: playlist/playlistheader.cpp:33 +msgid "&Hide..." +msgstr "" + +#: playlist/playlistheader.cpp:39 +msgid "&Left" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:732 +msgid "&Music" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:176 +msgid "&None" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:733 +msgid "&Playlist" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:660 +msgid "&Quit" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:698 +msgid "&Repeat mode" +msgstr "" + +#: playlist/playlistheader.cpp:41 +msgid "&Right" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:697 +msgid "&Shuffle mode" +msgstr "" + +#: playlist/playlistheader.cpp:34 +msgid "&Stretch columns to fit window" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:736 +msgid "&Tools" +msgstr "" + +#: ui/edittagdialog.cpp:48 +msgid "(different across multiple songs)" +msgstr "" + +#: ui/about.cpp:77 +msgid "...and all the Amarok contributors" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 +msgid "0" +msgstr "" + +#: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 +msgid "0:00:00" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:289 +msgid "0px" +msgstr "" + +#: core/utilities.cpp:110 +msgid "1 day" +msgstr "" + +#: playlist/playlistmanager.cpp:419 +msgid "1 track" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:201 +msgid "127.0.0.1" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:143 +#: ../bin/src/ui_magnatunesettingspage.h:174 +msgid "128k MP3" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:291 +msgid "40%" +msgstr "" + +#: library/library.cpp:60 +msgid "50 random tracks" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:165 +msgid "Upgrade to Premium now" +msgstr "" + +#: ../bin/src/ui_ubuntuonesettingspage.h:133 +msgid "" +"Create a new account or reset " +"your password" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:195 +msgid "" +"

If not checked, Clementine will try to save your " +"ratings and other statistics only in a separate database and don't modify " +"your files.

If checked, it will save statistics both in database and " +"directly into the file each time they changed.

Please note it might " +"not work for every format and, as there is no standard for doing so, other " +"music players might not be able to read them.

" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:199 +msgid "" +"

This will write songs' ratings and statistics into " +"files tags for all your library's songs.

This is not needed if the " +""Save ratings and statistics in file tags" option has always been " +"activated.

" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:199 +msgid "" +"

Tokens start with %, for example: %artist %album %title

\n" +"\n" +"

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" +msgstr "" + +#: internet/groovesharksettingspage.cpp:111 +msgid "A Grooveshark Anywhere account is required." +msgstr "" + +#: internet/spotifysettingspage.cpp:162 +msgid "A Spotify Premium account is required." +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:189 +msgid "A client can connect only, if the correct code was entered." +msgstr "" + +#: smartplaylists/wizard.cpp:78 +msgid "" +"A smart playlist is a dynamic list of songs that come from your library. " +"There are different types of smart playlist that offer different ways of " +"selecting songs." +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:153 +msgid "" +"A song will be included in the playlist if it matches these conditions." +msgstr "" + +#: smartplaylists/searchterm.cpp:297 +msgid "A-Z" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:179 +msgid "AAC" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:179 +msgid "AAC 128k" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:171 +msgid "AAC 32k" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:178 +msgid "AAC 64k" +msgstr "" + +#: core/song.cpp:348 +msgid "AIFF" +msgstr "" + +#: widgets/nowplayingwidget.cpp:127 +msgid "ALL GLORY TO THE HYPNOTOAD" +msgstr "" + +#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +msgid "Abort" +msgstr "" + +#: ui/about.cpp:32 +#, qt-format +msgid "About %1" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:681 +msgid "About Clementine..." +msgstr "" + +#: ../bin/src/ui_mainwindow.h:716 +msgid "About Qt..." +msgstr "" + +#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_magnatunesettingspage.h:155 +#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_lastfmsettingspage.h:151 +#: ../bin/src/ui_ubuntuonesettingspage.h:129 +msgid "Account details" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:161 +msgid "Account details (Premium)" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:191 +msgid "Action" +msgstr "" + +#: wiimotedev/wiimotesettingspage.cpp:98 +msgid "Active/deactive Wiiremote" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:56 +msgid "Add Podcast" +msgstr "" + +#: ../bin/src/ui_addstreamdialog.h:113 +msgid "Add Stream" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:425 +msgid "Add a new line if supported by the notification type" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:193 +msgid "Add action" +msgstr "" + +#: internet/savedradio.cpp:103 +msgid "Add another stream..." +msgstr "" + +#: library/librarysettingspage.cpp:68 +msgid "Add directory..." +msgstr "" + +#: ui/mainwindow.cpp:1623 +msgid "Add file" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:727 +msgid "Add file to transcoder" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:725 +msgid "Add file(s) to transcoder" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:685 +msgid "Add file..." +msgstr "" + +#: transcoder/transcodedialog.cpp:219 +msgid "Add files to transcode" +msgstr "" + +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +msgid "Add folder" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:702 +msgid "Add folder..." +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:188 +msgid "Add new folder..." +msgstr "" + +#: ../bin/src/ui_addpodcastdialog.h:179 +msgid "Add podcast" +msgstr "" + +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +msgid "Add podcast..." +msgstr "" + +#: smartplaylists/searchtermwidget.cpp:341 +msgid "Add search term" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:380 +msgid "Add song album tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:386 +msgid "Add song albumartist tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:377 +msgid "Add song artist tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:422 +msgid "Add song auto score" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:392 +msgid "Add song composer tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:401 +msgid "Add song disc tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:429 +msgid "Add song filename" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:407 +msgid "Add song genre tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:398 +msgid "Add song grouping tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:410 +msgid "Add song length tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:395 +msgid "Add song performer tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:413 +msgid "Add song play count" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:419 +msgid "Add song rating" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:416 +msgid "Add song skip count" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:383 +msgid "Add song title tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:404 +msgid "Add song track tag" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:389 +msgid "Add song year tag" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:687 +msgid "Add stream..." +msgstr "" + +#: internet/groovesharkservice.cpp:1087 +msgid "Add to Grooveshark favorites" +msgstr "" + +#: internet/groovesharkservice.cpp:1099 +msgid "Add to Grooveshark playlists" +msgstr "" + +#: ui/mainwindow.cpp:1448 +msgid "Add to another playlist" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:218 +msgid "Add to playlist" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:220 +msgid "Add to the queue" +msgstr "" + +#: ../bin/src/ui_wiimoteshortcutgrabber.h:123 +msgid "Add wiimotedev action" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:209 +msgid "Add..." +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:95 +msgid "Added this month" +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:89 +msgid "Added this week" +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:94 +msgid "Added this year" +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:88 +msgid "Added today" +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:90 +#: ../bin/src/ui_libraryfilterwidget.h:92 +msgid "Added within three months" +msgstr "" + +#: internet/groovesharkservice.cpp:1394 +msgid "Adding song to My Music" +msgstr "" + +#: internet/groovesharkservice.cpp:1371 +msgid "Adding song to favorites" +msgstr "" + +#: library/libraryfilterwidget.cpp:116 +msgid "Advanced grouping..." +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:247 +msgid "After " +msgstr "" + +#: ../bin/src/ui_organisedialog.h:190 +msgid "After copying..." +msgstr "" + +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 +#: ../bin/src/ui_albumcoversearcher.h:111 +#: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 +msgid "Album" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:315 +msgid "Album (ideal loudness for all tracks)" +msgstr "" + +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 +#: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 +msgid "Album artist" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:284 +msgid "Album cover" +msgstr "" + +#: internet/jamendoservice.cpp:415 +msgid "Album info on jamendo.com..." +msgstr "" + +#: ui/albumcovermanager.cpp:134 +msgid "Albums with covers" +msgstr "" + +#: ui/albumcovermanager.cpp:135 +msgid "Albums without covers" +msgstr "" + +#: ui/mainwindow.cpp:160 +msgid "All Files (*)" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:693 +msgid "All Glory to the Hypnotoad!" +msgstr "" + +#: ui/albumcovermanager.cpp:133 +msgid "All albums" +msgstr "" + +#: ui/albumcovermanager.cpp:265 +msgid "All artists" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:47 +msgid "All files (*)" +msgstr "" + +#: playlistparsers/playlistparser.cpp:63 +#, qt-format +msgid "All playlists (%1)" +msgstr "" + +#: ui/about.cpp:74 +msgid "All the translators" +msgstr "" + +#: library/library.cpp:84 +msgid "All tracks" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:194 +msgid "Allow a client to download music from this computer." +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:196 +msgid "Allow downloads" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:140 +msgid "Allow mid/side encoding" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:217 +msgid "Alongside the originals" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:203 +msgid "Always hide the main window" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:202 +msgid "Always show the main window" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:212 +#: ../bin/src/ui_behavioursettingspage.h:226 +msgid "Always start playing" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:60 +msgid "" +"An additional plugin is required to use Spotify in Clementine. Would you " +"like to download and install it now?" +msgstr "" + +#: devices/gpodloader.cpp:61 +msgid "An error occurred loading the iTunes database" +msgstr "" + +#: ui/edittagdialog.cpp:663 +#, qt-format +msgid "An error occurred writing metadata to '%1'" +msgstr "" + +#: internet/subsonicsettingspage.cpp:103 +msgid "An unspecified error occurred." +msgstr "" + +#: ui/about.cpp:78 +msgid "And:" +msgstr "" + +#: moodbar/moodbarrenderer.cpp:156 +msgid "Angry" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:155 +#: ../bin/src/ui_appearancesettingspage.h:271 +msgid "Appearance" +msgstr "" + +#: core/commandlineoptions.cpp:166 +msgid "Append files/URLs to the playlist" +msgstr "" + +#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 +#: internet/internetservice.cpp:56 library/libraryview.cpp:367 +#: widgets/fileviewlist.cpp:32 +msgid "Append to current playlist" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:217 +msgid "Append to the playlist" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:318 +msgid "Apply compression to prevent clipping" +msgstr "" + +#: ui/equalizer.cpp:201 +#, qt-format +msgid "Are you sure you want to delete the \"%1\" preset?" +msgstr "" + +#: internet/groovesharkservice.cpp:1292 +msgid "Are you sure you want to delete this playlist?" +msgstr "" + +#: ui/edittagdialog.cpp:769 +msgid "Are you sure you want to reset this song's statistics?" +msgstr "" + +#: library/librarysettingspage.cpp:152 +msgid "" +"Are you sure you want to write song's statistics into song's file for all " +"the songs of your library?" +msgstr "" + +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 +#: ../bin/src/ui_albumcoversearcher.h:107 +#: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 +#: ../bin/src/ui_trackselectiondialog.h:210 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +msgid "Artist" +msgstr "" + +#: ui/mainwindow.cpp:248 +msgid "Artist info" +msgstr "" + +#: internet/lastfmservice.cpp:208 +msgid "Artist radio" +msgstr "" + +#: songinfo/echonesttags.cpp:59 +msgid "Artist tags" +msgstr "" + +#: ui/organisedialog.cpp:57 +msgid "Artist's initial" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 +msgid "Audio format" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:82 +#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 +#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +msgid "Authentication failed" +msgstr "" + +#: ../bin/src/ui_podcastinfowidget.h:192 +msgid "Author" +msgstr "" + +#: ui/about.cpp:65 +msgid "Authors" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:227 +msgid "Auto" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:190 +msgid "Automatic updating" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:208 +msgid "Automatically open single categories in the library tree" +msgstr "" + +#: widgets/freespacebar.cpp:45 +msgid "Available" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:221 +msgid "Average bitrate" +msgstr "" + +#: covers/coversearchstatisticsdialog.cpp:70 +msgid "Average image size" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:80 +msgid "BBC Podcasts" +msgstr "" + +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: ../bin/src/ui_edittagdialog.h:668 +msgid "BPM" +msgstr "" + +#: ../bin/src/ui_backgroundstreamssettingspage.h:56 +msgid "Background Streams" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:453 +msgid "Background color" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:279 +msgid "Background image" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:452 +msgid "Background opacity" +msgstr "" + +#: core/database.cpp:648 +msgid "Backing up database" +msgstr "" + +#: ../bin/src/ui_equalizer.h:173 +msgid "Balance" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:666 +msgid "Ban" +msgstr "" + +#: analyzers/baranalyzer.cpp:19 +msgid "Bar analyzer" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:456 +msgid "Basic Blue" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:167 +msgid "Basic audio type" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:191 +msgid "Behavior" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsflac.h:83 +msgid "Best" +msgstr "" + +#: songinfo/echonestbiographies.cpp:83 +#, qt-format +msgid "Biography from %1" +msgstr "" + +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +msgid "Bit rate" +msgstr "" + +#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 +#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_transcoderoptionsmp3.h:194 +#: ../bin/src/ui_transcoderoptionsopus.h:80 +#: ../bin/src/ui_transcoderoptionsspeex.h:218 +#: ../bin/src/ui_transcoderoptionswma.h:79 +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:22 +msgid "Block analyzer" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:141 +msgid "Block type" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:288 +msgid "Blur amount" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:449 +msgid "Body" +msgstr "" + +#: analyzers/boomanalyzer.cpp:8 +msgid "Boom analyzer" +msgstr "" + +#: ../bin/src/ui_boxsettingspage.h:103 +msgid "Box" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:146 +#: ../bin/src/ui_podcastsettingspage.h:242 +#: ../bin/src/ui_appearancesettingspage.h:287 +msgid "Browse..." +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:327 +msgid "Buffer duration" +msgstr "" + +#: engines/gstengine.cpp:784 +msgid "Buffering" +msgstr "" + +#: ../bin/src/ui_globalsearchview.h:211 +msgid "But these sources are disabled:" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:192 +msgid "Buttons" +msgstr "" + +#: core/song.cpp:351 +msgid "CDDA" +msgstr "" + +#: library/library.cpp:100 +msgid "CUE sheet support" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:44 +msgid "Cancel" +msgstr "" + +#: ../bin/src/ui_edittagdialog.h:664 +msgid "Change cover art" +msgstr "" + +#: songinfo/songinfotextview.cpp:83 +msgid "Change font size..." +msgstr "" + +#: core/globalshortcuts.cpp:62 +msgid "Change repeat mode" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 +msgid "Change shortcut..." +msgstr "" + +#: core/globalshortcuts.cpp:61 +msgid "Change shuffle mode" +msgstr "" + +#: core/commandlineoptions.cpp:172 +msgid "Change the language" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:330 +msgid "" +"Changing mono playback preference will be effective for the next playing " +"songs" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:228 +msgid "Check for new episodes" +msgstr "" + +#: ui/mainwindow.cpp:602 +msgid "Check for updates..." +msgstr "" + +#: smartplaylists/wizard.cpp:86 +msgid "Choose a name for your smart playlist" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:323 +msgid "Choose automatically" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:461 +msgid "Choose color..." +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:462 +msgid "Choose font..." +msgstr "" + +#: ../bin/src/ui_visualisationselector.h:113 +msgid "Choose from the list" +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:155 +msgid "Choose how the playlist is sorted and how many songs it will contain." +msgstr "" + +#: podcasts/podcastsettingspage.cpp:132 +msgid "Choose podcast download directory" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:160 +msgid "" +"Choose the websites you want Clementine to use when searching for lyrics." +msgstr "" + +#: ui/equalizer.cpp:115 +msgid "Classical" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:243 +msgid "Cleaning up" +msgstr "" + +#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: ../bin/src/ui_queuemanager.h:139 +msgid "Clear" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +msgid "Clear playlist" +msgstr "" + +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 +#: visualisations/visualisationcontainer.cpp:211 +#: ../bin/src/ui_visualisationoverlay.h:183 +msgid "Clementine" +msgstr "" + +#: ../bin/src/ui_errordialog.h:93 +msgid "Clementine Error" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:457 +msgid "Clementine Orange" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:77 +#: visualisations/visualisationcontainer.cpp:151 +msgid "Clementine Visualization" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:376 +msgid "" +"Clementine can automatically convert the music you copy to this device into " +"a format that it can play." +msgstr "" + +#: ../bin/src/ui_boxsettingspage.h:104 +msgid "Clementine can play music that you have uploaded to Box" +msgstr "" + +#: ../bin/src/ui_dropboxsettingspage.h:104 +msgid "Clementine can play music that you have uploaded to Dropbox" +msgstr "" + +#: ../bin/src/ui_googledrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to Google Drive" +msgstr "" + +#: ../bin/src/ui_ubuntuonesettingspage.h:128 +msgid "Clementine can play music that you have uploaded to Ubuntu One" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:431 +msgid "Clementine can show a message when the track changes." +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:250 +msgid "" +"Clementine can synchronize your subscription list with your other computers " +"and podcast applications. Create " +"an account." +msgstr "" + +#: visualisations/projectmvisualisation.cpp:133 +msgid "" +"Clementine could not load any projectM visualisations. Check that you have " +"installed Clementine properly." +msgstr "" + +#: internet/lastfmsettingspage.cpp:110 +msgid "" +"Clementine couldn't fetch your subscription status since there are problems " +"with your connection. Played tracks will be cached and sent later to " +"Last.fm." +msgstr "" + +#: widgets/prettyimage.cpp:201 +msgid "Clementine image viewer" +msgstr "" + +#: ../bin/src/ui_trackselectiondialog.h:206 +msgid "Clementine was unable to find results for this file" +msgstr "" + +#: ../bin/src/ui_globalsearchview.h:210 +msgid "Clementine will find music in:" +msgstr "" + +#: library/libraryview.cpp:349 +msgid "Click here to add some music" +msgstr "" + +#: playlist/playlisttabbar.cpp:293 +msgid "" +"Click here to favorite this playlist so it will be saved and remain " +"accessible through the \"Playlists\" panel on the left side bar" +msgstr "" + +#: ../bin/src/ui_trackslider.h:72 +msgid "Click to toggle between remaining time and total time" +msgstr "" + +#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 +msgid "" +"Clicking the Login button will open a web browser. You should return to " +"Clementine after you have logged in." +msgstr "" + +#: widgets/didyoumean.cpp:37 +msgid "Close" +msgstr "" + +#: playlist/playlisttabbar.cpp:54 +msgid "Close playlist" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:127 +msgid "Close visualization" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:280 +msgid "Closing this window will cancel the download." +msgstr "" + +#: ui/albumcovermanager.cpp:216 +msgid "Closing this window will stop searching for album covers." +msgstr "" + +#: ui/equalizer.cpp:116 +msgid "Club" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:272 +msgid "Colors" +msgstr "" + +#: core/commandlineoptions.cpp:175 +msgid "Comma separated list of class:level, level is 0-3" +msgstr "" + +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 +#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +msgid "Comment" +msgstr "" + +#: ../bin/src/ui_edittagdialog.h:693 +msgid "Complete tags automatically" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:720 +msgid "Complete tags automatically..." +msgstr "" + +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 +#: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 +msgid "Composer" +msgstr "" + +#: internet/searchboxwidget.cpp:42 +#, qt-format +msgid "Configure %1..." +msgstr "" + +#: internet/groovesharkservice.cpp:552 +msgid "Configure Grooveshark..." +msgstr "" + +#: internet/lastfmservice.cpp:126 +msgid "Configure Last.fm..." +msgstr "" + +#: internet/magnatuneservice.cpp:280 +msgid "Configure Magnatune..." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:167 +msgid "Configure Shortcuts" +msgstr "" + +#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +msgid "Configure Spotify..." +msgstr "" + +#: internet/subsonicservice.cpp:96 +msgid "Configure Subsonic..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +msgid "Configure global search..." +msgstr "" + +#: ui/mainwindow.cpp:483 +msgid "Configure library..." +msgstr "" + +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +msgid "Configure podcasts..." +msgstr "" + +#: internet/digitallyimportedservicebase.cpp:186 +#: ../bin/src/ui_globalsearchsettingspage.h:150 +#: internet/googledriveservice.cpp:193 +msgid "Configure..." +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:186 +msgid "Connect Wii Remotes using active/deactive action" +msgstr "" + +#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +msgid "Connect device" +msgstr "" + +#: internet/spotifyservice.cpp:253 +msgid "Connecting to Spotify" +msgstr "" + +#: internet/subsonicsettingspage.cpp:107 +msgid "" +"Connection refused by server, check server URL. Example: " +"http://localhost:4040/" +msgstr "" + +#: internet/subsonicsettingspage.cpp:117 +msgid "" +"Connection timed out, check server URL. Example: http://localhost:4040/" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +msgid "Console" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:196 +msgid "Constant bitrate" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:379 +msgid "Convert all music" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:378 +msgid "Convert any music that the device can't play" +msgstr "" + +#: internet/groovesharkservice.cpp:1172 +msgid "Copy to clipboard" +msgstr "" + +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 +#: widgets/fileviewlist.cpp:44 +msgid "Copy to device..." +msgstr "" + +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 +#: widgets/fileviewlist.cpp:39 +msgid "Copy to library..." +msgstr "" + +#: ../bin/src/ui_podcastinfowidget.h:194 +msgid "Copyright" +msgstr "" + +#: internet/subsonicsettingspage.cpp:81 +msgid "" +"Could not connect to Subsonic, check server URL. Example: " +"http://localhost:4040/" +msgstr "" + +#: transcoder/transcoder.cpp:64 +#, qt-format +msgid "" +"Could not create the GStreamer element \"%1\" - make sure you have all the " +"required GStreamer plugins installed" +msgstr "" + +#: transcoder/transcoder.cpp:434 +#, qt-format +msgid "" +"Couldn't find a muxer for %1, check you have the correct GStreamer plugins " +"installed" +msgstr "" + +#: transcoder/transcoder.cpp:428 +#, qt-format +msgid "" +"Couldn't find an encoder for %1, check you have the correct GStreamer " +"plugins installed" +msgstr "" + +#: internet/lastfmservice.cpp:875 +msgid "Couldn't load the last.fm radio station" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:203 +#, qt-format +msgid "Couldn't open output file %1" +msgstr "" + +#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 +#: internet/googledriveservice.cpp:189 +msgid "Cover Manager" +msgstr "" + +#: ui/edittagdialog.cpp:443 +msgid "Cover art from embedded image" +msgstr "" + +#: ui/edittagdialog.cpp:445 +#, qt-format +msgid "Cover art loaded automatically from %1" +msgstr "" + +#: ui/edittagdialog.cpp:438 +msgid "Cover art manually unset" +msgstr "" + +#: ui/edittagdialog.cpp:447 +msgid "Cover art not set" +msgstr "" + +#: ui/edittagdialog.cpp:441 +#, qt-format +msgid "Cover art set from %1" +msgstr "" + +#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#, qt-format +msgid "Covers from %1" +msgstr "" + +#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +msgid "Create a new Grooveshark playlist" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:302 +msgid "Cross-fade when changing tracks automatically" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:301 +msgid "Cross-fade when changing tracks manually" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:663 +msgid "Ctrl+Alt+V" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:667 +msgid "Ctrl+B" +msgstr "" + +#: ../bin/src/ui_queuemanager.h:133 +msgid "Ctrl+Down" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgid "Ctrl+E" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:684 +msgid "Ctrl+H" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:704 +msgid "Ctrl+J" +msgstr "" + +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +msgid "Ctrl+K" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:665 +msgid "Ctrl+L" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:718 +msgid "Ctrl+M" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:706 +msgid "Ctrl+N" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:688 +msgid "Ctrl+O" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:680 +msgid "Ctrl+P" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:661 +msgid "Ctrl+Q" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:708 +msgid "Ctrl+S" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:686 +msgid "Ctrl+Shift+A" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:710 +msgid "Ctrl+Shift+O" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:729 +msgid "Ctrl+Shift+T" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:721 +msgid "Ctrl+T" +msgstr "" + +#: ../bin/src/ui_queuemanager.h:129 +msgid "Ctrl+Up" +msgstr "" + +#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +msgid "Custom" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:286 +msgid "Custom image:" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:444 +msgid "Custom message settings" +msgstr "" + +#: internet/lastfmservice.cpp:216 +msgid "Custom radio" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:458 +msgid "Custom..." +msgstr "" + +#: devices/devicekitlister.cpp:123 +msgid "DBus path" +msgstr "" + +#: ui/equalizer.cpp:117 +msgid "Dance" +msgstr "" + +#: core/database.cpp:602 +msgid "" +"Database corruption detected. Please read https://code.google.com/p" +"/clementine-player/wiki/DatabaseCorruption for instructions on how to " +"recover your database" +msgstr "" + +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +msgid "Date created" +msgstr "" + +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +msgid "Date modified" +msgstr "" + +#: smartplaylists/searchterm.cpp:311 +msgid "Days" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:177 +msgid "De&fault" +msgstr "" + +#: core/commandlineoptions.cpp:159 +msgid "Decrease the volume by 4%" +msgstr "" + +#: core/commandlineoptions.cpp:161 +msgid "Decrease the volume by percent" +msgstr "" + +#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +msgid "Decrease volume" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:280 +msgid "Default background image" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:195 +msgid "Defaults" +msgstr "" + +#: ../bin/src/ui_visualisationselector.h:115 +msgid "Delay between visualizations" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:73 +#: ../bin/src/ui_playlistlistcontainer.h:131 +msgid "Delete" +msgstr "" + +#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +msgid "Delete Grooveshark playlist" +msgstr "" + +#: podcasts/podcastservice.cpp:274 +msgid "Delete downloaded data" +msgstr "" + +#: devices/deviceview.cpp:388 library/libraryview.cpp:608 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +msgid "Delete files" +msgstr "" + +#: devices/deviceview.cpp:220 +msgid "Delete from device..." +msgstr "" + +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 +#: widgets/fileviewlist.cpp:45 +msgid "Delete from disk..." +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:244 +msgid "Delete played episodes" +msgstr "" + +#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +msgid "Delete preset" +msgstr "" + +#: library/libraryview.cpp:383 +msgid "Delete smart playlist" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:194 +msgid "Delete the original files" +msgstr "" + +#: core/deletefiles.cpp:50 +msgid "Deleting files" +msgstr "" + +#: ui/mainwindow.cpp:1382 +msgid "Dequeue selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1380 +msgid "Dequeue track" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 +msgid "Destination" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:221 +msgid "Details..." +msgstr "" + +#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +msgid "Device" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:368 +msgid "Device Properties" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:254 +msgid "Device name" +msgstr "" + +#: devices/deviceview.cpp:207 +msgid "Device properties..." +msgstr "" + +#: ui/mainwindow.cpp:245 +msgid "Devices" +msgstr "" + +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + +#: widgets/didyoumean.cpp:55 +msgid "Did you mean" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:160 +msgid "Digitally Imported" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:164 +msgid "Digitally Imported password" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:162 +msgid "Digitally Imported username" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:159 +msgid "Direct internet connection" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:145 +#: ../bin/src/ui_transcodedialog.h:207 +msgid "Directory" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:440 +msgid "Disable duration" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:296 +msgid "Disable moodbar generation" +msgstr "" + +#: globalsearch/searchproviderstatuswidget.cpp:47 +#: ../bin/src/ui_notificationssettingspage.h:433 +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 +msgid "Disc" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:234 +msgid "Discontinuous transmission" +msgstr "" + +#: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 +#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +msgid "Display options" +msgstr "" + +#: core/commandlineoptions.cpp:170 +msgid "Display the on-screen-display" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:719 +msgid "Do a full library rescan" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:377 +msgid "Do not convert any music" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:209 +msgid "Do not overwrite" +msgstr "" + +#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +msgid "Don't repeat" +msgstr "" + +#: library/libraryview.cpp:405 +msgid "Don't show in various artists" +msgstr "" + +#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +msgid "Don't shuffle" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +msgid "Don't stop!" +msgstr "" + +#: internet/somafmservice.cpp:103 +msgid "Donate" +msgstr "" + +#: devices/deviceview.cpp:115 +msgid "Double click to open" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:214 +msgid "Double clicking a song will..." +msgstr "" + +#: podcasts/podcastservice.cpp:350 +#, c-format, qt-plural-format +msgid "Download %n episodes" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:252 +msgid "Download directory" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:240 +msgid "Download episodes to" +msgstr "" + +#: ../bin/src/ui_magnatunesettingspage.h:161 +msgid "Download membership" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:241 +msgid "Download new episodes automatically" +msgstr "" + +#: podcasts/podcastservice.cpp:187 +msgid "Download queued" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:202 +msgid "Download the Android app" +msgstr "" + +#: internet/magnatuneservice.cpp:276 +msgid "Download this album" +msgstr "" + +#: internet/jamendoservice.cpp:417 +msgid "Download this album..." +msgstr "" + +#: podcasts/podcastservice.cpp:352 +msgid "Download this episode" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:215 +msgid "Download..." +msgstr "" + +#: podcasts/podcastservice.cpp:195 +#, qt-format +msgid "Downloading (%1%)..." +msgstr "" + +#: internet/icecastservice.cpp:101 +msgid "Downloading Icecast directory" +msgstr "" + +#: internet/jamendoservice.cpp:187 +msgid "Downloading Jamendo catalogue" +msgstr "" + +#: internet/magnatuneservice.cpp:158 +msgid "Downloading Magnatune catalogue" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:44 +msgid "Downloading Spotify plugin" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:102 +msgid "Downloading metadata" +msgstr "" + +#: ui/notificationssettingspage.cpp:37 +msgid "Drag to reposition" +msgstr "" + +#: ../bin/src/ui_dropboxsettingspage.h:103 +msgid "Dropbox" +msgstr "" + +#: ui/equalizer.cpp:119 +msgid "Dubstep" +msgstr "" + +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + +#: ../bin/src/ui_dynamicplaylistcontrols.h:109 +msgid "Dynamic mode is on" +msgstr "" + +#: internet/jamendoservice.cpp:113 library/library.cpp:93 +msgid "Dynamic random mix" +msgstr "" + +#: library/libraryview.cpp:381 +msgid "Edit smart playlist..." +msgstr "" + +#: ui/mainwindow.cpp:1415 +#, qt-format +msgid "Edit tag \"%1\"..." +msgstr "" + +#: ../bin/src/ui_mainwindow.h:677 +msgid "Edit tag..." +msgstr "" + +#: ../bin/src/ui_edittagdialog.h:695 +msgid "Edit tags" +msgstr "" + +#: ../bin/src/ui_edittagdialog.h:662 +msgid "Edit track information" +msgstr "" + +#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 +#: ../bin/src/ui_mainwindow.h:673 +msgid "Edit track information..." +msgstr "" + +#: library/libraryview.cpp:397 +msgid "Edit tracks information..." +msgstr "" + +#: internet/savedradio.cpp:101 +msgid "Edit..." +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:183 +msgid "Enable Wii Remote support" +msgstr "" + +#: ../bin/src/ui_equalizer.h:171 +msgid "Enable equalizer" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:187 +msgid "Enable shortcuts only when Clementine is focused" +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:147 +msgid "" +"Enable sources below to include them in search results. Results will be " +"displayed in this order." +msgstr "" + +#: core/globalshortcuts.cpp:63 +msgid "Enable/disable Last.fm scrobbling" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:235 +msgid "Encoding complexity" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:197 +msgid "Encoding engine quality" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:224 +msgid "Encoding mode" +msgstr "" + +#: ../bin/src/ui_addpodcastbyurl.h:76 +msgid "Enter a URL" +msgstr "" + +#: ../bin/src/ui_coverfromurldialog.h:103 +msgid "Enter a URL to download a cover from the Internet:" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:205 +msgid "Enter a filename for exported covers (no extension):" +msgstr "" + +#: playlist/playlisttabbar.cpp:137 +msgid "Enter a new name for this playlist" +msgstr "" + +#: ../bin/src/ui_lastfmstationdialog.h:93 +msgid "" +"Enter an artist or tag to start listening to Last.fm radio." +msgstr "" + +#: ../bin/src/ui_globalsearchview.h:209 +msgid "" +"Enter search terms above to find music on your computer and on the internet" +msgstr "" + +#: ../bin/src/ui_itunessearchpage.h:77 +msgid "Enter search terms below to find podcasts in the iTunes Store" +msgstr "" + +#: ../bin/src/ui_gpoddersearchpage.h:77 +msgid "Enter search terms below to find podcasts on gpodder.net" +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_albumcovermanager.h:219 +msgid "Enter search terms here" +msgstr "" + +#: ../bin/src/ui_addstreamdialog.h:114 +msgid "Enter the URL of an internet radio stream:" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:172 +msgid "Enter the name of the folder" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:198 +msgid "Enter this IP in the App to connect to Clementine." +msgstr "" + +#: ../bin/src/ui_libraryfilterwidget.h:87 +msgid "Entire collection" +msgstr "" + +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +msgid "Equalizer" +msgstr "" + +#: core/commandlineoptions.cpp:173 +msgid "Equivalent to --log-levels *:1" +msgstr "" + +#: core/commandlineoptions.cpp:174 +msgid "Equivalent to --log-levels *:3" +msgstr "" + +#: internet/groovesharkservice.cpp:1017 +#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +msgid "Error" +msgstr "" + +#: devices/mtploader.cpp:56 +msgid "Error connecting MTP device" +msgstr "" + +#: ui/organiseerrordialog.cpp:55 +msgid "Error copying songs" +msgstr "" + +#: ui/organiseerrordialog.cpp:60 +msgid "Error deleting songs" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:215 +msgid "Error downloading Spotify plugin" +msgstr "" + +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#, qt-format +msgid "Error loading %1" +msgstr "" + +#: internet/digitallyimportedservicebase.cpp:203 +#: internet/digitallyimportedurlhandler.cpp:89 +msgid "Error loading di.fm playlist" +msgstr "" + +#: transcoder/transcoder.cpp:401 +#, qt-format +msgid "Error processing %1: %2" +msgstr "" + +#: playlist/songloaderinserter.cpp:102 +msgid "Error while loading audio CD" +msgstr "" + +#: library/library.cpp:63 +msgid "Ever played" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:232 +msgid "Every 10 minutes" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:238 +msgid "Every 12 hours" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:236 +msgid "Every 2 hours" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:233 +msgid "Every 20 minutes" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:234 +msgid "Every 30 minutes" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:237 +msgid "Every 6 hours" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:235 +msgid "Every hour" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:303 +msgid "Except between tracks on the same album or in the same CUE sheet" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:208 +msgid "Existing covers" +msgstr "" + +#: ../bin/src/ui_dynamicplaylistcontrols.h:111 +msgid "Expand" +msgstr "" + +#: widgets/loginstatewidget.cpp:142 +#, qt-format +msgid "Expires on %1" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:226 +msgid "Export Covers" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:203 +msgid "Export covers" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:206 +msgid "Export downloaded covers" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:207 +msgid "Export embedded covers" +msgstr "" + +#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +msgid "Export finished" +msgstr "" + +#: ui/albumcovermanager.cpp:786 +#, qt-format +msgid "Exported %1 covers out of %2 (%3 skipped)" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:682 +msgid "F1" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:678 +msgid "F2" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:653 +msgid "F5" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:655 +msgid "F6" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:657 +msgid "F7" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:659 +msgid "F8" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:140 +#: ../bin/src/ui_magnatunesettingspage.h:171 +#: ../bin/src/ui_transcodersettingspage.h:177 +msgid "FLAC" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:306 +msgid "Fade out on pause / fade in on resume" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:300 +msgid "Fade out when stopping a track" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:299 +msgid "Fading" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:304 +#: ../bin/src/ui_playbacksettingspage.h:307 +msgid "Fading duration" +msgstr "" + +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + +#: podcasts/gpoddertoptagspage.cpp:76 +msgid "Failed to fetch directory" +msgstr "" + +#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 +#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 +#: podcasts/itunessearchpage.cpp:82 +msgid "Failed to fetch podcasts" +msgstr "" + +#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +msgid "Failed to load podcast" +msgstr "" + +#: podcasts/podcasturlloader.cpp:167 +msgid "Failed to parse the XML for this RSS feed" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsflac.h:82 +#: ../bin/src/ui_transcoderoptionsmp3.h:200 +msgid "Fast" +msgstr "" + +#: internet/groovesharkservice.cpp:617 +msgid "Favorites" +msgstr "" + +#: library/library.cpp:77 +msgid "Favourite tracks" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:225 +msgid "Fetch Missing Covers" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:216 +msgid "Fetch automatically" +msgstr "" + +#: ../bin/src/ui_coversearchstatisticsdialog.h:75 +msgid "Fetch completed" +msgstr "" + +#: internet/subsonicservice.cpp:241 +msgid "Fetching Subsonic library" +msgstr "" + +#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +msgid "Fetching cover error" +msgstr "" + +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + +#: ui/organisedialog.cpp:71 +msgid "File extension" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:384 +msgid "File formats" +msgstr "" + +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +msgid "File name" +msgstr "" + +#: playlist/playlist.cpp:1232 +msgid "File name (without path)" +msgstr "" + +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +msgid "File size" +msgstr "" + +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 +#: ../bin/src/ui_edittagdialog.h:676 +msgid "File type" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:208 +msgid "Filename" +msgstr "" + +#: ui/mainwindow.cpp:242 +msgid "Files" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:205 +msgid "Files to transcode" +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:90 +msgid "Find songs in your library that match the criteria you specify." +msgstr "" + +#: musicbrainz/tagfetcher.cpp:55 +msgid "Fingerprinting song" +msgstr "" + +#: smartplaylists/wizard.cpp:85 +msgid "Finish" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:125 +msgid "First level" +msgstr "" + +#: core/song.cpp:340 +msgid "Flac" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:156 +msgid "Font size" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:213 +msgid "For licensing reasons Spotify support is in a separate plugin." +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:204 +msgid "Force mono encoding" +msgstr "" + +#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 +#: devices/deviceview.cpp:314 +msgid "Forget device" +msgstr "" + +#: devices/deviceview.cpp:311 +msgid "" +"Forgetting a device will remove it from this list and Clementine will have " +"to rescan all the songs again next time you connect it." +msgstr "" + +#: ../bin/src/ui_deviceviewcontainer.h:98 +#: ../bin/src/ui_searchproviderstatuswidget.h:94 +#: ../bin/src/ui_suggestionwidget.h:70 ../bin/src/ui_icecastfilterwidget.h:74 +#: ../bin/src/ui_internetviewcontainer.h:71 ../bin/src/ui_searchboxwidget.h:62 +#: ../bin/src/ui_libraryfilterwidget.h:86 +#: ../bin/src/ui_libraryviewcontainer.h:59 +#: ../bin/src/ui_playlistcontainer.h:143 +#: ../bin/src/ui_playlistlistcontainer.h:126 +#: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 +#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 +#: ../bin/src/ui_songkickconcertwidget.h:100 +#: ../bin/src/ui_transcoderoptionsaac.h:128 +#: ../bin/src/ui_transcoderoptionsflac.h:80 +#: ../bin/src/ui_transcoderoptionsmp3.h:190 +#: ../bin/src/ui_transcoderoptionsopus.h:79 +#: ../bin/src/ui_transcoderoptionsspeex.h:216 +#: ../bin/src/ui_transcoderoptionsvorbis.h:201 +#: ../bin/src/ui_transcoderoptionswma.h:78 ../bin/src/ui_equalizerslider.h:82 +#: ../bin/src/ui_fileview.h:107 ../bin/src/ui_loginstatewidget.h:171 +#: ../bin/src/ui_trackslider.h:69 ../bin/src/ui_visualisationoverlay.h:182 +msgid "Form" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:136 +msgid "Format" +msgstr "" + +#: analyzers/analyzercontainer.cpp:46 +#: visualisations/visualisationcontainer.cpp:104 +msgid "Framerate" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:236 +msgid "Frames per buffer" +msgstr "" + +#: internet/lastfmservice.cpp:224 +msgid "Friends" +msgstr "" + +#: moodbar/moodbarrenderer.cpp:157 +msgid "Frozen" +msgstr "" + +#: ui/equalizer.cpp:120 +msgid "Full Bass" +msgstr "" + +#: ui/equalizer.cpp:122 +msgid "Full Bass + Treble" +msgstr "" + +#: ui/equalizer.cpp:121 +msgid "Full Treble" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:319 +msgid "GStreamer audio engine" +msgstr "" + +#: ui/settingsdialog.cpp:131 +msgid "General" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:437 +msgid "General settings" +msgstr "" + +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 +#: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 +msgid "Genre" +msgstr "" + +#: internet/groovesharkservice.cpp:542 +msgid "Get a URL to share this Grooveshark playlist" +msgstr "" + +#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +msgid "Get a URL to share this Grooveshark song" +msgstr "" + +#: internet/groovesharkservice.cpp:790 +msgid "Getting Grooveshark popular songs" +msgstr "" + +#: internet/somafmservice.cpp:114 +msgid "Getting channels" +msgstr "" + +#: internet/digitallyimportedservicebase.cpp:108 +msgid "Getting streams" +msgstr "" + +#: ../bin/src/ui_addstreamdialog.h:116 +msgid "Give it a name:" +msgstr "" + +#: ../bin/src/ui_addpodcastbyurl.h:78 +msgid "Go" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:711 +msgid "Go to next playlist tab" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:712 +msgid "Go to previous playlist tab" +msgstr "" + +#: ../bin/src/ui_googledrivesettingspage.h:103 +msgid "Google Drive" +msgstr "" + +#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: ../bin/src/ui_coversearchstatisticsdialog.h:76 +#, qt-format +msgid "Got %1 covers out of %2 (%3 failed)" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:206 +msgid "Grey out non existent songs in my playlists" +msgstr "" + +#: ../bin/src/ui_groovesharksettingspage.h:112 +msgid "Grooveshark" +msgstr "" + +#: internet/groovesharkservice.cpp:408 +msgid "Grooveshark login error" +msgstr "" + +#: internet/groovesharkservice.cpp:1162 +msgid "Grooveshark playlist's URL" +msgstr "" + +#: internet/groovesharkservice.cpp:603 +msgid "Grooveshark radio" +msgstr "" + +#: internet/groovesharkservice.cpp:1140 +msgid "Grooveshark song's URL" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:124 +msgid "Group Library by..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +msgid "Group by" +msgstr "" + +#: library/libraryfilterwidget.cpp:110 +msgid "Group by Album" +msgstr "" + +#: library/libraryfilterwidget.cpp:104 +msgid "Group by Artist" +msgstr "" + +#: library/libraryfilterwidget.cpp:106 +msgid "Group by Artist/Album" +msgstr "" + +#: library/libraryfilterwidget.cpp:108 +msgid "Group by Artist/Year - Album" +msgstr "" + +#: library/libraryfilterwidget.cpp:112 +msgid "Group by Genre/Album" +msgstr "" + +#: library/libraryfilterwidget.cpp:114 +msgid "Group by Genre/Artist/Album" +msgstr "" + +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: ../bin/src/ui_edittagdialog.h:691 +msgid "Grouping" +msgstr "" + +#: podcasts/podcasturlloader.cpp:196 +msgid "HTML page did not contain any RSS feeds" +msgstr "" + +#: internet/subsonicsettingspage.cpp:135 +msgid "" +"HTTP 3xx status code received without URL, verify server configuration." +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:163 +msgid "HTTP proxy" +msgstr "" + +#: moodbar/moodbarrenderer.cpp:158 +msgid "Happy" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:371 +msgid "Hardware information" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:372 +msgid "Hardware information is only available while the device is connected." +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:202 +msgid "High" +msgstr "" + +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:109 +#, qt-format +msgid "High (%1 fps)" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:119 +msgid "High (1024x1024)" +msgstr "" + +#: internet/subsonicsettingspage.cpp:112 +msgid "Host not found, check server URL. Example: http://localhost:4040/" +msgstr "" + +#: smartplaylists/searchterm.cpp:310 +msgid "Hours" +msgstr "" + +#: core/backgroundstreams.cpp:30 +msgid "Hypnotoad" +msgstr "" + +#: ../bin/src/ui_magnatunesettingspage.h:159 +msgid "I don't have a Magnatune account" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:370 +msgid "Icon" +msgstr "" + +#: widgets/fancytabwidget.cpp:674 +msgid "Icons on top" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:86 +msgid "Identifying song" +msgstr "" + +#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +msgid "" +"If you continue, this device will work slowly and songs copied to it may not" +" work." +msgstr "" + +#: ../bin/src/ui_addpodcastbyurl.h:77 +msgid "If you know the URL of a podcast, enter it below and press Go." +msgstr "" + +#: ../bin/src/ui_organisedialog.h:204 +msgid "Ignore \"The\" in artist names" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:43 +msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:45 +msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" +msgstr "" + +#: core/utilities.cpp:147 +#, qt-format +msgid "In %1 days" +msgstr "" + +#: core/utilities.cpp:151 +#, qt-format +msgid "In %1 weeks" +msgstr "" + +#: ../bin/src/ui_wizardfinishpage.h:86 +msgid "" +"In dynamic mode new tracks will be chosen and added to the playlist every " +"time a song finishes." +msgstr "" + +#: internet/spotifyservice.cpp:360 +msgid "Inbox" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:443 +msgid "Include album art in the notification" +msgstr "" + +#: ../bin/src/ui_querysearchpage.h:118 +msgid "Include all songs" +msgstr "" + +#: internet/subsonicsettingspage.cpp:90 +msgid "Incompatible Subsonic REST protocol version. Client must upgrade." +msgstr "" + +#: internet/subsonicsettingspage.cpp:94 +msgid "Incompatible Subsonic REST protocol version. Server must upgrade." +msgstr "" + +#: internet/subsonicsettingspage.cpp:127 +msgid "Incomplete configuration, please ensure all fields are populated." +msgstr "" + +#: core/commandlineoptions.cpp:158 +msgid "Increase the volume by 4%" +msgstr "" + +#: core/commandlineoptions.cpp:160 +msgid "Increase the volume by percent" +msgstr "" + +#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +msgid "Increase volume" +msgstr "" + +#: internet/cloudfileservice.cpp:136 +#, qt-format +msgid "Indexing %1" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +msgid "Information" +msgstr "" + +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:203 +msgid "Insert..." +msgstr "" + +#: internet/spotifysettingspage.cpp:75 +msgid "Installed" +msgstr "" + +#: core/database.cpp:587 +msgid "Integrity check" +msgstr "" + +#: ui/mainwindow.cpp:244 +msgid "Internet" +msgstr "" + +#: ui/settingsdialog.cpp:153 +msgid "Internet providers" +msgstr "" + +#: internet/lastfmservice.cpp:433 +msgid "Invalid API key" +msgstr "" + +#: internet/lastfmservice.cpp:428 +msgid "Invalid format" +msgstr "" + +#: internet/lastfmservice.cpp:426 +msgid "Invalid method" +msgstr "" + +#: internet/lastfmservice.cpp:429 +msgid "Invalid parameters" +msgstr "" + +#: internet/lastfmservice.cpp:430 +msgid "Invalid resource specified" +msgstr "" + +#: internet/lastfmservice.cpp:425 +msgid "Invalid service" +msgstr "" + +#: internet/lastfmservice.cpp:432 +msgid "Invalid session key" +msgstr "" + +#: internet/groovesharkservice.cpp:401 +msgid "Invalid username and/or password" +msgstr "" + +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + +#: internet/jamendoservice.cpp:127 +msgid "Jamendo" +msgstr "" + +#: internet/jamendoservice.cpp:109 +msgid "Jamendo Most Listened Tracks" +msgstr "" + +#: internet/jamendoservice.cpp:107 +msgid "Jamendo Top Tracks" +msgstr "" + +#: internet/jamendoservice.cpp:103 +msgid "Jamendo Top Tracks of the Month" +msgstr "" + +#: internet/jamendoservice.cpp:105 +msgid "Jamendo Top Tracks of the Week" +msgstr "" + +#: internet/jamendoservice.cpp:171 +msgid "Jamendo database" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:703 +msgid "Jump to the currently playing track" +msgstr "" + +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#, qt-format +msgid "Keep buttons for %1 second..." +msgstr "" + +#: ../bin/src/ui_wiimoteshortcutgrabber.h:127 +#: wiimotedev/wiimoteshortcutgrabber.cpp:73 +#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#, qt-format +msgid "Keep buttons for %1 seconds..." +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:193 +msgid "Keep running in the background when the window is closed" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:193 +msgid "Keep the original files" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:695 +msgid "Kittens" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:195 +msgid "Language" +msgstr "" + +#: ui/equalizer.cpp:123 +msgid "Laptop/Headphones" +msgstr "" + +#: ui/equalizer.cpp:124 +msgid "Large Hall" +msgstr "" + +#: widgets/nowplayingwidget.cpp:94 +msgid "Large album cover" +msgstr "" + +#: widgets/fancytabwidget.cpp:670 +msgid "Large sidebar" +msgstr "" + +#: library/library.cpp:71 playlist/playlist.cpp:1225 +#: ../bin/src/ui_edittagdialog.h:671 +msgid "Last played" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:150 +msgid "Last.fm" +msgstr "" + +#: internet/lastfmservice.cpp:85 +#, qt-format +msgid "Last.fm Custom Radio: %1" +msgstr "" + +#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 +#: internet/lastfmservice.cpp:722 +#, qt-format +msgid "Last.fm Library - %1" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 +#: internet/lastfmservice.cpp:260 +#, qt-format +msgid "Last.fm Mix Radio - %1" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 +#: internet/lastfmservice.cpp:265 +#, qt-format +msgid "Last.fm Neighbor Radio - %1" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 +#, qt-format +msgid "Last.fm Radio Station - %1" +msgstr "" + +#: internet/lastfmservice.cpp:83 +#, qt-format +msgid "Last.fm Similar Artists to %1" +msgstr "" + +#: internet/lastfmservice.cpp:84 +#, qt-format +msgid "Last.fm Tag Radio: %1" +msgstr "" + +#: internet/lastfmservice.cpp:437 +msgid "Last.fm is currently busy, please try again in a few minutes" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:154 +msgid "Last.fm password" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:78 +msgid "Last.fm play counts" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:131 +msgid "Last.fm tags" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:152 +msgid "Last.fm username" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:111 +msgid "Last.fm wiki" +msgstr "" + +#: library/library.cpp:87 +msgid "Least favourite tracks" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:326 +msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." +msgstr "" + +#: ../bin/src/ui_equalizer.h:172 +msgid "Left" +msgstr "" + +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +msgid "Length" +msgstr "" + +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +msgid "Library" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:122 +msgid "Library advanced grouping" +msgstr "" + +#: ui/mainwindow.cpp:2145 +msgid "Library rescan notice" +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:86 +msgid "Library search" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 +msgid "Limits" +msgstr "" + +#: internet/groovesharkservice.cpp:604 +msgid "" +"Listen to Grooveshark songs based on what you've listened to previously" +msgstr "" + +#: ui/equalizer.cpp:125 +msgid "Live" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:217 +msgid "Load" +msgstr "" + +#: ../bin/src/ui_coverfromurldialog.h:102 +msgid "Load cover from URL" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:61 +msgid "Load cover from URL..." +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:98 +msgid "Load cover from disk" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:59 +msgid "Load cover from disk..." +msgstr "" + +#: playlist/playlistcontainer.cpp:286 +msgid "Load playlist" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:709 +msgid "Load playlist..." +msgstr "" + +#: internet/lastfmservice.cpp:884 +msgid "Loading Last.fm radio" +msgstr "" + +#: devices/mtploader.cpp:42 +msgid "Loading MTP device" +msgstr "" + +#: devices/gpodloader.cpp:46 +msgid "Loading iPod database" +msgstr "" + +#: smartplaylists/generatorinserter.cpp:52 +msgid "Loading smart playlist" +msgstr "" + +#: library/librarymodel.cpp:139 +msgid "Loading songs" +msgstr "" + +#: internet/digitallyimportedurlhandler.cpp:67 +#: internet/somafmurlhandler.cpp:58 +msgid "Loading stream" +msgstr "" + +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +msgid "Loading tracks" +msgstr "" + +#: playlist/songloaderinserter.cpp:141 +msgid "Loading tracks info" +msgstr "" + +#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +msgid "Loading..." +msgstr "" + +#: core/commandlineoptions.cpp:167 +msgid "Loads files/URLs, replacing current playlist" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:163 +#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_spotifysettingspage.h:211 +#: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_lastfmsettingspage.h:153 +#: ../bin/src/ui_googledrivesettingspage.h:105 +#: ../bin/src/ui_ubuntuonesettingspage.h:131 +msgid "Login" +msgstr "" + +#: podcasts/podcastsettingspage.cpp:119 +msgid "Login failed" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:137 +msgid "Long term prediction profile (LTP)" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:664 +msgid "Love" +msgstr "" + +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:107 +#, qt-format +msgid "Low (%1 fps)" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:117 +msgid "Low (256x256)" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:135 +msgid "Low complexity profile (LC)" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:159 +msgid "Lyrics" +msgstr "" + +#: songinfo/ultimatelyricsprovider.cpp:156 +#, qt-format +msgid "Lyrics from %1" +msgstr "" + +#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +msgid "MP3" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:177 +msgid "MP3 256k" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:170 +msgid "MP3 96k" +msgstr "" + +#: core/song.cpp:341 +msgid "MP4 AAC" +msgstr "" + +#: core/song.cpp:342 +msgid "MPC" +msgstr "" + +#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +msgid "Magnatune" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:131 +msgid "Magnatune Download" +msgstr "" + +#: widgets/osd.cpp:195 +msgid "Magnatune download finished" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:134 +msgid "Main profile (MAIN)" +msgstr "" + +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:533 +msgid "Make playlist available offline" +msgstr "" + +#: internet/lastfmservice.cpp:444 +msgid "Malformed response" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:160 +msgid "Manual proxy configuration" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:231 +#: ../bin/src/ui_podcastsettingspage.h:245 +msgid "Manually" +msgstr "" + +#: devices/deviceproperties.cpp:153 +msgid "Manufacturer" +msgstr "" + +#: podcasts/podcastservice.cpp:284 +msgid "Mark as listened" +msgstr "" + +#: podcasts/podcastservice.cpp:282 +msgid "Mark as new" +msgstr "" + +#: ../bin/src/ui_querysearchpage.h:116 +msgid "Match every search term (AND)" +msgstr "" + +#: ../bin/src/ui_querysearchpage.h:117 +msgid "Match one or more search terms (OR)" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsvorbis.h:209 +msgid "Maximum bitrate" +msgstr "" + +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:108 +#, qt-format +msgid "Medium (%1 fps)" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgid "Medium (512x512)" +msgstr "" + +#: ../bin/src/ui_magnatunesettingspage.h:156 +msgid "Membership type" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsvorbis.h:206 +msgid "Minimum bitrate" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:132 +msgid "Missing projectM presets" +msgstr "" + +#: devices/deviceproperties.cpp:152 +msgid "Model" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:192 +msgid "Monitor the library for changes" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Mono playback" +msgstr "" + +#: smartplaylists/searchterm.cpp:313 +msgid "Months" +msgstr "" + +#: playlist/playlist.cpp:1240 +msgid "Mood" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:294 +#: moodbar/moodbarproxystyle.cpp:342 +msgid "Moodbar style" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:292 +msgid "Moodbars" +msgstr "" + +#: library/library.cpp:74 +msgid "Most played" +msgstr "" + +#: devices/giolister.cpp:159 +msgid "Mount point" +msgstr "" + +#: devices/devicekitlister.cpp:125 +msgid "Mount points" +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:149 +#: ../bin/src/ui_queuemanager.h:131 ../bin/src/ui_songinfosettingspage.h:162 +msgid "Move down" +msgstr "" + +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +msgid "Move to library..." +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:148 +#: ../bin/src/ui_queuemanager.h:127 ../bin/src/ui_songinfosettingspage.h:161 +msgid "Move up" +msgstr "" + +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +msgid "Music" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:186 +msgid "Music Library" +msgstr "" + +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 +#: wiimotedev/wiimotesettingspage.cpp:105 +msgid "Mute" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 +msgid "My Last.fm Library" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 +msgid "My Last.fm Mix Radio" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 +msgid "My Last.fm Neighborhood" +msgstr "" + +#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 +msgid "My Last.fm Recommended Radio" +msgstr "" + +#: internet/lastfmservice.cpp:197 +msgid "My Mix Radio" +msgstr "" + +#: internet/groovesharkservice.cpp:608 +msgid "My Music" +msgstr "" + +#: internet/lastfmservice.cpp:202 +msgid "My Neighborhood" +msgstr "" + +#: internet/lastfmservice.cpp:192 +msgid "My Radio Station" +msgstr "" + +#: internet/lastfmservice.cpp:187 +msgid "My Recommendations" +msgstr "" + +#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 +#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_wizardfinishpage.h:84 +#: ../bin/src/ui_globalshortcutssettingspage.h:174 +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:197 +msgid "Naming options" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:230 +msgid "Narrow band (NB)" +msgstr "" + +#: internet/lastfmservice.cpp:229 +msgid "Neighbors" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:157 +msgid "Network Proxy" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:177 +msgid "Network Remote" +msgstr "" + +#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +msgid "Never" +msgstr "" + +#: library/library.cpp:67 +msgid "Never played" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:210 +#: ../bin/src/ui_behavioursettingspage.h:224 +msgid "Never start playing" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:72 +#: playlist/playlistlistcontainer.cpp:171 +#: ../bin/src/ui_playlistlistcontainer.h:128 +msgid "New folder" +msgstr "" + +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +msgid "New playlist" +msgstr "" + +#: library/libraryview.cpp:379 +msgid "New smart playlist..." +msgstr "" + +#: widgets/freespacebar.cpp:46 +msgid "New songs" +msgstr "" + +#: ../bin/src/ui_dynamicplaylistcontrols.h:110 +msgid "New tracks will be added automatically." +msgstr "" + +#: library/library.cpp:80 +msgid "Newest tracks" +msgstr "" + +#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +msgid "Next" +msgstr "" + +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 +#: wiimotedev/wiimotesettingspage.cpp:99 +msgid "Next track" +msgstr "" + +#: core/utilities.cpp:149 +msgid "Next week" +msgstr "" + +#: analyzers/analyzercontainer.cpp:80 +msgid "No analyzer" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:285 +msgid "No background image" +msgstr "" + +#: ui/albumcovermanager.cpp:778 +msgid "No covers to export." +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:146 +msgid "No long blocks" +msgstr "" + +#: playlist/playlistcontainer.cpp:366 +msgid "" +"No matches found. Clear the search box to show the whole playlist again." +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:145 +msgid "No short blocks" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 +#: ../bin/src/ui_groupbydialog.h:156 +msgid "None" +msgstr "" + +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +msgid "None of the selected songs were suitable for copying to a device" +msgstr "" + +#: moodbar/moodbarrenderer.cpp:155 +msgid "Normal" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:144 +msgid "Normal block type" +msgstr "" + +#: playlist/playlistsequence.cpp:170 +msgid "Not available while using a dynamic playlist" +msgstr "" + +#: devices/deviceview.cpp:107 +msgid "Not connected" +msgstr "" + +#: internet/lastfmservice.cpp:439 +msgid "Not enough content" +msgstr "" + +#: internet/lastfmservice.cpp:441 +msgid "Not enough fans" +msgstr "" + +#: internet/lastfmservice.cpp:440 +msgid "Not enough members" +msgstr "" + +#: internet/lastfmservice.cpp:442 +msgid "Not enough neighbors" +msgstr "" + +#: internet/spotifysettingspage.cpp:75 +msgid "Not installed" +msgstr "" + +#: globalsearch/globalsearchsettingspage.cpp:120 +#: globalsearch/searchproviderstatuswidget.cpp:48 +msgid "Not logged in" +msgstr "" + +#: devices/deviceview.cpp:111 +msgid "Not mounted - double click to mount" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:432 +msgid "Notification type" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:375 +msgid "Notifications" +msgstr "" + +#: ui/macsystemtrayicon.mm:64 +msgid "Now Playing" +msgstr "" + +#: ui/notificationssettingspage.cpp:37 +msgid "OSD Preview" +msgstr "" + +#: widgets/osd.cpp:171 +msgid "Off" +msgstr "" + +#: core/song.cpp:344 +msgid "Ogg Flac" +msgstr "" + +#: core/song.cpp:347 +msgid "Ogg Opus" +msgstr "" + +#: core/song.cpp:345 +msgid "Ogg Speex" +msgstr "" + +#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: ../bin/src/ui_magnatunesettingspage.h:170 +msgid "Ogg Vorbis" +msgstr "" + +#: widgets/osd.cpp:171 +msgid "On" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:182 +msgid "" +"Only accept connections from clients within the ip ranges:\n" +"10.x.x.x\n" +"172.16.0.0 - 172.31.255.255\n" +"192.168.x.x" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:187 +msgid "Only allow connections from the local network" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:142 +msgid "Only show the first" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:290 +msgid "Opacity" +msgstr "" + +#: internet/digitallyimportedservicebase.cpp:179 +#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 +#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 +#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#, qt-format +msgid "Open %1 in browser" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:690 +msgid "Open &audio CD..." +msgstr "" + +#: podcasts/addpodcastdialog.cpp:230 +msgid "Open OPML file" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:73 +msgid "Open OPML file..." +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:382 +msgid "Open device" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:689 +msgid "Open file..." +msgstr "" + +#: internet/googledriveservice.cpp:184 +msgid "Open in Google Drive" +msgstr "" + +#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 +#: internet/internetservice.cpp:76 library/libraryview.cpp:371 +#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:96 +msgid "Open in your browser" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:169 +#: ../bin/src/ui_globalshortcutssettingspage.h:171 +msgid "Open..." +msgstr "" + +#: internet/lastfmservice.cpp:431 +msgid "Operation failed" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:193 +msgid "Optimize for bitrate" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:191 +msgid "Optimize for quality" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 +msgid "Options..." +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:181 +msgid "Opus" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:188 +msgid "Organise Files" +msgstr "" + +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +msgid "Organise files..." +msgstr "" + +#: core/organise.cpp:65 +msgid "Organising files" +msgstr "" + +#: ui/trackselectiondialog.cpp:167 +msgid "Original tags" +msgstr "" + +#: core/commandlineoptions.cpp:169 +msgid "Other options" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:204 +msgid "Output" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:325 +msgid "Output device" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 +msgid "Output options" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:320 +msgid "Output plugin" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:210 +msgid "Overwrite all" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:207 +msgid "Overwrite existing files" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:211 +msgid "Overwrite smaller ones only" +msgstr "" + +#: ../bin/src/ui_podcastinfowidget.h:195 +msgid "Owner" +msgstr "" + +#: internet/jamendoservice.cpp:214 +msgid "Parsing Jamendo catalogue" +msgstr "" + +#: ui/equalizer.cpp:126 +msgid "Party" +msgstr "" + +#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_magnatunesettingspage.h:165 +#: ../bin/src/ui_spotifysettingspage.h:210 +#: ../bin/src/ui_subsonicsettingspage.h:128 +#: ../bin/src/ui_podcastsettingspage.h:253 +#: ../bin/src/ui_networkproxysettingspage.h:169 +msgid "Password" +msgstr "" + +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 +#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +msgid "Pause" +msgstr "" + +#: core/commandlineoptions.cpp:153 +msgid "Pause playback" +msgstr "" + +#: widgets/osd.cpp:156 +msgid "Paused" +msgstr "" + +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: ../bin/src/ui_edittagdialog.h:690 +msgid "Performer" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:215 +msgid "Pixel" +msgstr "" + +#: widgets/fancytabwidget.cpp:672 +msgid "Plain sidebar" +msgstr "" + +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 +#: wiimotedev/wiimotesettingspage.cpp:101 +msgid "Play" +msgstr "" + +#: ../bin/src/ui_lastfmstationdialog.h:92 +msgid "Play Artist or Tag" +msgstr "" + +#: internet/lastfmservice.cpp:118 +msgid "Play artist radio..." +msgstr "" + +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +msgid "Play count" +msgstr "" + +#: internet/lastfmservice.cpp:122 +msgid "Play custom radio..." +msgstr "" + +#: core/commandlineoptions.cpp:152 +msgid "Play if stopped, pause if playing" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:211 +#: ../bin/src/ui_behavioursettingspage.h:225 +msgid "Play if there is nothing already playing" +msgstr "" + +#: internet/lastfmservice.cpp:120 +msgid "Play tag radio..." +msgstr "" + +#: core/commandlineoptions.cpp:168 +msgid "Play the th track in the playlist" +msgstr "" + +#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +msgid "Play/Pause" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:297 +msgid "Playback" +msgstr "" + +#: core/commandlineoptions.cpp:150 +msgid "Player options" +msgstr "" + +#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 +#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +msgid "Playlist" +msgstr "" + +#: widgets/osd.cpp:178 +msgid "Playlist finished" +msgstr "" + +#: core/commandlineoptions.cpp:165 +msgid "Playlist options" +msgstr "" + +#: smartplaylists/wizard.cpp:77 +msgid "Playlist type" +msgstr "" + +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +msgid "Playlists" +msgstr "" + +#: ../data/oauthsuccess.html:38 +msgid "Please close your browser and return to Clementine." +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:214 +msgid "Plugin status:" +msgstr "" + +#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +msgid "Podcasts" +msgstr "" + +#: ui/equalizer.cpp:127 +msgid "Pop" +msgstr "" + +#: internet/groovesharkservice.cpp:577 +msgid "Popular songs" +msgstr "" + +#: internet/groovesharkservice.cpp:580 +msgid "Popular songs of the Month" +msgstr "" + +#: internet/groovesharkservice.cpp:587 +msgid "Popular songs today" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:438 +msgid "Popup duration" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:166 +#: ../bin/src/ui_networkremotesettingspage.h:180 +msgid "Port" +msgstr "" + +#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +msgid "Pre-amp" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_magnatunesettingspage.h:166 +#: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 +#: ../bin/src/ui_lastfmsettingspage.h:155 +msgid "Preferences" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:679 +msgid "Preferences..." +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:202 +msgid "Preferred album art filenames (comma separated)" +msgstr "" + +#: ../bin/src/ui_magnatunesettingspage.h:167 +msgid "Preferred audio format" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:217 +msgid "Preferred bitrate" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:380 +msgid "Preferred format" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:174 +msgid "Premium audio type" +msgstr "" + +#: ../bin/src/ui_equalizer.h:164 +msgid "Preset:" +msgstr "" + +#: ../bin/src/ui_wiimoteshortcutgrabber.h:124 +msgid "Press a button combination to use for" +msgstr "" + +#: ../bin/src/ui_globalshortcutgrabber.h:73 +msgid "Press a key" +msgstr "" + +#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#, qt-format +msgid "Press a key combination to use for %1..." +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:451 +msgid "Pretty OSD options" +msgstr "" + +#: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 +#: ../bin/src/ui_notificationssettingspage.h:446 +#: ../bin/src/ui_organisedialog.h:208 +msgid "Preview" +msgstr "" + +#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +msgid "Previous" +msgstr "" + +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 +#: wiimotedev/wiimotesettingspage.cpp:100 +msgid "Previous track" +msgstr "" + +#: core/commandlineoptions.cpp:176 +msgid "Print out version information" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:131 +msgid "Profile" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:129 +msgid "Psychedelic" +msgstr "" + +#: ../bin/src/ui_wiimoteshortcutgrabber.h:125 +#: wiimotedev/wiimotesettingspage.cpp:227 +msgid "Push Wiiremote button" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:138 +msgid "Put songs in a random order" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsflac.h:81 +#: ../bin/src/ui_transcoderoptionsmp3.h:192 +#: ../bin/src/ui_transcoderoptionsspeex.h:217 +#: ../bin/src/ui_transcoderoptionsvorbis.h:202 +#: visualisations/visualisationcontainer.cpp:114 +msgid "Quality" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:383 +msgid "Querying device..." +msgstr "" + +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +msgid "Queue Manager" +msgstr "" + +#: ui/mainwindow.cpp:1386 +msgid "Queue selected tracks" +msgstr "" + +#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 +#: ui/mainwindow.cpp:1384 +msgid "Queue track" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:314 +msgid "Radio (equal loudness for all tracks)" +msgstr "" + +#: internet/groovesharkservice.cpp:595 +msgid "Radios" +msgstr "" + +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_visualisationselector.h:112 +msgid "Random visualization" +msgstr "" + +#: core/globalshortcuts.cpp:65 +msgid "Rate the current song 0 stars" +msgstr "" + +#: core/globalshortcuts.cpp:66 +msgid "Rate the current song 1 star" +msgstr "" + +#: core/globalshortcuts.cpp:67 +msgid "Rate the current song 2 stars" +msgstr "" + +#: core/globalshortcuts.cpp:68 +msgid "Rate the current song 3 stars" +msgstr "" + +#: core/globalshortcuts.cpp:69 +msgid "Rate the current song 4 stars" +msgstr "" + +#: core/globalshortcuts.cpp:70 +msgid "Rate the current song 5 stars" +msgstr "" + +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +msgid "Rating" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +msgid "Really cancel?" +msgstr "" + +#: internet/subsonicsettingspage.cpp:131 +msgid "Redirect limit exceeded, verify server configuration." +msgstr "" + +#: internet/groovesharkservice.cpp:549 +msgid "Refresh" +msgstr "" + +#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:92 +msgid "Refresh catalogue" +msgstr "" + +#: internet/somafmservice.cpp:106 +msgid "Refresh channels" +msgstr "" + +#: internet/lastfmservice.cpp:124 +msgid "Refresh friends list" +msgstr "" + +#: internet/icecastservice.cpp:297 +msgid "Refresh station list" +msgstr "" + +#: internet/digitallyimportedservicebase.cpp:182 +msgid "Refresh streams" +msgstr "" + +#: ui/equalizer.cpp:130 +msgid "Reggae" +msgstr "" + +#: ../bin/src/ui_wiimoteshortcutgrabber.h:126 +msgid "Remember Wii remote swing" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:204 +msgid "Remember from last time" +msgstr "" + +#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +msgid "Remove" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:194 +msgid "Remove action" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:724 +msgid "Remove duplicates from playlist" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:189 +msgid "Remove folder" +msgstr "" + +#: internet/groovesharkservice.cpp:536 +msgid "Remove from My Music" +msgstr "" + +#: internet/groovesharkservice.cpp:533 +msgid "Remove from favorites" +msgstr "" + +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +msgid "Remove from playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:174 +msgid "Remove playlist" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:315 +msgid "Remove playlists" +msgstr "" + +#: internet/groovesharkservice.cpp:1539 +msgid "Removing songs from My Music" +msgstr "" + +#: internet/groovesharkservice.cpp:1489 +msgid "Removing songs from favorites" +msgstr "" + +#: internet/groovesharkservice.cpp:1337 +#, qt-format +msgid "Rename \"%1\" playlist" +msgstr "" + +#: internet/groovesharkservice.cpp:526 +msgid "Rename Grooveshark playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:137 +msgid "Rename playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:55 +msgid "Rename playlist..." +msgstr "" + +#: ../bin/src/ui_mainwindow.h:675 +msgid "Renumber tracks in this order..." +msgstr "" + +#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +msgid "Repeat" +msgstr "" + +#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +msgid "Repeat album" +msgstr "" + +#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +msgid "Repeat playlist" +msgstr "" + +#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +msgid "Repeat track" +msgstr "" + +#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 +#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: widgets/fileviewlist.cpp:34 +msgid "Replace current playlist" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:218 +msgid "Replace the playlist" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:205 +msgid "Replaces spaces with underscores" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:309 +msgid "Replay Gain" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:311 +msgid "Replay Gain mode" +msgstr "" + +#: ../bin/src/ui_dynamicplaylistcontrols.h:112 +msgid "Repopulate" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:191 +msgid "Require authentication code" +msgstr "" + +#: widgets/lineedit.cpp:52 +msgid "Reset" +msgstr "" + +#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +msgid "Reset play counts" +msgstr "" + +#: core/commandlineoptions.cpp:164 +msgid "" +"Restart the track, or play the previous track if within 8 seconds of start." +msgstr "" + +#: ../bin/src/ui_organisedialog.h:206 +msgid "Restrict to ASCII characters" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:205 +msgid "Resume playback on start" +msgstr "" + +#: internet/groovesharkservice.cpp:758 +msgid "Retrieving Grooveshark My Music songs" +msgstr "" + +#: internet/groovesharkservice.cpp:726 +msgid "Retrieving Grooveshark favorites songs" +msgstr "" + +#: internet/groovesharkservice.cpp:663 +msgid "Retrieving Grooveshark playlists" +msgstr "" + +#: ../data/oauthsuccess.html:5 +msgid "Return to Clementine" +msgstr "" + +#: ../bin/src/ui_equalizer.h:174 +msgid "Right" +msgstr "" + +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + +#: ui/equalizer.cpp:131 +msgid "Rock" +msgstr "" + +#: ../bin/src/ui_console.h:81 +msgid "Run" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:164 +msgid "SOCKS proxy" +msgstr "" + +#: internet/subsonicsettingspage.cpp:122 +msgid "" +"SSL handshake error, verify server configuration. SSLv3 option below may " +"workaround some issues." +msgstr "" + +#: devices/deviceview.cpp:202 +msgid "Safely remove device" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:196 +msgid "Safely remove the device after copying" +msgstr "" + +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +msgid "Sample rate" +msgstr "" + +#: ui/organisedialog.cpp:70 +msgid "Samplerate" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:295 +msgid "Save .mood files in your music library" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:121 +msgid "Save album cover" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:60 +msgid "Save cover to disk..." +msgstr "" + +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +msgid "Save image" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +msgid "Save playlist..." +msgstr "" + +#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +msgid "Save preset" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:193 +msgid "Save ratings in file tags when possible" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:197 +msgid "Save statistics in file tags when possible" +msgstr "" + +#: ../bin/src/ui_addstreamdialog.h:115 +msgid "Save this stream in the Internet tab" +msgstr "" + +#: library/library.cpp:164 +msgid "Saving songs statistics into songs files" +msgstr "" + +#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +msgid "Saving tracks" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:136 +msgid "Scalable sampling rate profile (SSR)" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:213 +msgid "Scale size" +msgstr "" + +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +msgid "Score" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:156 +msgid "Scrobble tracks that I listen to" +msgstr "" + +#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 +#: ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ../bin/src/ui_icecastfilterwidget.h:78 +msgid "Search Icecast stations" +msgstr "" + +#: internet/jamendoservice.cpp:426 +msgid "Search Jamendo" +msgstr "" + +#: internet/magnatuneservice.cpp:285 +msgid "Search Magnatune" +msgstr "" + +#: internet/subsonicservice.cpp:75 +msgid "Search Subsonic" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:66 +msgid "Search automatically" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:62 +msgid "Search for album covers..." +msgstr "" + +#: ../bin/src/ui_globalsearchview.h:208 +msgid "Search for anything" +msgstr "" + +#: ../bin/src/ui_gpoddersearchpage.h:76 +msgid "Search gpodder.net" +msgstr "" + +#: ../bin/src/ui_itunessearchpage.h:76 +msgid "Search iTunes" +msgstr "" + +#: ../bin/src/ui_querysearchpage.h:113 +msgid "Search mode" +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:154 +msgid "Search options" +msgstr "" + +#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 +#: internet/spotifyservice.cpp:347 +msgid "Search results" +msgstr "" + +#: smartplaylists/querywizardplugin.cpp:152 +#: ../bin/src/ui_querysearchpage.h:120 +msgid "Search terms" +msgstr "" + +#: internet/groovesharkservice.cpp:270 +msgid "Searching on Grooveshark" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:139 +msgid "Second level" +msgstr "" + +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +msgid "Seek backward" +msgstr "" + +#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +msgid "Seek forward" +msgstr "" + +#: core/commandlineoptions.cpp:163 +msgid "Seek the currently playing track by a relative amount" +msgstr "" + +#: core/commandlineoptions.cpp:162 +msgid "Seek the currently playing track to an absolute position" +msgstr "" + +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +msgid "Select All" +msgstr "" + +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +msgid "Select None" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:277 +msgid "Select background color:" +msgstr "" + +#: ui/appearancesettingspage.cpp:247 +msgid "Select background image" +msgstr "" + +#: ../bin/src/ui_trackselectiondialog.h:207 +msgid "Select best possible match" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:275 +msgid "Select foreground color:" +msgstr "" + +#: ../bin/src/ui_visualisationselector.h:108 +msgid "Select visualizations" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:124 +msgid "Select visualizations..." +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 +msgid "Select..." +msgstr "" + +#: devices/devicekitlister.cpp:124 +msgid "Serial number" +msgstr "" + +#: ../bin/src/ui_subsonicsettingspage.h:126 +msgid "Server URL" +msgstr "" + +#: ../bin/src/ui_subsonicsettingspage.h:125 +msgid "Server details" +msgstr "" + +#: internet/lastfmservice.cpp:434 +msgid "Service offline" +msgstr "" + +#: ui/mainwindow.cpp:1413 +#, qt-format +msgid "Set %1 to \"%2\"..." +msgstr "" + +#: core/commandlineoptions.cpp:157 +msgid "Set the volume to percent" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:676 +msgid "Set value for all selected tracks..." +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:179 +msgid "Settings" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:173 +msgid "Shortcut" +msgstr "" + +#: ui/globalshortcutssettingspage.cpp:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#, qt-format +msgid "Shortcut for %1" +msgstr "" + +#: wiimotedev/wiimotesettingspage.cpp:124 +#, qt-format +msgid "Shortcut for %1 already exists" +msgstr "" + +#: library/libraryfilterwidget.cpp:61 +msgid "Show" +msgstr "" + +#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +msgid "Show OSD" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:298 +msgid "Show a glowing animation on the current track" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:293 +msgid "Show a moodbar in the track progress bar" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:434 +msgid "Show a native desktop notification" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:442 +msgid "Show a notification when I change the repeat/shuffle mode" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:441 +msgid "Show a notification when I change the volume" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:436 +msgid "Show a popup from the system tray" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:435 +msgid "Show a pretty OSD" +msgstr "" + +#: widgets/nowplayingwidget.cpp:121 +msgid "Show above status bar" +msgstr "" + +#: ui/mainwindow.cpp:471 +msgid "Show all songs" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:141 +msgid "Show all the songs" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:209 +msgid "Show cover art in library" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:210 +msgid "Show dividers" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +msgid "Show fullsize..." +msgstr "" + +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 +#: widgets/fileviewlist.cpp:52 +msgid "Show in file browser..." +msgstr "" + +#: ui/mainwindow.cpp:520 +msgid "Show in library..." +msgstr "" + +#: library/libraryview.cpp:403 +msgid "Show in various artists" +msgstr "" + +#: moodbar/moodbarproxystyle.cpp:337 +msgid "Show moodbar" +msgstr "" + +#: ui/mainwindow.cpp:472 +msgid "Show only duplicates" +msgstr "" + +#: ui/mainwindow.cpp:473 +msgid "Show only untagged" +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:153 +msgid "Show search suggestions" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:157 +msgid "Show the \"love\" and \"ban\" buttons" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:158 +msgid "Show the scrobble button in the main window" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:192 +msgid "Show tray icon" +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:152 +msgid "Show which sources are enabled and disabled" +msgstr "" + +#: core/globalshortcuts.cpp:58 +msgid "Show/Hide" +msgstr "" + +#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +msgid "Shuffle" +msgstr "" + +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +msgid "Shuffle albums" +msgstr "" + +#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +msgid "Shuffle all" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:683 +msgid "Shuffle playlist" +msgstr "" + +#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +msgid "Shuffle tracks in this album" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:252 +msgid "Sign in" +msgstr "" + +#: ../bin/src/ui_loginstatewidget.h:173 +msgid "Sign out" +msgstr "" + +#: ../bin/src/ui_loginstatewidget.h:175 +msgid "Signing in..." +msgstr "" + +#: songinfo/echonestsimilarartists.cpp:57 +msgid "Similar artists" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:212 +msgid "Size" +msgstr "" + +#: ../bin/src/ui_albumcoverexport.h:214 +msgid "Size:" +msgstr "" + +#: ui/equalizer.cpp:133 +msgid "Ska" +msgstr "" + +#: core/commandlineoptions.cpp:155 +msgid "Skip backwards in playlist" +msgstr "" + +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +msgid "Skip count" +msgstr "" + +#: core/commandlineoptions.cpp:156 +msgid "Skip forwards in playlist" +msgstr "" + +#: widgets/nowplayingwidget.cpp:93 +msgid "Small album cover" +msgstr "" + +#: widgets/fancytabwidget.cpp:671 +msgid "Small sidebar" +msgstr "" + +#: smartplaylists/wizard.cpp:68 +msgid "Smart playlist" +msgstr "" + +#: library/librarymodel.cpp:1207 +msgid "Smart playlists" +msgstr "" + +#: ui/equalizer.cpp:132 +msgid "Soft" +msgstr "" + +#: ui/equalizer.cpp:134 +msgid "Soft Rock" +msgstr "" + +#: ../bin/src/ui_songinfosettingspage.h:154 +msgid "Song Information" +msgstr "" + +#: ui/mainwindow.cpp:247 +msgid "Song info" +msgstr "" + +#: analyzers/sonogram.cpp:18 +msgid "Sonogram" +msgstr "" + +#: ../bin/src/ui_trackselectiondialog.h:205 +msgid "Sorry" +msgstr "" + +#: ../bin/src/ui_icecastfilterwidget.h:75 +msgid "Sort by genre (alphabetically)" +msgstr "" + +#: ../bin/src/ui_icecastfilterwidget.h:76 +msgid "Sort by genre (by popularity)" +msgstr "" + +#: ../bin/src/ui_icecastfilterwidget.h:77 +msgid "Sort by station name" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:139 +msgid "Sort songs by" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:137 +msgid "Sorting" +msgstr "" + +#: playlist/playlist.cpp:1239 +msgid "Source" +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:146 +msgid "Sources" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:178 +msgid "Speex" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:207 +msgid "Spotify" +msgstr "" + +#: internet/spotifyservice.cpp:184 +msgid "Spotify login error" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:212 +msgid "Spotify plugin" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:59 +msgid "Spotify plugin not installed" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsmp3.h:201 +msgid "Standard" +msgstr "" + +#: internet/spotifyservice.cpp:354 +msgid "Starred" +msgstr "" + +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + +#: core/commandlineoptions.cpp:151 +msgid "Start the playlist currently playing" +msgstr "" + +#: transcoder/transcodedialog.cpp:90 +msgid "Start transcoding" +msgstr "" + +#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 +#: internet/spotifyservice.cpp:348 +msgid "" +"Start typing something on the search box above to fill this search results " +"list" +msgstr "" + +#: transcoder/transcoder.cpp:407 +#, qt-format +msgid "Starting %1" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:120 +msgid "Starting..." +msgstr "" + +#: internet/groovesharkservice.cpp:598 +msgid "Stations" +msgstr "" + +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 +#: wiimotedev/wiimotesettingspage.cpp:102 +msgid "Stop" +msgstr "" + +#: wiimotedev/wiimotesettingspage.cpp:110 +msgid "Stop after" +msgstr "" + +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +msgid "Stop after this track" +msgstr "" + +#: core/commandlineoptions.cpp:154 +msgid "Stop playback" +msgstr "" + +#: core/globalshortcuts.cpp:50 +msgid "Stop playing after current track" +msgstr "" + +#: widgets/osd.cpp:171 +#, qt-format +msgid "Stop playing after track: %1" +msgstr "" + +#: widgets/osd.cpp:166 +msgid "Stopped" +msgstr "" + +#: core/song.cpp:353 +msgid "Stream" +msgstr "" + +#: internet/subsonicsettingspage.cpp:30 +msgid "" +"Streaming from a Subsonic server requires a valid server license after the " +"30-day trial period." +msgstr "" + +#: ../bin/src/ui_magnatunesettingspage.h:160 +msgid "Streaming membership" +msgstr "" + +#: internet/groovesharkservice.cpp:629 +msgid "Subscribed playlists" +msgstr "" + +#: ../bin/src/ui_podcastinfowidget.h:196 +msgid "Subscribers" +msgstr "" + +#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +msgid "Subsonic" +msgstr "" + +#: ../data/oauthsuccess.html:36 +msgid "Success!" +msgstr "" + +#: transcoder/transcoder.cpp:200 +#, qt-format +msgid "Successfully written %1" +msgstr "" + +#: ui/trackselectiondialog.cpp:171 +msgid "Suggested tags" +msgstr "" + +#: ../bin/src/ui_edittagdialog.h:681 +#: ../bin/src/ui_notificationssettingspage.h:448 +msgid "Summary" +msgstr "" + +#: analyzers/analyzercontainer.cpp:65 +#: visualisations/visualisationcontainer.cpp:110 +#, qt-format +msgid "Super high (%1 fps)" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:120 +msgid "Super high (2048x2048)" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:374 +msgid "Supported formats" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:201 +msgid "Synchronize statistics to files now" +msgstr "" + +#: internet/spotifyservice.cpp:561 +msgid "Syncing Spotify inbox" +msgstr "" + +#: internet/spotifyservice.cpp:556 +msgid "Syncing Spotify playlist" +msgstr "" + +#: internet/spotifyservice.cpp:565 +msgid "Syncing Spotify starred tracks" +msgstr "" + +#: moodbar/moodbarrenderer.cpp:159 +msgid "System colors" +msgstr "" + +#: widgets/fancytabwidget.cpp:673 +msgid "Tabs on top" +msgstr "" + +#: ../bin/src/ui_lastfmstationdialog.h:97 +msgid "Tag" +msgstr "" + +#: ../bin/src/ui_trackselectiondialog.h:204 +msgid "Tag fetcher" +msgstr "" + +#: internet/lastfmservice.cpp:212 +msgid "Tag radio" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsvorbis.h:204 +msgid "Target bitrate" +msgstr "" + +#: ui/equalizer.cpp:135 +msgid "Techno" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:460 +msgid "Text options" +msgstr "" + +#: ui/about.cpp:70 +msgid "Thanks to" +msgstr "" + +#: ui/globalshortcutssettingspage.cpp:177 +#, qt-format +msgid "The \"%1\" command could not be started." +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:282 +msgid "The album cover of the currently playing song" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:90 +#, qt-format +msgid "The directory %1 is not valid" +msgstr "" + +#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + +#: smartplaylists/searchtermwidget.cpp:330 +msgid "The second value must be greater than the first one!" +msgstr "" + +#: ui/coverfromurldialog.cpp:71 +msgid "The site you requested does not exist!" +msgstr "" + +#: ui/coverfromurldialog.cpp:82 +msgid "The site you requested is not an image!" +msgstr "" + +#: internet/subsonicsettingspage.cpp:98 +msgid "" +"The trial period for the Subsonic server is over. Please donate to get a " +"license key. Visit subsonic.org for details." +msgstr "" + +#: ui/mainwindow.cpp:2138 +msgid "" +"The version of Clementine you've just updated to requires a full library " +"rescan because of the new features listed below:" +msgstr "" + +#: library/libraryview.cpp:529 +msgid "There are other songs in this album" +msgstr "" + +#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 +#: podcasts/gpoddertoptagspage.cpp:77 +msgid "There was a problem communicating with gpodder.net" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:158 +msgid "There was a problem fetching the metadata from Magnatune" +msgstr "" + +#: podcasts/itunessearchpage.cpp:76 +msgid "There was a problem parsing the response from the iTunes Store" +msgstr "" + +#: ui/organiseerrordialog.cpp:56 +msgid "" +"There were problems copying some songs. The following files could not be " +"copied:" +msgstr "" + +#: ui/organiseerrordialog.cpp:61 +msgid "" +"There were problems deleting some songs. The following files could not be " +"deleted:" +msgstr "" + +#: devices/deviceview.cpp:389 +msgid "" +"These files will be deleted from the device, are you sure you want to " +"continue?" +msgstr "" + +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +msgid "" +"These files will be permanently deleted from disk, are you sure you want to " +"continue?" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:187 +msgid "These folders will be scanned for music to make up your library" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:174 +msgid "" +"These settings are used in the \"Transcode Music\" dialog, and when " +"converting music before copying it to a device." +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:153 +msgid "Third level" +msgstr "" + +#: internet/jamendoservice.cpp:171 +msgid "" +"This action will create a database which could be as big as 150 MB.\n" +"Do you want to continue anyway?" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:175 +msgid "This album is not available in the requested format" +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:381 +msgid "" +"This device must be connected and opened before Clementine can see what file" +" formats it supports." +msgstr "" + +#: ../bin/src/ui_deviceproperties.h:375 +msgid "This device supports the following file formats:" +msgstr "" + +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +msgid "This device will not work properly" +msgstr "" + +#: devices/devicemanager.cpp:567 +msgid "" +"This is an MTP device, but you compiled Clementine without libmtp support." +msgstr "" + +#: devices/devicemanager.cpp:575 +msgid "This is an iPod, but you compiled Clementine without libgpod support." +msgstr "" + +#: devices/devicemanager.cpp:324 +msgid "" +"This is the first time you have connected this device. Clementine will now " +"scan the device to find music files - this may take some time." +msgstr "" + +#: playlist/playlisttabbar.cpp:186 +msgid "This option can be changed in the \"Behavior\" preferences" +msgstr "" + +#: internet/lastfmservice.cpp:435 +msgid "This stream is for paid subscribers only" +msgstr "" + +#: devices/devicemanager.cpp:587 +#, qt-format +msgid "This type of device is not supported: %1" +msgstr "" + +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 +msgid "Title" +msgstr "" + +#: internet/groovesharkservice.cpp:1018 +msgid "" +"To start Grooveshark radio, you should first listen to a few other " +"Grooveshark songs" +msgstr "" + +#: core/utilities.cpp:127 core/utilities.cpp:143 +msgid "Today" +msgstr "" + +#: core/globalshortcuts.cpp:60 +msgid "Toggle Pretty OSD" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:101 +msgid "Toggle fullscreen" +msgstr "" + +#: ui/mainwindow.cpp:1388 +msgid "Toggle queue status" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:722 +msgid "Toggle scrobbling" +msgstr "" + +#: core/commandlineoptions.cpp:171 +msgid "Toggle visibility for the pretty on-screen-display" +msgstr "" + +#: core/utilities.cpp:145 +msgid "Tomorrow" +msgstr "" + +#: podcasts/podcasturlloader.cpp:116 +msgid "Too many redirects" +msgstr "" + +#: internet/spotifyservice.cpp:366 +msgid "Top tracks" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:221 +msgid "Total albums:" +msgstr "" + +#: covers/coversearchstatisticsdialog.cpp:71 +msgid "Total bytes transferred" +msgstr "" + +#: covers/coversearchstatisticsdialog.cpp:68 +msgid "Total network requests made" +msgstr "" + +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 +msgid "Track" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +msgid "Transcode Music" +msgstr "" + +#: ../bin/src/ui_transcodelogdialog.h:63 +msgid "Transcoder Log" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:173 +msgid "Transcoding" +msgstr "" + +#: transcoder/transcoder.cpp:312 +#, qt-format +msgid "Transcoding %1 files using %2 threads" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsdialog.h:54 +msgid "Transcoding options" +msgstr "" + +#: core/song.cpp:350 +msgid "TrueAudio" +msgstr "" + +#: analyzers/turbine.cpp:15 +msgid "Turbine" +msgstr "" + +#: ../bin/src/ui_dynamicplaylistcontrols.h:113 +msgid "Turn off" +msgstr "" + +#: devices/giolister.cpp:161 +msgid "URI" +msgstr "" + +#: core/commandlineoptions.cpp:150 +msgid "URL(s)" +msgstr "" + +#: ../bin/src/ui_ubuntuonesettingspage.h:127 +msgid "Ubuntu One" +msgstr "" + +#: ../bin/src/ui_ubuntuonesettingspage.h:132 +msgid "Ubuntu One password" +msgstr "" + +#: ../bin/src/ui_ubuntuonesettingspage.h:130 +msgid "Ubuntu One username" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:228 +msgid "Ultra wide band (UWB)" +msgstr "" + +#: internet/magnatunedownloaddialog.cpp:144 +#, qt-format +msgid "Unable to download %1 (%2)" +msgstr "" + +#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 +#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 +#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 +#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 +#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +msgid "Unknown" +msgstr "" + +#: podcasts/podcasturlloader.cpp:198 +msgid "Unknown content-type" +msgstr "" + +#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +msgid "Unknown error" +msgstr "" + +#: ui/albumcoverchoicecontroller.cpp:63 +msgid "Unset cover" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +msgid "Unsubscribe" +msgstr "" + +#: songinfo/songkickconcerts.cpp:168 +msgid "Upcoming Concerts" +msgstr "" + +#: internet/groovesharkservice.cpp:1200 +msgid "Update Grooveshark playlist" +msgstr "" + +#: podcasts/podcastservice.cpp:260 +msgid "Update all podcasts" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:713 +msgid "Update changed library folders" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:191 +msgid "Update the library when Clementine starts" +msgstr "" + +#: podcasts/podcastservice.cpp:268 +msgid "Update this podcast" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:227 +msgid "Updating" +msgstr "" + +#: library/librarywatcher.cpp:92 +#, qt-format +msgid "Updating %1" +msgstr "" + +#: devices/deviceview.cpp:103 +#, qt-format +msgid "Updating %1%..." +msgstr "" + +#: library/librarywatcher.cpp:90 +msgid "Updating library" +msgstr "" + +#: core/commandlineoptions.cpp:150 +msgid "Usage" +msgstr "" + +#: ../bin/src/ui_lastfmsettingspage.h:159 +msgid "Use Album Artist tag when available" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:168 +msgid "Use Gnome's shortcut keys" +msgstr "" + +#: ../bin/src/ui_playbacksettingspage.h:310 +msgid "Use Replay Gain metadata if it is available" +msgstr "" + +#: ../bin/src/ui_subsonicsettingspage.h:129 +msgid "Use SSLv3" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:189 +msgid "Use Wii Remote" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:274 +msgid "Use a custom color set" +msgstr "" + +#: ../bin/src/ui_notificationssettingspage.h:445 +msgid "Use a custom message for notifications" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:178 +msgid "Use a network remote control" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:167 +msgid "Use authentication" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsvorbis.h:203 +msgid "Use bitrate management engine" +msgstr "" + +#: ../bin/src/ui_wizardfinishpage.h:85 +msgid "Use dynamic mode" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:188 +msgid "Use notifications to report Wii Remote status" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsaac.h:139 +msgid "Use temporal noise shaping" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:198 +msgid "Use the system default" +msgstr "" + +#: ../bin/src/ui_appearancesettingspage.h:273 +msgid "Use the system default color set" +msgstr "" + +#: ../bin/src/ui_networkproxysettingspage.h:158 +msgid "Use the system proxy settings" +msgstr "" + +#: ../bin/src/ui_spotifysettingspage.h:218 +msgid "Use volume normalisation" +msgstr "" + +#: widgets/freespacebar.cpp:47 +msgid "Used" +msgstr "" + +#: internet/groovesharkservice.cpp:404 +#, qt-format +msgid "User %1 doesn't have a Grooveshark Anywhere account" +msgstr "" + +#: ui/settingsdialog.cpp:145 +msgid "User interface" +msgstr "" + +#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_magnatunesettingspage.h:163 +#: ../bin/src/ui_spotifysettingspage.h:209 +#: ../bin/src/ui_subsonicsettingspage.h:127 +#: ../bin/src/ui_podcastsettingspage.h:251 +#: ../bin/src/ui_networkproxysettingspage.h:168 +msgid "Username" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:207 +msgid "Using the menu to add a song will..." +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:142 +#: ../bin/src/ui_magnatunesettingspage.h:173 +msgid "VBR MP3" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:232 +msgid "Variable bit rate" +msgstr "" + +#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 +#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +msgid "Various artists" +msgstr "" + +#: ui/about.cpp:34 +#, qt-format +msgid "Version %1" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:220 +msgid "View" +msgstr "" + +#: ../bin/src/ui_visualisationselector.h:109 +msgid "Visualization mode" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +msgid "Visualizations" +msgstr "" + +#: ../bin/src/ui_visualisationoverlay.h:185 +msgid "Visualizations Settings" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:233 +msgid "Voice activity detection" +msgstr "" + +#: widgets/osd.cpp:185 +#, qt-format +msgid "Volume %1%" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:176 +msgid "Vorbis" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:141 +#: ../bin/src/ui_magnatunesettingspage.h:172 +msgid "WAV" +msgstr "" + +#: ../bin/src/ui_transcodersettingspage.h:180 +msgid "WMA" +msgstr "" + +#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +msgid "Warn me when closing a playlist tab" +msgstr "" + +#: core/song.cpp:349 +msgid "Wav" +msgstr "" + +#: ../bin/src/ui_podcastinfowidget.h:193 +msgid "Website" +msgstr "" + +#: smartplaylists/searchterm.cpp:312 +msgid "Weeks" +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:201 +msgid "When Clementine starts" +msgstr "" + +#: ../bin/src/ui_librarysettingspage.h:204 +msgid "" +"When looking for album art Clementine will first look for picture files that contain one of these words.\n" +"If there are no matches then it will use the largest image in the directory." +msgstr "" + +#: ../bin/src/ui_globalsearchsettingspage.h:151 +msgid "When the list is empty..." +msgstr "" + +#: ../bin/src/ui_globalsearchview.h:212 +msgid "Why not try..." +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:229 +msgid "Wide band (WB)" +msgstr "" + +#: widgets/osd.cpp:244 +#, qt-format +msgid "Wii Remote %1: actived" +msgstr "" + +#: widgets/osd.cpp:254 +#, qt-format +msgid "Wii Remote %1: connected" +msgstr "" + +#: widgets/osd.cpp:269 +#, qt-format +msgid "Wii Remote %1: critical battery (%2%) " +msgstr "" + +#: widgets/osd.cpp:249 +#, qt-format +msgid "Wii Remote %1: disactived" +msgstr "" + +#: widgets/osd.cpp:259 +#, qt-format +msgid "Wii Remote %1: disconnected" +msgstr "" + +#: widgets/osd.cpp:264 +#, qt-format +msgid "Wii Remote %1: low battery (%2%)" +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:182 +msgid "Wiimotedev" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:181 +msgid "Windows Media 128k" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:172 +msgid "Windows Media 40k" +msgstr "" + +#: ../bin/src/ui_digitallyimportedsettingspage.h:180 +msgid "Windows Media 64k" +msgstr "" + +#: core/song.cpp:339 +msgid "Windows Media audio" +msgstr "" + +#: ../bin/src/ui_albumcovermanager.h:222 +msgid "Without cover:" +msgstr "" + +#: library/libraryview.cpp:530 +msgid "" +"Would you like to move the other songs in this album to Various Artists as " +"well?" +msgstr "" + +#: ui/mainwindow.cpp:2143 +msgid "Would you like to run a full rescan right now?" +msgstr "" + +#: library/librarysettingspage.cpp:151 +msgid "Write all songs statistics into songs' files" +msgstr "" + +#: internet/subsonicsettingspage.cpp:86 +msgid "Wrong username or password." +msgstr "" + +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 +#: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 +msgid "Year" +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:136 ../bin/src/ui_groupbydialog.h:150 +#: ../bin/src/ui_groupbydialog.h:164 +msgid "Year - Album" +msgstr "" + +#: smartplaylists/searchterm.cpp:314 +msgid "Years" +msgstr "" + +#: core/utilities.cpp:129 +msgid "Yesterday" +msgstr "" + +#: ../bin/src/ui_magnatunedownloaddialog.h:132 +msgid "You are about to download the following albums" +msgstr "" + +#: playlist/playlistlistcontainer.cpp:316 +#, qt-format +msgid "" +"You are about to remove %1 playlists from your favorites, are you sure?" +msgstr "" + +#: playlist/playlisttabbar.cpp:177 +msgid "" +"You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" +"Are you sure you want to continue?" +msgstr "" + +#: ../bin/src/ui_loginstatewidget.h:172 +msgid "You are not signed in." +msgstr "" + +#: widgets/loginstatewidget.cpp:75 +#, qt-format +msgid "You are signed in as %1." +msgstr "" + +#: widgets/loginstatewidget.cpp:73 +msgid "You are signed in." +msgstr "" + +#: ../bin/src/ui_groupbydialog.h:123 +msgid "You can change the way the songs in the library are organised." +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:46 +msgid "" +"You can listen for free without an account, but Premium members can listen " +"to higher quality streams without advertisements." +msgstr "" + +#: internet/magnatunesettingspage.cpp:53 +msgid "" +"You can listen to Magnatune songs for free without an account. Purchasing a" +" membership removes the messages at the end of each track." +msgstr "" + +#: ../bin/src/ui_backgroundstreamssettingspage.h:57 +msgid "You can listen to background streams at the same time as other music." +msgstr "" + +#: internet/lastfmsettingspage.cpp:148 +msgid "" +"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " +"Clementine." +msgstr "" + +#: ../bin/src/ui_wiimotesettingspage.h:184 +msgid "" +"You can use your Wii Remote as a remote control for Clementine. See the page on the " +"Clementine wiki for more information.\n" +msgstr "" + +#: internet/groovesharksettingspage.cpp:103 +msgid "You do not have a Grooveshark Anywhere account." +msgstr "" + +#: internet/spotifysettingspage.cpp:149 +msgid "You do not have a Spotify Premium account." +msgstr "" + +#: internet/digitallyimportedclient.cpp:89 +msgid "You do not have an active subscription" +msgstr "" + +#: internet/spotifyservice.cpp:170 +msgid "" +"You have been logged out of Spotify, please re-enter your password in the " +"Settings dialog." +msgstr "" + +#: internet/spotifysettingspage.cpp:158 +msgid "You have been logged out of Spotify, please re-enter your password." +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:87 +msgid "You love this track" +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:170 +msgid "" +"You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_behavioursettingspage.h:200 +msgid "You will need to restart Clementine if you change the language." +msgstr "" + +#: internet/lastfmsettingspage.cpp:114 +msgid "" +"You will not be able to play Last.fm radio stations as you are not a Last.fm" +" subscriber." +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:200 +msgid "Your IP address:" +msgstr "" + +#: internet/lastfmsettingspage.cpp:80 +msgid "Your Last.fm credentials were incorrect" +msgstr "" + +#: internet/magnatunesettingspage.cpp:113 +msgid "Your Magnatune credentials were incorrect" +msgstr "" + +#: library/libraryview.cpp:343 +msgid "Your library is empty!" +msgstr "" + +#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +msgid "Your radio streams" +msgstr "" + +#: songinfo/lastfmtrackinfoprovider.cpp:88 +#, qt-format +msgid "Your scrobbles: %1" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:152 +msgid "Your system is missing OpenGL support, visualizations are unavailable." +msgstr "" + +#: internet/groovesharksettingspage.cpp:107 +#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +msgid "Your username or password was incorrect." +msgstr "" + +#: smartplaylists/searchterm.cpp:297 +msgid "Z-A" +msgstr "" + +#: ui/equalizer.cpp:136 +msgid "Zero" +msgstr "" + +#: playlist/playlistundocommands.cpp:37 +#, c-format, qt-plural-format +msgid "add %n songs" +msgstr "" + +#: smartplaylists/searchterm.cpp:205 +msgid "after" +msgstr "" + +#: ../bin/src/ui_searchtermwidget.h:270 +msgid "ago" +msgstr "" + +#: ../bin/src/ui_searchtermwidget.h:269 +msgid "and" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:219 +msgid "automatic" +msgstr "" + +#: smartplaylists/searchterm.cpp:206 +msgid "before" +msgstr "" + +#: smartplaylists/searchterm.cpp:211 +msgid "between" +msgstr "" + +#: smartplaylists/searchterm.cpp:301 +msgid "biggest first" +msgstr "" + +#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +msgid "bpm" +msgstr "" + +#: smartplaylists/searchterm.cpp:217 +msgid "contains" +msgstr "" + +#: ../bin/src/ui_transcoderoptionsspeex.h:222 +#: ../bin/src/ui_transcoderoptionsvorbis.h:207 +#: ../bin/src/ui_transcoderoptionsvorbis.h:210 +msgid "disabled" +msgstr "" + +#: widgets/osd.cpp:114 +#, qt-format +msgid "disc %1" +msgstr "" + +#: smartplaylists/searchterm.cpp:218 +msgid "does not contain" +msgstr "" + +#: smartplaylists/searchterm.cpp:220 +msgid "ends with" +msgstr "" + +#: smartplaylists/searchterm.cpp:223 +msgid "equals" +msgstr "" + +#: ../bin/src/ui_podcastsettingspage.h:249 +msgid "gpodder.net" +msgstr "" + +#: podcasts/gpoddertoptagspage.cpp:34 +msgid "gpodder.net directory" +msgstr "" + +#: smartplaylists/searchterm.cpp:221 +msgid "greater than" +msgstr "" + +#: ../bin/src/ui_deviceviewcontainer.h:99 +msgid "iPods and USB devices currently don't work on Windows. Sorry!" +msgstr "" + +#: smartplaylists/searchterm.cpp:209 +msgid "in the last" +msgstr "" + +#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 +#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 +#: ui/edittagdialog.cpp:460 +msgid "kbps" +msgstr "" + +#: smartplaylists/searchterm.cpp:222 +msgid "less than" +msgstr "" + +#: smartplaylists/searchterm.cpp:299 +msgid "longest first" +msgstr "" + +#: playlist/playlistundocommands.cpp:99 +#, c-format, qt-plural-format +msgid "move %n songs" +msgstr "" + +#: smartplaylists/searchterm.cpp:298 +msgid "newest first" +msgstr "" + +#: smartplaylists/searchterm.cpp:224 +msgid "not equals" +msgstr "" + +#: smartplaylists/searchterm.cpp:210 +msgid "not in the last" +msgstr "" + +#: smartplaylists/searchterm.cpp:208 +msgid "not on" +msgstr "" + +#: smartplaylists/searchterm.cpp:298 +msgid "oldest first" +msgstr "" + +#: smartplaylists/searchterm.cpp:207 +msgid "on" +msgstr "" + +#: core/commandlineoptions.cpp:150 +msgid "options" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:203 +msgid "or scan the QR code!" +msgstr "" + +#: widgets/didyoumean.cpp:56 +msgid "press enter" +msgstr "" + +#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#, c-format, qt-plural-format +msgid "remove %n songs" +msgstr "" + +#: smartplaylists/searchterm.cpp:299 +msgid "shortest first" +msgstr "" + +#: playlist/playlistundocommands.cpp:138 +msgid "shuffle songs" +msgstr "" + +#: smartplaylists/searchterm.cpp:301 +msgid "smallest first" +msgstr "" + +#: playlist/playlistundocommands.cpp:131 +msgid "sort songs" +msgstr "" + +#: smartplaylists/searchterm.cpp:219 +msgid "starts with" +msgstr "" + +#: playlist/playlistdelegates.cpp:185 +msgid "stop" +msgstr "" + +#: widgets/osd.cpp:116 +#, qt-format +msgid "track %1" +msgstr "" diff --git a/src/translations/uk.po b/src/translations/uk.po index 9a6cb712a..b3a686ba1 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:50+0000\n" +"PO-Revision-Date: 2014-01-27 05:53+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/clementine/language/uk/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -168,11 +168,11 @@ msgstr "По &центру" msgid "&Custom" msgstr "&Нетипово" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "Додатково" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Довідка" @@ -189,7 +189,7 @@ msgstr "Приховати…" msgid "&Left" msgstr "&Ліворуч" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "Музика" @@ -197,15 +197,15 @@ msgstr "Музика" msgid "&None" msgstr "&Немає" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "Список відтворення" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "Ви&йти" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "Режим повтору" @@ -213,7 +213,7 @@ msgstr "Режим повтору" msgid "&Right" msgstr "&Праворуч" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Режим перемішування" @@ -221,7 +221,7 @@ msgstr "Режим перемішування" msgid "&Stretch columns to fit window" msgstr "Розтягнути стовпчики відповідно вмісту вікна" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Інструменти" @@ -366,11 +366,11 @@ msgstr "Перервати" msgid "About %1" msgstr "Про %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Про Clementine…" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Про Qt…" @@ -418,19 +418,19 @@ msgstr "Додати інший потік…" msgid "Add directory..." msgstr "Додати теку…" -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Додати файл" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Додати файл для перекодування" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Додати файли для перекодування" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Додати файл…" @@ -438,11 +438,11 @@ msgstr "Додати файл…" msgid "Add files to transcode" msgstr "Додати файли для перекодування" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Додати теку" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Додати теку…" @@ -454,7 +454,7 @@ msgstr "Додати нову теку…" msgid "Add podcast" msgstr "Додати подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Додати подкаст..." @@ -530,7 +530,7 @@ msgstr "Додати мітку номеру доріжки" msgid "Add song year tag" msgstr "Додати мітку року пісні" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Додати потік…" @@ -542,7 +542,7 @@ msgstr "Додати до улюблених на Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Додати до списків відтворення Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Додати до іншого списку відтворення" @@ -603,12 +603,12 @@ msgstr "Після " msgid "After copying..." msgstr "Після копіювання…" -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Альбом" @@ -616,7 +616,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідеальна гучність для всіх композицій)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -638,11 +638,11 @@ msgstr "Альбоми з обкладинками" msgid "Albums without covers" msgstr "Альбоми без обкладинок" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Всі файли (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Вся слава Гіпножабі!" @@ -769,17 +769,17 @@ msgid "" "the songs of your library?" msgstr "Ви справді хочете записати статистичні дані до всіх файлів композицій у вашій бібліотеці?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Виконавець" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Про виконавця" @@ -795,7 +795,7 @@ msgstr "Мітки виконавця" msgid "Artist's initial" msgstr "Ініціали виконавця" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Аудіо-формат" @@ -841,7 +841,7 @@ msgstr "Середній розмір малюнку" msgid "BBC Podcasts" msgstr "Подкасти BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Бітів за хвилину" @@ -870,7 +870,7 @@ msgstr "Створення резервної копії бази даних" msgid "Balance" msgstr "Баланс" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Додати до заборонених" @@ -899,7 +899,7 @@ msgstr "Найкраще" msgid "Biography from %1" msgstr "Біографія з %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Бітова швидкість" @@ -1005,7 +1005,7 @@ msgstr "Зміни, внесені до параметрів монофоніч msgid "Check for new episodes" msgstr "Перевіряти наявність нових випусків" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Перевірити оновлення…" @@ -1055,11 +1055,11 @@ msgstr "Вичищаю" msgid "Clear" msgstr "Очистити" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Очистити список відтворення" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1150,8 +1150,8 @@ msgstr "Натисніть тут, щоб зробити цей список в msgid "Click to toggle between remaining time and total time" msgstr "Клацніть аби перемкнутися між часом, що залишився, та загальним" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1189,7 +1189,7 @@ msgstr "Кольори" msgid "Comma separated list of class:level, level is 0-3" msgstr "Список, розділений комами, виду клас:рівень, рівень може бути від 0 до 3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" @@ -1198,11 +1198,11 @@ msgstr "Коментар" msgid "Complete tags automatically" msgstr "Заповнити мітки автоматично" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Заповнити мітки автоматично…" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1241,7 +1241,7 @@ msgstr "Налаштувати Subsonic…" msgid "Configure global search..." msgstr "Налаштувати загальні правила пошуку…" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Налаштувати фонотеку" @@ -1278,7 +1278,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Вичерпано строк очікування на з’єднання. Переконайтеся, що адресу сервера вказано правильно. Приклад: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Консоль" @@ -1298,12 +1298,12 @@ msgstr "Конвертувати всю музику, яку не може ві msgid "Copy to clipboard" msgstr "Копіювати до буфера" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копіювати до пристрою…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Скопіювати до фонотеки…" @@ -1325,14 +1325,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Не вдалось створити елемент GStreamer \"%1\" - переконайтесь, що всі потрібні для GStreamer модулі встановлені" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не вдалось знайти ущільнювач для %1, перевірте чи правильно встановлений модуль GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1349,7 +1349,7 @@ msgid "Couldn't open output file %1" msgstr "Не вдалось відкрити вихідний файл %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Менеджер обкладинок" @@ -1393,11 +1393,11 @@ msgstr "Перехресне згасання під час автоматичн msgid "Cross-fade when changing tracks manually" msgstr "Перехресне згасання під час ручної зміни доріжок" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1405,63 +1405,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Вниз" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1504,11 +1504,11 @@ msgid "" "recover your database" msgstr "Виявлено пошкодження бази даних. Будь ласка, ознайомтеся з даними на сторінці https://code.google.com/p/clementine-player/wiki/DatabaseCorruption , щоб дізнатися більше про способи відновлення вашої бази даних." -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата створення" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата зміни" @@ -1558,7 +1558,7 @@ msgid "Delete downloaded data" msgstr "Видалити завантажені дані" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Вилучити файли" @@ -1566,7 +1566,7 @@ msgstr "Вилучити файли" msgid "Delete from device..." msgstr "Вилучити з пристрою…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Вилучити з диска…" @@ -1591,15 +1591,16 @@ msgstr "Вилучити оригінальні файли" msgid "Deleting files" msgstr "Вилучення файлів" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Вилучити з черги вибрані доріжки" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Вилучити з черги доріжки" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Призначення" @@ -1623,10 +1624,14 @@ msgstr "Назва пристрою" msgid "Device properties..." msgstr "Налаштування пристрою…" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Пристрої" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "Діалогове вікно" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Може ви мали на увазі" @@ -1665,8 +1670,8 @@ msgstr "Вимкнути створення смужок настрою" msgid "Disabled" msgstr "Вимкнено" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1683,7 +1688,7 @@ msgstr "Налаштування відображення" msgid "Display the on-screen-display" msgstr "Показувати екранні повідомлення" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Повторити повне сканування фонотеки" @@ -1805,6 +1810,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "Дабстеп" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "Тривалість" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Динамічний режим увімкнено" @@ -1817,12 +1826,12 @@ msgstr "Динамічний випадковий мікс" msgid "Edit smart playlist..." msgstr "Редагувати розумний список відтворення…" -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Змінити «%1»…" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Редагувати мітку…" @@ -1835,7 +1844,7 @@ msgid "Edit track information" msgstr "Редагувати дані доріжки" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Редагувати дані про доріжку…" @@ -1936,7 +1945,7 @@ msgstr "Вкажіть цю IP-адресу у програмі для вста msgid "Entire collection" msgstr "Вся фонотека" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Еквалайзер" @@ -1950,7 +1959,7 @@ msgstr "Відповідає --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Помилка" @@ -1970,7 +1979,7 @@ msgstr "Помилка вилучення композицій" msgid "Error downloading Spotify plugin" msgstr "Помилка завантаження модуля Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Помилка завантаження %1" @@ -1980,12 +1989,12 @@ msgstr "Помилка завантаження %1" msgid "Error loading di.fm playlist" msgstr "Помилка завантаження списку відтворення di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Помилка обробляння %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Помилка завантаження аудіо CD" @@ -2063,27 +2072,27 @@ msgstr "Експортування завершено" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Експортовано %1 обкладинок з %2 (%3 пропущено)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2110,6 +2119,10 @@ msgstr "Згасання" msgid "Fading duration" msgstr "Тривалість згасання" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "Не вдалося виконати читання з простою читання компакт-дисків" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Не вдалося отримати каталог" @@ -2161,6 +2174,10 @@ msgstr "Отримуємо бібліотеку Subsonic" msgid "Fetching cover error" msgstr "Не вдалося отримати обкладинку" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "Формат файлів" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Розширення файлу" @@ -2169,19 +2186,19 @@ msgstr "Розширення файлу" msgid "File formats" msgstr "Формати файлів" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Назва файлу" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Назва файлу (без шляху)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Розмір файлу" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2191,7 +2208,7 @@ msgstr "Тип файлу" msgid "Filename" msgstr "Назва файлу" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Файли" @@ -2311,9 +2328,10 @@ msgstr "Загальне" msgid "General settings" msgstr "Загальні налаштування" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" @@ -2345,11 +2363,11 @@ msgstr "Дати назву:" msgid "Go" msgstr "Вперед" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "До наступної вкладки списку відтворення" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "До попередньої вкладки списку відтворення" @@ -2419,7 +2437,7 @@ msgstr "Групувати за жанром/альбомом" msgid "Group by Genre/Artist/Album" msgstr "Групувати за жанром/Виконавцем/альбомом" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групування" @@ -2574,6 +2592,10 @@ msgstr "Індексуємо %1" msgid "Information" msgstr "Інформація" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "Налаштування вхідних даних" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Вставити…" @@ -2586,7 +2608,7 @@ msgstr "Встановлено" msgid "Integrity check" msgstr "Перевірка цілісності даних" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Інтернет" @@ -2626,6 +2648,10 @@ msgstr "Неправильний ключ сеансу" msgid "Invalid username and/or password" msgstr "Некоректне ім’я користувача і/або пароль" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "Інвертувати позначення" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2650,7 +2676,7 @@ msgstr "Найпопулярніші композиції тижня в Jamendo" msgid "Jamendo database" msgstr "База даних Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Перейти до відтворюваної доріжки" @@ -2674,7 +2700,7 @@ msgstr "Продовжувати виконання у фоні коли вік msgid "Keep the original files" msgstr "Зберегти оригінальні файли" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Кошенята" @@ -2698,7 +2724,7 @@ msgstr "Велика обкладинка альбому" msgid "Large sidebar" msgstr "Велика бічна панель" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Востаннє відтворено" @@ -2781,12 +2807,12 @@ msgstr "Типово, залишити порожнім. Наприклад: \" msgid "Left" msgstr "Ліворуч" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Тривалість" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Фонотека" @@ -2794,7 +2820,7 @@ msgstr "Фонотека" msgid "Library advanced grouping" msgstr "Розширене групування фонотеки" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Повідомлення про повторне сканування фонотеки" @@ -2839,7 +2865,7 @@ msgstr "Завантажити обкладинку з диска" msgid "Load playlist" msgstr "Завантажити список відтворення" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Завантажити список відтворення…" @@ -2868,11 +2894,11 @@ msgstr "Завантаження пісень" msgid "Loading stream" msgstr "Завантаження потоку" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Завантаження доріжок" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Завантажую дані доріжок" @@ -2891,10 +2917,10 @@ msgstr "Завантажити файли/адреси, замінюючи по #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Увійти" @@ -2906,7 +2932,7 @@ msgstr "Не вдалося увійти" msgid "Long term prediction profile (LTP)" msgstr "Профіль довготривалого передбачення (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Додати до улюблених" @@ -2969,7 +2995,7 @@ msgstr "Завантаження з Magnatune завершено" msgid "Main profile (MAIN)" msgstr "Основний профіль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Гаразд!" @@ -3052,7 +3078,7 @@ msgstr "Відтворення у режимі моно" msgid "Months" msgstr "Місяців" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Настрій" @@ -3082,7 +3108,7 @@ msgstr "Точки монтування" msgid "Move down" msgstr "Перемістити вниз" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Перемістити до фонотеки…" @@ -3091,7 +3117,7 @@ msgstr "Перемістити до фонотеки…" msgid "Move up" msgstr "Перемістити вгору" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Музика" @@ -3099,7 +3125,7 @@ msgstr "Музика" msgid "Music Library" msgstr "Фонотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Вимкнути звук" @@ -3187,7 +3213,7 @@ msgstr "Ніколи не починати відтворення" msgid "New folder" msgstr "Нова тека" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Новий список відтворення" @@ -3211,7 +3237,7 @@ msgstr "Найновіші доріжки" msgid "Next" msgstr "Наступна" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Наступна доріжка" @@ -3250,7 +3276,7 @@ msgstr "Без коротких блоків" msgid "None" msgstr "Немає" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Жодна з вибраних композицій не придатна для копіювання на пристрій" @@ -3368,7 +3394,7 @@ msgstr "Непрозорість" msgid "Open %1 in browser" msgstr "Відкрити %1 у переглядачі" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Відкрити &аудіо CD…" @@ -3384,7 +3410,7 @@ msgstr "Відкрити файл OPML…" msgid "Open device" msgstr "Відкрити пристрій" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Відкрити файл…" @@ -3419,7 +3445,7 @@ msgstr "Оптимізувати для бітової швидкості" msgid "Optimize for quality" msgstr "Оптимізувати для якості" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Налаштування…" @@ -3431,7 +3457,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Упорядкування файлів" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Упорядкування файлів…" @@ -3455,7 +3481,7 @@ msgstr "Результат" msgid "Output device" msgstr "Пристрій відтворення" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Налаштування виведення" @@ -3496,7 +3522,7 @@ msgstr "Вечірка" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Призупинити" @@ -3509,7 +3535,7 @@ msgstr "Призупинити відтворення" msgid "Paused" msgstr "Призупинено" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Виконавець" @@ -3522,9 +3548,9 @@ msgstr "Піксель" msgid "Plain sidebar" msgstr "Звичайна бічна панель" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Відтворити" @@ -3537,7 +3563,7 @@ msgstr "Відтворити «Виконавця» або «Мітку»" msgid "Play artist radio..." msgstr "Відтворити радіо виконавця…" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Кількість відтворень" @@ -3592,7 +3618,7 @@ msgstr "Налаштування списку відтворення" msgid "Playlist type" msgstr "Тип списку відтворення" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Списки відтворення" @@ -3644,7 +3670,7 @@ msgstr "Підсилення" msgid "Preferences" msgstr "Параметри" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Параметри…" @@ -3699,7 +3725,7 @@ msgstr "Перегляд" msgid "Previous" msgstr "Попередня" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Попередня доріжка" @@ -3713,7 +3739,7 @@ msgid "Profile" msgstr "Профіль" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Поступ" @@ -3742,16 +3768,16 @@ msgstr "Якість" msgid "Querying device..." msgstr "Опитування пристрою…" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Керування чергою" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Поставити в чергу вибрані доріжки" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Поставити в чергу доріжки" @@ -3763,7 +3789,7 @@ msgstr "Радіо (однакова гучність всіх композиц msgid "Radios" msgstr "Радіо" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Дощ" @@ -3795,7 +3821,7 @@ msgstr "Поставити поточній композиції чотири з msgid "Rate the current song 5 stars" msgstr "Поставити поточній композиції п’ять зірочок" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Оцінка" @@ -3853,7 +3879,7 @@ msgstr "Вилучити" msgid "Remove action" msgstr "Вилучити дію" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Вилучити повтори зі списку відтворення" @@ -3869,7 +3895,7 @@ msgstr "Вилучити з теки Моя музика" msgid "Remove from favorites" msgstr "Вилучити з улюблених" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Вилучити зі списку відтворення" @@ -3906,7 +3932,7 @@ msgstr "Перейменувати список відтворення" msgid "Rename playlist..." msgstr "Перейменувати список відтворення…" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Пронумерувати доріжки в такому порядку…" @@ -3997,6 +4023,18 @@ msgstr "Повернутися до Clementine" msgid "Right" msgstr "Праворуч" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "Оцифрувати" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "Оцифрувати КД" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "Оцифрувати звуковий КД…" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Рок" @@ -4023,7 +4061,7 @@ msgstr "Безпечно вилучити пристрій" msgid "Safely remove the device after copying" msgstr "Безпечне вилучення пристрою після копіювання" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Частота вибірки" @@ -4051,7 +4089,7 @@ msgstr "Зберегти зображення" msgid "Save playlist" msgstr "Зберегти список відтворення" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Зберегти список відтворення…" @@ -4087,7 +4125,7 @@ msgstr "Профіль масштабованої частоти вибірки msgid "Scale size" msgstr "Масштабований розмір" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Рахунок" @@ -4096,7 +4134,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Скробблити доріжки, які я слухаю" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4180,11 +4218,11 @@ msgstr "Трохи перемотати поточну доріжку" msgid "Seek the currently playing track to an absolute position" msgstr "Перемотати поточну доріжку на абсолютну позицію" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Вибрати все" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Скасувати вибір" @@ -4212,7 +4250,7 @@ msgstr "Вибрати візуалізації" msgid "Select visualizations..." msgstr "Вибрати візуалізації…" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "Вибрати…" @@ -4232,7 +4270,7 @@ msgstr "Параметри сервера" msgid "Service offline" msgstr "Служба вимкнена" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Встановити %1 до \"%2\"…" @@ -4241,7 +4279,7 @@ msgstr "Встановити %1 до \"%2\"…" msgid "Set the volume to percent" msgstr "Встановити гучність до відсотків" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Встановити значення для всіх вибраних доріжок…" @@ -4304,7 +4342,7 @@ msgstr "Показувати приємні повідомлення OSD" msgid "Show above status bar" msgstr "Показати вище, в рядку стану" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Показати всі композиції" @@ -4324,12 +4362,12 @@ msgstr "Показати розділювачі" msgid "Show fullsize..." msgstr "Показати на повний розмір…" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Показати в оглядачі файлів…" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "Показати у фонотеці…" @@ -4341,11 +4379,11 @@ msgstr "Показувати в різних виконавцях" msgid "Show moodbar" msgstr "Показувати смужку настрою" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Показати тільки дублікати" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Показати тільки без міток" @@ -4385,7 +4423,7 @@ msgstr "Перемішати альбоми" msgid "Shuffle all" msgstr "Перемішати все" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Перемішати список відтворення" @@ -4425,7 +4463,7 @@ msgstr "Ска" msgid "Skip backwards in playlist" msgstr "Перескочити назад в списку композицій" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Кількість пропусків" @@ -4461,7 +4499,7 @@ msgstr "Легкий рок" msgid "Song Information" msgstr "Про композицію" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Про композицію" @@ -4493,7 +4531,7 @@ msgstr "Сортувати композиції за" msgid "Sorting" msgstr "Сортування" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Джерело" @@ -4529,6 +4567,10 @@ msgstr "Типово" msgid "Starred" msgstr "Оцінені" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "Почати оцифрування" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Запустити список відтворення, що відтворюється на цей час" @@ -4544,7 +4586,7 @@ msgid "" "list" msgstr "Введіть щось у полі пошуку, розташованому вище, щоб побачити на цій панелі список результатів пошуку" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Запуск %1" @@ -4557,7 +4599,7 @@ msgstr "Запуск…" msgid "Stations" msgstr "Станції" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Зупинити" @@ -4566,7 +4608,7 @@ msgstr "Зупинити" msgid "Stop after" msgstr "Зупинити після" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Зупинити після цієї доріжки" @@ -4734,7 +4776,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Час тестування сервера Subsonic завершено. Будь ласка, придбайте ліцензійний ключ. Відвідайте subsonic.org, щоб дізнатися більше." -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4775,7 +4817,7 @@ msgid "" "continue?" msgstr "Ці файли будуть вилучені з пристрою. Ви впевнені? Вилучити їх?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4847,9 +4889,10 @@ msgstr "Цей потік лише для платних передплатни msgid "This type of device is not supported: %1" msgstr "Цей тип пристрою не підтримується: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Назва" @@ -4871,11 +4914,11 @@ msgstr "Змінити режим приємних OSD" msgid "Toggle fullscreen" msgstr "Повноекранний режим" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Перемикнути статус черги" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Змінити режим скроблінгу" @@ -4907,12 +4950,13 @@ msgstr "Всього передано байтів" msgid "Total network requests made" msgstr "Всього зроблено запитів до мережі" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Доріжка" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Перекодування музики" @@ -5010,7 +5054,7 @@ msgstr "Оновити список відтворення на Grooveshark" msgid "Update all podcasts" msgstr "Оновити всі подкасти" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Оновити змінені теки у фонотеці" @@ -5165,7 +5209,7 @@ msgstr "Перегляд" msgid "Visualization mode" msgstr "Режим візуалізації" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Візуалізації" @@ -5293,7 +5337,7 @@ msgid "" "well?" msgstr "Хочете пересунути всі ініші композиції цього альбому до розділу «Різні виконавці»?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Бажаєте зараз виконати повторне сканування фонотеки?" @@ -5305,10 +5349,10 @@ msgstr "Записати статичні дані щодо всіх компо msgid "Wrong username or password." msgstr "Помилкове ім’я користувача або пароль." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Рік" diff --git a/src/translations/uz.po b/src/translations/uz.po index 168c99df3..33c08351a 100644 --- a/src/translations/uz.po +++ b/src/translations/uz.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Uzbek (http://www.transifex.com/projects/p/clementine/language/uz/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -167,11 +167,11 @@ msgstr "&Markaz" msgid "&Custom" msgstr "&Boshqa" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "&Yordam" @@ -188,7 +188,7 @@ msgstr "&Yashirish..." msgid "&Left" msgstr "&Chap" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Musiqa" @@ -196,15 +196,15 @@ msgstr "&Musiqa" msgid "&None" msgstr "&Yo'q" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Pleylist" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "&Chiqish" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Takrorlash" @@ -212,7 +212,7 @@ msgstr "&Takrorlash" msgid "&Right" msgstr "&O'ng" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "&Tasodifan" @@ -220,7 +220,7 @@ msgstr "&Tasodifan" msgid "&Stretch columns to fit window" msgstr "&Ustunlarni oynaga moslash" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Vositalar" @@ -365,11 +365,11 @@ msgstr "" msgid "About %1" msgstr "%1 haqida" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Clementine haqida..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Qt haqida..." @@ -417,19 +417,19 @@ msgstr "Boshqa to'lqinni qo'shish..." msgid "Add directory..." msgstr "Jild qo'shish..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Fayl qo'shish" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Fayl qo'shish..." @@ -437,11 +437,11 @@ msgstr "Fayl qo'shish..." msgid "Add files to transcode" msgstr "Transkodlash uchun fayllar qo'shish" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Jild qo'shish" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Jild qo'shish..." @@ -453,7 +453,7 @@ msgstr "Yangi jild qo'shish..." msgid "Add podcast" msgstr "Podcast qo'shish" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast qo'shish..." @@ -529,7 +529,7 @@ msgstr "Qo'shiq treki tegini qo'shish" msgid "Add song year tag" msgstr "Qo'shiq yili tegini qo'shish" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "To'lqinni qo'shish..." @@ -541,7 +541,7 @@ msgstr "Grooveshark xatcho'plariga qo'shish" msgid "Add to Grooveshark playlists" msgstr "Grooveshark pleylistlariga qo'shish" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Boshqa pleylistga qo'shish" @@ -602,12 +602,12 @@ msgstr "Keyin" msgid "After copying..." msgstr "Nusxa olgandan keyin..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Albom" @@ -615,7 +615,7 @@ msgstr "Albom" msgid "Album (ideal loudness for all tracks)" msgstr "Albom (hamma treklar uchun ideal ovoz balandligi)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,11 +637,11 @@ msgstr "Rasmli albomlar" msgid "Albums without covers" msgstr "Rasmsiz albomlar" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Hamma fayllar (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "Gipnobaqaga shon-sharaflar!" @@ -768,17 +768,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Artist haqida ma'lumot" @@ -794,7 +794,7 @@ msgstr "Artist teglari" msgid "Artist's initial" msgstr "Artistning ismi-sharifi" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Audio format" @@ -840,7 +840,7 @@ msgstr "O'rtacha rasm o'lchami" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Taqiqlash" @@ -898,7 +898,7 @@ msgstr "Zo'r" msgid "Biography from %1" msgstr "%1'dan tarjimai holi" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitreyt" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Check for new episodes" msgstr "Yangi epizodlarni tekshirish" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Yangilanishlarni tekshirish..." @@ -1054,11 +1054,11 @@ msgstr "Tozalanmoqda" msgid "Clear" msgstr "Tozalash" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Pleylistni tozalash" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1149,8 +1149,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1188,7 +1188,7 @@ msgstr "Ranglar" msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Izoh" @@ -1197,11 +1197,11 @@ msgstr "Izoh" msgid "Complete tags automatically" msgstr "Teglarni avtomatik ravishda yakunlash" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Teglarni avtomatik ravishda yakunlash..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1240,7 +1240,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Kutubxonani sozlash..." @@ -1277,7 +1277,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Konsol" @@ -1297,12 +1297,12 @@ msgstr "" msgid "Copy to clipboard" msgstr "Klipbordga nusxa olish" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Uskunaga nusxa olish..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Kutubxonaga nusxa ko'chirish..." @@ -1324,14 +1324,14 @@ msgid "" "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1348,7 +1348,7 @@ msgid "Couldn't open output file %1" msgstr "" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Albom rasmi boshqaruvchisi" @@ -1392,11 +1392,11 @@ msgstr "" msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1404,63 +1404,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1503,11 +1503,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Yaratilgan sanasi" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "O'zgartirilgan sanasi" @@ -1557,7 +1557,7 @@ msgid "Delete downloaded data" msgstr "Yuklab olingan ma'lumotni o'chirish" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Fayllarni o'chirish" @@ -1565,7 +1565,7 @@ msgstr "Fayllarni o'chirish" msgid "Delete from device..." msgstr "Uskunadan o'chirish..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Diskdan o'chirish..." @@ -1590,15 +1590,16 @@ msgstr "Asl faylini o'chirish" msgid "Deleting files" msgstr "Fayllar o'chirilmoqda" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1622,10 +1623,14 @@ msgstr "Uskuna nomi" msgid "Device properties..." msgstr "Uskuna hossalari..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Uskunalar" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "" @@ -1664,8 +1669,8 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1682,7 +1687,7 @@ msgstr "Ko'rsatish parametrlari" msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "" @@ -1804,6 +1809,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" @@ -1816,12 +1825,12 @@ msgstr "" msgid "Edit smart playlist..." msgstr "Smart ijro ro'yxatini tahrirlash..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Tegni tahrirlash..." @@ -1834,7 +1843,7 @@ msgid "Edit track information" msgstr "Trek ma'lumotini tahrirlash" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Trek ma'lumotini tahrirlash..." @@ -1935,7 +1944,7 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Ekvalayzer" @@ -1949,7 +1958,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Xato" @@ -1969,7 +1978,7 @@ msgstr "Qo'shiqlarni o'chirganda xato ro'y berdi" msgid "Error downloading Spotify plugin" msgstr "Spotify plaginini yuklab olganda xato ro'y berdi" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "%1'ni yuklaganda xato ro'y berdi" @@ -1979,12 +1988,12 @@ msgstr "%1'ni yuklaganda xato ro'y berdi" msgid "Error loading di.fm playlist" msgstr "di.fm pleylistini yuklaganda xato ro'y berdi" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Audio CD yuklanganda xato ro'y berdi" @@ -2062,27 +2071,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2109,6 +2118,10 @@ msgstr "" msgid "Fading duration" msgstr "" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2160,6 +2173,10 @@ msgstr "" msgid "Fetching cover error" msgstr "" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "" @@ -2168,19 +2185,19 @@ msgstr "" msgid "File formats" msgstr "Fayl formatlari" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fayl nomi" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fayl hajmi" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2190,7 +2207,7 @@ msgstr "Fayl turi" msgid "Filename" msgstr "Fayl nomi" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Fayllar" @@ -2310,9 +2327,10 @@ msgstr "Umumiy" msgid "General settings" msgstr "Umumiy moslamalar" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Janr" @@ -2344,11 +2362,11 @@ msgstr "" msgid "Go" msgstr "O'tish" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "" @@ -2418,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2573,6 +2591,10 @@ msgstr "" msgid "Information" msgstr "Ma'lumot" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "" @@ -2585,7 +2607,7 @@ msgstr "O'rnatilgan" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2625,6 +2647,10 @@ msgstr "Seans kaliti haqiqiy emas" msgid "Invalid username and/or password" msgstr "Foydalanuvchi nomi yoki maxfiy so'z haqiqiy emas" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2649,7 +2675,7 @@ msgstr "" msgid "Jamendo database" msgstr "Jamendo ma'lumot bazasi" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "" @@ -2673,7 +2699,7 @@ msgstr "" msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Mushukchalar" @@ -2697,7 +2723,7 @@ msgstr "" msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "" @@ -2780,12 +2806,12 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Uzunligi" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Kutubxona" @@ -2793,7 +2819,7 @@ msgstr "Kutubxona" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "" @@ -2838,7 +2864,7 @@ msgstr "Albom rasmini diskdan yuklash..." msgid "Load playlist" msgstr "Pleylistni yuklash" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Pleylistni yuklash..." @@ -2867,11 +2893,11 @@ msgstr "Qo'shiqlar yuklanmoqda" msgid "Loading stream" msgstr "To'lqin yuklanmoqda" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Treklar yuklanmoqda" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Treklar haqida ma'lumot yuklanmoqda" @@ -2890,10 +2916,10 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Kirish" @@ -2905,7 +2931,7 @@ msgstr "Kirish muvaffaqiyatsiz tugadi" msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "" @@ -2968,7 +2994,7 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Shunday qilinsin!" @@ -3051,7 +3077,7 @@ msgstr "" msgid "Months" msgstr "" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3081,7 +3107,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "" @@ -3090,7 +3116,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Musiqa" @@ -3098,7 +3124,7 @@ msgstr "Musiqa" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "" @@ -3186,7 +3212,7 @@ msgstr "" msgid "New folder" msgstr "Yangi jild" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Yangi pleylist" @@ -3210,7 +3236,7 @@ msgstr "" msgid "Next" msgstr "Keyingi" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Keyingi trek" @@ -3249,7 +3275,7 @@ msgstr "" msgid "None" msgstr "Yo'q" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -3367,7 +3393,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "%1 brauzerda ochish" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "&Audio CD ochish..." @@ -3383,7 +3409,7 @@ msgstr "" msgid "Open device" msgstr "Uskunani ochish" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Failni ochish..." @@ -3418,7 +3444,7 @@ msgstr "" msgid "Optimize for quality" msgstr "" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Parametrlar..." @@ -3430,7 +3456,7 @@ msgstr "" msgid "Organise Files" msgstr "Fayllarni boshqarish" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Fayllarni boshqarish..." @@ -3454,7 +3480,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Chiqarish parametrlari" @@ -3495,7 +3521,7 @@ msgstr "" msgid "Password" msgstr "Maxfiy so'z" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "" @@ -3508,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3521,9 +3547,9 @@ msgstr "" msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "" @@ -3536,7 +3562,7 @@ msgstr "" msgid "Play artist radio..." msgstr "" -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" @@ -3591,7 +3617,7 @@ msgstr "Pleylist parametrlari" msgid "Playlist type" msgstr "Pleylist turi" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Pleylistlar" @@ -3643,7 +3669,7 @@ msgstr "" msgid "Preferences" msgstr "Moslamalar" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Moslamalar..." @@ -3698,7 +3724,7 @@ msgstr "Ko'rib chiqish" msgid "Previous" msgstr "Oldingi" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Oldingi trek" @@ -3712,7 +3738,7 @@ msgid "Profile" msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" @@ -3741,16 +3767,16 @@ msgstr "Sifati" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "" @@ -3762,7 +3788,7 @@ msgstr "" msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "" @@ -3794,7 +3820,7 @@ msgstr "Joriy qo'shiqni baholash 4 yulduz" msgid "Rate the current song 5 stars" msgstr "Joriy qo'shiqni baholash 5 yulduz" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Baho" @@ -3852,7 +3878,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "" @@ -3868,7 +3894,7 @@ msgstr "Mening musiqamdan o'chirish" msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "" @@ -3905,7 +3931,7 @@ msgstr "" msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "" @@ -3996,6 +4022,18 @@ msgstr "Clementinega qaytish" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4022,7 +4060,7 @@ msgstr "" msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" @@ -4050,7 +4088,7 @@ msgstr "Rasmni saqlash" msgid "Save playlist" msgstr "Pleylistni saqlash" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Pleylistni saqlash..." @@ -4086,7 +4124,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4095,7 +4133,7 @@ msgid "Scrobble tracks that I listen to" msgstr "" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4179,11 +4217,11 @@ msgstr "" msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Hammasini tanlash" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Hech qaysini tanlamaslik" @@ -4211,7 +4249,7 @@ msgstr "" msgid "Select visualizations..." msgstr "" -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4231,7 +4269,7 @@ msgstr "" msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" @@ -4240,7 +4278,7 @@ msgstr "" msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "" @@ -4303,7 +4341,7 @@ msgstr "" msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Hamma qo'shiqlarni ko'rsatish" @@ -4323,12 +4361,12 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4340,11 +4378,11 @@ msgstr "" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "" @@ -4384,7 +4422,7 @@ msgstr "" msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "" @@ -4424,7 +4462,7 @@ msgstr "" msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" @@ -4460,7 +4498,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Qo'shiq haqida ma'lumot" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Qo'shiq haqida ma'lumot" @@ -4492,7 +4530,7 @@ msgstr "" msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Manba" @@ -4528,6 +4566,10 @@ msgstr "" msgid "Starred" msgstr "" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "" @@ -4543,7 +4585,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "" @@ -4556,7 +4598,7 @@ msgstr "" msgid "Stations" msgstr "Stansiyalar" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "" @@ -4565,7 +4607,7 @@ msgstr "" msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "" @@ -4733,7 +4775,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4774,7 +4816,7 @@ msgid "" "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4846,9 +4888,10 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" @@ -4870,11 +4913,11 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "" @@ -4906,12 +4949,13 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Musiqani transkodlash" @@ -5009,7 +5053,7 @@ msgstr "Grooveshark pleylistini yangilash" msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "" @@ -5164,7 +5208,7 @@ msgstr "Ko'rish" msgid "Visualization mode" msgstr "Vizualizatsiya usuli" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Vizualizatsiyalar" @@ -5292,7 +5336,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "" @@ -5304,10 +5348,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Yil" diff --git a/src/translations/vi.po b/src/translations/vi.po index a9504caef..eddd565f7 100644 --- a/src/translations/vi.po +++ b/src/translations/vi.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:48+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/clementine/language/vi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,11 +170,11 @@ msgstr "&Giữa" msgid "&Custom" msgstr "&Tùy chọn" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "&Hiệu ứng" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "Trợ &giúp" @@ -191,7 +191,7 @@ msgstr "Ẩ&n..." msgid "&Left" msgstr "T&rái" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "&Nhạc" @@ -199,15 +199,15 @@ msgstr "&Nhạc" msgid "&None" msgstr "&Không" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "&Danh sách" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "T&hoát" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "&Chế độ lặp lại" @@ -215,7 +215,7 @@ msgstr "&Chế độ lặp lại" msgid "&Right" msgstr "&Phải" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "Chế độ phát n&gẫu nhiên" @@ -223,7 +223,7 @@ msgstr "Chế độ phát n&gẫu nhiên" msgid "&Stretch columns to fit window" msgstr "Căng các cột ra cho &vừa với cửa sổ" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "&Công cụ" @@ -368,11 +368,11 @@ msgstr "Huỷ bỏ" msgid "About %1" msgstr "Giới thiệu %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "Giới thiệu Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "Giới thiệu Qt..." @@ -420,19 +420,19 @@ msgstr "Thêm luồng dữ liệu khác..." msgid "Add directory..." msgstr "Thêm thư mục..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "Thêm tập tin" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "Thêm tập tin vào bộ chuyển mã" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "Thêm (các) tập tin vào bộ chuyển mã" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "Thêm tập tin..." @@ -440,11 +440,11 @@ msgstr "Thêm tập tin..." msgid "Add files to transcode" msgstr "Thêm các tập tin để chuyển mã" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "Thêm thư mục" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "Thêm thư mục..." @@ -456,7 +456,7 @@ msgstr "Thêm thư mục mới..." msgid "Add podcast" msgstr "Thêm podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Thêm podcast..." @@ -532,7 +532,7 @@ msgstr "Thêm thẻ bài hát" msgid "Add song year tag" msgstr "Thêm thẻ năm của bài hát" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "Thêm luồng dữ liệu..." @@ -544,7 +544,7 @@ msgstr "Thêm vào yêu thích của Grooveshark" msgid "Add to Grooveshark playlists" msgstr "Thêm vào danh sách Grooveshark" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "Thêm vào danh sách khác" @@ -605,12 +605,12 @@ msgstr "Sau " msgid "After copying..." msgstr "Sau khi sao chép..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "Album" @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (âm lượng lớn cho mọi bài hát)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -640,11 +640,11 @@ msgstr "Album có ảnh bìa" msgid "Albums without covers" msgstr "Album không có ảnh bìa" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "Mọi tập tin (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" @@ -771,17 +771,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Nghệ sĩ" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "Nghệ sĩ" @@ -797,7 +797,7 @@ msgstr "Thẻ nghệ sĩ" msgid "Artist's initial" msgstr "Tên viết tắt của nghệ sĩ" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "Định dạng" @@ -843,7 +843,7 @@ msgstr "Kích thước ảnh trung bình" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -872,7 +872,7 @@ msgstr "Đang sao lưu cơ sở dữ liệu" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "Cấm" @@ -901,7 +901,7 @@ msgstr "Tốt nhất" msgid "Biography from %1" msgstr "Thông tin từ %1" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" @@ -1007,7 +1007,7 @@ msgstr "Thay đổi tùy chỉnh phát đơn kênh sẽ ảnh hưởng đến b msgid "Check for new episodes" msgstr "Kiểm tra tập mới" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "Kiểm tra cập nhật..." @@ -1057,11 +1057,11 @@ msgstr "Dọn dẹp" msgid "Clear" msgstr "Loại bỏ tất cả" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "Loại bỏ tất cả b.hát trong d.sách" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1152,8 +1152,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Nhấn vào đây để chuyển đổi giữa thời gian còn lại và tổng thời gian" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1191,7 +1191,7 @@ msgstr "Màu" msgid "Comma separated list of class:level, level is 0-3" msgstr "Dấu phẩy phân cách danh sách lớp:mức độ, mức độ từ 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Lời bình" @@ -1200,11 +1200,11 @@ msgstr "Lời bình" msgid "Complete tags automatically" msgstr "Điền thông tin bài hát" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "Điền thông tin bài hát..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "Cấu hình Subsonic..." msgid "Configure global search..." msgstr "Cấu hình tìm kiếm chung..." -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "Cấu hình thư viện..." @@ -1280,7 +1280,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Hết thời gian kết nối, kiểm tra URL máy chủ. Ví dụ: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "Console" @@ -1300,12 +1300,12 @@ msgstr "Chuyển đổi bất kì bản nhạc nào mà thiết bị không th msgid "Copy to clipboard" msgstr "Chép vào bộ đệm" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Chép vào thiết bị..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "Chép vào thư viện..." @@ -1327,14 +1327,14 @@ msgid "" "required GStreamer plugins installed" msgstr "Không thể tạo phần tử GStreamer \"%1\" - hãy chắc chắn là bạn đã có đủ các phần bổ trợ mà GStreamer cần" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Không tìm thấy thiết bị ghép kênh cho %1, hãy chắn chắn là bạn đã cài đặt đủ các phần bổ sung của GStreamer" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1351,7 +1351,7 @@ msgid "Couldn't open output file %1" msgstr "Không thể mở tập tin %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "Quản lí ảnh bìa" @@ -1395,11 +1395,11 @@ msgstr "Tự động giảm dần âm lượng khi chuyển sang bài khác" msgid "Cross-fade when changing tracks manually" msgstr "Giảm dần âm lượng khi chuyển sang bài khác" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1407,63 +1407,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1506,11 +1506,11 @@ msgid "" "recover your database" msgstr "Cơ sở dữ liệu bị hỏng. Xem trang https://code.google.com/p/clementine-player/wiki/DatabaseCorruption để biết các chỉ dẫn phục hồi cho cơ sở dữ liệu" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Ngày tạo" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ngày chỉnh sửa" @@ -1560,7 +1560,7 @@ msgid "Delete downloaded data" msgstr "Xóa dữ liệu đã tải về" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "Xóa các tập tin" @@ -1568,7 +1568,7 @@ msgstr "Xóa các tập tin" msgid "Delete from device..." msgstr "Xóa khỏi thiết bị..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "Xóa khỏi ổ cứng..." @@ -1593,15 +1593,16 @@ msgstr "Xóa tập tin gốc" msgid "Deleting files" msgstr "Đang xóa các tập tin" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "Loại các bài đã chọn khỏi danh sách chờ" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "Loại bài hát khỏi d.sách chờ" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Xuất ra" @@ -1625,10 +1626,14 @@ msgstr "Tên thiết bị" msgid "Device properties..." msgstr "Thuộc tính của thiết bị..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "Thiết bị" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "Ý bạn là" @@ -1667,8 +1672,8 @@ msgstr "Tắt khởi tạo thanh trạng thái" msgid "Disabled" msgstr "Tắt" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Đĩa" @@ -1685,7 +1690,7 @@ msgstr "Tùy chọn hiển thị" msgid "Display the on-screen-display" msgstr "Hiện hộp thông báo trên màn hình" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "Quét toàn bộ thư viện" @@ -1807,6 +1812,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Chế độ năng động đã bật" @@ -1819,12 +1828,12 @@ msgstr "Hòa trộn âm thanh động ngẫu nhiên" msgid "Edit smart playlist..." msgstr "Cập nhật danh sách thông minh..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "Cập nhật thẻ..." @@ -1837,7 +1846,7 @@ msgid "Edit track information" msgstr "Sửa thông tin bài hát" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "Sửa thông tin bài hát..." @@ -1938,7 +1947,7 @@ msgstr "Nhập IP này vào ứng dụng để kết nối đến Clementine." msgid "Entire collection" msgstr "Trọn bộ sưu tập" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "Bộ cân chỉnh âm" @@ -1952,7 +1961,7 @@ msgstr "Tương đương với --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "Lỗi" @@ -1972,7 +1981,7 @@ msgstr "Lỗi xóa bài hát" msgid "Error downloading Spotify plugin" msgstr "Lỗi khi tải phần hỗ trợ Spotify" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "Lỗi nạp %1" @@ -1982,12 +1991,12 @@ msgstr "Lỗi nạp %1" msgid "Error loading di.fm playlist" msgstr "Lỗi khi nạp danh sách di.fm" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "Lỗi xử lý %1: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "Có lỗi xảy ra khi nạp đĩa CD" @@ -2065,27 +2074,27 @@ msgstr "Đã xuất xong" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2112,6 +2121,10 @@ msgstr "Giảm dần âm lượng" msgid "Fading duration" msgstr "Thời gian giảm dần âm lượng" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "Lỗi tải thư mục" @@ -2163,6 +2176,10 @@ msgstr "Đang tải thư viện Subsonic" msgid "Fetching cover error" msgstr "Lỗi khi tải ảnh bìa" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "Phần mở rộng tập tin" @@ -2171,19 +2188,19 @@ msgstr "Phần mở rộng tập tin" msgid "File formats" msgstr "Định dạng tập tin" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Tên tập tin" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "Tên tập tin (không có đường dẫn)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dung lượng" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2193,7 +2210,7 @@ msgstr "Loại tập tin" msgid "Filename" msgstr "Tên tập tin" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "Tập tin" @@ -2313,9 +2330,10 @@ msgstr "Tổng quát" msgid "General settings" msgstr "Thiết lập chung" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Thể loại" @@ -2347,11 +2365,11 @@ msgstr "Đặt tên:" msgid "Go" msgstr "Đi" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "Đến tab danh sách tiếp theo" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "Trở về tab danh sách trước" @@ -2421,7 +2439,7 @@ msgstr "Nhóm theo Thể loại/Album" msgid "Group by Genre/Artist/Album" msgstr "Nhóm theo Thể loại/Nghệ sĩ/Album" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Nhóm" @@ -2576,6 +2594,10 @@ msgstr "Đang đánh chỉ mục %1" msgid "Information" msgstr "Thông tin" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "Nhập..." @@ -2588,7 +2610,7 @@ msgstr "Đã cài đặt" msgid "Integrity check" msgstr "Kiểm tra tính toàn vẹn" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "Internet" @@ -2628,6 +2650,10 @@ msgstr "Khoá phiên chạy không hợp lệ" msgid "Invalid username and/or password" msgstr "Vui lòng kiểm tra lại tên người dùng và mật khẩu" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2652,7 +2678,7 @@ msgstr "Những bài hát đầu bảng trong tuần trên Jamendo" msgid "Jamendo database" msgstr "Cơ sở dữ liệu Jamendo" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "Chọn bài đang được phát" @@ -2676,7 +2702,7 @@ msgstr "Chạy nền khi đã đóng cửa sổ chính" msgid "Keep the original files" msgstr "Giữ nguyên tập tin gốc" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "Kittens" @@ -2700,7 +2726,7 @@ msgstr "Ảnh bìa lớn" msgid "Large sidebar" msgstr "Thanh bên cỡ lớn" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "Lần phát cuối" @@ -2783,12 +2809,12 @@ msgstr "Để trống cho mặc định. Ví dụ: \"/dev/dsp\", \"front\", ..." msgid "Left" msgstr "Trái" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Thời lượng" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "Thư viện" @@ -2796,7 +2822,7 @@ msgstr "Thư viện" msgid "Library advanced grouping" msgstr "Nhóm thư viện nâng cao" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "Chú ý quét lại thư viện" @@ -2841,7 +2867,7 @@ msgstr "Nạp ảnh bìa từ đĩa..." msgid "Load playlist" msgstr "Mở danh sách" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "Mở danh sách..." @@ -2870,11 +2896,11 @@ msgstr "Đang nạp bài hát" msgid "Loading stream" msgstr "Đang nạp luồng dữ liệu" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "Đang nạp bài hát" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "Đang nạp thông tin bài hát" @@ -2893,10 +2919,10 @@ msgstr "Mở tập tin/URL, thay thế danh sách hiện tại" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "Đăng nhập" @@ -2908,7 +2934,7 @@ msgstr "Đăng nhập thất bại" msgid "Long term prediction profile (LTP)" msgstr "Hồ sơ dự báo lâu dài (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "Yêu thích" @@ -2971,7 +2997,7 @@ msgstr "Hoàn tất tải về Magnatune" msgid "Main profile (MAIN)" msgstr "Hồ sơ chính (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "Make it so!" @@ -3054,7 +3080,7 @@ msgstr "Phát đơn kênh" msgid "Months" msgstr "Tháng" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "Sắc thái" @@ -3084,7 +3110,7 @@ msgstr "Các điểm gắn" msgid "Move down" msgstr "Chuyển xuống" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "Dời vào thư viện..." @@ -3093,7 +3119,7 @@ msgstr "Dời vào thư viện..." msgid "Move up" msgstr "Chuyển lên" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "Nhạc" @@ -3101,7 +3127,7 @@ msgstr "Nhạc" msgid "Music Library" msgstr "Thư viện nhạc" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "Tắt âm" @@ -3189,7 +3215,7 @@ msgstr "Không phát nhạc" msgid "New folder" msgstr "Thư mục mới" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "Tạo danh sách mới" @@ -3213,7 +3239,7 @@ msgstr "Những bài mới nhất" msgid "Next" msgstr "Tiếp theo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "Phát bài tiếp theo" @@ -3252,7 +3278,7 @@ msgstr "Các khối ngắn" msgid "None" msgstr "Không" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "Không bài hát nào phù hợp để chép qua thiết bị" @@ -3370,7 +3396,7 @@ msgstr "Độ mờ" msgid "Open %1 in browser" msgstr "Mở %1 bằng trình duyệt" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "Mở đĩa &CD..." @@ -3386,7 +3412,7 @@ msgstr "Mở tập tin OPML..." msgid "Open device" msgstr "Mở thiết bị" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "Mở tập tin..." @@ -3421,7 +3447,7 @@ msgstr "Tối ưu cho bitrate" msgid "Optimize for quality" msgstr "Tối ưu cho chất lượng" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "Tuỳ chọn..." @@ -3433,7 +3459,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "Sao chép tập tin" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Sao chép tập tin..." @@ -3457,7 +3483,7 @@ msgstr "" msgid "Output device" msgstr "Thiết bị xuất" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "Tùy chọn xuất" @@ -3498,7 +3524,7 @@ msgstr "Party" msgid "Password" msgstr "Mật khẩu" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "Tạm dừng" @@ -3511,7 +3537,7 @@ msgstr "Tạm dừng phát" msgid "Paused" msgstr "Đã tạm dừng" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3524,9 +3550,9 @@ msgstr "Điểm ảnh" msgid "Plain sidebar" msgstr "Thanh bên đơn giản" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "Phát" @@ -3539,7 +3565,7 @@ msgstr "Phát theo Nghệ sĩ hoặc theo Thẻ" msgid "Play artist radio..." msgstr "Phát kênh phát thanh nghệ sĩ..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Số lần phát" @@ -3594,7 +3620,7 @@ msgstr "Tùy chọn danh sách" msgid "Playlist type" msgstr "Loại danh sách" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "Danh sách" @@ -3646,7 +3672,7 @@ msgstr "Pre-amp" msgid "Preferences" msgstr "Tùy chỉnh" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "Tùy chỉnh..." @@ -3701,7 +3727,7 @@ msgstr "Xem trước" msgid "Previous" msgstr "Trước" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "Phát bài trước" @@ -3715,7 +3741,7 @@ msgid "Profile" msgstr "Hồ sơ" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Tiến độ" @@ -3744,16 +3770,16 @@ msgstr "Chất lượng" msgid "Querying device..." msgstr "Truy vấn thiết bị..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "Quản lý danh sách chờ" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "Chờ phát những bài đã chọn" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "Chờ phát sau" @@ -3765,7 +3791,7 @@ msgstr "Phát thanh (âm thanh bằng nhau cho mọi bài hát)" msgid "Radios" msgstr "Phát thanh" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "Rain" @@ -3797,7 +3823,7 @@ msgstr "Đánh giá 4 sao cho bài hiện tại" msgid "Rate the current song 5 stars" msgstr "Đánh giá 5 sao cho bài hiện tại" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Đánh giá" @@ -3855,7 +3881,7 @@ msgstr "Loại bỏ" msgid "Remove action" msgstr "Loại bỏ hành động" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "Loại bỏ mục trùng nhau khỏi d.sách" @@ -3871,7 +3897,7 @@ msgstr "Loại bỏ khỏi Nhạc của tôi" msgid "Remove from favorites" msgstr "Loại bỏ khỏi yêu thích" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "Loại bỏ khỏi danh sách" @@ -3908,7 +3934,7 @@ msgstr "Đổi tên danh sách" msgid "Rename playlist..." msgstr "Đổi tên danh sách..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "Đánh số lại các bài hát theo thứ tự này..." @@ -3999,6 +4025,18 @@ msgstr "Trở lại Clementine" msgid "Right" msgstr "Phải" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "Rock" @@ -4025,7 +4063,7 @@ msgstr "Tháo gỡ thiết bị an toàn" msgid "Safely remove the device after copying" msgstr "Tháo gỡ thiết bị an toàn sau khi sao chép" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Tần số âm" @@ -4053,7 +4091,7 @@ msgstr "Lưu ảnh" msgid "Save playlist" msgstr "Lưu danh sách" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "Lưu danh sách..." @@ -4089,7 +4127,7 @@ msgstr "Hồ sơ tỉ lệ mẫu có thể mở rộng (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Điểm" @@ -4098,7 +4136,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Tự động gửi tên các bài hát tôi nghe" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4182,11 +4220,11 @@ msgstr "Tua đến khoảng tương đối trong bài đang phát" msgid "Seek the currently playing track to an absolute position" msgstr "Tua đến vị trí chính xác trong bài đang phát" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Chọn hết" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Bỏ chọn hết" @@ -4214,7 +4252,7 @@ msgstr "Chọn hiệu ứng hình ảnh ảo" msgid "Select visualizations..." msgstr "Chọn hiệu ứng hình ảnh ảo..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4234,7 +4272,7 @@ msgstr "Chi tiết máy chủ" msgid "Service offline" msgstr "Dịch vụ ngoại tuyến" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Thiết lập %1 sang \"%2\"..." @@ -4243,7 +4281,7 @@ msgstr "Thiết lập %1 sang \"%2\"..." msgid "Set the volume to percent" msgstr "Đặt âm lượng ở mức phần trăm" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "Đặt giá trị cho tất cả những bài được chọn..." @@ -4306,7 +4344,7 @@ msgstr "Tùy chỉnh thông báo" msgid "Show above status bar" msgstr "Hiện phía trên thanh trạng thái" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "Hiện tất cả bài hát" @@ -4326,12 +4364,12 @@ msgstr "Hiện đường phân cách" msgid "Show fullsize..." msgstr "Hiện với kích thước gốc..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "Mở thư mục lưu..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4343,11 +4381,11 @@ msgstr "Hiện trong mục nhiều nghệ sĩ" msgid "Show moodbar" msgstr "Hiện thanh sắc thái" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "Chỉ hiện những mục bị trùng" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "Chỉ hiện những mục không được gán thẻ" @@ -4387,7 +4425,7 @@ msgstr "Phát ngẫu nhiên album" msgid "Shuffle all" msgstr "Phát ngẫu nhiên tất cả" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "Phát ngẫu nhiên danh sách" @@ -4427,7 +4465,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "Không cho lùi lại trong danh sách" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Không đếm" @@ -4463,7 +4501,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Thông tin bài hát" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "Bài hát" @@ -4495,7 +4533,7 @@ msgstr "Sắp xếp bài hát theo" msgid "Sorting" msgstr "Sắp xếp" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "Nguồn" @@ -4531,6 +4569,10 @@ msgstr "Chuẩn" msgid "Starred" msgstr "Đã đánh giá" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "Bắt đầu danh sách đang phát" @@ -4546,7 +4588,7 @@ msgid "" "list" msgstr "Gõ gì đó vào ô tìm kiếm" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "Bắt đầu %1" @@ -4559,7 +4601,7 @@ msgstr "Đang bắt đầu..." msgid "Stations" msgstr "Đài" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "Dừng" @@ -4568,7 +4610,7 @@ msgstr "Dừng" msgid "Stop after" msgstr "Dừng lại sau khi" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "Dừng sau khi phát xong bài này" @@ -4736,7 +4778,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Thời hạn dùng thử Subsonic đã hết. Hãy nộp phí để nhận giấy phép. Xem thêm chi tiết tại subsonic.org" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4777,7 +4819,7 @@ msgid "" "continue?" msgstr "Các tập tin này sẽ bị xóa khỏi thiết bị, bạn có muốn tiếp tục?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4849,9 +4891,10 @@ msgstr "Luồng này chỉ dành cho người trả phí" msgid "This type of device is not supported: %1" msgstr "Loại thiết bị này không được hỗ trợ: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tựa đề" @@ -4873,11 +4916,11 @@ msgstr "Bật/Tắt hộp thông báo" msgid "Toggle fullscreen" msgstr "Tắt/Bật toàn màn hình" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "Tắt/Bật trạng thái chờ" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "Bật/Tắt Chuyển thông tin bài hát" @@ -4909,12 +4952,13 @@ msgstr "Số byte đã truyền tải" msgid "Total network requests made" msgstr "Số lần gửi yêu cầu" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Bài hát" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "Chuyển mã nhạc" @@ -5012,7 +5056,7 @@ msgstr "Cập nhật danh sách Grooveshark" msgid "Update all podcasts" msgstr "Cập nhật tất cả podcast" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "Cập nhập thư mục thư viện đã thay đổi" @@ -5167,7 +5211,7 @@ msgstr "Hiển thị" msgid "Visualization mode" msgstr "Chế độ hình ảnh ảo" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "Hình ảnh ảo" @@ -5295,7 +5339,7 @@ msgid "" "well?" msgstr "Bạn có muốn chuyển những bài khác trong album này vào mục nhiều nghệ sĩ không?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "Bạn muốn quét lại toàn bộ ngay bây giờ?" @@ -5307,10 +5351,10 @@ msgstr "Ghi tất cả thống kê của các bài hát vào các tập tin" msgid "Wrong username or password." msgstr "Sai tên người dùng hoặc mật khẩu." -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "Năm" diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po index 903fdb003..a8bf6d39f 100644 --- a/src/translations/zh_CN.po +++ b/src/translations/zh_CN.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-17 06:32+0000\n" -"Last-Translator: zhangmin \n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/clementine/language/zh_CN/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -175,11 +175,11 @@ msgstr "居中(&C)" msgid "&Custom" msgstr "自定义(&C)" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "附件" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "帮助" @@ -196,7 +196,7 @@ msgstr "隐藏(&H)..." msgid "&Left" msgstr "左(&L)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "音乐" @@ -204,15 +204,15 @@ msgstr "音乐" msgid "&None" msgstr "无(&N)" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "播放列表" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "退出(&Q)" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "循环模式" @@ -220,7 +220,7 @@ msgstr "循环模式" msgid "&Right" msgstr "右(&R)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "随机播放模式&S" @@ -228,7 +228,7 @@ msgstr "随机播放模式&S" msgid "&Stretch columns to fit window" msgstr "拉伸栏以适应窗口(&S)" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "工具" @@ -373,11 +373,11 @@ msgstr "中止" msgid "About %1" msgstr "关于 %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "关于 Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "关于 Qt..." @@ -425,19 +425,19 @@ msgstr "添加其他流媒体..." msgid "Add directory..." msgstr "添加目录..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "添加文件" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "添加文件至转码器" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "添加文件至转码器" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "添加文件..." @@ -445,11 +445,11 @@ msgstr "添加文件..." msgid "Add files to transcode" msgstr "添加需转码文件" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "添加文件夹" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "添加文件夹..." @@ -461,7 +461,7 @@ msgstr "添加新文件夹..." msgid "Add podcast" msgstr "添加播客" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "添加播客..." @@ -537,7 +537,7 @@ msgstr "添加歌曲曲目标签" msgid "Add song year tag" msgstr "添加歌曲年份标签" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "添加流媒体..." @@ -549,7 +549,7 @@ msgstr "添加到 Grooveshark 收藏夹" msgid "Add to Grooveshark playlists" msgstr "添加到 Grooveshark 播放列表" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "添加到另一播放列表" @@ -610,12 +610,12 @@ msgstr "之后 " msgid "After copying..." msgstr "复制后..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "专辑" @@ -623,7 +623,7 @@ msgstr "专辑" msgid "Album (ideal loudness for all tracks)" msgstr "专辑(所有曲目采用合适音量)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -645,11 +645,11 @@ msgstr "有封面的专辑" msgid "Albums without covers" msgstr "无封面的专辑" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "全部文件 (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "人人都爱催眠蛤蟆" @@ -776,17 +776,17 @@ msgid "" "the songs of your library?" msgstr "您确定要将媒体库中所有歌曲的统计信息写入相应的歌曲文件?" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "艺人" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "艺人信息" @@ -802,7 +802,7 @@ msgstr "艺人标签" msgid "Artist's initial" msgstr "艺术家名字的首字母" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "音频格式" @@ -848,7 +848,7 @@ msgstr "图片平均大小" msgid "BBC Podcasts" msgstr "BBC 播客" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -877,7 +877,7 @@ msgstr "备份数据库" msgid "Balance" msgstr "均衡" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "禁止" @@ -906,7 +906,7 @@ msgstr "最佳" msgid "Biography from %1" msgstr "%1 上的个人档案" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "位速率" @@ -1012,7 +1012,7 @@ msgstr "单声道回放设置的改变将在下首歌曲播放时生效" msgid "Check for new episodes" msgstr "检测新节目" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "检查更新..." @@ -1062,11 +1062,11 @@ msgstr "清理" msgid "Clear" msgstr "清空" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "清空播放列表" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1157,8 +1157,8 @@ msgstr "点此收藏播放列表,列表将被保存并可稍候通过左侧边 msgid "Click to toggle between remaining time and total time" msgstr "单击切换剩余时间和总计时间模式" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1196,7 +1196,7 @@ msgstr "颜色" msgid "Comma separated list of class:level, level is 0-3" msgstr "class:level 列表用逗号分隔,level 范围 0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "备注" @@ -1205,11 +1205,11 @@ msgstr "备注" msgid "Complete tags automatically" msgstr "自动补全标签" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "自动补全标签..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1248,7 +1248,7 @@ msgstr "配置 Subsonic..." msgid "Configure global search..." msgstr "配置全局搜索…" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "配置媒体库..." @@ -1285,7 +1285,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "连接超时,请检查服务器链接。例如: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "终端" @@ -1305,12 +1305,12 @@ msgstr "转换设备不能播放的音乐" msgid "Copy to clipboard" msgstr "复制到剪切板" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "复制到设备..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "复制到媒体库..." @@ -1332,14 +1332,14 @@ msgid "" "required GStreamer plugins installed" msgstr "无法创建GStreamer元素 \"%1\" - 请确认您已安装了所需GStreamer插件" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "无法为%1找到混音器,请检查是否安装了正确的Gstreamer插件" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1356,7 +1356,7 @@ msgid "Couldn't open output file %1" msgstr "无法打开输出文件 %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "封面管理器" @@ -1400,11 +1400,11 @@ msgstr "自动换曲时淡入淡出" msgid "Cross-fade when changing tracks manually" msgstr "手动换曲时淡入淡出" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1412,63 +1412,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1511,11 +1511,11 @@ msgid "" "recover your database" msgstr "检测到数据库损坏,请查阅 https://code.google.com/p/clementine-player/wiki/DatabaseCorruption 获取恢复数据库的方法" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "创建日期" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "修改日期" @@ -1565,7 +1565,7 @@ msgid "Delete downloaded data" msgstr "删除已下载的数据" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "删除文件" @@ -1573,7 +1573,7 @@ msgstr "删除文件" msgid "Delete from device..." msgstr "从设备删除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "从硬盘删除..." @@ -1598,15 +1598,16 @@ msgstr "删除原始文件" msgid "Deleting files" msgstr "删除文件" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "移除选定曲目" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "移除曲目" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "目标" @@ -1630,10 +1631,14 @@ msgstr "设备名称" msgid "Device properties..." msgstr "设备属性..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "设备" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "您是想搜索" @@ -1672,8 +1677,8 @@ msgstr "禁止生成心情指示条" msgid "Disabled" msgstr "禁用" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "盘片" @@ -1690,7 +1695,7 @@ msgstr "显示选项" msgid "Display the on-screen-display" msgstr "显示屏幕显示" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "重新扫描整个媒体库" @@ -1812,6 +1817,10 @@ msgstr "Dropbox" msgid "Dubstep" msgstr "回响贝斯" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "已打开动态模式" @@ -1824,12 +1833,12 @@ msgstr "动态随机混音" msgid "Edit smart playlist..." msgstr "编辑智能播放列表..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "编辑标签 \"%1\"..." -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "编辑标签..." @@ -1842,7 +1851,7 @@ msgid "Edit track information" msgstr "编辑曲目信息" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "编辑曲目信息..." @@ -1943,7 +1952,7 @@ msgstr "在应用中输入此 IP 来连接上 Clementine。" msgid "Entire collection" msgstr "整个集合" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "均衡器" @@ -1957,7 +1966,7 @@ msgstr "相当于 --log-levels *:3" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "错误" @@ -1977,7 +1986,7 @@ msgstr "删除曲目出错" msgid "Error downloading Spotify plugin" msgstr "下载Spotify插件出错" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "载入 %1 出错" @@ -1987,12 +1996,12 @@ msgstr "载入 %1 出错" msgid "Error loading di.fm playlist" msgstr "读取di.fm播放列表错误" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "处理 %1 出错:%2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "读取CD时发生错误" @@ -2070,27 +2079,27 @@ msgstr "导出完成" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "已导出 %1 个封面,共 %2 个(跳过 %3 个)" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2117,6 +2126,10 @@ msgstr "淡出" msgid "Fading duration" msgstr "淡出时长" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "无法获取目录" @@ -2168,6 +2181,10 @@ msgstr "正在获取 Subsonic 曲目库" msgid "Fetching cover error" msgstr "获取封面出错" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "文件扩展名" @@ -2176,19 +2193,19 @@ msgstr "文件扩展名" msgid "File formats" msgstr "文件格式" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "文件名" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "文件名(无路径)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "文件大小" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2198,7 +2215,7 @@ msgstr "文件类型" msgid "Filename" msgstr "文件名" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "文件" @@ -2318,9 +2335,10 @@ msgstr "一般" msgid "General settings" msgstr "常规设置" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "流派" @@ -2352,11 +2370,11 @@ msgstr "给它起个名字" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "转到下一播放列表标签" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "转到上一播放列表标签" @@ -2426,7 +2444,7 @@ msgstr "按流派/专辑分组" msgid "Group by Genre/Artist/Album" msgstr "按流派/艺人/专辑分组" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "分组" @@ -2581,6 +2599,10 @@ msgstr "正在索引 %1" msgid "Information" msgstr "信息" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "插入..." @@ -2593,7 +2615,7 @@ msgstr "已安装" msgid "Integrity check" msgstr "完整性检验" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "互联网" @@ -2633,6 +2655,10 @@ msgstr "会话钥匙无效" msgid "Invalid username and/or password" msgstr "用户名/密码无效" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2657,7 +2683,7 @@ msgstr "Jamendo 本周曲目排行" msgid "Jamendo database" msgstr "Jamendo 数据库" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "跳转到当前播放的曲目" @@ -2681,7 +2707,7 @@ msgstr "当窗口关闭时仍在后台运行" msgid "Keep the original files" msgstr "保留原始文件" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "猫咪" @@ -2705,7 +2731,7 @@ msgstr "大专辑封面" msgid "Large sidebar" msgstr "大侧边栏" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "最近播放" @@ -2788,12 +2814,12 @@ msgstr "空白为默认,例如: \"/dev/dsp\",\"front\" 等。" msgid "Left" msgstr "左" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "长度" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "媒体库" @@ -2801,7 +2827,7 @@ msgstr "媒体库" msgid "Library advanced grouping" msgstr "媒体库高级分组" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "重新扫描媒体库提示" @@ -2846,7 +2872,7 @@ msgstr "从磁盘载入封面..." msgid "Load playlist" msgstr "载入播放列表" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "载入播放列表..." @@ -2875,11 +2901,11 @@ msgstr "加载曲目" msgid "Loading stream" msgstr "正在载入媒体流" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "正在载入曲目" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "正在加载曲目信息" @@ -2898,10 +2924,10 @@ msgstr "载入文件或URL,替换当前播放列表" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "登录" @@ -2913,7 +2939,7 @@ msgstr "登录失败" msgid "Long term prediction profile (LTP)" msgstr "长期预测 (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "喜爱" @@ -2976,7 +3002,7 @@ msgstr "Magnatune 下载完成" msgid "Main profile (MAIN)" msgstr "主要档案(MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "就这样吧!" @@ -3059,7 +3085,7 @@ msgstr "单曲循环" msgid "Months" msgstr "月" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "心情" @@ -3089,7 +3115,7 @@ msgstr "挂载点" msgid "Move down" msgstr "下移" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "移动至媒体库..." @@ -3098,7 +3124,7 @@ msgstr "移动至媒体库..." msgid "Move up" msgstr "上移" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "音乐" @@ -3106,7 +3132,7 @@ msgstr "音乐" msgid "Music Library" msgstr "媒体库" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "静音" @@ -3194,7 +3220,7 @@ msgstr "从未播放" msgid "New folder" msgstr "创建新文件夹" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "新建播放列表" @@ -3218,7 +3244,7 @@ msgstr "最新曲目" msgid "Next" msgstr "下一首" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "下一个曲目" @@ -3257,7 +3283,7 @@ msgstr "无短块" msgid "None" msgstr "无" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "已选择的曲目均不适合复制到设备" @@ -3375,7 +3401,7 @@ msgstr "不透明度" msgid "Open %1 in browser" msgstr "在浏览器中打开%1" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "打开音频CD..." @@ -3391,7 +3417,7 @@ msgstr "打开 OPML 文件…" msgid "Open device" msgstr "打开设备" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "打开文件..." @@ -3426,7 +3452,7 @@ msgstr "为位速率优化" msgid "Optimize for quality" msgstr "为质量优化" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "选项..." @@ -3438,7 +3464,7 @@ msgstr "Opus" msgid "Organise Files" msgstr "组织文件" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "组织文件..." @@ -3462,7 +3488,7 @@ msgstr "输出" msgid "Output device" msgstr "输出设备" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "输出选项" @@ -3503,7 +3529,7 @@ msgstr "晚会" msgid "Password" msgstr "密码" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "暂停" @@ -3516,7 +3542,7 @@ msgstr "暂停播放" msgid "Paused" msgstr "已暂停" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "表演者" @@ -3529,9 +3555,9 @@ msgstr "像素" msgid "Plain sidebar" msgstr "普通侧边栏" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "播放" @@ -3544,7 +3570,7 @@ msgstr "按艺术家或标签播放" msgid "Play artist radio..." msgstr "播放艺人电台..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "播放计数" @@ -3599,7 +3625,7 @@ msgstr "播放列表选项" msgid "Playlist type" msgstr "播放列表类型" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "播放列表" @@ -3651,7 +3677,7 @@ msgstr "前置放大" msgid "Preferences" msgstr "首选项" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "首选项..." @@ -3706,7 +3732,7 @@ msgstr "预览" msgid "Previous" msgstr "上一首" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "上一个曲目" @@ -3720,7 +3746,7 @@ msgid "Profile" msgstr "档案" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "进度" @@ -3749,16 +3775,16 @@ msgstr "质量" msgid "Querying device..." msgstr "正在查询设备..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "队列管理器" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "将选定曲目加入队列" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "加入队列" @@ -3770,7 +3796,7 @@ msgstr "电台(所有曲目采用相同的音量)" msgid "Radios" msgstr "电台" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "雨声" @@ -3802,7 +3828,7 @@ msgstr "给当前曲目评级为四星" msgid "Rate the current song 5 stars" msgstr "给当前曲目评级为五星" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "评级" @@ -3860,7 +3886,7 @@ msgstr "删除" msgid "Remove action" msgstr "删除操作" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "从播放列表中移除重复项" @@ -3876,7 +3902,7 @@ msgstr "从我的音乐中移出" msgid "Remove from favorites" msgstr "从收藏夹的中删除" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "从播放列表中移除" @@ -3913,7 +3939,7 @@ msgstr "重命名播放列表" msgid "Rename playlist..." msgstr "重命名播放列表..." -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "以此顺序为曲目重新编号..." @@ -4004,6 +4030,18 @@ msgstr "回到Clementine" msgid "Right" msgstr "右" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "摇滚" @@ -4030,7 +4068,7 @@ msgstr "安全移除设备" msgid "Safely remove the device after copying" msgstr "复制后安全移除设备" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "采样率" @@ -4058,7 +4096,7 @@ msgstr "保存图像" msgid "Save playlist" msgstr "保存播放列表" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "保存播放列表..." @@ -4094,7 +4132,7 @@ msgstr "可变采样频率 (SSR)" msgid "Scale size" msgstr "缩放" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "得分" @@ -4103,7 +4141,7 @@ msgid "Scrobble tracks that I listen to" msgstr "提交正在收听的音乐" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4187,11 +4225,11 @@ msgstr "当前播放的曲目以相对步长快进/快退" msgid "Seek the currently playing track to an absolute position" msgstr "当前播放的曲目快进/快退至指定时间点" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "选择全部" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "不选择" @@ -4219,7 +4257,7 @@ msgstr "选择视觉效果" msgid "Select visualizations..." msgstr "选择视觉效果..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "选择……" @@ -4239,7 +4277,7 @@ msgstr "服务器详情" msgid "Service offline" msgstr "服务离线" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "将 %1 设置为 %2..." @@ -4248,7 +4286,7 @@ msgstr "将 %1 设置为 %2..." msgid "Set the volume to percent" msgstr "设置音量为 %" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "为全部选中的曲目设置值..." @@ -4311,7 +4349,7 @@ msgstr "显示漂亮的 OSD" msgid "Show above status bar" msgstr "在状态栏之上显示" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "显示所有歌曲" @@ -4331,12 +4369,12 @@ msgstr "显示分频器" msgid "Show fullsize..." msgstr "显示完整尺寸..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "在文件管理器中打开..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "在媒体库中显示" @@ -4348,11 +4386,11 @@ msgstr "在群星中显示" msgid "Show moodbar" msgstr "显示心情指示条" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "只显示重复" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "只显示未加标签的" @@ -4392,7 +4430,7 @@ msgstr "乱序专辑" msgid "Shuffle all" msgstr "乱序全部" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "随机播放列表" @@ -4432,7 +4470,7 @@ msgstr "Ska" msgid "Skip backwards in playlist" msgstr "在播放列表中后退" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "跳过计数" @@ -4468,7 +4506,7 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "曲目信息" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "曲目信息" @@ -4500,7 +4538,7 @@ msgstr "排序曲目" msgid "Sorting" msgstr "正在排序" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "来源" @@ -4536,6 +4574,10 @@ msgstr "标准" msgid "Starred" msgstr "用星号标记" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "开始播放当前播放列表" @@ -4551,7 +4593,7 @@ msgid "" "list" msgstr "请在上方搜索栏中输入一些词条,来充实搜索结果列表" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "正在开始 %1" @@ -4564,7 +4606,7 @@ msgstr "正在开始..." msgid "Stations" msgstr "工作站" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "停止" @@ -4573,7 +4615,7 @@ msgstr "停止" msgid "Stop after" msgstr "后停止" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "在此曲目后停止" @@ -4741,7 +4783,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "Subsonic 服务器的试用期已过。请捐助来获得许可文件。详情请访问 subsonic.org 。" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4782,7 +4824,7 @@ msgid "" "continue?" msgstr "将从设备中删除这些文件.确定删除吗?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4854,9 +4896,10 @@ msgstr "该流媒体只有付费用户才能收听" msgid "This type of device is not supported: %1" msgstr "这种设备不被支持: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "标题" @@ -4878,11 +4921,11 @@ msgstr "切换漂亮的 OSD" msgid "Toggle fullscreen" msgstr "切换全屏" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "切换队列状态" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "切换歌曲记录" @@ -4914,12 +4957,13 @@ msgstr "已传输字节总数" msgid "Total network requests made" msgstr "已发出网络连接总数" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "曲目" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "音乐转码" @@ -5017,7 +5061,7 @@ msgstr "更新 Grooveshark 播放列表" msgid "Update all podcasts" msgstr "更新所有播客" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "更新改变的媒体库文件夹" @@ -5172,7 +5216,7 @@ msgstr "查看" msgid "Visualization mode" msgstr "视觉效果模式" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "视觉效果" @@ -5300,7 +5344,7 @@ msgid "" "well?" msgstr "您想要把此专辑的其它歌曲移动到 群星?" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "您要立即做个全部重新扫描?" @@ -5312,10 +5356,10 @@ msgstr "所有统计信息写入至歌曲文件" msgid "Wrong username or password." msgstr "用户名密码错误。" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "年份" diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index c7c943c6c..d2d0a0c79 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-12 07:47+0000\n" +"PO-Revision-Date: 2014-01-27 02:54+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/clementine/language/zh_TW/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -169,11 +169,11 @@ msgstr "中間(&C)" msgid "&Custom" msgstr "自訂(&C)" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" msgstr "外掛程式(&E)" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:734 msgid "&Help" msgstr "幫助(&H)" @@ -190,7 +190,7 @@ msgstr "隱藏(&H)..." msgid "&Left" msgstr "左邊(&L)" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:732 msgid "&Music" msgstr "音樂(&M)" @@ -198,15 +198,15 @@ msgstr "音樂(&M)" msgid "&None" msgstr "無(&N)" -#: ../bin/src/ui_mainwindow.h:728 +#: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" msgstr "播放清單(&P)" -#: ../bin/src/ui_mainwindow.h:656 +#: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" msgstr "結束(&Q)" -#: ../bin/src/ui_mainwindow.h:694 +#: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" msgstr "循環播放模式(&R)" @@ -214,7 +214,7 @@ msgstr "循環播放模式(&R)" msgid "&Right" msgstr "右邊(&R)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" msgstr "隨機播放模式(&S)" @@ -222,7 +222,7 @@ msgstr "隨機播放模式(&S)" msgid "&Stretch columns to fit window" msgstr "將列伸展至視窗邊界(&S)" -#: ../bin/src/ui_mainwindow.h:731 +#: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" msgstr "工具(&T)" @@ -367,11 +367,11 @@ msgstr "" msgid "About %1" msgstr "關於 %1" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." msgstr "關於 Clementine..." -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." msgstr "關於 Qt..." @@ -419,19 +419,19 @@ msgstr "加入其它的網路串流" msgid "Add directory..." msgstr "加入目錄..." -#: ui/mainwindow.cpp:1615 +#: ui/mainwindow.cpp:1623 msgid "Add file" msgstr "加入檔案" -#: ../bin/src/ui_mainwindow.h:723 +#: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." msgstr "加入檔案..." @@ -439,11 +439,11 @@ msgstr "加入檔案..." msgid "Add files to transcode" msgstr "加入檔案以轉碼" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1643 +#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" msgstr "加入資料夾" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." msgstr "加入資料夾..." @@ -455,7 +455,7 @@ msgstr "新增資料夾..." msgid "Add podcast" msgstr "加入 Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:719 +#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "加入 Podcast..." @@ -531,7 +531,7 @@ msgstr "加入歌曲曲目標籤" msgid "Add song year tag" msgstr "加入歌曲年份標籤" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." msgstr "加入網路串流..." @@ -543,7 +543,7 @@ msgstr "加入到 Grooveshark 最愛" msgid "Add to Grooveshark playlists" msgstr "加入到 Grooveshark 播放清單" -#: ui/mainwindow.cpp:1440 +#: ui/mainwindow.cpp:1448 msgid "Add to another playlist" msgstr "加入到其他播放清單" @@ -604,12 +604,12 @@ msgstr "" msgid "After copying..." msgstr "複製後 ..." -#: playlist/playlist.cpp:1208 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 -#: ../bin/src/ui_trackselectiondialog.h:209 +#: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" msgstr "專輯" @@ -617,7 +617,7 @@ msgstr "專輯" msgid "Album (ideal loudness for all tracks)" msgstr "專輯 (為所有歌曲取得理想音量)" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -639,11 +639,11 @@ msgstr "有封面的專輯" msgid "Albums without covers" msgstr "無封面的專輯" -#: ui/mainwindow.cpp:157 +#: ui/mainwindow.cpp:160 msgid "All Files (*)" msgstr "所有檔案 (*)" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" msgstr "所有的榮耀歸於大蟾蜍" @@ -770,17 +770,17 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1207 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 #: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 +#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "演出者" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:248 msgid "Artist info" msgstr "演出者" @@ -796,7 +796,7 @@ msgstr "演出者標籤" msgid "Artist's initial" msgstr "演唱者簽署" -#: ../bin/src/ui_transcodedialog.h:212 +#: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" msgstr "音頻格式" @@ -842,7 +842,7 @@ msgstr "平均圖片大小" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1225 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -871,7 +871,7 @@ msgstr "備份資料庫" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:662 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ban" msgstr "禁止" @@ -900,7 +900,7 @@ msgstr "最佳" msgid "Biography from %1" msgstr "%1的傳記" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "位元率" @@ -1006,7 +1006,7 @@ msgstr "" msgid "Check for new episodes" msgstr "檢查是否有新的片斷內容" -#: ui/mainwindow.cpp:594 +#: ui/mainwindow.cpp:602 msgid "Check for updates..." msgstr "檢查更新..." @@ -1056,11 +1056,11 @@ msgstr "清除" msgid "Clear" msgstr "清除" -#: ../bin/src/ui_mainwindow.h:664 ../bin/src/ui_mainwindow.h:666 +#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" msgstr "清除播放清單" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:647 +#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" @@ -1151,8 +1151,8 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "點擊以切換剩餘時間/全部時間" -#: ../bin/src/ui_googledrivesettingspage.h:106 #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." @@ -1190,7 +1190,7 @@ msgstr "顏色" msgid "Comma separated list of class:level, level is 0-3" msgstr "用逗號化分類別清單:等級為0-3" -#: playlist/playlist.cpp:1235 smartplaylists/searchterm.cpp:288 +#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 #: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "評論" @@ -1199,11 +1199,11 @@ msgstr "評論" msgid "Complete tags automatically" msgstr "標籤完全自動分類" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." msgstr "標籤完全自動分類..." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:475 +#: ui/mainwindow.cpp:483 msgid "Configure library..." msgstr "設定音樂庫" @@ -1279,7 +1279,7 @@ msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:692 +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" msgstr "" @@ -1299,12 +1299,12 @@ msgstr "轉換任何裝置無法播放的音樂" msgid "Copy to clipboard" msgstr "複製到剪貼簿" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:509 +#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 #: widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "複製到裝置..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:506 +#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." msgstr "複製到音樂庫" @@ -1326,14 +1326,14 @@ msgid "" "required GStreamer plugins installed" msgstr "無法建立 GStreamer 元件「%1」- 請確認您安裝了所有需要的GStreamer外掛。" -#: transcoder/transcoder.cpp:432 +#: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "無法為%1找到混合器,請確認已正確安裝 GStreamer 外掛。" -#: transcoder/transcoder.cpp:426 +#: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " @@ -1350,7 +1350,7 @@ msgid "Couldn't open output file %1" msgstr "無法開啟輸出檔 %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" msgstr "封面管理員" @@ -1394,11 +1394,11 @@ msgstr "當自動改變曲目時,聲音同時淡出及淡入" msgid "Cross-fade when changing tracks manually" msgstr "當手動改變曲目時,聲音同時淡出及淡入" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:667 msgid "Ctrl+B" msgstr "Ctrl+B" @@ -1406,63 +1406,63 @@ msgstr "Ctrl+B" msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:674 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:684 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_mainwindow.h:704 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:668 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:665 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:714 +#: ../bin/src/ui_mainwindow.h:718 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:706 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:680 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:661 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:708 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:710 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:717 +#: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1505,11 +1505,11 @@ msgid "" "recover your database" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "創建的日期" -#: playlist/playlist.cpp:1232 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "修改的日期" @@ -1559,7 +1559,7 @@ msgid "Delete downloaded data" msgstr "刪除下載的資料" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1936 widgets/fileview.cpp:187 +#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" msgstr "刪除檔案" @@ -1567,7 +1567,7 @@ msgstr "刪除檔案" msgid "Delete from device..." msgstr "從裝置中刪除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:510 +#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." msgstr "從硬碟中刪除 ..." @@ -1592,15 +1592,16 @@ msgstr "刪除原本的檔案" msgid "Deleting files" msgstr "檔案刪除中" -#: ui/mainwindow.cpp:1374 +#: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" msgstr "將選取的歌曲移出佇列中" -#: ui/mainwindow.cpp:1372 +#: ui/mainwindow.cpp:1380 msgid "Dequeue track" msgstr "將歌曲移出佇列中" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "目的地" @@ -1624,10 +1625,14 @@ msgstr "裝置名稱" msgid "Device properties..." msgstr "裝置屬性..." -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:245 msgid "Devices" msgstr "裝置" +#: ../bin/src/ui_ripcd.h:300 +msgid "Dialog" +msgstr "" + #: widgets/didyoumean.cpp:55 msgid "Did you mean" msgstr "您的意思是" @@ -1666,8 +1671,8 @@ msgstr "" msgid "Disabled" msgstr "停用" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:63 -#: ../bin/src/ui_edittagdialog.h:685 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "唱片" @@ -1684,7 +1689,7 @@ msgstr "顯示選項" msgid "Display the on-screen-display" msgstr "顯示螢幕上的顯示" -#: ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" msgstr "做一個完整的音樂庫重新掃描" @@ -1806,6 +1811,10 @@ msgstr "" msgid "Dubstep" msgstr "" +#: ../bin/src/ui_ripcd.h:309 +msgid "Duration" +msgstr "" + #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "動態模式開啟" @@ -1818,12 +1827,12 @@ msgstr "動態隨機混合" msgid "Edit smart playlist..." msgstr "編輯智慧型播放清單..." -#: ui/mainwindow.cpp:1407 +#: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:673 +#: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." msgstr "編輯標籤 ..." @@ -1836,7 +1845,7 @@ msgid "Edit track information" msgstr "編輯歌曲資訊" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:669 +#: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." msgstr "編輯歌曲資訊..." @@ -1937,7 +1946,7 @@ msgstr "" msgid "Entire collection" msgstr "整個收藏" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:696 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" msgstr "等化器" @@ -1951,7 +1960,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1017 #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1888 ui/mainwindow.cpp:2004 +#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" msgstr "錯誤" @@ -1971,7 +1980,7 @@ msgstr "刪除歌曲錯誤" msgid "Error downloading Spotify plugin" msgstr "下載 Spotify 插件出現錯誤" -#: playlist/songloaderinserter.cpp:71 playlist/songloaderinserter.cpp:133 +#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" msgstr "錯誤載入 %1" @@ -1981,12 +1990,12 @@ msgstr "錯誤載入 %1" msgid "Error loading di.fm playlist" msgstr "載入 di.fm 播放清單錯誤" -#: transcoder/transcoder.cpp:399 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" msgstr "處理 %1 錯誤: %2" -#: playlist/songloaderinserter.cpp:100 +#: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" msgstr "載入音樂CD時,出現錯誤" @@ -2064,27 +2073,27 @@ msgstr "" msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:682 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:678 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:649 +#: ../bin/src/ui_mainwindow.h:653 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:651 +#: ../bin/src/ui_mainwindow.h:655 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:657 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:659 msgid "F8" msgstr "F8" @@ -2111,6 +2120,10 @@ msgstr "淡出" msgid "Fading duration" msgstr "淡出持續時間" +#: ui/mainwindow.cpp:1690 +msgid "Failed reading CD drive" +msgstr "" + #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" msgstr "" @@ -2162,6 +2175,10 @@ msgstr "" msgid "Fetching cover error" msgstr "取得封面出錯" +#: ../bin/src/ui_ripcd.h:320 +msgid "File Format" +msgstr "" + #: ui/organisedialog.cpp:71 msgid "File extension" msgstr "副檔名" @@ -2170,19 +2187,19 @@ msgstr "副檔名" msgid "File formats" msgstr "檔案格式" -#: playlist/playlist.cpp:1228 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "檔名" -#: playlist/playlist.cpp:1229 +#: playlist/playlist.cpp:1232 msgid "File name (without path)" msgstr "檔名(不含路徑)" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "檔案大小" -#: playlist/playlist.cpp:1231 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2192,7 +2209,7 @@ msgstr "檔案型態" msgid "Filename" msgstr "檔名" -#: ui/mainwindow.cpp:239 +#: ui/mainwindow.cpp:242 msgid "Files" msgstr "檔案" @@ -2312,9 +2329,10 @@ msgstr "一般" msgid "General settings" msgstr "一般設定" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 +#: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "風格" @@ -2346,11 +2364,11 @@ msgstr "給它一個名字:" msgid "Go" msgstr "前往" -#: ../bin/src/ui_mainwindow.h:707 +#: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" msgstr "到下一個播放清單分頁" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" msgstr "到前一個播放清單分頁" @@ -2420,7 +2438,7 @@ msgstr "依風格/專輯歸類" msgid "Group by Genre/Artist/Album" msgstr "依風格/演出者/專輯歸類" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2575,6 +2593,10 @@ msgstr "" msgid "Information" msgstr "資訊" +#: ../bin/src/ui_ripcd.h:301 +msgid "Input options" +msgstr "" + #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." msgstr "插入..." @@ -2587,7 +2609,7 @@ msgstr "已安裝" msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:244 msgid "Internet" msgstr "網路" @@ -2627,6 +2649,10 @@ msgstr "無效對稱金鑰" msgid "Invalid username and/or password" msgstr "無效使用者名稱 及/或 密碼" +#: ../bin/src/ui_ripcd.h:312 +msgid "Invert Selection" +msgstr "" + #: internet/jamendoservice.cpp:127 msgid "Jamendo" msgstr "Jamendo" @@ -2651,7 +2677,7 @@ msgstr "Jamendo 每週熱門曲目" msgid "Jamendo database" msgstr "Jamendo 資料庫" -#: ../bin/src/ui_mainwindow.h:699 +#: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" msgstr "跳轉到目前播放的曲目" @@ -2675,7 +2701,7 @@ msgstr "當視窗關閉時,保持在背景運轉" msgid "Keep the original files" msgstr "保留原本的檔案" -#: ../bin/src/ui_mainwindow.h:691 +#: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" msgstr "小貓" @@ -2699,7 +2725,7 @@ msgstr "大的專輯封面" msgid "Large sidebar" msgstr "大型側邊欄" -#: library/library.cpp:71 playlist/playlist.cpp:1222 +#: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" msgstr "最近播放" @@ -2782,12 +2808,12 @@ msgstr "如果送出空白將使用預設值。\n範例: \"/dev/dsp\",\"front\" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長度" -#: ui/mainwindow.cpp:228 ui/mainwindow.cpp:238 +#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" msgstr "音樂庫" @@ -2795,7 +2821,7 @@ msgstr "音樂庫" msgid "Library advanced grouping" msgstr "音樂庫進階的歸類" -#: ui/mainwindow.cpp:2121 +#: ui/mainwindow.cpp:2145 msgid "Library rescan notice" msgstr "音樂庫重新掃描提示" @@ -2840,7 +2866,7 @@ msgstr "從磁碟載入封面..." msgid "Load playlist" msgstr "載入播放清單" -#: ../bin/src/ui_mainwindow.h:705 +#: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." msgstr "載入播放清單..." @@ -2869,11 +2895,11 @@ msgstr "載入歌曲" msgid "Loading stream" msgstr "載入串流" -#: playlist/songloaderinserter.cpp:79 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" msgstr "載入曲目" -#: playlist/songloaderinserter.cpp:139 +#: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" msgstr "載入曲目資訊" @@ -2892,10 +2918,10 @@ msgstr "載入檔案/網址,取代目前的播放清單" #: ../bin/src/ui_magnatunesettingspage.h:164 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 +#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 msgid "Login" msgstr "登錄" @@ -2907,7 +2933,7 @@ msgstr "登錄失敗" msgid "Long term prediction profile (LTP)" msgstr "長時期預測規格 (LTP)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:664 msgid "Love" msgstr "喜愛" @@ -2970,7 +2996,7 @@ msgstr "Magnatune 下載完成" msgid "Main profile (MAIN)" msgstr "主規格 (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:690 +#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" msgstr "使它這樣的!" @@ -3053,7 +3079,7 @@ msgstr "單聲道播放" msgid "Months" msgstr "月" -#: playlist/playlist.cpp:1237 +#: playlist/playlist.cpp:1240 msgid "Mood" msgstr "" @@ -3083,7 +3109,7 @@ msgstr "掛載點" msgid "Move down" msgstr "下移" -#: ui/mainwindow.cpp:507 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." msgstr "移到音樂庫..." @@ -3092,7 +3118,7 @@ msgstr "移到音樂庫..." msgid "Move up" msgstr "上移" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1617 +#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" msgstr "音樂" @@ -3100,7 +3126,7 @@ msgstr "音樂" msgid "Music Library" msgstr "音樂庫" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:713 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" msgstr "靜音" @@ -3188,7 +3214,7 @@ msgstr "永不開始播放" msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1457 ../bin/src/ui_mainwindow.h:701 +#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" msgstr "新增播放清單" @@ -3212,7 +3238,7 @@ msgstr "最新曲目" msgid "Next" msgstr "下一個" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:654 +#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" msgstr "下一首曲目" @@ -3251,7 +3277,7 @@ msgstr "無短區塊" msgid "None" msgstr "沒有" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1889 ui/mainwindow.cpp:2005 +#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" msgstr "所選歌曲沒有適合複製到裝置的" @@ -3369,7 +3395,7 @@ msgstr "" msgid "Open %1 in browser" msgstr "在瀏覽器中開啟 %1" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." msgstr "開啟音樂光碟(&A)..." @@ -3385,7 +3411,7 @@ msgstr "" msgid "Open device" msgstr "開啟裝置" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." msgstr "開啟檔案..." @@ -3420,7 +3446,7 @@ msgstr "最佳化位元率" msgid "Optimize for quality" msgstr "最佳化品質" -#: ../bin/src/ui_transcodedialog.h:213 +#: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." msgstr "選擇..." @@ -3432,7 +3458,7 @@ msgstr "" msgid "Organise Files" msgstr "組織檔案" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:508 +#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "組織檔案..." @@ -3456,7 +3482,7 @@ msgstr "" msgid "Output device" msgstr "" -#: ../bin/src/ui_transcodedialog.h:211 +#: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "輸出選項" @@ -3497,7 +3523,7 @@ msgstr "派對" msgid "Password" msgstr "密碼" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:863 ui/mainwindow.cpp:1296 +#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" msgstr "暫停" @@ -3510,7 +3536,7 @@ msgstr "暫停播放" msgid "Paused" msgstr "已暫停" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3523,9 +3549,9 @@ msgstr "" msgid "Plain sidebar" msgstr "樸素的側邊欄" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:490 ui/mainwindow.cpp:831 -#: ui/mainwindow.cpp:850 ui/mainwindow.cpp:1299 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:650 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 +#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 +#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" msgstr "播放" @@ -3538,7 +3564,7 @@ msgstr "播放藝術家或標籤" msgid "Play artist radio..." msgstr "播放藝術加的頻道..." -#: playlist/playlist.cpp:1220 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "播放計數" @@ -3593,7 +3619,7 @@ msgstr "播放清單選擇" msgid "Playlist type" msgstr "播放清單類型" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:240 +#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" msgstr "播放清單" @@ -3645,7 +3671,7 @@ msgstr "前置放大" msgid "Preferences" msgstr "偏好設定" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." msgstr "偏好設定…" @@ -3700,7 +3726,7 @@ msgstr "預覽" msgid "Previous" msgstr "往前" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:648 +#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" msgstr "上一首歌曲" @@ -3714,7 +3740,7 @@ msgid "Profile" msgstr "規格" #: ../bin/src/ui_magnatunedownloaddialog.h:134 -#: ../bin/src/ui_transcodedialog.h:220 +#: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "進展" @@ -3743,16 +3769,16 @@ msgstr "品質" msgid "Querying device..." msgstr "查詢裝置..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" msgstr "佇列管理員" -#: ui/mainwindow.cpp:1378 +#: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" msgstr "將選取的歌曲加入佇列中" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1376 +#: ui/mainwindow.cpp:1384 msgid "Queue track" msgstr "將歌曲加入佇列中" @@ -3764,7 +3790,7 @@ msgstr "廣播 (為所有歌曲取得相同音量)" msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:688 +#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" msgstr "下雨" @@ -3796,7 +3822,7 @@ msgstr "評價目前的歌曲 4 顆星" msgid "Rate the current song 5 stars" msgstr "評價目前的歌曲 5 顆星" -#: playlist/playlist.cpp:1219 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "評分" @@ -3854,7 +3880,7 @@ msgstr "移除" msgid "Remove action" msgstr "刪除功能" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" msgstr "從播放清單中移除重複的" @@ -3870,7 +3896,7 @@ msgstr "" msgid "Remove from favorites" msgstr "從我的最愛中刪除" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:695 +#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" msgstr "從播放清單移除" @@ -3907,7 +3933,7 @@ msgstr "變更播放清單名稱" msgid "Rename playlist..." msgstr "重新命名播放清單" -#: ../bin/src/ui_mainwindow.h:671 +#: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." msgstr "按此順序重新為歌曲編號..." @@ -3998,6 +4024,18 @@ msgstr "" msgid "Right" msgstr "" +#: ../bin/src/ui_ripcd.h:303 +msgid "Rip" +msgstr "" + +#: ui/ripcd.cpp:116 +msgid "Rip CD" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:730 +msgid "Rip audio CD..." +msgstr "" + #: ui/equalizer.cpp:131 msgid "Rock" msgstr "搖滾" @@ -4024,7 +4062,7 @@ msgstr "安全地移除裝置" msgid "Safely remove the device after copying" msgstr "在複製之後,安全的移除裝置" -#: playlist/playlist.cpp:1227 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "取樣頻率" @@ -4052,7 +4090,7 @@ msgstr "儲存圖片" msgid "Save playlist" msgstr "儲存播放清單" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:703 +#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." msgstr "儲存播放清單" @@ -4088,7 +4126,7 @@ msgstr "可變取樣率規格 (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "分數" @@ -4097,7 +4135,7 @@ msgid "Scrobble tracks that I listen to" msgstr "Scrobble 我在聽的曲目" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:237 ../bin/src/ui_globalsearchsettingspage.h:145 +#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" @@ -4181,11 +4219,11 @@ msgstr "藉由相對數字尋找現在播放的曲目" msgid "Seek the currently playing track to an absolute position" msgstr "藉由絕對位置尋找現在播放的曲目" -#: visualisations/visualisationselector.cpp:40 +#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "選擇全部" -#: visualisations/visualisationselector.cpp:42 +#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "不選取" @@ -4213,7 +4251,7 @@ msgstr "選取視覺化" msgid "Select visualizations..." msgstr "選取視覺化..." -#: ../bin/src/ui_transcodedialog.h:219 +#: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." msgstr "" @@ -4233,7 +4271,7 @@ msgstr "" msgid "Service offline" msgstr "服務離線" -#: ui/mainwindow.cpp:1405 +#: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "設定 %1 到「%2」..." @@ -4242,7 +4280,7 @@ msgstr "設定 %1 到「%2」..." msgid "Set the volume to percent" msgstr "設定音量到百分之" -#: ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." msgstr "為所有選擇的歌曲設定音量..." @@ -4305,7 +4343,7 @@ msgstr "顯示一個漂亮的螢幕顯示" msgid "Show above status bar" msgstr "顯示在狀態欄上方" -#: ui/mainwindow.cpp:463 +#: ui/mainwindow.cpp:471 msgid "Show all songs" msgstr "顯示所有歌曲" @@ -4325,12 +4363,12 @@ msgstr "顯示分隔線" msgid "Show fullsize..." msgstr "全螢幕..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:511 +#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." msgstr "在檔案瀏覽器顯示..." -#: ui/mainwindow.cpp:512 +#: ui/mainwindow.cpp:520 msgid "Show in library..." msgstr "" @@ -4342,11 +4380,11 @@ msgstr "顯示各演出者" msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:464 +#: ui/mainwindow.cpp:472 msgid "Show only duplicates" msgstr "只顯示重複的" -#: ui/mainwindow.cpp:465 +#: ui/mainwindow.cpp:473 msgid "Show only untagged" msgstr "只顯示未標記的" @@ -4386,7 +4424,7 @@ msgstr "隨機播放專輯" msgid "Shuffle all" msgstr "隨機播放所有歌曲" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" msgstr "隨機排列播放清單" @@ -4426,7 +4464,7 @@ msgstr "強節奏流行音樂" msgid "Skip backwards in playlist" msgstr "跳至播放清單開頭" -#: playlist/playlist.cpp:1221 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "略過計數" @@ -4462,7 +4500,7 @@ msgstr "比較輕柔的搖滾樂" msgid "Song Information" msgstr "歌曲資訊" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:247 msgid "Song info" msgstr "歌曲" @@ -4494,7 +4532,7 @@ msgstr "歌曲排序方式" msgid "Sorting" msgstr "分類" -#: playlist/playlist.cpp:1236 +#: playlist/playlist.cpp:1239 msgid "Source" msgstr "來源" @@ -4530,6 +4568,10 @@ msgstr "標準" msgid "Starred" msgstr "已標記星號" +#: ui/ripcd.cpp:90 +msgid "Start ripping" +msgstr "" + #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" msgstr "開始播放目前播放清單" @@ -4545,7 +4587,7 @@ msgid "" "list" msgstr "" -#: transcoder/transcoder.cpp:405 +#: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" msgstr "標記星號 %1" @@ -4558,7 +4600,7 @@ msgstr "開啟..." msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:652 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" msgstr "停止" @@ -4567,7 +4609,7 @@ msgstr "停止" msgid "Stop after" msgstr "在...之後停止" -#: ui/mainwindow.cpp:492 ../bin/src/ui_mainwindow.h:658 +#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" msgstr "在這首歌之後停止" @@ -4735,7 +4777,7 @@ msgid "" "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2114 +#: ui/mainwindow.cpp:2138 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" @@ -4776,7 +4818,7 @@ msgid "" "continue?" msgstr "這些檔案將從裝置上被移除,你確定你要繼續?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1937 widgets/fileview.cpp:188 +#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,9 +4890,10 @@ msgstr "此串流音樂是只針對付費用戶" msgid "This type of device is not supported: %1" msgstr "這種裝置不被支援: %1" -#: playlist/playlist.cpp:1206 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 +#: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "標題" @@ -4872,11 +4915,11 @@ msgstr "拖曳漂亮的螢幕顯示" msgid "Toggle fullscreen" msgstr "切換全螢幕模式" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1388 msgid "Toggle queue status" msgstr "切換佇列狀態" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" msgstr "切換 scrobbling" @@ -4908,12 +4951,13 @@ msgstr "總傳輸位元組" msgid "Total network requests made" msgstr "總發送網路請求" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 +#: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "歌曲" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" msgstr "音樂轉碼" @@ -5011,7 +5055,7 @@ msgstr "更新 Grooveshark 播放清單" msgid "Update all podcasts" msgstr "更新全部的 podcasts" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" msgstr "更新改變的音樂庫資料夾" @@ -5166,7 +5210,7 @@ msgstr "檢視" msgid "Visualization mode" msgstr "視覺化模式" -#: ../bin/src/ui_mainwindow.h:710 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" msgstr "視覺化" @@ -5294,7 +5338,7 @@ msgid "" "well?" msgstr "" -#: ui/mainwindow.cpp:2119 +#: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" msgstr "您想要立刻執行完整的重新掃描嗎?" @@ -5306,10 +5350,10 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 -#: ../bin/src/ui_trackselectiondialog.h:212 +#: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" msgstr "年份" From 977a6769b27895d4b296aa79151624fa7b863c80 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 27 Jan 2014 15:38:37 +0100 Subject: [PATCH 018/362] Rename SkyDrive to OneDrive. http://blog.onedrive.com/onedrive-for-everything-your-life/ --- src/internet/skydriveservice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index fa66f1566..0de877394 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -13,7 +13,7 @@ using boost::scoped_ptr; namespace { -static const char* kServiceName = "Skydrive"; +static const char* kServiceName = "OneDrive"; static const char* kServiceId = "skydrive"; static const char* kSettingsGroup = "Skydrive"; From 3e46b6134eb9788b9431f4bb5e4cff570bb79a6c Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 27 Jan 2014 16:32:02 +0100 Subject: [PATCH 019/362] Try building on OS X with libc++ (cherry picked from commit 327181ef18fee22e2c05f2e8303efeffdc63cae0) --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08d847bbc..9764981ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,10 @@ if (CMAKE_CXX_COMPILER MATCHES ".*clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized") endif () +if (APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") +endif () + set(CMAKE_REQUIRED_FLAGS "-std=c++0x") check_cxx_source_compiles( "#include From f60327b1d16b169fe6167f9d22951255277a33f8 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Mon, 30 Dec 2013 16:01:02 +0100 Subject: [PATCH 020/362] Initial 'Copy to device' support for podcasts --- src/core/database.cpp | 1 - src/podcasts/podcastservice.cpp | 41 ++++++++++++++++++++++++++++++++- src/podcasts/podcastservice.h | 6 +++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/core/database.cpp b/src/core/database.cpp index 5c6b0203c..2c012f6f4 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -575,7 +575,6 @@ bool Database::CheckErrors(const QSqlQuery& query) { qLog(Error) << "faulty query: " << query.lastQuery(); qLog(Error) << "bound values: " << query.boundValues(); - app_->AddError("LibraryBackend: " + last_error.text()); return true; } diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 9a74fef1b..3975e2d98 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -29,6 +29,11 @@ #include "library/libraryview.h" #include "ui/iconloader.h" #include "ui/standarditemiconloader.h" +#include "ui/organisedialog.h" +#include "ui/organiseerrordialog.h" +#include "devices/devicemanager.h" +#include "devices/devicestatefiltermodel.h" +#include "devices/deviceview.h" #include #include @@ -54,7 +59,8 @@ PodcastService::PodcastService(Application* app, InternetModel* parent) model_(new PodcastServiceModel(this)), proxy_(new PodcastSortProxyModel(this)), context_menu_(NULL), - root_(NULL) + root_(NULL), + organise_dialog_(new OrganiseDialog(app_->task_manager())) { icon_loader_->SetModel(model_); proxy_->setSourceModel(model_); @@ -112,6 +118,31 @@ QStandardItem* PodcastService::CreateRootItem() { return root_; } +void PodcastService::CopyToDeviceSlot() { + QList url_list; + QList episodes; + + foreach (const QModelIndex& index, selected_episodes_) { + episodes << index.data(Role_Episode).value(); + } + + foreach (const QModelIndex& podcast, explicitly_selected_podcasts_) { + for (int i=0 ; irowCount(podcast) ; ++i) { + const QModelIndex& index = podcast.child(i, 0); + episodes << index.data(Role_Episode).value(); + } + } + + foreach (const PodcastEpisode& episode, episodes) { + if(!episode.local_url().isEmpty()) + url_list.append(episode.local_url()); + } + organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetCopy(true); + if (organise_dialog_->SetUrls(url_list)) + organise_dialog_->show(); +} + void PodcastService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: @@ -273,6 +304,9 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { delete_downloaded_action_ = context_menu_->addAction( IconLoader::Load("edit-delete"), tr("Delete downloaded data"), this, SLOT(DeleteDownloadedData())); + copy_to_device_ = context_menu_->addAction( + IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), + this, SLOT(CopyToDeviceSlot())); remove_selected_action_ = context_menu_->addAction( IconLoader::Load("list-remove"), tr("Unsubscribe"), this, SLOT(RemoveSelectedPodcast())); @@ -287,6 +321,11 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { context_menu_->addAction( IconLoader::Load("configure"), tr("Configure podcasts..."), this, SLOT(ShowConfig())); + + copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), + copy_to_device_, SLOT(setDisabled(bool))); + } selected_episodes_.clear(); diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index e52b546f1..099a61459 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -23,12 +23,14 @@ #include "internet/internetservice.h" #include +#include class AddPodcastDialog; class Podcast; class PodcastBackend; class PodcastEpisode; class StandardItemIconLoader; +class OrganiseDialog; class QSortFilterProxyModel; @@ -86,6 +88,8 @@ private slots: int percent); void CurrentSongChanged(const Song& metadata); + + void CopyToDeviceSlot(); private: void EnsureAddPodcastDialogCreated(); @@ -130,7 +134,9 @@ private: QAction* delete_downloaded_action_; QAction* set_new_action_; QAction* set_listened_action_; + QAction* copy_to_device_; QStandardItem* root_; + boost::scoped_ptr organise_dialog_; QModelIndexList explicitly_selected_podcasts_; QModelIndexList selected_podcasts_; From 01635397d4fde557022fb1a64c2c3ed2374cad2b Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Wed, 1 Jan 2014 18:23:52 +0100 Subject: [PATCH 021/362] Fixed podcast copy to device --- src/podcasts/podcastbackend.cpp | 23 +++++++++++++++++++++++ src/podcasts/podcastbackend.h | 2 +- src/podcasts/podcastepisode.cpp | 4 +++- src/podcasts/podcastservice.cpp | 22 +++++++++++++++------- 4 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index f87eb8de3..49c1bb2c0 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -313,3 +313,26 @@ PodcastEpisodeList PodcastBackend::GetOldDownloadedEpisodes(const QDateTime& max return ret; } + +PodcastEpisodeList PodcastBackend::GetNewDownloadedEpisodes() { + PodcastEpisodeList ret; + + QMutexLocker l(db_->Mutex()); + QSqlDatabase db(db_->Connect()); + + QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + + " FROM podcast_episodes" + " WHERE downloaded = 'true'" + " AND listened = 'false'", db); + q.exec(); + if (db_->CheckErrors(q)) + return ret; + + while (q.next()) { + PodcastEpisode episode; + episode.InitFromQuery(q); + ret << episode; + } + + return ret; +} diff --git a/src/podcasts/podcastbackend.h b/src/podcasts/podcastbackend.h index f09f4742b..ff3e1fbef 100644 --- a/src/podcasts/podcastbackend.h +++ b/src/podcasts/podcastbackend.h @@ -59,7 +59,7 @@ public: // last listened to before the given QDateTime. This query is NOT indexed so // it involves a full search of the table. PodcastEpisodeList GetOldDownloadedEpisodes(const QDateTime& max_listened_date); - + PodcastEpisodeList GetNewDownloadedEpisodes(); // Adds episodes to the database. Every episode must have a valid // podcast_database_id set already. void AddEpisodes(PodcastEpisodeList* episodes); diff --git a/src/podcasts/podcastepisode.cpp b/src/podcasts/podcastepisode.cpp index a049ec1df..42eda0c90 100644 --- a/src/podcasts/podcastepisode.cpp +++ b/src/podcasts/podcastepisode.cpp @@ -174,7 +174,9 @@ Song PodcastEpisode::ToSong(const Podcast& podcast) const { if (podcast.is_valid()) { ret.set_album(podcast.title().simplified()); ret.set_art_automatic(podcast.ImageUrlLarge().toString()); + + if (author().isNull() || author().isEmpty()) + ret.set_artist(podcast.title().simplified()); } - return ret; } diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 3975e2d98..55abda99a 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -119,27 +119,35 @@ QStandardItem* PodcastService::CreateRootItem() { } void PodcastService::CopyToDeviceSlot() { - QList url_list; QList episodes; - + QList songs; + PodcastEpisode episode_tmp; + Podcast podcast; foreach (const QModelIndex& index, selected_episodes_) { - episodes << index.data(Role_Episode).value(); + episode_tmp = index.data(Role_Episode).value(); + if (episode_tmp.downloaded()) + episodes << episode_tmp; } foreach (const QModelIndex& podcast, explicitly_selected_podcasts_) { for (int i=0 ; irowCount(podcast) ; ++i) { const QModelIndex& index = podcast.child(i, 0); - episodes << index.data(Role_Episode).value(); + episode_tmp = index.data(Role_Episode).value(); + if (episode_tmp.downloaded()) + episodes << episode_tmp; } } + if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { + episodes << backend_->GetNewDownloadedEpisodes(); + } foreach (const PodcastEpisode& episode, episodes) { - if(!episode.local_url().isEmpty()) - url_list.append(episode.local_url()); + podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); + songs.append(episode.ToSong(podcast)); } organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); - if (organise_dialog_->SetUrls(url_list)) + if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } From 3e27cdf7492775ddd1d1ca10197b1f359c3f375b Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Thu, 2 Jan 2014 07:43:55 +0100 Subject: [PATCH 022/362] Some minor fixes --- src/podcasts/podcastservice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 55abda99a..5cb53e51b 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -138,8 +138,8 @@ void PodcastService::CopyToDeviceSlot() { } } if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { - episodes << backend_->GetNewDownloadedEpisodes(); - } + episodes << backend_->GetNewDownloadedEpisodes(); + } foreach (const PodcastEpisode& episode, episodes) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); From 750354d8ca18bb63a178b50bcdb1d7f8eed44da7 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Thu, 2 Jan 2014 07:45:31 +0100 Subject: [PATCH 023/362] Clementine, don't lie to me --- src/ui/organisedialog.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index bb786115e..6de165c94 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -32,7 +32,6 @@ #include #include -const int OrganiseDialog::kNumberOfPreviews = 10; const char* OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%title.%extension"; const char* OrganiseDialog::kSettingsGroup = "OrganiseDialog"; @@ -119,8 +118,7 @@ int OrganiseDialog::SetSongs(const SongList& songs) { total_size_ += song.filesize(); filenames_ << song.url().toLocalFile(); - if (preview_songs_.count() < kNumberOfPreviews) - preview_songs_ << song; + preview_songs_ << song; } ui_->free_space->set_additional_bytes(total_size_); @@ -147,7 +145,7 @@ int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_siz preview_songs_.clear(); // Load some of the songs to show in the preview - const int n = qMin(filenames_.count(), kNumberOfPreviews); + const int n = filenames_.count(); for (int i=0 ; i= kNumberOfPreviews) - return; if (QFileInfo(filename).isDir()) { QDir dir(filename); From b6c59bd4ca4c1f35f6f2b9aed35ad9b025441d47 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Thu, 2 Jan 2014 07:52:03 +0100 Subject: [PATCH 024/362] Fix whitespaces, Fix whitespaces, Fix whitespaces --- src/podcasts/podcastepisode.cpp | 2 +- src/podcasts/podcastservice.cpp | 4 ++-- src/podcasts/podcastservice.h | 2 +- src/ui/organisedialog.h | 1 - 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/podcasts/podcastepisode.cpp b/src/podcasts/podcastepisode.cpp index 42eda0c90..1b8f402d7 100644 --- a/src/podcasts/podcastepisode.cpp +++ b/src/podcasts/podcastepisode.cpp @@ -174,7 +174,7 @@ Song PodcastEpisode::ToSong(const Podcast& podcast) const { if (podcast.is_valid()) { ret.set_album(podcast.title().simplified()); ret.set_art_automatic(podcast.ImageUrlLarge().toString()); - + if (author().isNull() || author().isEmpty()) ret.set_artist(podcast.title().simplified()); } diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 5cb53e51b..0a48d2e28 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -128,7 +128,7 @@ void PodcastService::CopyToDeviceSlot() { if (episode_tmp.downloaded()) episodes << episode_tmp; } - + foreach (const QModelIndex& podcast, explicitly_selected_podcasts_) { for (int i=0 ; irowCount(podcast) ; ++i) { const QModelIndex& index = podcast.child(i, 0); @@ -313,7 +313,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { IconLoader::Load("edit-delete"), tr("Delete downloaded data"), this, SLOT(DeleteDownloadedData())); copy_to_device_ = context_menu_->addAction( - IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), + IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(CopyToDeviceSlot())); remove_selected_action_ = context_menu_->addAction( IconLoader::Load("list-remove"), tr("Unsubscribe"), diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 099a61459..d71f50040 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -88,7 +88,7 @@ private slots: int percent); void CurrentSongChanged(const Song& metadata); - + void CopyToDeviceSlot(); private: diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index 30b6dfba1..8d335958c 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -41,7 +41,6 @@ public: OrganiseDialog(TaskManager* task_manager, QWidget* parent = 0); ~OrganiseDialog(); - static const int kNumberOfPreviews; static const char* kDefaultFormat; static const char* kSettingsGroup; From 45ace04b29f7eb4c90fed71886e3e24555c74178 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 7 Jan 2014 23:17:59 +0100 Subject: [PATCH 025/362] More intuitive interface --- src/podcasts/podcastbackend.h | 1 + src/podcasts/podcastservice.cpp | 69 ++++++++++++++++++++++++++------- src/podcasts/podcastservice.h | 7 +++- 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/src/podcasts/podcastbackend.h b/src/podcasts/podcastbackend.h index ff3e1fbef..bd6e85ba8 100644 --- a/src/podcasts/podcastbackend.h +++ b/src/podcasts/podcastbackend.h @@ -60,6 +60,7 @@ public: // it involves a full search of the table. PodcastEpisodeList GetOldDownloadedEpisodes(const QDateTime& max_listened_date); PodcastEpisodeList GetNewDownloadedEpisodes(); + // Adds episodes to the database. Every episode must have a valid // podcast_database_id set already. void AddEpisodes(PodcastEpisodeList* episodes); diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 0a48d2e28..c809a5232 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -119,17 +119,41 @@ QStandardItem* PodcastService::CreateRootItem() { } void PodcastService::CopyToDeviceSlot() { - QList episodes; + if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { + CopyToDeviceSlot(backend_->GetNewDownloadedEpisodes()); + } + else { + CopyToDeviceSlot(selected_episodes_, explicitly_selected_podcasts_); + } +} + +void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { QList songs; - PodcastEpisode episode_tmp; Podcast podcast; - foreach (const QModelIndex& index, selected_episodes_) { + foreach (const PodcastEpisode& episode, episodes_list) { + podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); + songs.append(episode.ToSong(podcast)); + } + + organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetCopy(true); + if (organise_dialog_->SetSongs(songs)) + organise_dialog_->show(); +} + +void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, + const QModelIndexList& podcast_indexes) { + PodcastEpisode episode_tmp; + QList songs; + PodcastEpisodeList episodes; + Podcast podcast; + foreach (const QModelIndex& index, episode_indexes) { episode_tmp = index.data(Role_Episode).value(); if (episode_tmp.downloaded()) episodes << episode_tmp; } - foreach (const QModelIndex& podcast, explicitly_selected_podcasts_) { + foreach (const QModelIndex& podcast, podcast_indexes) { for (int i=0 ; irowCount(podcast) ; ++i) { const QModelIndex& index = podcast.child(i, 0); episode_tmp = index.data(Role_Episode).value(); @@ -137,18 +161,15 @@ void PodcastService::CopyToDeviceSlot() { episodes << episode_tmp; } } - if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { - episodes << backend_->GetNewDownloadedEpisodes(); - } - foreach (const PodcastEpisode& episode, episodes) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); - organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + + organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetCopy(true); + if (organise_dialog_->SetSongs(songs)) + organise_dialog_->show(); } void PodcastService::LazyPopulate(QStandardItem* parent) { @@ -393,6 +414,11 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { delete_downloaded_action_->setEnabled(episodes); } + if (explicitly_selected_podcasts_.isEmpty() && selected_episodes_.isEmpty()) { + PodcastEpisodeList epis = backend_->GetNewDownloadedEpisodes(); + set_listened_action_->setEnabled(!epis.isEmpty()); + } + if (selected_episodes_.count() > 1) { download_selected_action_->setText(tr("Download %n episodes", "", selected_episodes_.count())); } else { @@ -573,7 +599,24 @@ void PodcastService::SetNew() { } void PodcastService::SetListened() { - SetListened(selected_episodes_, explicitly_selected_podcasts_, true); + if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) + SetListened(backend_->GetNewDownloadedEpisodes(), true); + else + SetListened(selected_episodes_, explicitly_selected_podcasts_, true); +} + +void PodcastService::SetListened(PodcastEpisodeList episodes_list, + bool listened) { + QDateTime current_date_time = QDateTime::currentDateTime(); + for (int i=0 ; iset_listened(listened); + if (listened) { + episode->set_listened_date(current_date_time); + } + } + + backend_->UpdateEpisodes(episodes_list); } void PodcastService::SetListened(const QModelIndexList& episode_indexes, diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index d71f50040..1a6ef35a7 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -90,6 +90,9 @@ private slots: void CurrentSongChanged(const Song& metadata); void CopyToDeviceSlot(); + void CopyToDeviceSlot(const PodcastEpisodeList& episodes_list); + void CopyToDeviceSlot(const QModelIndexList& episode_indexes, + const QModelIndexList& podcast_indexes); private: void EnsureAddPodcastDialogCreated(); @@ -108,7 +111,9 @@ private: void SetListened(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes, bool listened); - + void SetListened(PodcastEpisodeList episodes_list, + bool listened); + void LazyLoadRoot(); private: From 4944e99d561f872474b001ce5ab96027aabec573 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Mon, 20 Jan 2014 17:25:12 +0100 Subject: [PATCH 026/362] Fix copy functionality, break copy of a directory --- src/core/organise.cpp | 36 +++++++++++------------ src/core/organise.h | 8 ++--- src/ui/organisedialog.cpp | 61 ++++++++++++--------------------------- src/ui/organisedialog.h | 4 +-- 4 files changed, 42 insertions(+), 67 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 39de12916..3630dc810 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -35,7 +35,7 @@ const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, boost::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, - const QStringList& files, bool eject_after) + const SongList& songs, bool eject_after) : thread_(NULL), task_manager_(task_manager), transcoder_(new Transcoder(this)), @@ -44,7 +44,7 @@ Organise::Organise(TaskManager* task_manager, copy_(copy), overwrite_(overwrite), eject_after_(eject_after), - task_count_(files.count()), + task_count_(songs.count()), transcode_suffix_(1), tasks_complete_(0), started_(false), @@ -53,8 +53,8 @@ Organise::Organise(TaskManager* task_manager, { original_thread_ = thread(); - foreach (const QString& filename, files) { - tasks_pending_ << Task(filename); + foreach (const Song& song, songs) { + tasks_pending_ << Task(song); } } @@ -80,7 +80,7 @@ void Organise::ProcessSomeFiles() { if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( foreach (const Task& task, tasks_pending_) - files_with_errors_ << task.filename_; + files_with_errors_ << task.song_.url().toLocalFile(); tasks_pending_.clear(); } started_ = true; @@ -123,22 +123,22 @@ void Organise::ProcessSomeFiles() { break; Task task = tasks_pending_.takeFirst(); - qLog(Info) << "Processing" << task.filename_; - + qLog(Info) << "Processing" << task.song_.url().toLocalFile(); // Is it a directory? - if (QFileInfo(task.filename_).isDir()) { - QDir dir(task.filename_); + if (QFileInfo(task.song_.url().toLocalFile()).isDir()) { + QDir dir(task.song_.url().toLocalFile()); foreach (const QString& entry, dir.entryList( QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot | QDir::Readable)) { - tasks_pending_ << Task(task.filename_ + "/" + entry); + Song song_tmp; + TagReaderClient::Instance()->ReadFileBlocking(task.song_.url().toLocalFile() + "/" + entry, &song_tmp); + tasks_pending_ << Task(song_tmp); task_count_ ++; } continue; } - // Read metadata from the file - Song song; - TagReaderClient::Instance()->ReadFileBlocking(task.filename_, &song); + //Use a Song instead of a tag reader + Song song = task.song_; if (!song.is_valid()) continue; @@ -150,7 +150,7 @@ void Organise::ProcessSomeFiles() { song.set_filetype(task.new_filetype_); // Fiddle the filename extension as well to match the new type - song.set_url(QUrl::fromLocalFile(FiddleFileExtension(song.url().toLocalFile(), task.new_extension_))); + song.set_url(QUrl::fromLocalFile(FiddleFileExtension(song.basefilename(), task.new_extension_))); song.set_basefilename(FiddleFileExtension(song.basefilename(), task.new_extension_)); // Have to set this to the size of the new file or else funny stuff happens @@ -168,14 +168,14 @@ void Organise::ProcessSomeFiles() { QString::number(transcode_suffix_++); task.new_extension_ = preset.extension_; task.new_filetype_ = dest_type; - tasks_transcoding_[task.filename_] = task; + tasks_transcoding_[task.song_.url().toLocalFile()] = task; qLog(Debug) << "Transcoding to" << task.transcoded_filename_; // Start the transcoding - this will happen in the background and // FileTranscoded() will get called when it's done. At that point the // task will get re-added to the pending queue with the new filename. - transcoder_->AddJob(task.filename_, preset, task.transcoded_filename_); + transcoder_->AddJob(task.song_.url().toLocalFile(), preset, task.transcoded_filename_); transcoder_->Start(); continue; } @@ -183,7 +183,7 @@ void Organise::ProcessSomeFiles() { MusicStorage::CopyJob job; job.source_ = task.transcoded_filename_.isEmpty() ? - task.filename_ : task.transcoded_filename_; + task.song_.url().toLocalFile() : task.transcoded_filename_; job.destination_ = format_.GetFilenameForSong(song); job.metadata_ = song; job.overwrite_ = overwrite_; @@ -192,7 +192,7 @@ void Organise::ProcessSomeFiles() { this, _1, !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { - files_with_errors_ << task.filename_; + files_with_errors_ << task.song_.basefilename(); } // Clean up the temporary transcoded file diff --git a/src/core/organise.h b/src/core/organise.h index a45374c42..bb675b830 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -37,7 +37,7 @@ public: Organise(TaskManager* task_manager, boost::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, - const QStringList& files, bool eject_after); + const SongList& songs, bool eject_after); static const int kBatchSize; static const int kTranscodeProgressInterval; @@ -63,10 +63,10 @@ private: private: struct Task { - explicit Task(const QString& filename = QString()) - : filename_(filename), transcode_progress_(0.0) {} + explicit Task(const Song& song = Song()) + : song_(song), transcode_progress_(0.0) {} - QString filename_; + Song song_; float transcode_progress_; QString transcoded_filename_; diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 6de165c94..5f5e47092 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -106,8 +106,7 @@ void OrganiseDialog::SetDestinationModel(QAbstractItemModel *model, bool devices int OrganiseDialog::SetSongs(const SongList& songs) { total_size_ = 0; - filenames_.clear(); - preview_songs_.clear(); + songs_.clear(); foreach (const Song& song, songs) { if (song.url().scheme() != "file") { @@ -116,65 +115,43 @@ int OrganiseDialog::SetSongs(const SongList& songs) { if (song.filesize() > 0) total_size_ += song.filesize(); - filenames_ << song.url().toLocalFile(); - preview_songs_ << song; + songs_ << song; } ui_->free_space->set_additional_bytes(total_size_); UpdatePreviews(); - return filenames_.count(); + return songs_.count(); } int OrganiseDialog::SetUrls(const QList &urls, quint64 total_size) { - QStringList filenames; + SongList songs; + Song song; // Only add file:// URLs foreach (const QUrl& url, urls) { if (url.scheme() != "file") continue; - filenames << url.toLocalFile(); + TagReaderClient::Instance()->ReadFileBlocking(url.toLocalFile(), &song); + if (song.is_valid()) + songs << song; } - return SetFilenames(filenames, total_size); + return SetSongs(songs); } int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_size) { - filenames_ = filenames; - preview_songs_.clear(); + SongList songs; + Song song; // Load some of the songs to show in the preview - const int n = filenames_.count(); - for (int i=0 ; iReadFileBlocking(song.basefilename(), &song); + if (song.is_valid()) + songs << song; } - - ui_->free_space->set_additional_bytes(total_size); - total_size_ = total_size; - - UpdatePreviews(); - - return filenames_.count(); -} - -void OrganiseDialog::LoadPreviewSongs(const QString& filename) { - - if (QFileInfo(filename).isDir()) { - QDir dir(filename); - QStringList entries = dir.entryList( - QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot | QDir::Readable); - foreach (const QString& entry, entries) { - LoadPreviewSongs(filename + "/" + entry); - } - return; - } - - Song song; - TagReaderClient::Instance()->ReadFileBlocking(filename, &song); - - if (song.is_valid()) - preview_songs_ << song; + return SetSongs(songs); } void OrganiseDialog::SetCopy(bool copy) { @@ -220,7 +197,7 @@ void OrganiseDialog::UpdatePreviews() { const bool format_valid = !has_local_destination || format_.IsValid(); // Are we gonna enable the ok button? - bool ok = format_valid && !filenames_.isEmpty(); + bool ok = format_valid && !songs_.isEmpty(); if (capacity != 0 && total_size_ > free) ok = false; @@ -233,7 +210,7 @@ void OrganiseDialog::UpdatePreviews() { ui_->preview_group->setVisible(has_local_destination); ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { - foreach (const Song& song, preview_songs_) { + foreach (const Song& song, songs_) { QString filename = storage->LocalPath() + "/" + format_.GetFilenameForSong(song); ui_->preview->addItem(QDir::toNativeSeparators(filename)); @@ -301,7 +278,7 @@ void OrganiseDialog::accept() { const bool copy = ui_->aftercopying->currentIndex() == 0; Organise* organise = new Organise( task_manager_, storage, format_, copy, ui_->overwrite->isChecked(), - filenames_, ui_->eject_after->isChecked()); + songs_, ui_->eject_after->isChecked()); connect(organise, SIGNAL(Finished(QStringList)), SLOT(OrganiseFinished(QStringList))); organise->Start(); diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index 8d335958c..48ff86454 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -64,7 +64,6 @@ private slots: void Reset(); void InsertTag(const QString& tag); - void LoadPreviewSongs(const QString& filename); void UpdatePreviews(); void OrganiseFinished(const QStringList& files_with_errors); @@ -75,8 +74,7 @@ private: OrganiseFormat format_; - QStringList filenames_; - SongList preview_songs_; + SongList songs_; quint64 total_size_; boost::scoped_ptr error_dialog_; From 35060d6916f7d0897380bc9225862186e57a96fe Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Mon, 20 Jan 2014 20:58:04 +0100 Subject: [PATCH 027/362] I accidently break this, nothing to see here --- src/core/organise.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 3630dc810..921de45ab 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -124,18 +124,6 @@ void Organise::ProcessSomeFiles() { Task task = tasks_pending_.takeFirst(); qLog(Info) << "Processing" << task.song_.url().toLocalFile(); - // Is it a directory? - if (QFileInfo(task.song_.url().toLocalFile()).isDir()) { - QDir dir(task.song_.url().toLocalFile()); - foreach (const QString& entry, dir.entryList( - QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot | QDir::Readable)) { - Song song_tmp; - TagReaderClient::Instance()->ReadFileBlocking(task.song_.url().toLocalFile() + "/" + entry, &song_tmp); - tasks_pending_ << Task(song_tmp); - task_count_ ++; - } - continue; - } //Use a Song instead of a tag reader Song song = task.song_; From 081f4f721af83752e20a6c4b2193a421759a76e3 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Fri, 24 Jan 2014 00:47:24 +0100 Subject: [PATCH 028/362] Introduce an intuitive behaviour in podcasts menu --- src/podcasts/podcastservice.cpp | 27 +++++++++++++++++++++++++++ src/podcasts/podcastservice.h | 1 + 2 files changed, 28 insertions(+) diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index c809a5232..c7c448e28 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -122,6 +122,9 @@ void PodcastService::CopyToDeviceSlot() { if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { CopyToDeviceSlot(backend_->GetNewDownloadedEpisodes()); } + else if(selected_episodes_.isEmpty() && !explicitly_selected_podcasts_.isEmpty()) { + CopyToDeviceSlot(explicitly_selected_podcasts_); + } else { CopyToDeviceSlot(selected_episodes_, explicitly_selected_podcasts_); } @@ -171,6 +174,30 @@ void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } +void PodcastService::CopyToDeviceSlot(const QModelIndexList& podcast_indexes) { + PodcastEpisode episode_tmp; + QList songs; + PodcastEpisodeList episodes; + Podcast podcast; + foreach (const QModelIndex& podcast, podcast_indexes) { + for (int i=0 ; irowCount(podcast) ; ++i) { + const QModelIndex& index = podcast.child(i, 0); + episode_tmp = index.data(Role_Episode).value(); + if (episode_tmp.downloaded() && !episode_tmp.listened()) + episodes << episode_tmp; + } + } + foreach (const PodcastEpisode& episode, episodes) { + podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); + songs.append(episode.ToSong(podcast)); + } + + organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetCopy(true); + if (organise_dialog_->SetSongs(songs)) + organise_dialog_->show(); +} + void PodcastService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 1a6ef35a7..1d0583ec7 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -93,6 +93,7 @@ private slots: void CopyToDeviceSlot(const PodcastEpisodeList& episodes_list); void CopyToDeviceSlot(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes); + void CopyToDeviceSlot(const QModelIndexList& podcast_indexes); private: void EnsureAddPodcastDialogCreated(); From c3e693a785827d041f758c3b4e6623ddc27b6419 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Fri, 24 Jan 2014 01:04:15 +0100 Subject: [PATCH 029/362] Whitespaces after if --- src/podcasts/podcastservice.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index c7c448e28..9deff3444 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -119,10 +119,10 @@ QStandardItem* PodcastService::CreateRootItem() { } void PodcastService::CopyToDeviceSlot() { - if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { + if (selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { CopyToDeviceSlot(backend_->GetNewDownloadedEpisodes()); } - else if(selected_episodes_.isEmpty() && !explicitly_selected_podcasts_.isEmpty()) { + else if (selected_episodes_.isEmpty() && !explicitly_selected_podcasts_.isEmpty()) { CopyToDeviceSlot(explicitly_selected_podcasts_); } else { @@ -626,7 +626,7 @@ void PodcastService::SetNew() { } void PodcastService::SetListened() { - if(selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) + if (selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) SetListened(backend_->GetNewDownloadedEpisodes(), true); else SetListened(selected_episodes_, explicitly_selected_podcasts_, true); From f7be18b32678116c5be7244fdb381e8f4b22827d Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Sat, 25 Jan 2014 10:28:46 +0100 Subject: [PATCH 030/362] Fixed some problems reported by cpplint.py, changed foreach to for in files touched by me --- src/core/organise.cpp | 22 +++--- src/podcasts/podcastservice.cpp | 119 ++++++++++++-------------------- src/podcasts/podcastservice.h | 3 +- src/ui/organisedialog.cpp | 12 ++-- 4 files changed, 63 insertions(+), 93 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 921de45ab..76fe82192 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -53,7 +53,7 @@ Organise::Organise(TaskManager* task_manager, { original_thread_ = thread(); - foreach (const Song& song, songs) { + for (const Song& song : songs) { tasks_pending_ << Task(song); } } @@ -67,7 +67,7 @@ void Organise::Start() { thread_ = new QThread; connect(thread_, SIGNAL(started()), SLOT(ProcessSomeFiles())); - connect(transcoder_, SIGNAL(JobComplete(QString,bool)), SLOT(FileTranscoded(QString,bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), SLOT(FileTranscoded(QString, bool))); moveToThread(thread_); thread_->start(); @@ -79,7 +79,7 @@ void Organise::ProcessSomeFiles() { if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( - foreach (const Task& task, tasks_pending_) + for (const Task& task : tasks_pending_) files_with_errors_ << task.song_.url().toLocalFile(); tasks_pending_.clear(); } @@ -116,7 +116,7 @@ void Organise::ProcessSomeFiles() { } // We process files in batches so we can be cancelled part-way through. - for (int i=0 ; i(progress * max), max-1); UpdateProgress(); } @@ -237,7 +237,7 @@ void Organise::UpdateProgress() { // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); - foreach (const QString& filename, transcode_progress.keys()) { + for (const QString& filename : transcode_progress.keys()) { if (!tasks_transcoding_.contains(filename)) continue; tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; @@ -248,11 +248,11 @@ void Organise::UpdateProgress() { // only need to be copied total 100. int progress = tasks_complete_ * 100; - foreach (const Task& task, tasks_pending_) { - progress += qBound(0, int(task.transcode_progress_ * 50), 50); + for (const Task& task : tasks_pending_) { + progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } - foreach (const Task& task, tasks_transcoding_.values()) { - progress += qBound(0, int(task.transcode_progress_ * 50), 50); + for (const Task& task : tasks_transcoding_.values()) { + progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } // Add the progress of the track that's currently copying diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 9deff3444..5b53a89bc 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -25,15 +25,15 @@ #include "core/application.h" #include "core/logging.h" #include "core/mergedproxymodel.h" -#include "internet/internetmodel.h" -#include "library/libraryview.h" -#include "ui/iconloader.h" -#include "ui/standarditemiconloader.h" -#include "ui/organisedialog.h" -#include "ui/organiseerrordialog.h" #include "devices/devicemanager.h" #include "devices/devicestatefiltermodel.h" #include "devices/deviceview.h" +#include "internet/internetmodel.h" +#include "library/libraryview.h" +#include "ui/iconloader.h" +#include "ui/organisedialog.h" +#include "ui/organiseerrordialog.h" +#include "ui/standarditemiconloader.h" #include #include @@ -121,11 +121,7 @@ QStandardItem* PodcastService::CreateRootItem() { void PodcastService::CopyToDeviceSlot() { if (selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { CopyToDeviceSlot(backend_->GetNewDownloadedEpisodes()); - } - else if (selected_episodes_.isEmpty() && !explicitly_selected_podcasts_.isEmpty()) { - CopyToDeviceSlot(explicitly_selected_podcasts_); - } - else { + } else { CopyToDeviceSlot(selected_episodes_, explicitly_selected_podcasts_); } } @@ -133,7 +129,7 @@ void PodcastService::CopyToDeviceSlot() { void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { QList songs; Podcast podcast; - foreach (const PodcastEpisode& episode, episodes_list) { + for (const PodcastEpisode& episode : episodes_list) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } @@ -145,60 +141,36 @@ void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { } void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes) { + const QModelIndexList& podcast_indexes) { PodcastEpisode episode_tmp; QList songs; PodcastEpisodeList episodes; Podcast podcast; - foreach (const QModelIndex& index, episode_indexes) { + for (const QModelIndex& index : episode_indexes) { episode_tmp = index.data(Role_Episode).value(); if (episode_tmp.downloaded()) episodes << episode_tmp; } - foreach (const QModelIndex& podcast, podcast_indexes) { - for (int i=0 ; irowCount(podcast) ; ++i) { - const QModelIndex& index = podcast.child(i, 0); - episode_tmp = index.data(Role_Episode).value(); - if (episode_tmp.downloaded()) - episodes << episode_tmp; - } - } - foreach (const PodcastEpisode& episode, episodes) { - podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); - songs.append(episode.ToSong(podcast)); - } - - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); - organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); -} -void PodcastService::CopyToDeviceSlot(const QModelIndexList& podcast_indexes) { - PodcastEpisode episode_tmp; - QList songs; - PodcastEpisodeList episodes; - Podcast podcast; - foreach (const QModelIndex& podcast, podcast_indexes) { - for (int i=0 ; irowCount(podcast) ; ++i) { + for (const QModelIndex& podcast : podcast_indexes) { + for (int i = 0; i < podcast.model()->rowCount(podcast); ++i) { const QModelIndex& index = podcast.child(i, 0); episode_tmp = index.data(Role_Episode).value(); if (episode_tmp.downloaded() && !episode_tmp.listened()) - episodes << episode_tmp; + episodes << episode_tmp; } } - foreach (const PodcastEpisode& episode, episodes) { + for (const PodcastEpisode& episode : episodes) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); - organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetCopy(true); + if (organise_dialog_->SetSongs(songs)) + organise_dialog_->show(); } - void PodcastService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: @@ -211,14 +183,14 @@ void PodcastService::LazyPopulate(QStandardItem* parent) { void PodcastService::PopulatePodcastList(QStandardItem* parent) { // Do this here since the downloader won't be created yet in the ctor. connect(app_->podcast_downloader(), - SIGNAL(ProgressChanged(PodcastEpisode,PodcastDownloader::State,int)), - SLOT(DownloadProgressChanged(PodcastEpisode,PodcastDownloader::State,int))); + SIGNAL(ProgressChanged(PodcastEpisode, PodcastDownloader::State, int)), + SLOT(DownloadProgressChanged(PodcastEpisode, PodcastDownloader::State, int))); if (default_icon_.isNull()) { default_icon_ = QIcon(":providers/podcast16.png"); } - foreach (const Podcast& podcast, backend_->GetAllSubscriptions()) { + for (const Podcast& podcast : backend_->GetAllSubscriptions()) { parent->appendRow(CreatePodcastItem(podcast)); } } @@ -298,9 +270,9 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { // Add the episodes in this podcast and gather aggregate stats. int unlistened_count = 0; - foreach (const PodcastEpisode& episode, backend_->GetEpisodes(podcast.database_id())) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast.database_id())) { if (!episode.listened()) { - unlistened_count ++; + unlistened_count++; } item->appendRow(CreatePodcastEpisodeItem(episode)); @@ -346,7 +318,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { context_menu_->addAction( IconLoader::Load("view-refresh"), tr("Update all podcasts"), app_->podcast_updater(), SLOT(UpdateAllPodcastsNow())); - + context_menu_->addSeparator(); context_menu_->addActions(GetPlaylistActions()); @@ -361,7 +333,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { IconLoader::Load("edit-delete"), tr("Delete downloaded data"), this, SLOT(DeleteDownloadedData())); copy_to_device_ = context_menu_->addAction( - IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), + IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(CopyToDeviceSlot())); remove_selected_action_ = context_menu_->addAction( IconLoader::Load("list-remove"), tr("Unsubscribe"), @@ -381,7 +353,6 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), copy_to_device_, SLOT(setDisabled(bool))); - } selected_episodes_.clear(); @@ -389,7 +360,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { explicitly_selected_podcasts_.clear(); QSet podcast_ids; - foreach (const QModelIndex& index, model()->selected_indexes()) { + for (const QModelIndex& index : model()->selected_indexes()) { switch (index.data(InternetModel::Role_Type).toInt()) { case Type_Podcast: { const int id = index.data(Role_Podcast).value().database_id(); @@ -451,7 +422,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } else { download_selected_action_->setText(tr("Download this episode")); } - + GetAppendToPlaylistAction()->setEnabled(episodes || podcasts); GetReplacePlaylistAction()->setEnabled(episodes || podcasts); GetOpenInNewPlaylistAction()->setEnabled(episodes || podcasts); @@ -460,14 +431,14 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } void PodcastService::UpdateSelectedPodcast() { - foreach (const QModelIndex& index, selected_podcasts_) { + for (const QModelIndex& index : selected_podcasts_) { app_->podcast_updater()->UpdatePodcastNow( index.data(Role_Podcast).value()); } } void PodcastService::RemoveSelectedPodcast() { - foreach (const QModelIndex& index, selected_podcasts_) { + for (const QModelIndex& index : selected_podcasts_) { backend_->Unsubscribe(index.data(Role_Podcast).value()); } } @@ -494,7 +465,7 @@ void PodcastService::AddPodcast() { void PodcastService::SubscriptionAdded(const Podcast& podcast) { // Ensure the root item is lazy loaded already LazyLoadRoot(); - + // The podcast might already be in the list - maybe the LazyLoadRoot() above // added it. QStandardItem* item = podcasts_by_database_id_[podcast.database_id()]; @@ -510,7 +481,7 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { QStandardItem* item = podcasts_by_database_id_.take(podcast.database_id()); if (item) { // Remove any episode ID -> item mappings for the episodes in this podcast. - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < item->rowCount(); ++i) { QStandardItem* episode_item = item->child(i); const int episode_id = episode_item->data(Role_Episode).value().database_id(); @@ -526,7 +497,7 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { void PodcastService::EpisodesAdded(const QList& episodes) { QSet seen_podcast_ids; - foreach (const PodcastEpisode& episode, episodes) { + for (const PodcastEpisode& episode : episodes) { const int database_id = episode.podcast_database_id(); QStandardItem* parent = podcasts_by_database_id_[database_id]; if (!parent) @@ -537,9 +508,9 @@ void PodcastService::EpisodesAdded(const QList& episodes) { if (!seen_podcast_ids.contains(database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - foreach (const PodcastEpisode& episode, backend_->GetEpisodes(database_id)) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(database_id)) { if (!episode.listened()) { - unlistened_count ++; + unlistened_count++; } } @@ -552,7 +523,7 @@ void PodcastService::EpisodesAdded(const QList& episodes) { void PodcastService::EpisodesUpdated(const QList& episodes) { QSet seen_podcast_ids; - foreach (const PodcastEpisode& episode, episodes) { + for (const PodcastEpisode& episode : episodes) { const int podcast_database_id = episode.podcast_database_id(); QStandardItem* item = episodes_by_database_id_[episode.database_id()]; QStandardItem* parent = podcasts_by_database_id_[podcast_database_id]; @@ -567,9 +538,9 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { if (!seen_podcast_ids.contains(podcast_database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - foreach (const PodcastEpisode& episode, backend_->GetEpisodes(podcast_database_id)) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast_database_id)) { if (!episode.listened()) { - unlistened_count ++; + unlistened_count++; } } @@ -580,14 +551,14 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { } void PodcastService::DownloadSelectedEpisode() { - foreach (const QModelIndex& index, selected_episodes_) { + for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DownloadEpisode( index.data(Role_Episode).value()); } } void PodcastService::DeleteDownloadedData() { - foreach (const QModelIndex& index, selected_episodes_) { + for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DeleteEpisode( index.data(Role_Episode).value()); } @@ -633,9 +604,9 @@ void PodcastService::SetListened() { } void PodcastService::SetListened(PodcastEpisodeList episodes_list, - bool listened) { + bool listened) { QDateTime current_date_time = QDateTime::currentDateTime(); - for (int i=0 ; iset_listened(listened); if (listened) { @@ -652,12 +623,12 @@ void PodcastService::SetListened(const QModelIndexList& episode_indexes, PodcastEpisodeList episodes; // Get all the episodes from the indexes. - foreach (const QModelIndex& index, episode_indexes) { + for (const QModelIndex& index : episode_indexes) { episodes << index.data(Role_Episode).value(); } - foreach (const QModelIndex& podcast, podcast_indexes) { - for (int i=0 ; irowCount(podcast) ; ++i) { + for (const QModelIndex& podcast : podcast_indexes) { + for (int i = 0; i < podcast.model()->rowCount(podcast); ++i) { const QModelIndex& index = podcast.child(i, 0); episodes << index.data(Role_Episode).value(); } @@ -665,7 +636,7 @@ void PodcastService::SetListened(const QModelIndexList& episode_indexes, // Update each one with the new state and maybe the listened time. QDateTime current_date_time = QDateTime::currentDateTime(); - for (int i=0 ; iset_listened(listened); if (listened) { diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 1d0583ec7..becfb9762 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -26,11 +26,11 @@ #include class AddPodcastDialog; +class OrganiseDialog; class Podcast; class PodcastBackend; class PodcastEpisode; class StandardItemIconLoader; -class OrganiseDialog; class QSortFilterProxyModel; @@ -93,7 +93,6 @@ private slots: void CopyToDeviceSlot(const PodcastEpisodeList& episodes_list); void CopyToDeviceSlot(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes); - void CopyToDeviceSlot(const QModelIndexList& podcast_indexes); private: void EnsureAddPodcastDialogCreated(); diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 5f5e47092..01bf74e96 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -85,7 +85,7 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) // Build the insert menu QMenu* tag_menu = new QMenu(this); QSignalMapper* tag_mapper = new QSignalMapper(this); - foreach (const QString& title, tag_titles) { + for (const QString& title : tag_titles) { QAction* action = tag_menu->addAction(title, tag_mapper, SLOT(map())); tag_mapper->setMapping(action, tags[title]); } @@ -108,10 +108,10 @@ int OrganiseDialog::SetSongs(const SongList& songs) { total_size_ = 0; songs_.clear(); - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song.url().scheme() != "file") { continue; - }; + } if (song.filesize() > 0) total_size_ += song.filesize(); @@ -130,7 +130,7 @@ int OrganiseDialog::SetUrls(const QList &urls, quint64 total_size) { Song song; // Only add file:// URLs - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { if (url.scheme() != "file") continue; TagReaderClient::Instance()->ReadFileBlocking(url.toLocalFile(), &song); @@ -146,7 +146,7 @@ int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_siz Song song; // Load some of the songs to show in the preview - foreach (const QString& filename, filenames) { + for (const QString& filename : filenames) { TagReaderClient::Instance()->ReadFileBlocking(song.basefilename(), &song); if (song.is_valid()) songs << song; @@ -210,7 +210,7 @@ void OrganiseDialog::UpdatePreviews() { ui_->preview_group->setVisible(has_local_destination); ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { - foreach (const Song& song, songs_) { + for (const Song& song : songs_) { QString filename = storage->LocalPath() + "/" + format_.GetFilenameForSong(song); ui_->preview->addItem(QDir::toNativeSeparators(filename)); From 6ea793f44600be0fee2bb33e4e934223651f1be1 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Sat, 25 Jan 2014 10:56:56 +0100 Subject: [PATCH 031/362] Fixed some problems reported by cpplint.py, changed foreach to for in files touched by me mkII --- src/podcasts/podcastbackend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index 49c1bb2c0..c8da0ca13 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -141,7 +141,7 @@ void PodcastBackend::UpdateEpisodes(const PodcastEpisodeList& episodes) { " local_url = :local_url" " WHERE ROWID = :id", db); - foreach (const PodcastEpisode& episode, episodes) { + for (const PodcastEpisode& episode : episodes) { q.bindValue(":listened", episode.listened()); q.bindValue(":listened_date", episode.listened_date().toTime_t()); q.bindValue(":downloaded", episode.downloaded()); From df992a4b4b800d2d818e62f456b338ec095e9784 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Sat, 25 Jan 2014 13:06:36 +0100 Subject: [PATCH 032/362] Use auto in for statements, fix const in SetListened --- src/podcasts/podcastservice.cpp | 45 +++++++++++++++++---------------- src/podcasts/podcastservice.h | 2 +- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 5b53a89bc..88bf1ac94 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -129,7 +129,7 @@ void PodcastService::CopyToDeviceSlot() { void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { QList songs; Podcast podcast; - for (const PodcastEpisode& episode : episodes_list) { + for (const auto& episode : episodes_list) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } @@ -146,13 +146,13 @@ void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, QList songs; PodcastEpisodeList episodes; Podcast podcast; - for (const QModelIndex& index : episode_indexes) { + for (const auto& index : episode_indexes) { episode_tmp = index.data(Role_Episode).value(); if (episode_tmp.downloaded()) episodes << episode_tmp; } - for (const QModelIndex& podcast : podcast_indexes) { + for (const auto& podcast : podcast_indexes) { for (int i = 0; i < podcast.model()->rowCount(podcast); ++i) { const QModelIndex& index = podcast.child(i, 0); episode_tmp = index.data(Role_Episode).value(); @@ -160,7 +160,7 @@ void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, episodes << episode_tmp; } } - for (const PodcastEpisode& episode : episodes) { + for (const auto& episode : episodes) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } @@ -190,7 +190,7 @@ void PodcastService::PopulatePodcastList(QStandardItem* parent) { default_icon_ = QIcon(":providers/podcast16.png"); } - for (const Podcast& podcast : backend_->GetAllSubscriptions()) { + for (const auto& podcast : backend_->GetAllSubscriptions()) { parent->appendRow(CreatePodcastItem(podcast)); } } @@ -270,7 +270,7 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { // Add the episodes in this podcast and gather aggregate stats. int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast.database_id())) { + for (const auto& episode : backend_->GetEpisodes(podcast.database_id())) { if (!episode.listened()) { unlistened_count++; } @@ -360,7 +360,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { explicitly_selected_podcasts_.clear(); QSet podcast_ids; - for (const QModelIndex& index : model()->selected_indexes()) { + for (const auto& index : model()->selected_indexes()) { switch (index.data(InternetModel::Role_Type).toInt()) { case Type_Podcast: { const int id = index.data(Role_Podcast).value().database_id(); @@ -431,14 +431,14 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } void PodcastService::UpdateSelectedPodcast() { - for (const QModelIndex& index : selected_podcasts_) { + for (const auto& index : selected_podcasts_) { app_->podcast_updater()->UpdatePodcastNow( index.data(Role_Podcast).value()); } } void PodcastService::RemoveSelectedPodcast() { - for (const QModelIndex& index : selected_podcasts_) { + for (const auto& index : selected_podcasts_) { backend_->Unsubscribe(index.data(Role_Podcast).value()); } } @@ -497,7 +497,7 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { void PodcastService::EpisodesAdded(const QList& episodes) { QSet seen_podcast_ids; - for (const PodcastEpisode& episode : episodes) { + for (const auto& episode : episodes) { const int database_id = episode.podcast_database_id(); QStandardItem* parent = podcasts_by_database_id_[database_id]; if (!parent) @@ -508,7 +508,7 @@ void PodcastService::EpisodesAdded(const QList& episodes) { if (!seen_podcast_ids.contains(database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(database_id)) { + for (const auto& episode : backend_->GetEpisodes(database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -523,7 +523,7 @@ void PodcastService::EpisodesAdded(const QList& episodes) { void PodcastService::EpisodesUpdated(const QList& episodes) { QSet seen_podcast_ids; - for (const PodcastEpisode& episode : episodes) { + for (const auto& episode : episodes) { const int podcast_database_id = episode.podcast_database_id(); QStandardItem* item = episodes_by_database_id_[episode.database_id()]; QStandardItem* parent = podcasts_by_database_id_[podcast_database_id]; @@ -538,7 +538,7 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { if (!seen_podcast_ids.contains(podcast_database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast_database_id)) { + for (const auto& episode : backend_->GetEpisodes(podcast_database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -551,14 +551,14 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { } void PodcastService::DownloadSelectedEpisode() { - for (const QModelIndex& index : selected_episodes_) { + for (const auto& index : selected_episodes_) { app_->podcast_downloader()->DownloadEpisode( index.data(Role_Episode).value()); } } void PodcastService::DeleteDownloadedData() { - for (const QModelIndex& index : selected_episodes_) { + for (const auto& index : selected_episodes_) { app_->podcast_downloader()->DeleteEpisode( index.data(Role_Episode).value()); } @@ -603,18 +603,19 @@ void PodcastService::SetListened() { SetListened(selected_episodes_, explicitly_selected_podcasts_, true); } -void PodcastService::SetListened(PodcastEpisodeList episodes_list, +void PodcastService::SetListened(const PodcastEpisodeList& episodes_list, bool listened) { + PodcastEpisodeList episodes; QDateTime current_date_time = QDateTime::currentDateTime(); - for (int i = 0; i < episodes_list.count(); ++i) { - PodcastEpisode* episode = &episodes_list[i]; - episode->set_listened(listened); + for (auto episode : episodes_list) { + episode.set_listened(listened); if (listened) { - episode->set_listened_date(current_date_time); + episode.set_listened_date(current_date_time); } + episodes << episode; } - backend_->UpdateEpisodes(episodes_list); + backend_->UpdateEpisodes(episodes); } void PodcastService::SetListened(const QModelIndexList& episode_indexes, @@ -623,7 +624,7 @@ void PodcastService::SetListened(const QModelIndexList& episode_indexes, PodcastEpisodeList episodes; // Get all the episodes from the indexes. - for (const QModelIndex& index : episode_indexes) { + for (auto& index : episode_indexes) { episodes << index.data(Role_Episode).value(); } diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index becfb9762..87afe2d35 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -111,7 +111,7 @@ private: void SetListened(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes, bool listened); - void SetListened(PodcastEpisodeList episodes_list, + void SetListened(const PodcastEpisodeList& episodes_list, bool listened); void LazyLoadRoot(); From b0a97de6033a56dffa2cf89cc0263621c6e6f818 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Sat, 25 Jan 2014 14:03:09 +0100 Subject: [PATCH 033/362] Use more auto in for statements --- src/core/organise.cpp | 10 +++++----- src/podcasts/podcastbackend.cpp | 6 +++--- src/ui/organisedialog.cpp | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 76fe82192..ca63fbfdb 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -53,7 +53,7 @@ Organise::Organise(TaskManager* task_manager, { original_thread_ = thread(); - for (const Song& song : songs) { + for (const auto& song : songs) { tasks_pending_ << Task(song); } } @@ -79,7 +79,7 @@ void Organise::ProcessSomeFiles() { if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( - for (const Task& task : tasks_pending_) + for (const auto& task : tasks_pending_) files_with_errors_ << task.song_.url().toLocalFile(); tasks_pending_.clear(); } @@ -237,7 +237,7 @@ void Organise::UpdateProgress() { // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); - for (const QString& filename : transcode_progress.keys()) { + for (const auto& filename : transcode_progress.keys()) { if (!tasks_transcoding_.contains(filename)) continue; tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; @@ -248,10 +248,10 @@ void Organise::UpdateProgress() { // only need to be copied total 100. int progress = tasks_complete_ * 100; - for (const Task& task : tasks_pending_) { + for (const auto& task : tasks_pending_) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } - for (const Task& task : tasks_transcoding_.values()) { + for (const auto& task : tasks_transcoding_.values()) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index c8da0ca13..467918540 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -62,7 +62,7 @@ void PodcastBackend::Subscribe(Podcast* podcast) { // Update the IDs of any episodes. PodcastEpisodeList* episodes = podcast->mutable_episodes(); - for (PodcastEpisodeList::iterator it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { it->set_podcast_database_id(database_id); } @@ -107,7 +107,7 @@ void PodcastBackend::AddEpisodes(PodcastEpisodeList* episodes, QSqlDatabase* db) QSqlQuery q("INSERT INTO podcast_episodes (" + PodcastEpisode::kColumnSpec + ")" " VALUES (" + PodcastEpisode::kBindSpec + ")", *db); - for (PodcastEpisodeList::iterator it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { it->BindToQuery(&q); q.exec(); if (db_->CheckErrors(q)) @@ -141,7 +141,7 @@ void PodcastBackend::UpdateEpisodes(const PodcastEpisodeList& episodes) { " local_url = :local_url" " WHERE ROWID = :id", db); - for (const PodcastEpisode& episode : episodes) { + for (const auto& episode : episodes) { q.bindValue(":listened", episode.listened()); q.bindValue(":listened_date", episode.listened_date().toTime_t()); q.bindValue(":downloaded", episode.downloaded()); diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 01bf74e96..247f6d85b 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -85,7 +85,7 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) // Build the insert menu QMenu* tag_menu = new QMenu(this); QSignalMapper* tag_mapper = new QSignalMapper(this); - for (const QString& title : tag_titles) { + for (const auto& title : tag_titles) { QAction* action = tag_menu->addAction(title, tag_mapper, SLOT(map())); tag_mapper->setMapping(action, tags[title]); } @@ -108,7 +108,7 @@ int OrganiseDialog::SetSongs(const SongList& songs) { total_size_ = 0; songs_.clear(); - for (const Song& song : songs) { + for (const auto& song : songs) { if (song.url().scheme() != "file") { continue; } @@ -130,7 +130,7 @@ int OrganiseDialog::SetUrls(const QList &urls, quint64 total_size) { Song song; // Only add file:// URLs - for (const QUrl& url : urls) { + for (const auto& url : urls) { if (url.scheme() != "file") continue; TagReaderClient::Instance()->ReadFileBlocking(url.toLocalFile(), &song); @@ -146,7 +146,7 @@ int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_siz Song song; // Load some of the songs to show in the preview - for (const QString& filename : filenames) { + for (const auto& filename : filenames) { TagReaderClient::Instance()->ReadFileBlocking(song.basefilename(), &song); if (song.is_valid()) songs << song; @@ -210,7 +210,7 @@ void OrganiseDialog::UpdatePreviews() { ui_->preview_group->setVisible(has_local_destination); ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { - for (const Song& song : songs_) { + for (const auto& song : songs_) { QString filename = storage->LocalPath() + "/" + format_.GetFilenameForSong(song); ui_->preview->addItem(QDir::toNativeSeparators(filename)); From 655d7e1989ffeba39d92742a6a6bacb6a4b771f5 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Mon, 27 Jan 2014 13:46:43 +0100 Subject: [PATCH 034/362] CopyToDeviceSlot is a wrong name --- src/podcasts/podcastservice.cpp | 12 ++++++------ src/podcasts/podcastservice.h | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 88bf1ac94..fe5a15c34 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -118,15 +118,15 @@ QStandardItem* PodcastService::CreateRootItem() { return root_; } -void PodcastService::CopyToDeviceSlot() { +void PodcastService::CopyToDevice() { if (selected_episodes_.isEmpty() && explicitly_selected_podcasts_.isEmpty()) { - CopyToDeviceSlot(backend_->GetNewDownloadedEpisodes()); + CopyToDevice(backend_->GetNewDownloadedEpisodes()); } else { - CopyToDeviceSlot(selected_episodes_, explicitly_selected_podcasts_); + CopyToDevice(selected_episodes_, explicitly_selected_podcasts_); } } -void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { +void PodcastService::CopyToDevice(const PodcastEpisodeList& episodes_list) { QList songs; Podcast podcast; for (const auto& episode : episodes_list) { @@ -140,7 +140,7 @@ void PodcastService::CopyToDeviceSlot(const PodcastEpisodeList& episodes_list) { organise_dialog_->show(); } -void PodcastService::CopyToDeviceSlot(const QModelIndexList& episode_indexes, +void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes) { PodcastEpisode episode_tmp; QList songs; @@ -334,7 +334,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { this, SLOT(DeleteDownloadedData())); copy_to_device_ = context_menu_->addAction( IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), - this, SLOT(CopyToDeviceSlot())); + this, SLOT(CopyToDevice())); remove_selected_action_ = context_menu_->addAction( IconLoader::Load("list-remove"), tr("Unsubscribe"), this, SLOT(RemoveSelectedPodcast())); diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 87afe2d35..92c864b11 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -89,9 +89,9 @@ private slots: void CurrentSongChanged(const Song& metadata); - void CopyToDeviceSlot(); - void CopyToDeviceSlot(const PodcastEpisodeList& episodes_list); - void CopyToDeviceSlot(const QModelIndexList& episode_indexes, + void CopyToDevice(); + void CopyToDevice(const PodcastEpisodeList& episodes_list); + void CopyToDevice(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes); private: From 7ea6c027d43f2675c3572c7a3799d553faaded71 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 28 Jan 2014 04:16:51 +0100 Subject: [PATCH 035/362] Fix podcasts metadata --- src/podcasts/podcastdownloader.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index 119280228..8ed84600d 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -20,6 +20,7 @@ #include "core/application.h" #include "core/logging.h" #include "core/network.h" +#include "core/tagreaderclient.h" #include "core/timeconstants.h" #include "core/utilities.h" #include "library/librarydirectorymodel.h" @@ -125,9 +126,13 @@ void PodcastDownloader::DeleteEpisode(const PodcastEpisode& episode) { } void PodcastDownloader::FinishAndDelete(Task* task) { + Podcast podcast = + backend_->GetSubscriptionById(task->episode.podcast_database_id()); + Song song = task->episode.ToSong(podcast); downloading_episode_ids_.remove(task->episode.database_id()); emit ProgressChanged(task->episode, Finished, 0); - + //I didn't ecountered even a single podcast with corect metadata + TagReaderClient::Instance()->SaveFileBlocking(task->file->fileName(), song); delete task; NextTask(); From 20befa439c762a57bc43f62d3b19e31696b550fb Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 28 Jan 2014 04:31:06 +0100 Subject: [PATCH 036/362] Add a space --- src/podcasts/podcastdownloader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index 8ed84600d..478e68250 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -131,7 +131,7 @@ void PodcastDownloader::FinishAndDelete(Task* task) { Song song = task->episode.ToSong(podcast); downloading_episode_ids_.remove(task->episode.database_id()); emit ProgressChanged(task->episode, Finished, 0); - //I didn't ecountered even a single podcast with corect metadata + // I didn't ecountered even a single podcast with a corect metadata TagReaderClient::Instance()->SaveFileBlocking(task->file->fileName(), song); delete task; From 295c5bc087f8084c4324aea986743ac32c520a5b Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 28 Jan 2014 04:33:20 +0100 Subject: [PATCH 037/362] Make code more readable --- src/podcasts/podcastdownloader.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index 478e68250..b02e97cc5 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -129,8 +129,10 @@ void PodcastDownloader::FinishAndDelete(Task* task) { Podcast podcast = backend_->GetSubscriptionById(task->episode.podcast_database_id()); Song song = task->episode.ToSong(podcast); + downloading_episode_ids_.remove(task->episode.database_id()); emit ProgressChanged(task->episode, Finished, 0); + // I didn't ecountered even a single podcast with a corect metadata TagReaderClient::Instance()->SaveFileBlocking(task->file->fileName(), song); delete task; From 3a72faba9722bac31b51b050a444f6478319d545 Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 28 Jan 2014 04:50:00 +0100 Subject: [PATCH 038/362] Fix errors reported by Cpplint.py --- src/podcasts/podcastdownloader.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index b02e97cc5..30d232b89 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -144,17 +144,17 @@ QString PodcastDownloader::FilenameForEpisode(const QString& directory, const PodcastEpisode& episode) const { const QString file_extension = QFileInfo(episode.url().path()).suffix(); int count = 0; - + // The file name contains the publication date and episode title QString base_filename = episode.publication_date().date().toString(Qt::ISODate) + "-" + SanitiseFilenameComponent(episode.title()); - + // Add numbers on to the end of the filename until we find one that doesn't // exist. forever { QString filename; - + if (count == 0) { filename = QString("%1/%2.%3").arg( directory, base_filename, file_extension); @@ -162,12 +162,12 @@ QString PodcastDownloader::FilenameForEpisode(const QString& directory, filename = QString("%1/%2 (%3).%4").arg( directory, base_filename, QString::number(count), file_extension); } - + if (!QFile::exists(filename)) { return filename; } - - count ++; + + count++; } } @@ -204,8 +204,8 @@ void PodcastDownloader::StartDownloading(Task* task) { RedirectFollower* reply = new RedirectFollower(network_->get(req)); connect(reply, SIGNAL(readyRead()), SLOT(ReplyReadyRead())); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), - SLOT(ReplyDownloadProgress(qint64,qint64))); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(ReplyDownloadProgress(qint64, qint64))); emit ProgressChanged(task->episode, Downloading, 0); } @@ -242,7 +242,7 @@ void PodcastDownloader::ReplyDownloadProgress(qint64 received, qint64 total) { last_progress_signal_ = current_time; emit ProgressChanged(current_task_->episode, Downloading, - float(received) / total * 100); + static_cast(received) / total * 100); } void PodcastDownloader::ReplyFinished() { @@ -284,7 +284,7 @@ void PodcastDownloader::SubscriptionAdded(const Podcast& podcast) { void PodcastDownloader::EpisodesAdded(const QList& episodes) { if (auto_download_) { - foreach (const PodcastEpisode& episode, episodes) { + for (const auto& episode : episodes) { DownloadEpisode(episode); } } @@ -307,7 +307,7 @@ void PodcastDownloader::AutoDelete() { << (delete_after_secs_ / kSecsPerDay) << "days ago"; - foreach (const PodcastEpisode& episode, old_episodes) { + for (const auto& episode : old_episodes) { DeleteEpisode(episode); } } From 59cb17c08d7707e3fc36de54f9b195375d3fad82 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 28 Jan 2014 12:57:05 +0100 Subject: [PATCH 039/362] Change some API URLs to use https. --- src/covers/kittenloader.cpp | 4 ++-- src/covers/musicbrainzcoverprovider.cpp | 4 ++-- src/musicbrainz/musicbrainzclient.cpp | 4 ++-- src/podcasts/podcasturlloader.cpp | 6 +++--- src/songinfo/songkickconcerts.cpp | 2 +- src/songinfo/songkickconcertwidget.cpp | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/covers/kittenloader.cpp b/src/covers/kittenloader.cpp index d9d649f24..3c9027968 100644 --- a/src/covers/kittenloader.cpp +++ b/src/covers/kittenloader.cpp @@ -8,7 +8,7 @@ #include "core/network.h" const char* KittenLoader::kFlickrKittenUrl = - "http://api.flickr.com/services/rest/" + "https://api.flickr.com/services/rest/" "?method=flickr.photos.search" "&api_key=808b52887b3cc7fe098abd62f6ed1745" "&tags=kitten" @@ -17,7 +17,7 @@ const char* KittenLoader::kFlickrKittenUrl = "&content_type=1"; const char* KittenLoader::kFlickrPhotoUrl = - "http://farm%1.static.flickr.com/%2/%3_%4_m.jpg"; + "https://farm%1.static.flickr.com/%2/%3_%4_m.jpg"; KittenLoader::KittenLoader(QObject* parent) : AlbumCoverLoader(parent) { diff --git a/src/covers/musicbrainzcoverprovider.cpp b/src/covers/musicbrainzcoverprovider.cpp index fbf386240..3e054b4c0 100644 --- a/src/covers/musicbrainzcoverprovider.cpp +++ b/src/covers/musicbrainzcoverprovider.cpp @@ -30,9 +30,9 @@ using std::mem_fun; namespace { static const char* kReleaseSearchUrl = - "http://musicbrainz.org/ws/2/release/"; + "https://musicbrainz.org/ws/2/release/"; static const char* kAlbumCoverUrl = - "http://coverartarchive.org/release/%1/front"; + "https://coverartarchive.org/release/%1/front"; } // namespace diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 8c6ef5ac2..4cb1c73a2 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -27,8 +27,8 @@ #include "core/network.h" #include "core/utilities.h" -const char* MusicBrainzClient::kTrackUrl = "http://musicbrainz.org/ws/2/recording/"; -const char* MusicBrainzClient::kDiscUrl = "http://musicbrainz.org/ws/2/discid/"; +const char* MusicBrainzClient::kTrackUrl = "https://musicbrainz.org/ws/2/recording/"; +const char* MusicBrainzClient::kDiscUrl = "https://musicbrainz.org/ws/2/discid/"; const char* MusicBrainzClient::kDateRegex = "^[12]\\d{3}"; const int MusicBrainzClient::kDefaultTimeout = 5000; // msec diff --git a/src/podcasts/podcasturlloader.cpp b/src/podcasts/podcasturlloader.cpp index e342d5350..849fd409c 100644 --- a/src/podcasts/podcasturlloader.cpp +++ b/src/podcasts/podcasturlloader.cpp @@ -51,10 +51,10 @@ QUrl PodcastUrlLoader::FixPodcastUrl(const QString& url_text) { // Thanks gpodder! QuickPrefixList quick_prefixes = QuickPrefixList() << QuickPrefix("fb:", "http://feeds.feedburner.com/%1") - << QuickPrefix("yt:", "http://www.youtube.com/rss/user/%1/videos.rss") - << QuickPrefix("sc:", "http://soundcloud.com/%1") + << QuickPrefix("yt:", "https://www.youtube.com/rss/user/%1/videos.rss") + << QuickPrefix("sc:", "https://soundcloud.com/%1") << QuickPrefix("fm4od:", "http://onapp1.orf.at/webcam/fm4/fod/%1.xspf") - << QuickPrefix("ytpl:", "http://gdata.youtube.com/feeds/api/playlists/%1"); + << QuickPrefix("ytpl:", "https://gdata.youtube.com/feeds/api/playlists/%1"); // Check if it matches one of the quick prefixes. for (QuickPrefixList::const_iterator it = quick_prefixes.constBegin() ; diff --git a/src/songinfo/songkickconcerts.cpp b/src/songinfo/songkickconcerts.cpp index 456371b69..186d7a0e4 100644 --- a/src/songinfo/songkickconcerts.cpp +++ b/src/songinfo/songkickconcerts.cpp @@ -31,7 +31,7 @@ const char* SongkickConcerts::kSongkickArtistBucket = "id:songkick"; const char* SongkickConcerts::kSongkickArtistCalendarUrl = - "http://api.songkick.com/api/3.0/artists/%1/calendar.json?" + "https://api.songkick.com/api/3.0/artists/%1/calendar.json?" "per_page=5&" "apikey=8rgKfy1WU6IlJFfN"; diff --git a/src/songinfo/songkickconcertwidget.cpp b/src/songinfo/songkickconcertwidget.cpp index 584a26c44..c18fe70f3 100644 --- a/src/songinfo/songkickconcertwidget.cpp +++ b/src/songinfo/songkickconcertwidget.cpp @@ -90,7 +90,7 @@ void SongKickConcertWidget::Init(const QString& title, const QString& url, void SongKickConcertWidget::SetMap(const QString& lat, const QString& lng, const QString& venue_name) { static const char* kStaticMapUrl = - "http://maps.googleapis.com/maps/api/staticmap" + "https://maps.googleapis.com/maps/api/staticmap" "?key=AIzaSyDDJqmLOeE1mY_EBONhnQmdXbKtasgCtqg" "&sensor=false" "&size=%1x%2" From 9858a9d5068216bc8a42f4f69a92cb44c3bd0c15 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 28 Jan 2014 14:54:52 +0100 Subject: [PATCH 040/362] Print out the Clementine display version in the cmake summary. --- cmake/Summary.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 55e511e98..4202741aa 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -25,6 +25,8 @@ endmacro(summary_show_part) macro(summary_show) list(SORT summary_willbuild) list(SORT summary_willnotbuild) + message("") + message("Building Clementine version: ${CLEMENTINE_VERSION_DISPLAY}") summary_show_part(summary_willbuild "The following components will be built:") summary_show_part(summary_willnotbuild "The following components WILL NOT be built:") message("") From 09d68bf41523354bb4b11d56caf167a10614a25e Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Tue, 28 Jan 2014 16:04:17 +0100 Subject: [PATCH 041/362] Scrub the auto usage, use unique_ptr, use correct types instead of QList --- src/core/organise.cpp | 10 +++---- src/podcasts/podcastbackend.cpp | 2 +- src/podcasts/podcastbackend.h | 4 +-- src/podcasts/podcastdownloader.cpp | 10 +++---- src/podcasts/podcastservice.cpp | 46 +++++++++++++++--------------- src/podcasts/podcastservice.h | 8 +++--- src/ui/organisedialog.cpp | 10 +++---- src/ui/organisedialog.h | 5 ++-- 8 files changed, 47 insertions(+), 48 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index ca63fbfdb..76fe82192 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -53,7 +53,7 @@ Organise::Organise(TaskManager* task_manager, { original_thread_ = thread(); - for (const auto& song : songs) { + for (const Song& song : songs) { tasks_pending_ << Task(song); } } @@ -79,7 +79,7 @@ void Organise::ProcessSomeFiles() { if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( - for (const auto& task : tasks_pending_) + for (const Task& task : tasks_pending_) files_with_errors_ << task.song_.url().toLocalFile(); tasks_pending_.clear(); } @@ -237,7 +237,7 @@ void Organise::UpdateProgress() { // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); - for (const auto& filename : transcode_progress.keys()) { + for (const QString& filename : transcode_progress.keys()) { if (!tasks_transcoding_.contains(filename)) continue; tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; @@ -248,10 +248,10 @@ void Organise::UpdateProgress() { // only need to be copied total 100. int progress = tasks_complete_ * 100; - for (const auto& task : tasks_pending_) { + for (const Task& task : tasks_pending_) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } - for (const auto& task : tasks_transcoding_.values()) { + for (const Task& task : tasks_transcoding_.values()) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index 467918540..cd3b13578 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -141,7 +141,7 @@ void PodcastBackend::UpdateEpisodes(const PodcastEpisodeList& episodes) { " local_url = :local_url" " WHERE ROWID = :id", db); - for (const auto& episode : episodes) { + for (const PodcastEpisode& episode : episodes) { q.bindValue(":listened", episode.listened()); q.bindValue(":listened_date", episode.listened_date().toTime_t()); q.bindValue(":downloaded", episode.downloaded()); diff --git a/src/podcasts/podcastbackend.h b/src/podcasts/podcastbackend.h index bd6e85ba8..87f5264a0 100644 --- a/src/podcasts/podcastbackend.h +++ b/src/podcasts/podcastbackend.h @@ -74,10 +74,10 @@ signals: void SubscriptionRemoved(const Podcast& podcast); // Emitted when episodes are added to a subscription that *already exists*. - void EpisodesAdded(const QList& episodes); + void EpisodesAdded(const PodcastEpisodeList& episodes); // Emitted when existing episodes are updated. - void EpisodesUpdated(const QList& episodes); + void EpisodesUpdated(const PodcastEpisodeList& episodes); private: // Adds each episode to the database, setting their IDs after inserting each diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index 30d232b89..be281a0f7 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -56,8 +56,8 @@ PodcastDownloader::PodcastDownloader(Application* app, QObject* parent) last_progress_signal_(0), auto_delete_timer_(new QTimer(this)) { - connect(backend_, SIGNAL(EpisodesAdded(QList)), - SLOT(EpisodesAdded(QList))); + connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), + SLOT(EpisodesAdded(PodcastEpisodeList))); connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); @@ -282,9 +282,9 @@ void PodcastDownloader::SubscriptionAdded(const Podcast& podcast) { EpisodesAdded(podcast.episodes()); } -void PodcastDownloader::EpisodesAdded(const QList& episodes) { +void PodcastDownloader::EpisodesAdded(const PodcastEpisodeList& episodes) { if (auto_download_) { - for (const auto& episode : episodes) { + for (const PodcastEpisode& episode : episodes) { DownloadEpisode(episode); } } @@ -307,7 +307,7 @@ void PodcastDownloader::AutoDelete() { << (delete_after_secs_ / kSecsPerDay) << "days ago"; - for (const auto& episode : old_episodes) { + for (const PodcastEpisode& episode : old_episodes) { DeleteEpisode(episode); } } diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index fe5a15c34..72d92c643 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -69,8 +69,8 @@ PodcastService::PodcastService(Application* app, InternetModel* parent) connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), SLOT(SubscriptionRemoved(Podcast))); - connect(backend_, SIGNAL(EpisodesAdded(QList)), SLOT(EpisodesAdded(QList))); - connect(backend_, SIGNAL(EpisodesUpdated(QList)), SLOT(EpisodesUpdated(QList))); + connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), SLOT(EpisodesAdded(PodcastEpisodeList))); + connect(backend_, SIGNAL(EpisodesUpdated(PodcastEpisodeList)), SLOT(EpisodesUpdated(PodcastEpisodeList))); connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); } @@ -127,9 +127,9 @@ void PodcastService::CopyToDevice() { } void PodcastService::CopyToDevice(const PodcastEpisodeList& episodes_list) { - QList songs; + SongList songs; Podcast podcast; - for (const auto& episode : episodes_list) { + for (const PodcastEpisode& episode : episodes_list) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } @@ -143,16 +143,16 @@ void PodcastService::CopyToDevice(const PodcastEpisodeList& episodes_list) { void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, const QModelIndexList& podcast_indexes) { PodcastEpisode episode_tmp; - QList songs; + SongList songs; PodcastEpisodeList episodes; Podcast podcast; - for (const auto& index : episode_indexes) { + for (const QModelIndex& index : episode_indexes) { episode_tmp = index.data(Role_Episode).value(); if (episode_tmp.downloaded()) episodes << episode_tmp; } - for (const auto& podcast : podcast_indexes) { + for (const QModelIndex& podcast : podcast_indexes) { for (int i = 0; i < podcast.model()->rowCount(podcast); ++i) { const QModelIndex& index = podcast.child(i, 0); episode_tmp = index.data(Role_Episode).value(); @@ -160,7 +160,7 @@ void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, episodes << episode_tmp; } } - for (const auto& episode : episodes) { + for (const PodcastEpisode& episode : episodes) { podcast = backend_->GetSubscriptionById(episode.podcast_database_id()); songs.append(episode.ToSong(podcast)); } @@ -190,7 +190,7 @@ void PodcastService::PopulatePodcastList(QStandardItem* parent) { default_icon_ = QIcon(":providers/podcast16.png"); } - for (const auto& podcast : backend_->GetAllSubscriptions()) { + for (const Podcast& podcast : backend_->GetAllSubscriptions()) { parent->appendRow(CreatePodcastItem(podcast)); } } @@ -270,7 +270,7 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { // Add the episodes in this podcast and gather aggregate stats. int unlistened_count = 0; - for (const auto& episode : backend_->GetEpisodes(podcast.database_id())) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast.database_id())) { if (!episode.listened()) { unlistened_count++; } @@ -360,7 +360,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { explicitly_selected_podcasts_.clear(); QSet podcast_ids; - for (const auto& index : model()->selected_indexes()) { + for (const QModelIndex& index : model()->selected_indexes()) { switch (index.data(InternetModel::Role_Type).toInt()) { case Type_Podcast: { const int id = index.data(Role_Podcast).value().database_id(); @@ -431,14 +431,14 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } void PodcastService::UpdateSelectedPodcast() { - for (const auto& index : selected_podcasts_) { + for (const QModelIndex& index : selected_podcasts_) { app_->podcast_updater()->UpdatePodcastNow( index.data(Role_Podcast).value()); } } void PodcastService::RemoveSelectedPodcast() { - for (const auto& index : selected_podcasts_) { + for (const QModelIndex& index : selected_podcasts_) { backend_->Unsubscribe(index.data(Role_Podcast).value()); } } @@ -494,10 +494,10 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { } } -void PodcastService::EpisodesAdded(const QList& episodes) { +void PodcastService::EpisodesAdded(const PodcastEpisodeList& episodes) { QSet seen_podcast_ids; - for (const auto& episode : episodes) { + for (const PodcastEpisode& episode : episodes) { const int database_id = episode.podcast_database_id(); QStandardItem* parent = podcasts_by_database_id_[database_id]; if (!parent) @@ -508,7 +508,7 @@ void PodcastService::EpisodesAdded(const QList& episodes) { if (!seen_podcast_ids.contains(database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const auto& episode : backend_->GetEpisodes(database_id)) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -520,10 +520,10 @@ void PodcastService::EpisodesAdded(const QList& episodes) { } } -void PodcastService::EpisodesUpdated(const QList& episodes) { +void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { QSet seen_podcast_ids; - for (const auto& episode : episodes) { + for (const PodcastEpisode& episode : episodes) { const int podcast_database_id = episode.podcast_database_id(); QStandardItem* item = episodes_by_database_id_[episode.database_id()]; QStandardItem* parent = podcasts_by_database_id_[podcast_database_id]; @@ -538,7 +538,7 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { if (!seen_podcast_ids.contains(podcast_database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const auto& episode : backend_->GetEpisodes(podcast_database_id)) { + for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast_database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -551,14 +551,14 @@ void PodcastService::EpisodesUpdated(const QList& episodes) { } void PodcastService::DownloadSelectedEpisode() { - for (const auto& index : selected_episodes_) { + for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DownloadEpisode( index.data(Role_Episode).value()); } } void PodcastService::DeleteDownloadedData() { - for (const auto& index : selected_episodes_) { + for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DeleteEpisode( index.data(Role_Episode).value()); } @@ -607,7 +607,7 @@ void PodcastService::SetListened(const PodcastEpisodeList& episodes_list, bool listened) { PodcastEpisodeList episodes; QDateTime current_date_time = QDateTime::currentDateTime(); - for (auto episode : episodes_list) { + for (PodcastEpisode episode : episodes_list) { episode.set_listened(listened); if (listened) { episode.set_listened_date(current_date_time); @@ -624,7 +624,7 @@ void PodcastService::SetListened(const QModelIndexList& episode_indexes, PodcastEpisodeList episodes; // Get all the episodes from the indexes. - for (auto& index : episode_indexes) { + for (const QModelIndex& index : episode_indexes) { episodes << index.data(Role_Episode).value(); } diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 92c864b11..40e135748 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -22,8 +22,8 @@ #include "internet/internetmodel.h" #include "internet/internetservice.h" +#include #include -#include class AddPodcastDialog; class OrganiseDialog; @@ -80,8 +80,8 @@ private slots: void SubscriptionAdded(const Podcast& podcast); void SubscriptionRemoved(const Podcast& podcast); - void EpisodesAdded(const QList& episodes); - void EpisodesUpdated(const QList& episodes); + void EpisodesAdded(const PodcastEpisodeList& episodes); + void EpisodesUpdated(const PodcastEpisodeList& episodes); void DownloadProgressChanged(const PodcastEpisode& episode, PodcastDownloader::State state, @@ -141,7 +141,7 @@ private: QAction* set_listened_action_; QAction* copy_to_device_; QStandardItem* root_; - boost::scoped_ptr organise_dialog_; + std::unique_ptr organise_dialog_; QModelIndexList explicitly_selected_podcasts_; QModelIndexList selected_podcasts_; diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 247f6d85b..01bf74e96 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -85,7 +85,7 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) // Build the insert menu QMenu* tag_menu = new QMenu(this); QSignalMapper* tag_mapper = new QSignalMapper(this); - for (const auto& title : tag_titles) { + for (const QString& title : tag_titles) { QAction* action = tag_menu->addAction(title, tag_mapper, SLOT(map())); tag_mapper->setMapping(action, tags[title]); } @@ -108,7 +108,7 @@ int OrganiseDialog::SetSongs(const SongList& songs) { total_size_ = 0; songs_.clear(); - for (const auto& song : songs) { + for (const Song& song : songs) { if (song.url().scheme() != "file") { continue; } @@ -130,7 +130,7 @@ int OrganiseDialog::SetUrls(const QList &urls, quint64 total_size) { Song song; // Only add file:// URLs - for (const auto& url : urls) { + for (const QUrl& url : urls) { if (url.scheme() != "file") continue; TagReaderClient::Instance()->ReadFileBlocking(url.toLocalFile(), &song); @@ -146,7 +146,7 @@ int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_siz Song song; // Load some of the songs to show in the preview - for (const auto& filename : filenames) { + for (const QString& filename : filenames) { TagReaderClient::Instance()->ReadFileBlocking(song.basefilename(), &song); if (song.is_valid()) songs << song; @@ -210,7 +210,7 @@ void OrganiseDialog::UpdatePreviews() { ui_->preview_group->setVisible(has_local_destination); ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { - for (const auto& song : songs_) { + for (const Song& song : songs_) { QString filename = storage->LocalPath() + "/" + format_.GetFilenameForSong(song); ui_->preview->addItem(QDir::toNativeSeparators(filename)); diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index 48ff86454..3b545ccd7 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -18,6 +18,7 @@ #ifndef ORGANISEDIALOG_H #define ORGANISEDIALOG_H +#include #include #include #include @@ -25,8 +26,6 @@ #include "core/organiseformat.h" #include "core/song.h" -#include - class LibraryWatcher; class OrganiseErrorDialog; class TaskManager; @@ -77,7 +76,7 @@ private: SongList songs_; quint64 total_size_; - boost::scoped_ptr error_dialog_; + std::unique_ptr error_dialog_; bool resized_by_user_; }; From 1fad6db52ab049124f0082f65eeda27f320e1a9a Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 28 Jan 2014 18:45:13 +0100 Subject: [PATCH 042/362] Use std::unique_ptr instead of boost:scoped_ptr in one place. --- src/internet/cloudfileservice.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/internet/cloudfileservice.h b/src/internet/cloudfileservice.h index ef3627cc5..d31a54ccc 100644 --- a/src/internet/cloudfileservice.h +++ b/src/internet/cloudfileservice.h @@ -3,6 +3,8 @@ #include "internetservice.h" +#include + #include #include "core/tagreaderclient.h" @@ -61,8 +63,8 @@ class CloudFileService : public InternetService { LibraryModel* library_model_; QSortFilterProxyModel* library_sort_model_; - boost::scoped_ptr context_menu_; - boost::scoped_ptr cover_manager_; + std::unique_ptr context_menu_; + std::unique_ptr cover_manager_; PlaylistManager* playlist_manager_; TaskManager* task_manager_; From 361cca83cb37a6f67398524666b87153bbd2f25c Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Wed, 29 Jan 2014 17:30:58 +0100 Subject: [PATCH 043/362] Cpplint.py fixes --- src/core/database.cpp | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/core/database.cpp b/src/core/database.cpp index 2c012f6f4..a5ad6294e 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -56,16 +56,14 @@ struct sqlite3_tokenizer_module { int (*xCreate)( int argc, /* Size of argv array */ const char *const*argv, /* Tokenizer argument strings */ - sqlite3_tokenizer **ppTokenizer /* OUT: Created tokenizer */ - ); + sqlite3_tokenizer **ppTokenizer); /* OUT: Created tokenizer */ int (*xDestroy)(sqlite3_tokenizer *pTokenizer); int (*xOpen)( sqlite3_tokenizer *pTokenizer, /* Tokenizer object */ const char *pInput, int nBytes, /* Input buffer */ - sqlite3_tokenizer_cursor **ppCursor /* OUT: Created tokenizer cursor */ - ); + sqlite3_tokenizer_cursor **ppCursor);/* OUT: Created tokenizer cursor */ int (*xClose)(sqlite3_tokenizer_cursor *pCursor); @@ -74,8 +72,7 @@ struct sqlite3_tokenizer_module { const char **ppToken, int *pnBytes, /* OUT: Normalized text for token */ int *piStartOffset, /* OUT: Byte offset of token in input buffer */ int *piEndOffset, /* OUT: Byte offset of end of token in input buffer */ - int *piPosition /* OUT: Number of tokens returned before this one */ - ); + int *piPosition); /* OUT: Number of tokens returned before this one */ }; struct sqlite3_tokenizer { @@ -221,7 +218,7 @@ Database::Database(Application* app, QObject* parent, const QString& database_na { { QMutexLocker l(&sNextConnectionIdMutex); - connection_id_ = sNextConnectionId ++; + connection_id_ = sNextConnectionId++; } directory_ = QDir::toNativeSeparators( @@ -288,7 +285,7 @@ QSqlDatabase Database::Connect() { } // Attach external databases - foreach (const QString& key, attached_databases_.keys()) { + for (const QString& key : attached_databases_.keys()) { QString filename = attached_databases_[key].filename_; if (!injected_database_name_.isNull()) @@ -303,13 +300,13 @@ QSqlDatabase Database::Connect() { } } - if(startup_schema_version_ == -1) { + if (startup_schema_version_ == -1) { UpdateMainSchema(&db); } // We might have to initialise the schema in some attached databases now, if // they were deleted and don't match up with the main schema version. - foreach (const QString& key, attached_databases_.keys()) { + for (const QString& key : attached_databases_.keys()) { if (attached_databases_[key].is_temporary_ && attached_databases_[key].schema_.isEmpty()) continue; @@ -344,7 +341,7 @@ void Database::UpdateMainSchema(QSqlDatabase* db) { } if (schema_version < kSchemaVersion) { // Update the schema - for (int v=schema_version+1 ; v<= kSchemaVersion ; ++v) { + for (int v = schema_version+1; v <= kSchemaVersion; ++v) { UpdateDatabaseSchema(v, *db); } } @@ -377,7 +374,7 @@ void Database::RecreateAttachedDb(const QString& database_name) { // We can't just re-attach the database now because it needs to be done for // each thread. Close all the database connections, so each thread will // re-attach it when they next connect. - foreach (const QString& name, QSqlDatabase::connectionNames()) { + for (const QString& name : QSqlDatabase::connectionNames()) { QSqlDatabase::removeDatabase(name); } } @@ -432,7 +429,7 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { UrlEncodeFilenameColumn("songs", db); UrlEncodeFilenameColumn("playlist_items", db); - foreach (const QString& table, db.tables()) { + for (const QString& table : db.tables()) { if (table.startsWith("device_") && table.endsWith("_songs")) { UrlEncodeFilenameColumn(table, db); } @@ -511,12 +508,12 @@ void Database::ExecSchemaCommands(QSqlDatabase& db, void Database::ExecSongTablesCommands(QSqlDatabase& db, const QStringList& song_tables, const QStringList& commands) { - foreach (const QString& command, commands) { + for (const QString& command : commands) { // There are now lots of "songs" tables that need to have the same schema: // songs, magnatune_songs, and device_*_songs. We allow a magic value // in the schema files to update all songs tables at once. if (command.contains(kMagicAllSongsTables)) { - foreach (const QString& table, song_tables) { + for (const QString& table : song_tables) { // Another horrible hack: device songs tables don't have matching _fts // tables, so if this command tries to touch one, ignore it. if (table.startsWith("device_") && @@ -543,17 +540,17 @@ QStringList Database::SongsTables(QSqlDatabase& db, int schema_version) const { QStringList ret; // look for the tables in the main db - foreach (const QString& table, db.tables()) { + for (const QString& table : db.tables()) { if (table == "songs" || table.endsWith("_songs")) ret << table; } // look for the tables in attached dbs - foreach (const QString& key, attached_databases_.keys()) { + for (const QString& key : attached_databases_.keys()) { QSqlQuery q(QString("SELECT NAME FROM %1.sqlite_master" " WHERE type='table' AND name='songs' OR name LIKE '%songs'").arg(key), db); if (q.exec()) { - while(q.next()) { + while (q.next()) { QString tab_name = key + "." + q.value(0).toString(); ret << tab_name; } From c36e0739214302bf468b5adcaa6e264be6971db7 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Wed, 29 Jan 2014 20:35:03 +0100 Subject: [PATCH 044/362] Add trailing underscore to class member variable. --- src/ui/ripcd.cpp | 8 ++++---- src/ui/ripcd.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 2146bd228..e6d8c93f7 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -121,9 +121,9 @@ RipCD::RipCD(QWidget* parent) : qLog(Error) << "Failed to read CD drive"; return; } else { - i_tracks = cdio_get_num_tracks(cdio_); - ui_->tableWidget->setRowCount(i_tracks); - for (int i = 1; i <= i_tracks; i++) { + i_tracks_ = cdio_get_num_tracks(cdio_); + ui_->tableWidget->setRowCount(i_tracks_); + for (int i = 1; i <= i_tracks_; i++) { QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); checkbox_i->setCheckState(Qt::Checked); checkboxes_.append(checkbox_i); @@ -235,7 +235,7 @@ void RipCD::ThreadClickedRipButton() { emit(SignalUpdateProgress()); - for (int i = 1; i <= i_tracks; i++) { + for (int i = 1; i <= i_tracks_; i++) { if (!checkboxes_.value(i - 1)->isChecked()) { continue; } diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 0203ed37c..dd98d479b 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -46,7 +46,7 @@ class RipCD: public QDialog { int queued_; int finished_success_; int finished_failed_; - track_t i_tracks; + track_t i_tracks_; Ui_RipCD* ui_; CdIo_t *cdio_; QList checkboxes_; From 0a778e2901f933836dbf9b9d3ea75879de9826fa Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 30 Jan 2014 11:50:52 +0100 Subject: [PATCH 045/362] Do not log IP address from network remote settings. --- src/ui/networkremotesettingspage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/networkremotesettingspage.cpp b/src/ui/networkremotesettingspage.cpp index f08729ffb..09221becf 100644 --- a/src/ui/networkremotesettingspage.cpp +++ b/src/ui/networkremotesettingspage.cpp @@ -79,7 +79,6 @@ void NetworkRemoteSettingsPage::Load() { // TODO: Add ipv6 support to tinysvcmdns. if (address.protocol() == QAbstractSocket::IPv4Protocol && !address.isInSubnet(QHostAddress::parseSubnet("127.0.0.1/8"))) { - qLog(Debug) << "IP:" << address.toString(); if (!ip_addresses.isEmpty()) { ip_addresses.append(", "); } From b96ec7555a4792db135e15d7cd5018cb6797e5b9 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 30 Jan 2014 14:48:49 +0100 Subject: [PATCH 046/362] Reformat all Objective-C++ files with clang-format. clang-format -style=Google -i src/*/*.mm --- src/core/mac_startup.mm | 325 ++++++++++++++++----------- src/core/macfslistener.mm | 37 +-- src/core/macglobalshortcutbackend.mm | 46 ++-- src/devices/macdevicelister.mm | 296 ++++++++++++------------ src/networkremote/bonjour.mm | 39 ++-- src/ui/globalshortcutgrabber.mm | 23 +- src/ui/macsystemtrayicon.mm | 103 +++++---- src/widgets/osd_mac.mm | 96 ++++---- 8 files changed, 511 insertions(+), 454 deletions(-) diff --git a/src/core/mac_startup.mm b/src/core/mac_startup.mm index 4a89677e7..c1745326c 100644 --- a/src/core/mac_startup.mm +++ b/src/core/mac_startup.mm @@ -62,16 +62,17 @@ #include -QDebug operator <<(QDebug dbg, NSObject* object) { - QString ns_format = [[NSString stringWithFormat: @"%@", object] UTF8String]; +QDebug operator<<(QDebug dbg, NSObject* object) { + QString ns_format = [[NSString stringWithFormat:@"%@", object] UTF8String]; dbg.nospace() << ns_format; return dbg.space(); } // Capture global media keys on Mac (Cocoa only!) -// See: http://www.rogueamoeba.com/utm/2007/09/29/apple-keyboard-media-key-event-handling/ +// See: +// http://www.rogueamoeba.com/utm/2007/09/29/apple-keyboard-media-key-event-handling/ -@interface MacApplication :NSApplication { +@interface MacApplication : NSApplication { PlatformInterface* application_handler_; AppDelegate* delegate_; // shortcut_handler_ only used to temporarily save it @@ -79,18 +80,16 @@ QDebug operator <<(QDebug dbg, NSObject* object) { MacGlobalShortcutBackend* shortcut_handler_; } -- (MacGlobalShortcutBackend*) shortcut_handler; -- (void) SetShortcutHandler: (MacGlobalShortcutBackend*)handler; +- (MacGlobalShortcutBackend*)shortcut_handler; +- (void)SetShortcutHandler:(MacGlobalShortcutBackend*)handler; -- (PlatformInterface*) application_handler; -- (void) SetApplicationHandler: (PlatformInterface*)handler; +- (PlatformInterface*)application_handler; +- (void)SetApplicationHandler:(PlatformInterface*)handler; @end #ifdef HAVE_BREAKPAD -static bool BreakpadCallback(int, int, mach_port_t, void*) { - return true; -} +static bool BreakpadCallback(int, int, mach_port_t, void*) { return true; } static BreakpadRef InitBreakpad() { ScopedNSAutoreleasePool pool; @@ -103,11 +102,11 @@ static BreakpadRef InitBreakpad() { [pool release]; return breakpad; } -#endif // HAVE_BREAKPAD +#endif // HAVE_BREAKPAD @implementation AppDelegate -- (id) init { +- (id)init { if ((self = [super init])) { application_handler_ = nil; shortcut_handler_ = nil; @@ -116,7 +115,7 @@ static BreakpadRef InitBreakpad() { return self; } -- (id) initWithHandler: (PlatformInterface*)handler { +- (id)initWithHandler:(PlatformInterface*)handler { application_handler_ = handler; #ifdef HAVE_BREAKPAD @@ -124,45 +123,48 @@ static BreakpadRef InitBreakpad() { #endif // Register defaults for the whitelist of apps that want to use media keys - [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: - [SPMediaKeyTap defaultMediaKeyUserBundleIdentifiers], kMediaKeyUsingBundleIdentifiersDefaultsKey, - nil]]; + [[NSUserDefaults standardUserDefaults] + registerDefaults: + [NSDictionary + dictionaryWithObjectsAndKeys: + [SPMediaKeyTap defaultMediaKeyUserBundleIdentifiers], + kMediaKeyUsingBundleIdentifiersDefaultsKey, nil]]; return self; } -- (BOOL) applicationShouldHandleReopen: (NSApplication*)app hasVisibleWindows:(BOOL)flag { +- (BOOL)applicationShouldHandleReopen:(NSApplication*)app + hasVisibleWindows:(BOOL)flag { if (application_handler_) { application_handler_->Activate(); } return YES; } -- (void) setDockMenu: (NSMenu*)menu { +- (void)setDockMenu:(NSMenu*)menu { dock_menu_ = menu; } -- (NSMenu*) applicationDockMenu: (NSApplication*)sender { +- (NSMenu*)applicationDockMenu:(NSApplication*)sender { return dock_menu_; } -- (void) setShortcutHandler: (MacGlobalShortcutBackend*)backend { +- (void)setShortcutHandler:(MacGlobalShortcutBackend*)backend { shortcut_handler_ = backend; } -- (MacGlobalShortcutBackend*) shortcut_handler { +- (MacGlobalShortcutBackend*)shortcut_handler { return shortcut_handler_; } -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { +- (void)applicationDidFinishLaunching:(NSNotification*)aNotification { key_tap_ = [[SPMediaKeyTap alloc] initWithDelegate:self]; - if([SPMediaKeyTap usesGlobalMediaKeyTap]) + if ([SPMediaKeyTap usesGlobalMediaKeyTap]) [key_tap_ startWatchingMediaKeys]; else - qLog(Warning)<<"Media key monitoring disabled"; - + qLog(Warning) << "Media key monitoring disabled"; } -- (BOOL) application: (NSApplication*)app openFile:(NSString*)filename { +- (BOOL)application:(NSApplication*)app openFile:(NSString*)filename { qLog(Debug) << "Wants to open:" << [filename UTF8String]; if (application_handler_->LoadUrl(QString::fromUtf8([filename UTF8String]))) { @@ -172,15 +174,19 @@ static BreakpadRef InitBreakpad() { return NO; } -- (void) application: (NSApplication*)app openFiles:(NSArray*)filenames { +- (void)application:(NSApplication*)app openFiles:(NSArray*)filenames { qLog(Debug) << "Wants to open:" << filenames; - [filenames enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL* stop) { - [self application:app openFile:(NSString*)object]; - }]; + [filenames + enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL* stop) { + [self application:app openFile:(NSString*)object]; + }]; } -- (void) mediaKeyTap: (SPMediaKeyTap*)keyTap receivedMediaKeyEvent:(NSEvent*)event { - NSAssert([event type] == NSSystemDefined && [event subtype] == SPSystemDefinedEventMediaKeys, @"Unexpected NSEvent in mediaKeyTap:receivedMediaKeyEvent:"); +- (void)mediaKeyTap:(SPMediaKeyTap*)keyTap + receivedMediaKeyEvent:(NSEvent*)event { + NSAssert([event type] == NSSystemDefined && + [event subtype] == SPSystemDefinedEventMediaKeys, + @"Unexpected NSEvent in mediaKeyTap:receivedMediaKeyEvent:"); int key_code = (([event data1] & 0xFFFF0000) >> 16); int key_flags = ([event data1] & 0x0000FFFF); @@ -196,14 +202,16 @@ static BreakpadRef InitBreakpad() { } } -- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication*) sender { +- (NSApplicationTerminateReply)applicationShouldTerminate: + (NSApplication*)sender { #ifdef HAVE_BREAKPAD BreakpadRelease(breakpad_); #endif return NSTerminateNow; } -- (BOOL) userNotificationCenter: (id)center shouldPresentNotification: (id)notification { +- (BOOL)userNotificationCenter:(id)center + shouldPresentNotification:(id)notification { // Always show notifications, even if Clementine is in the foreground. return YES; } @@ -212,51 +220,54 @@ static BreakpadRef InitBreakpad() { @implementation MacApplication -- (id) init { +- (id)init { if ((self = [super init])) { [self SetShortcutHandler:nil]; } return self; } -- (MacGlobalShortcutBackend*) shortcut_handler { +- (MacGlobalShortcutBackend*)shortcut_handler { // should be the same as delegate_'s shortcut handler return shortcut_handler_; } -- (void) SetShortcutHandler: (MacGlobalShortcutBackend*)handler { +- (void)SetShortcutHandler:(MacGlobalShortcutBackend*)handler { shortcut_handler_ = handler; - if(delegate_) - [delegate_ setShortcutHandler:handler]; + if (delegate_) [delegate_ setShortcutHandler:handler]; } -- (PlatformInterface*) application_handler { +- (PlatformInterface*)application_handler { return application_handler_; } -- (void) SetApplicationHandler: (PlatformInterface*)handler { +- (void)SetApplicationHandler:(PlatformInterface*)handler { delegate_ = [[AppDelegate alloc] initWithHandler:handler]; // App-shortcut-handler set before delegate is set. // this makes sure the delegate's shortcut_handler is set [delegate_ setShortcutHandler:shortcut_handler_]; [self setDelegate:delegate_]; - Class notification_center_class = NSClassFromString(@"NSUserNotificationCenter"); + Class notification_center_class = + NSClassFromString(@"NSUserNotificationCenter"); if (notification_center_class) { - id notification_center = [notification_center_class defaultUserNotificationCenter]; - [notification_center setDelegate: delegate_]; + id notification_center = + [notification_center_class defaultUserNotificationCenter]; + [notification_center setDelegate:delegate_]; } } --(void) sendEvent: (NSEvent*)event { +- (void)sendEvent:(NSEvent*)event { // If event tap is not installed, handle events that reach the app instead - BOOL shouldHandleMediaKeyEventLocally = ![SPMediaKeyTap usesGlobalMediaKeyTap]; + BOOL shouldHandleMediaKeyEventLocally = + ![SPMediaKeyTap usesGlobalMediaKeyTap]; - if(shouldHandleMediaKeyEventLocally && [event type] == NSSystemDefined && [event subtype] == SPSystemDefinedEventMediaKeys) { - [(id)[self delegate] mediaKeyTap: nil receivedMediaKeyEvent: event]; + if (shouldHandleMediaKeyEventLocally && [event type] == NSSystemDefined && + [event subtype] == SPSystemDefinedEventMediaKeys) { + [(id)[self delegate] mediaKeyTap:nil receivedMediaKeyEvent:event]; } - [super sendEvent: event]; + [super sendEvent:event]; } @end @@ -267,30 +278,33 @@ void MacMain() { ScopedNSAutoreleasePool pool; // Creates and sets the magic global variable so QApplication will find it. [MacApplication sharedApplication]; - #ifdef HAVE_SPARKLE - // Creates and sets the magic global variable for Sparkle. - [[SUUpdater sharedUpdater] setDelegate: NSApp]; - #endif +#ifdef HAVE_SPARKLE + // Creates and sets the magic global variable for Sparkle. + [[SUUpdater sharedUpdater] setDelegate:NSApp]; +#endif } void SetShortcutHandler(MacGlobalShortcutBackend* handler) { - [NSApp SetShortcutHandler: handler]; + [NSApp SetShortcutHandler:handler]; } void SetApplicationHandler(PlatformInterface* handler) { - [NSApp SetApplicationHandler: handler]; + [NSApp SetApplicationHandler:handler]; } void CheckForUpdates() { - #ifdef HAVE_SPARKLE - [[SUUpdater sharedUpdater] checkForUpdates: NSApp]; - #endif +#ifdef HAVE_SPARKLE + [[SUUpdater sharedUpdater] checkForUpdates:NSApp]; +#endif } QString GetBundlePath() { - ScopedCFTypeRef app_url(CFBundleCopyBundleURL(CFBundleGetMainBundle())); - ScopedCFTypeRef mac_path(CFURLCopyFileSystemPath(app_url.get(), kCFURLPOSIXPathStyle)); - const char* path = CFStringGetCStringPtr(mac_path.get(), CFStringGetSystemEncoding()); + ScopedCFTypeRef app_url( + CFBundleCopyBundleURL(CFBundleGetMainBundle())); + ScopedCFTypeRef mac_path( + CFURLCopyFileSystemPath(app_url.get(), kCFURLPOSIXPathStyle)); + const char* path = + CFStringGetCStringPtr(mac_path.get(), CFStringGetSystemEncoding()); QString bundle_path = QString::fromUtf8(path); return bundle_path; } @@ -303,9 +317,7 @@ QString GetResourcesPath() { QString GetApplicationSupportPath() { ScopedNSAutoreleasePool pool; NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSApplicationSupportDirectory, - NSUserDomainMask, - YES); + NSApplicationSupportDirectory, NSUserDomainMask, YES); QString ret; if ([paths count] > 0) { NSString* user_path = [paths objectAtIndex:0]; @@ -318,10 +330,8 @@ QString GetApplicationSupportPath() { QString GetMusicDirectory() { ScopedNSAutoreleasePool pool; - NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSMusicDirectory, - NSUserDomainMask, - YES); + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSMusicDirectory, + NSUserDomainMask, YES); QString ret; if ([paths count] > 0) { NSString* user_path = [paths objectAtIndex:0]; @@ -335,57 +345,108 @@ QString GetMusicDirectory() { static int MapFunctionKey(int keycode) { switch (keycode) { // Function keys - case NSInsertFunctionKey: return Qt::Key_Insert; - case NSDeleteFunctionKey: return Qt::Key_Delete; - case NSPauseFunctionKey: return Qt::Key_Pause; - case NSPrintFunctionKey: return Qt::Key_Print; - case NSSysReqFunctionKey: return Qt::Key_SysReq; - case NSHomeFunctionKey: return Qt::Key_Home; - case NSEndFunctionKey: return Qt::Key_End; - case NSLeftArrowFunctionKey: return Qt::Key_Left; - case NSUpArrowFunctionKey: return Qt::Key_Up; - case NSRightArrowFunctionKey: return Qt::Key_Right; - case NSDownArrowFunctionKey: return Qt::Key_Down; - case NSPageUpFunctionKey: return Qt::Key_PageUp; - case NSPageDownFunctionKey: return Qt::Key_PageDown; - case NSScrollLockFunctionKey: return Qt::Key_ScrollLock; - case NSF1FunctionKey: return Qt::Key_F1; - case NSF2FunctionKey: return Qt::Key_F2; - case NSF3FunctionKey: return Qt::Key_F3; - case NSF4FunctionKey: return Qt::Key_F4; - case NSF5FunctionKey: return Qt::Key_F5; - case NSF6FunctionKey: return Qt::Key_F6; - case NSF7FunctionKey: return Qt::Key_F7; - case NSF8FunctionKey: return Qt::Key_F8; - case NSF9FunctionKey: return Qt::Key_F9; - case NSF10FunctionKey: return Qt::Key_F10; - case NSF11FunctionKey: return Qt::Key_F11; - case NSF12FunctionKey: return Qt::Key_F12; - case NSF13FunctionKey: return Qt::Key_F13; - case NSF14FunctionKey: return Qt::Key_F14; - case NSF15FunctionKey: return Qt::Key_F15; - case NSF16FunctionKey: return Qt::Key_F16; - case NSF17FunctionKey: return Qt::Key_F17; - case NSF18FunctionKey: return Qt::Key_F18; - case NSF19FunctionKey: return Qt::Key_F19; - case NSF20FunctionKey: return Qt::Key_F20; - case NSF21FunctionKey: return Qt::Key_F21; - case NSF22FunctionKey: return Qt::Key_F22; - case NSF23FunctionKey: return Qt::Key_F23; - case NSF24FunctionKey: return Qt::Key_F24; - case NSF25FunctionKey: return Qt::Key_F25; - case NSF26FunctionKey: return Qt::Key_F26; - case NSF27FunctionKey: return Qt::Key_F27; - case NSF28FunctionKey: return Qt::Key_F28; - case NSF29FunctionKey: return Qt::Key_F29; - case NSF30FunctionKey: return Qt::Key_F30; - case NSF31FunctionKey: return Qt::Key_F31; - case NSF32FunctionKey: return Qt::Key_F32; - case NSF33FunctionKey: return Qt::Key_F33; - case NSF34FunctionKey: return Qt::Key_F34; - case NSF35FunctionKey: return Qt::Key_F35; - case NSMenuFunctionKey: return Qt::Key_Menu; - case NSHelpFunctionKey: return Qt::Key_Help; + case NSInsertFunctionKey: + return Qt::Key_Insert; + case NSDeleteFunctionKey: + return Qt::Key_Delete; + case NSPauseFunctionKey: + return Qt::Key_Pause; + case NSPrintFunctionKey: + return Qt::Key_Print; + case NSSysReqFunctionKey: + return Qt::Key_SysReq; + case NSHomeFunctionKey: + return Qt::Key_Home; + case NSEndFunctionKey: + return Qt::Key_End; + case NSLeftArrowFunctionKey: + return Qt::Key_Left; + case NSUpArrowFunctionKey: + return Qt::Key_Up; + case NSRightArrowFunctionKey: + return Qt::Key_Right; + case NSDownArrowFunctionKey: + return Qt::Key_Down; + case NSPageUpFunctionKey: + return Qt::Key_PageUp; + case NSPageDownFunctionKey: + return Qt::Key_PageDown; + case NSScrollLockFunctionKey: + return Qt::Key_ScrollLock; + case NSF1FunctionKey: + return Qt::Key_F1; + case NSF2FunctionKey: + return Qt::Key_F2; + case NSF3FunctionKey: + return Qt::Key_F3; + case NSF4FunctionKey: + return Qt::Key_F4; + case NSF5FunctionKey: + return Qt::Key_F5; + case NSF6FunctionKey: + return Qt::Key_F6; + case NSF7FunctionKey: + return Qt::Key_F7; + case NSF8FunctionKey: + return Qt::Key_F8; + case NSF9FunctionKey: + return Qt::Key_F9; + case NSF10FunctionKey: + return Qt::Key_F10; + case NSF11FunctionKey: + return Qt::Key_F11; + case NSF12FunctionKey: + return Qt::Key_F12; + case NSF13FunctionKey: + return Qt::Key_F13; + case NSF14FunctionKey: + return Qt::Key_F14; + case NSF15FunctionKey: + return Qt::Key_F15; + case NSF16FunctionKey: + return Qt::Key_F16; + case NSF17FunctionKey: + return Qt::Key_F17; + case NSF18FunctionKey: + return Qt::Key_F18; + case NSF19FunctionKey: + return Qt::Key_F19; + case NSF20FunctionKey: + return Qt::Key_F20; + case NSF21FunctionKey: + return Qt::Key_F21; + case NSF22FunctionKey: + return Qt::Key_F22; + case NSF23FunctionKey: + return Qt::Key_F23; + case NSF24FunctionKey: + return Qt::Key_F24; + case NSF25FunctionKey: + return Qt::Key_F25; + case NSF26FunctionKey: + return Qt::Key_F26; + case NSF27FunctionKey: + return Qt::Key_F27; + case NSF28FunctionKey: + return Qt::Key_F28; + case NSF29FunctionKey: + return Qt::Key_F29; + case NSF30FunctionKey: + return Qt::Key_F30; + case NSF31FunctionKey: + return Qt::Key_F31; + case NSF32FunctionKey: + return Qt::Key_F32; + case NSF33FunctionKey: + return Qt::Key_F33; + case NSF34FunctionKey: + return Qt::Key_F34; + case NSF35FunctionKey: + return Qt::Key_F35; + case NSMenuFunctionKey: + return Qt::Key_Menu; + case NSHelpFunctionKey: + return Qt::Key_Help; } return 0; @@ -399,11 +460,21 @@ QKeySequence KeySequenceFromNSEvent(NSEvent* event) { int key = 0; unsigned char c = chars[0]; switch (c) { - case 0x1b: key = Qt::Key_Escape; break; - case 0x09: key = Qt::Key_Tab; break; - case 0x0d: key = Qt::Key_Return; break; - case 0x08: key = Qt::Key_Backspace; break; - case 0x03: key = Qt::Key_Enter; break; + case 0x1b: + key = Qt::Key_Escape; + break; + case 0x09: + key = Qt::Key_Tab; + break; + case 0x0d: + key = Qt::Key_Return; + break; + case 0x08: + key = Qt::Key_Backspace; + break; + case 0x03: + key = Qt::Key_Enter; + break; } if (key == 0) { @@ -448,12 +519,12 @@ void EnableFullScreen(const QWidget& main_window) { NSView* view = reinterpret_cast(main_window.winId()); NSWindow* window = [view window]; - [window setCollectionBehavior: kFullScreenPrimary]; + [window setCollectionBehavior:kFullScreenPrimary]; } float GetDevicePixelRatio(QWidget* widget) { NSView* view = reinterpret_cast(widget->winId()); - if ([[view window] respondsToSelector: @selector(backingScaleFactor)]) { + if ([[view window] respondsToSelector:@selector(backingScaleFactor)]) { return [[view window] backingScaleFactor]; } return 1.0f; diff --git a/src/core/macfslistener.mm b/src/core/macfslistener.mm index 9cc741405..1c683b966 100644 --- a/src/core/macfslistener.mm +++ b/src/core/macfslistener.mm @@ -25,24 +25,17 @@ #include "core/scoped_nsobject.h" MacFSListener::MacFSListener(QObject* parent) - : FileSystemWatcherInterface(parent), - run_loop_(NULL), - stream_(NULL) { + : FileSystemWatcherInterface(parent), run_loop_(NULL), stream_(NULL) { update_timer_.setSingleShot(true); update_timer_.setInterval(2000); connect(&update_timer_, SIGNAL(timeout()), SLOT(UpdateStream())); } -void MacFSListener::Init() { - run_loop_ = CFRunLoopGetCurrent(); -} +void MacFSListener::Init() { run_loop_ = CFRunLoopGetCurrent(); } void MacFSListener::EventStreamCallback( - ConstFSEventStreamRef stream, - void* user_data, - size_t num_events, - void* event_paths, - const FSEventStreamEventFlags event_flags[], + ConstFSEventStreamRef stream, void* user_data, size_t num_events, + void* event_paths, const FSEventStreamEventFlags event_flags[], const FSEventStreamEventId event_ids[]) { MacFSListener* me = reinterpret_cast(user_data); char** paths = reinterpret_cast(event_paths); @@ -73,9 +66,7 @@ void MacFSListener::Clear() { UpdateStreamAsync(); } -void MacFSListener::UpdateStreamAsync() { - update_timer_.start(); -} +void MacFSListener::UpdateStreamAsync() { update_timer_.start(); } void MacFSListener::UpdateStream() { if (stream_) { @@ -91,10 +82,10 @@ void MacFSListener::UpdateStream() { scoped_nsobject array([[NSMutableArray alloc] init]); - foreach (const QString& path, paths_) { + for (const QString& path : paths_) { scoped_nsobject string( - [[NSString alloc] initWithUTF8String: path.toUtf8().constData()]); - [array addObject: string.get()]; + [[NSString alloc] initWithUTF8String:path.toUtf8().constData()]); + [array addObject:string.get()]; } FSEventStreamContext context; @@ -102,14 +93,10 @@ void MacFSListener::UpdateStream() { context.info = this; CFAbsoluteTime latency = 1.0; - stream_ = FSEventStreamCreate( - NULL, - &EventStreamCallback, - &context, // Copied - reinterpret_cast(array.get()), - kFSEventStreamEventIdSinceNow, - latency, - kFSEventStreamCreateFlagNone); + stream_ = FSEventStreamCreate(NULL, &EventStreamCallback, &context, // Copied + reinterpret_cast(array.get()), + kFSEventStreamEventIdSinceNow, latency, + kFSEventStreamCreateFlagNone); FSEventStreamScheduleWithRunLoop(stream_, run_loop_, kCFRunLoopDefaultMode); FSEventStreamStart(stream_); diff --git a/src/core/macglobalshortcutbackend.mm b/src/core/macglobalshortcutbackend.mm index 63d938d95..575421084 100644 --- a/src/core/macglobalshortcutbackend.mm +++ b/src/core/macglobalshortcutbackend.mm @@ -38,21 +38,23 @@ class MacGlobalShortcutBackendPrivate : boost::noncopyable { public: explicit MacGlobalShortcutBackendPrivate(MacGlobalShortcutBackend* backend) - : global_monitor_(nil), - local_monitor_(nil), - backend_(backend) { - } + : global_monitor_(nil), local_monitor_(nil), backend_(backend) {} bool Register() { - global_monitor_ = [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask - handler:^(NSEvent* event) { - HandleKeyEvent(event); - }]; - local_monitor_ = [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask - handler:^(NSEvent* event) { - // Filter event if we handle it as a global shortcut. - return HandleKeyEvent(event) ? nil : event; - }]; + global_monitor_ = + [NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask + handler:^(NSEvent* event) { + HandleKeyEvent(event); + }]; + local_monitor_ = + [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask + handler:^(NSEvent* event) { + // Filter event if we handle + // it as a global shortcut. + return HandleKeyEvent(event) + ? nil + : event; + }]; return true; } @@ -67,26 +69,24 @@ class MacGlobalShortcutBackendPrivate : boost::noncopyable { return backend_->KeyPressed(sequence); } - id global_monitor_; id local_monitor_; MacGlobalShortcutBackend* backend_; }; MacGlobalShortcutBackend::MacGlobalShortcutBackend(GlobalShortcuts* parent) - : GlobalShortcutBackend(parent), - p_(new MacGlobalShortcutBackendPrivate(this)) { -} + : GlobalShortcutBackend(parent), + p_(new MacGlobalShortcutBackendPrivate(this)) {} -MacGlobalShortcutBackend::~MacGlobalShortcutBackend() { -} +MacGlobalShortcutBackend::~MacGlobalShortcutBackend() {} bool MacGlobalShortcutBackend::DoRegister() { // Always enable media keys. mac::SetShortcutHandler(this); if (AXAPIEnabled()) { - foreach (const GlobalShortcuts::Shortcut& shortcut, manager_->shortcuts().values()) { + for (const GlobalShortcuts::Shortcut& shortcut : + manager_->shortcuts().values()) { shortcuts_[shortcut.action->shortcut()] = shortcut.action; } return p_->Register(); @@ -134,8 +134,10 @@ void MacGlobalShortcutBackend::ShowAccessibilityDialog() { NSArray* paths = NSSearchPathForDirectoriesInDomains( NSPreferencePanesDirectory, NSSystemDomainMask, YES); if ([paths count] == 1) { - NSURL* prefpane_url = [NSURL fileURLWithPath: - [[paths objectAtIndex:0] stringByAppendingPathComponent:@"UniversalAccessPref.prefPane"]]; + NSURL* prefpane_url = + [NSURL fileURLWithPath:[[paths objectAtIndex:0] + stringByAppendingPathComponent: + @"UniversalAccessPref.prefPane"]]; [[NSWorkspace sharedWorkspace] openURL:prefpane_url]; } } diff --git a/src/devices/macdevicelister.mm b/src/devices/macdevicelister.mm index 171a6c095..d99c092d5 100644 --- a/src/devices/macdevicelister.mm +++ b/src/devices/macdevicelister.mm @@ -60,22 +60,18 @@ #define kUSBProductString "USB Product Name" #endif -// io_object_t, io_service_t, io_iterator_t etc. are all typedef'd to unsigned int, +// io_object_t, io_service_t, io_iterator_t etc. are all typedef'd to unsigned +// int, // hence the lack of templating here. class ScopedIOObject { public: - explicit ScopedIOObject(io_object_t object = 0) - : object_(object) { - } + explicit ScopedIOObject(io_object_t object = 0) : object_(object) {} ~ScopedIOObject() { - if (object_) - IOObjectRelease(object_); + if (object_) IOObjectRelease(object_); } - io_object_t get() const { - return object_; - } + io_object_t get() const { return object_; } private: io_object_t object_; @@ -105,12 +101,9 @@ uint qHash(const MacDeviceLister::MTPDevice& d) { return qHash(d.vendor_id) ^ qHash(d.product_id); } -MacDeviceLister::MacDeviceLister() { -} +MacDeviceLister::MacDeviceLister() {} -MacDeviceLister::~MacDeviceLister() { - CFRelease(loop_session_); -} +MacDeviceLister::~MacDeviceLister() { CFRelease(loop_session_); } void MacDeviceLister::Init() { ScopedNSAutoreleasePool pool; @@ -149,24 +142,23 @@ void MacDeviceLister::Init() { // Register for disk mounts/unmounts. loop_session_ = DASessionCreate(kCFAllocatorDefault); DARegisterDiskAppearedCallback( - loop_session_, kDADiskDescriptionMatchVolumeMountable, &DiskAddedCallback, reinterpret_cast(this)); - DARegisterDiskDisappearedCallback( - loop_session_, NULL, &DiskRemovedCallback, reinterpret_cast(this)); + loop_session_, kDADiskDescriptionMatchVolumeMountable, &DiskAddedCallback, + reinterpret_cast(this)); + DARegisterDiskDisappearedCallback(loop_session_, NULL, &DiskRemovedCallback, + reinterpret_cast(this)); DASessionScheduleWithRunLoop(loop_session_, run_loop_, kCFRunLoopDefaultMode); // Register for USB device connection/disconnection. - IONotificationPortRef notification_port = IONotificationPortCreate(kIOMasterPortDefault); - CFMutableDictionaryRef matching_dict = IOServiceMatching(kIOUSBDeviceClassName); + IONotificationPortRef notification_port = + IONotificationPortCreate(kIOMasterPortDefault); + CFMutableDictionaryRef matching_dict = + IOServiceMatching(kIOUSBDeviceClassName); // IOServiceAddMatchingNotification decreases reference count. CFRetain(matching_dict); io_iterator_t it; kern_return_t err = IOServiceAddMatchingNotification( - notification_port, - kIOFirstMatchNotification, - matching_dict, - &USBDeviceAddedCallback, - reinterpret_cast(this), - &it); + notification_port, kIOFirstMatchNotification, matching_dict, + &USBDeviceAddedCallback, reinterpret_cast(this), &it); if (err == KERN_SUCCESS) { USBDeviceAddedCallback(this, it); } else { @@ -174,28 +166,22 @@ void MacDeviceLister::Init() { } err = IOServiceAddMatchingNotification( - notification_port, - kIOTerminatedNotification, - matching_dict, - &USBDeviceRemovedCallback, - reinterpret_cast(this), - &it); + notification_port, kIOTerminatedNotification, matching_dict, + &USBDeviceRemovedCallback, reinterpret_cast(this), &it); if (err == KERN_SUCCESS) { USBDeviceRemovedCallback(this, it); } else { qLog(Warning) << "Could not add notification USB device removal"; } - CFRunLoopSourceRef io_source = IONotificationPortGetRunLoopSource(notification_port); + CFRunLoopSourceRef io_source = + IONotificationPortGetRunLoopSource(notification_port); CFRunLoopAddSource(run_loop_, io_source, kCFRunLoopDefaultMode); CFRunLoopRun(); } -void MacDeviceLister::ShutDown() { - CFRunLoopStop(run_loop_); -} - +void MacDeviceLister::ShutDown() { CFRunLoopStop(run_loop_); } // IOKit helpers. namespace { @@ -203,7 +189,8 @@ namespace { // Caller is responsible for calling CFRelease(). CFTypeRef GetUSBRegistryEntry(io_object_t device, CFStringRef key) { io_iterator_t it; - if (IORegistryEntryGetParentIterator(device, kIOServicePlane, &it) == KERN_SUCCESS) { + if (IORegistryEntryGetParentIterator(device, kIOServicePlane, &it) == + KERN_SUCCESS) { io_object_t next; while ((next = IOIteratorNext(it))) { CFTypeRef registry_entry = (CFStringRef)IORegistryEntryCreateCFProperty( @@ -230,7 +217,8 @@ CFTypeRef GetUSBRegistryEntry(io_object_t device, CFStringRef key) { } QString GetUSBRegistryEntryString(io_object_t device, CFStringRef key) { - ScopedCFTypeRef registry_string((CFStringRef)GetUSBRegistryEntry(device, key)); + ScopedCFTypeRef registry_string( + (CFStringRef)GetUSBRegistryEntry(device, key)); if (registry_string) { return QString::fromUtf8([(NSString*)registry_string.get() UTF8String]); } @@ -240,14 +228,15 @@ QString GetUSBRegistryEntryString(io_object_t device, CFStringRef key) { NSObject* GetPropertyForDevice(io_object_t device, CFStringRef key) { CFMutableDictionaryRef properties; - kern_return_t ret = IORegistryEntryCreateCFProperties( - device, &properties, kCFAllocatorDefault, 0); + kern_return_t ret = IORegistryEntryCreateCFProperties(device, &properties, + kCFAllocatorDefault, 0); if (ret != KERN_SUCCESS) { return nil; } - scoped_nsobject dict((NSDictionary*)properties); // Takes ownership. + scoped_nsobject dict( + (NSDictionary*)properties); // Takes ownership. NSObject* prop = [dict objectForKey:(NSString*)key]; if (prop) { // The dictionary goes out of scope so we should retain this object. @@ -266,10 +255,7 @@ NSObject* GetPropertyForDevice(io_object_t device, CFStringRef key) { int GetUSBDeviceClass(io_object_t device) { ScopedCFTypeRef interface_class(IORegistryEntrySearchCFProperty( - device, - kIOServicePlane, - CFSTR(kUSBInterfaceClass), - kCFAllocatorDefault, + device, kIOServicePlane, CFSTR(kUSBInterfaceClass), kCFAllocatorDefault, kIORegistryIterateRecursively)); NSNumber* number = (NSNumber*)interface_class.get(); if (number) { @@ -280,13 +266,17 @@ int GetUSBDeviceClass(io_object_t device) { } QString GetIconForDevice(io_object_t device) { - scoped_nsobject media_icon((NSDictionary*)GetPropertyForDevice(device, CFSTR("IOMediaIcon"))); + scoped_nsobject media_icon( + (NSDictionary*)GetPropertyForDevice(device, CFSTR("IOMediaIcon"))); if (media_icon) { - NSString* bundle = (NSString*)[media_icon objectForKey:@"CFBundleIdentifier"]; - NSString* file = (NSString*)[media_icon objectForKey:@"IOBundleResourceFile"]; + NSString* bundle = + (NSString*)[media_icon objectForKey:@"CFBundleIdentifier"]; + NSString* file = + (NSString*)[media_icon objectForKey:@"IOBundleResourceFile"]; - scoped_nsobject bundle_url((NSURL*)KextManagerCreateURLForBundleIdentifier( - kCFAllocatorDefault, (CFStringRef)bundle)); + scoped_nsobject bundle_url( + (NSURL*)KextManagerCreateURLForBundleIdentifier(kCFAllocatorDefault, + (CFStringRef)bundle)); QString path = QString::fromUtf8([[bundle_url path] UTF8String]); path += "/Contents/Resources/"; @@ -298,7 +288,8 @@ QString GetIconForDevice(io_object_t device) { } QString GetSerialForDevice(io_object_t device) { - QString serial = GetUSBRegistryEntryString(device, CFSTR(kUSBSerialNumberString)); + QString serial = + GetUSBRegistryEntryString(device, CFSTR(kUSBSerialNumberString)); if (!serial.isEmpty()) { return "USB/" + serial; } @@ -306,8 +297,8 @@ QString GetSerialForDevice(io_object_t device) { } QString GetSerialForMTPDevice(io_object_t device) { - scoped_nsobject serial((NSString*) - GetPropertyForDevice(device, CFSTR(kUSBSerialNumberString))); + scoped_nsobject serial( + (NSString*)GetPropertyForDevice(device, CFSTR(kUSBSerialNumberString))); return QString(QString("MTP/") + QString::fromUtf8([serial UTF8String])); } @@ -320,14 +311,14 @@ QString FindDeviceProperty(const QString& bsd_name, CFStringRef property) { QString ret = GetUSBRegistryEntryString(device.get(), property); return ret; } - } quint64 MacDeviceLister::GetFreeSpace(const QUrl& url) { QMutexLocker l(&libmtp_mutex_); MtpConnection connection(url); if (!connection.is_valid()) { - qLog(Warning) << "Error connecting to MTP device, couldn't get device free space"; + qLog(Warning) + << "Error connecting to MTP device, couldn't get device free space"; return -1; } LIBMTP_devicestorage_t* storage = connection.device()->storage; @@ -343,7 +334,8 @@ quint64 MacDeviceLister::GetCapacity(const QUrl& url) { QMutexLocker l(&libmtp_mutex_); MtpConnection connection(url); if (!connection.is_valid()) { - qLog(Warning) << "Error connecting to MTP device, couldn't get device capacity"; + qLog(Warning) + << "Error connecting to MTP device, couldn't get device capacity"; return -1; } LIBMTP_devicestorage_t* storage = connection.device()->storage; @@ -358,9 +350,11 @@ quint64 MacDeviceLister::GetCapacity(const QUrl& url) { void MacDeviceLister::DiskAddedCallback(DADiskRef disk, void* context) { MacDeviceLister* me = reinterpret_cast(context); - scoped_nsobject properties((NSDictionary*)DADiskCopyDescription(disk)); + scoped_nsobject properties( + (NSDictionary*)DADiskCopyDescription(disk)); - NSString* kind = [properties objectForKey:(NSString*)kDADiskDescriptionMediaKindKey]; + NSString* kind = + [properties objectForKey:(NSString*)kDADiskDescriptionMediaKindKey]; #ifdef HAVE_AUDIOCD if (kind && strcmp([kind UTF8String], kIOCDMediaClass) == 0) { // CD inserted. @@ -371,22 +365,26 @@ void MacDeviceLister::DiskAddedCallback(DADiskRef disk, void* context) { } #endif - NSURL* volume_path = - [[properties objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]; + NSURL* volume_path = [[properties + objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]; if (volume_path) { ScopedIOObject device(DADiskCopyIOMedia(disk)); ScopedCFTypeRef class_name(IOObjectCopyClass(device.get())); - if (class_name && CFStringCompare(class_name.get(), CFSTR(kIOMediaClass), 0) == kCFCompareEqualTo) { - QString vendor = GetUSBRegistryEntryString(device.get(), CFSTR(kUSBVendorString)); - QString product = GetUSBRegistryEntryString(device.get(), CFSTR(kUSBProductString)); + if (class_name && CFStringCompare(class_name.get(), CFSTR(kIOMediaClass), + 0) == kCFCompareEqualTo) { + QString vendor = + GetUSBRegistryEntryString(device.get(), CFSTR(kUSBVendorString)); + QString product = + GetUSBRegistryEntryString(device.get(), CFSTR(kUSBProductString)); CFMutableDictionaryRef cf_properties; kern_return_t ret = IORegistryEntryCreateCFProperties( device.get(), &cf_properties, kCFAllocatorDefault, 0); if (ret == KERN_SUCCESS) { - scoped_nsobject dict((NSDictionary*)cf_properties); // Takes ownership. + scoped_nsobject dict( + (NSDictionary*)cf_properties); // Takes ownership. if ([[dict objectForKey:@"Removable"] intValue] == 1) { QString serial = GetSerialForDevice(device.get()); if (!serial.isEmpty()) { @@ -420,15 +418,9 @@ void MacDeviceLister::DiskRemovedCallback(DADiskRef disk, void* context) { } } -bool DeviceRequest(IOUSBDeviceInterface** dev, - quint8 direction, - quint8 type, - quint8 recipient, - quint8 request_code, - quint16 value, - quint16 index, - quint16 length, - QByteArray* data) { +bool DeviceRequest(IOUSBDeviceInterface** dev, quint8 direction, quint8 type, + quint8 recipient, quint8 request_code, quint16 value, + quint16 index, quint16 length, QByteArray* data) { IOUSBDevRequest req; req.bmRequestType = USBmakebmRequestType(direction, type, recipient); req.bRequest = request_code; @@ -468,15 +460,19 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { io_object_t object; while ((object = IOIteratorNext(it))) { ScopedCFTypeRef class_name(IOObjectCopyClass(object)); - BOOST_SCOPE_EXIT((object)) { - IOObjectRelease(object); - } BOOST_SCOPE_EXIT_END + BOOST_SCOPE_EXIT((object)) { IOObjectRelease(object); } + BOOST_SCOPE_EXIT_END - if (CFStringCompare(class_name.get(), CFSTR(kIOUSBDeviceClassName), 0) == kCFCompareEqualTo) { - NSString* vendor = (NSString*)GetPropertyForDevice(object, CFSTR(kUSBVendorString)); - NSString* product = (NSString*)GetPropertyForDevice(object, CFSTR(kUSBProductString)); - NSNumber* vendor_id = (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBVendorID)); - NSNumber* product_id = (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBProductID)); + if (CFStringCompare(class_name.get(), CFSTR(kIOUSBDeviceClassName), 0) == + kCFCompareEqualTo) { + NSString* vendor = + (NSString*)GetPropertyForDevice(object, CFSTR(kUSBVendorString)); + NSString* product = + (NSString*)GetPropertyForDevice(object, CFSTR(kUSBProductString)); + NSNumber* vendor_id = + (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBVendorID)); + NSNumber* product_id = + (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBProductID)); int interface_class = GetUSBDeviceClass(object); qLog(Debug) << "Interface class:" << interface_class; @@ -492,7 +488,8 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { device.bus = -1; device.address = -1; - if (device.vendor_id == kAppleVendorID || // I think we can safely skip Apple products. + if (device.vendor_id == + kAppleVendorID || // I think we can safely skip Apple products. // Blacklist ilok2 as this probe may be breaking it. (device.vendor_id == 0x088e && device.product_id == 0x5036) || // Blacklist eLicenser @@ -504,7 +501,8 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { continue; } - NSNumber* addr = (NSNumber*)GetPropertyForDevice(object, CFSTR("USB Address")); + NSNumber* addr = + (NSNumber*)GetPropertyForDevice(object, CFSTR("USB Address")); int bus = GetBusNumber(object); if (!addr || bus == -1) { // Failed to get bus or address number. @@ -525,19 +523,15 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { IOCFPlugInInterface** plugin_interface = NULL; SInt32 score; kern_return_t err = IOCreatePlugInInterfaceForService( - object, - kIOUSBDeviceUserClientTypeID, - kIOCFPlugInInterfaceID, - &plugin_interface, - &score); + object, kIOUSBDeviceUserClientTypeID, kIOCFPlugInInterfaceID, + &plugin_interface, &score); if (err != KERN_SUCCESS) { continue; } IOUSBDeviceInterface** dev = NULL; HRESULT result = (*plugin_interface)->QueryInterface( - plugin_interface, - CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID), + plugin_interface, CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID), (LPVOID*)&dev); (*plugin_interface)->Release(plugin_interface); @@ -555,44 +549,43 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { BOOST_SCOPE_EXIT((dev)) { (*dev)->USBDeviceClose(dev); (*dev)->Release(dev); - } BOOST_SCOPE_EXIT_END + } + BOOST_SCOPE_EXIT_END // Request the string descriptor at 0xee. // This is a magic string that indicates whether this device supports MTP. QByteArray data; - bool ret = DeviceRequest( - dev, kUSBIn, kUSBStandard, kUSBDevice, kUSBRqGetDescriptor, - (kUSBStringDesc << 8) | 0xee, 0x0409, 2, &data); - if (!ret) - continue; + bool ret = DeviceRequest(dev, kUSBIn, kUSBStandard, kUSBDevice, + kUSBRqGetDescriptor, + (kUSBStringDesc << 8) | 0xee, 0x0409, 2, &data); + if (!ret) continue; UInt8 string_len = data[0]; - ret = DeviceRequest( - dev, kUSBIn, kUSBStandard, kUSBDevice, kUSBRqGetDescriptor, - (kUSBStringDesc << 8) | 0xee, 0x0409, string_len, &data); - if (!ret) - continue; + ret = DeviceRequest(dev, kUSBIn, kUSBStandard, kUSBDevice, + kUSBRqGetDescriptor, (kUSBStringDesc << 8) | 0xee, + 0x0409, string_len, &data); + if (!ret) continue; // The device actually returned something. That's a good sign. // Because this was designed by MS, the characters are in UTF-16 (LE?). - QString str = QString::fromUtf16(reinterpret_cast(data.data() + 2), (data.size() / 2) - 2); + QString str = QString::fromUtf16( + reinterpret_cast(data.data() + 2), (data.size() / 2) - 2); if (str.startsWith("MSFT100")) { // We got the OS descriptor! char vendor_code = data[16]; - ret = DeviceRequest( - dev, kUSBIn, kUSBVendor, kUSBDevice, vendor_code, 0, 4, 256, &data); - if (!ret || data.at(0) != 0x28) - continue; + ret = DeviceRequest(dev, kUSBIn, kUSBVendor, kUSBDevice, vendor_code, 0, + 4, 256, &data); + if (!ret || data.at(0) != 0x28) continue; if (QString::fromAscii(data.data() + 0x12, 3) != "MTP") { // Not quite. continue; } - ret = DeviceRequest( - dev, kUSBIn, kUSBVendor, kUSBDevice, vendor_code, 0, 5, 256, &data); + ret = DeviceRequest(dev, kUSBIn, kUSBVendor, kUSBDevice, vendor_code, 0, + 5, 256, &data); if (!ret || data.at(0) != 0x28) { continue; } @@ -613,15 +606,19 @@ void MacDeviceLister::USBDeviceRemovedCallback(void* refcon, io_iterator_t it) { io_object_t object; while ((object = IOIteratorNext(it))) { ScopedCFTypeRef class_name(IOObjectCopyClass(object)); - BOOST_SCOPE_EXIT((object)) { - IOObjectRelease(object); - } BOOST_SCOPE_EXIT_END + BOOST_SCOPE_EXIT((object)) { IOObjectRelease(object); } + BOOST_SCOPE_EXIT_END - if (CFStringCompare(class_name.get(), CFSTR(kIOUSBDeviceClassName), 0) == kCFCompareEqualTo) { - NSString* vendor = (NSString*)GetPropertyForDevice(object, CFSTR(kUSBVendorString)); - NSString* product = (NSString*)GetPropertyForDevice(object, CFSTR(kUSBProductString)); - NSNumber* vendor_id = (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBVendorID)); - NSNumber* product_id = (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBProductID)); + if (CFStringCompare(class_name.get(), CFSTR(kIOUSBDeviceClassName), 0) == + kCFCompareEqualTo) { + NSString* vendor = + (NSString*)GetPropertyForDevice(object, CFSTR(kUSBVendorString)); + NSString* product = + (NSString*)GetPropertyForDevice(object, CFSTR(kUSBProductString)); + NSNumber* vendor_id = + (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBVendorID)); + NSNumber* product_id = + (NSNumber*)GetPropertyForDevice(object, CFSTR(kUSBProductID)); QString serial = GetSerialForMTPDevice(object); MTPDevice device; @@ -643,7 +640,8 @@ void MacDeviceLister::RemovedMTPDevice(const QString& serial) { } } -void MacDeviceLister::FoundMTPDevice(const MTPDevice& device, const QString& serial) { +void MacDeviceLister::FoundMTPDevice(const MTPDevice& device, + const QString& serial) { qLog(Debug) << "New MTP device detected!" << device.bus << device.address; mtp_devices_[serial] = device; QList urls = MakeDeviceUrls(serial); @@ -653,9 +651,7 @@ void MacDeviceLister::FoundMTPDevice(const MTPDevice& device, const QString& ser emit DeviceAdded(serial); } -bool IsMTPSerial(const QString& serial) { - return serial.startsWith("MTP"); -} +bool IsMTPSerial(const QString& serial) { return serial.startsWith("MTP"); } bool MacDeviceLister::IsCDDevice(const QString& serial) const { return cd_devices_.contains(serial); @@ -671,23 +667,27 @@ QString MacDeviceLister::MakeFriendlyName(const QString& serial) { } } - QString bsd_name = IsCDDevice(serial) ? *cd_devices_.find(serial) : current_devices_[serial]; + QString bsd_name = + IsCDDevice(serial) ? *cd_devices_.find(serial) : current_devices_[serial]; ScopedCFTypeRef session(DASessionCreate(kCFAllocatorDefault)); ScopedCFTypeRef disk(DADiskCreateFromBSDName( kCFAllocatorDefault, session.get(), bsd_name.toAscii().constData())); if (IsCDDevice(serial)) { - scoped_nsobject properties((NSDictionary*)DADiskCopyDescription(disk.get())); - NSString* device_name = (NSString*)[properties.get() objectForKey: - (NSString*)kDADiskDescriptionMediaNameKey]; + scoped_nsobject properties( + (NSDictionary*)DADiskCopyDescription(disk.get())); + NSString* device_name = (NSString*)[properties.get() + objectForKey:(NSString*)kDADiskDescriptionMediaNameKey]; return QString::fromUtf8([device_name UTF8String]); } ScopedIOObject device(DADiskCopyIOMedia(disk)); - QString vendor = GetUSBRegistryEntryString(device.get(), CFSTR(kUSBVendorString)); - QString product = GetUSBRegistryEntryString(device.get(), CFSTR(kUSBProductString)); + QString vendor = + GetUSBRegistryEntryString(device.get(), CFSTR(kUSBVendorString)); + QString product = + GetUSBRegistryEntryString(device.get(), CFSTR(kUSBProductString)); if (vendor.isEmpty()) { return product; @@ -718,9 +718,10 @@ QList MacDeviceLister::MakeDeviceUrls(const QString& serial) { ScopedCFTypeRef disk(DADiskCreateFromBSDName( kCFAllocatorDefault, session.get(), bsd_name.toAscii().constData())); - scoped_nsobject properties((NSDictionary*)DADiskCopyDescription(disk.get())); - scoped_nsobject volume_path( - [[properties objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); + scoped_nsobject properties( + (NSDictionary*)DADiskCopyDescription(disk.get())); + scoped_nsobject volume_path([[properties + objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); QString path = QString::fromUtf8([[volume_path path] UTF8String]); QUrl ret = MakeUrlFromLocalPath(path); @@ -749,9 +750,10 @@ QVariantList MacDeviceLister::DeviceIcons(const QString& serial) { ScopedIOObject device(DADiskCopyIOMedia(disk.get())); QString icon = GetIconForDevice(device.get()); - scoped_nsobject properties((NSDictionary*)DADiskCopyDescription(disk)); - scoped_nsobject volume_path( - [[properties objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); + scoped_nsobject properties( + (NSDictionary*)DADiskCopyDescription(disk)); + scoped_nsobject volume_path([[properties + objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); QString path = QString::fromUtf8([[volume_path path] UTF8String]); @@ -764,21 +766,21 @@ QVariantList MacDeviceLister::DeviceIcons(const QString& serial) { return ret; } -QString MacDeviceLister::DeviceManufacturer(const QString& serial){ +QString MacDeviceLister::DeviceManufacturer(const QString& serial) { if (IsMTPSerial(serial)) { return mtp_devices_[serial].vendor; } return FindDeviceProperty(current_devices_[serial], CFSTR(kUSBVendorString)); } -QString MacDeviceLister::DeviceModel(const QString& serial){ +QString MacDeviceLister::DeviceModel(const QString& serial) { if (IsMTPSerial(serial)) { return mtp_devices_[serial].product; } return FindDeviceProperty(current_devices_[serial], CFSTR(kUSBProductString)); } -quint64 MacDeviceLister::DeviceCapacity(const QString& serial){ +quint64 MacDeviceLister::DeviceCapacity(const QString& serial) { if (IsMTPSerial(serial)) { QList urls = MakeDeviceUrls(serial); return mtp_devices_[serial].capacity; @@ -799,7 +801,7 @@ quint64 MacDeviceLister::DeviceCapacity(const QString& serial){ return ret; } -quint64 MacDeviceLister::DeviceFreeSpace(const QString& serial){ +quint64 MacDeviceLister::DeviceFreeSpace(const QString& serial) { if (IsMTPSerial(serial)) { QList urls = MakeDeviceUrls(serial); return mtp_devices_[serial].free_space; @@ -809,20 +811,25 @@ quint64 MacDeviceLister::DeviceFreeSpace(const QString& serial){ ScopedCFTypeRef disk(DADiskCreateFromBSDName( kCFAllocatorDefault, session.get(), bsd_name.toAscii().constData())); - scoped_nsobject properties((NSDictionary*)DADiskCopyDescription(disk)); - scoped_nsobject volume_path( - [[properties objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); + scoped_nsobject properties( + (NSDictionary*)DADiskCopyDescription(disk)); + scoped_nsobject volume_path([[properties + objectForKey:(NSString*)kDADiskDescriptionVolumePathKey] copy]); NSNumber* value = nil; NSError* error = nil; - if ([volume_path getResourceValue: &value - forKey: NSURLVolumeAvailableCapacityKey error: &error] && value) { + if ([volume_path getResourceValue:&value + forKey:NSURLVolumeAvailableCapacityKey + error:&error] && + value) { return [value unsignedLongLongValue]; } return 0; } -QVariantMap MacDeviceLister::DeviceHardwareInfo(const QString& serial){return QVariantMap();} +QVariantMap MacDeviceLister::DeviceHardwareInfo(const QString& serial) { + return QVariantMap(); +} bool MacDeviceLister::AskForScan(const QString& serial) const { return !IsCDDevice(serial); @@ -838,8 +845,9 @@ void MacDeviceLister::UnmountDevice(const QString& serial) { DADiskUnmount(disk, kDADiskUnmountOptionDefault, &DiskUnmountCallback, this); } -void MacDeviceLister::DiskUnmountCallback( - DADiskRef disk, DADissenterRef dissenter, void* context) { +void MacDeviceLister::DiskUnmountCallback(DADiskRef disk, + DADissenterRef dissenter, + void* context) { if (dissenter) { qLog(Warning) << "Another app blocked the unmount"; } else { diff --git a/src/networkremote/bonjour.mm b/src/networkremote/bonjour.mm index 1f74fb0fd..12407acfa 100644 --- a/src/networkremote/bonjour.mm +++ b/src/networkremote/bonjour.mm @@ -11,23 +11,24 @@ - (void)netServiceWillPublish:(NSNetService*)netService; - (void)netService:(NSNetService*)netService - didNotPublish:(NSDictionary*)errorDict; + didNotPublish:(NSDictionary*)errorDict; - (void)netServiceDidStop:(NSNetService*)netService; @end @implementation NetServicePublicationDelegate -- (void)netServiceWillPublish: (NSNetService*)netService { +- (void)netServiceWillPublish:(NSNetService*)netService { qLog(Debug) << "Publishing:" << [[netService name] UTF8String]; } -- (void)netService: (NSNetService*)netServie didNotPublish: (NSDictionary*)errorDict { +- (void)netService:(NSNetService*)netServie + didNotPublish:(NSDictionary*)errorDict { qLog(Debug) << "Failed to publish remote service with Bonjour"; NSLog(@"%@", errorDict); } -- (void)netServiceDidStop: (NSNetService*)netService { +- (void)netServiceDidStop:(NSNetService*)netService { qLog(Debug) << "Unpublished:" << [[netService name] UTF8String]; } @@ -36,32 +37,24 @@ namespace { NSString* NSStringFromQString(const QString& s) { - return [[NSString alloc] initWithUTF8String: s.toUtf8().constData()]; + return [[NSString alloc] initWithUTF8String:s.toUtf8().constData()]; +} } -} +Bonjour::Bonjour() : delegate_([[NetServicePublicationDelegate alloc] init]) {} -Bonjour::Bonjour() - : delegate_([[NetServicePublicationDelegate alloc] init]) { -} +Bonjour::~Bonjour() { [delegate_ release]; } -Bonjour::~Bonjour() { - [delegate_ release]; -} - -void Bonjour::PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) { +void Bonjour::PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) { ScopedNSAutoreleasePool pool; NSNetService* service = [[NSNetService alloc] - initWithDomain: NSStringFromQString(domain) - type: NSStringFromQString(type) - name: [NSString stringWithUTF8String: name.constData()] - port: port]; + initWithDomain:NSStringFromQString(domain) + type:NSStringFromQString(type) + name:[NSString stringWithUTF8String:name.constData()] + port:port]; if (service) { - [service setDelegate: delegate_]; + [service setDelegate:delegate_]; [service publish]; } } diff --git a/src/ui/globalshortcutgrabber.mm b/src/ui/globalshortcutgrabber.mm index dfefc5feb..0fe26dd45 100644 --- a/src/ui/globalshortcutgrabber.mm +++ b/src/ui/globalshortcutgrabber.mm @@ -30,13 +30,9 @@ class MacMonitorWrapper : boost::noncopyable { public: - explicit MacMonitorWrapper(id monitor) - : local_monitor_(monitor) { - } + explicit MacMonitorWrapper(id monitor) : local_monitor_(monitor) {} - ~MacMonitorWrapper() { - [NSEvent removeMonitor: local_monitor_]; - } + ~MacMonitorWrapper() { [NSEvent removeMonitor:local_monitor_]; } private: id local_monitor_; @@ -53,13 +49,14 @@ bool GlobalShortcutGrabber::HandleMacEvent(NSEvent* event) { } void GlobalShortcutGrabber::SetupMacEventHandler() { - id monitor = [NSEvent addLocalMonitorForEventsMatchingMask: NSKeyDownMask - handler:^(NSEvent* event) { - return HandleMacEvent(event) ? event : nil; - }]; + id monitor = + [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask + handler:^(NSEvent* event) { + return HandleMacEvent(event) + ? event + : nil; + }]; wrapper_ = new MacMonitorWrapper(monitor); } -void GlobalShortcutGrabber::TeardownMacEventHandler() { - delete wrapper_; -} +void GlobalShortcutGrabber::TeardownMacEventHandler() { delete wrapper_; } diff --git a/src/ui/macsystemtrayicon.mm b/src/ui/macsystemtrayicon.mm index 3142c14ea..cc4695e1a 100644 --- a/src/ui/macsystemtrayicon.mm +++ b/src/ui/macsystemtrayicon.mm @@ -29,29 +29,29 @@ #include #include -@interface Target :NSObject { +@interface Target : NSObject { QAction* action_; } -- (id) initWithQAction: (QAction*)action; -- (void) clicked; +- (id)initWithQAction:(QAction*)action; +- (void)clicked; @end @implementation Target // -- (id) init { +- (id)init { return [super init]; } -- (id) initWithQAction: (QAction*)action { +- (id)initWithQAction:(QAction*)action { action_ = action; return self; } -- (BOOL) validateMenuItem: (NSMenuItem*)menuItem { +- (BOOL)validateMenuItem:(NSMenuItem*)menuItem { // This is called when the menu is shown. return action_->isEnabled(); } -- (void) clicked { +- (void)clicked { action_->trigger(); } @end @@ -62,21 +62,20 @@ class MacSystemTrayIconPrivate : boost::noncopyable { dock_menu_ = [[NSMenu alloc] initWithTitle:@"DockMenu"]; QString title = QT_TR_NOOP("Now Playing"); - NSString* t = [[NSString alloc] initWithUTF8String:title.toUtf8().constData()]; - now_playing_ = [[NSMenuItem alloc] - initWithTitle:t - action:NULL - keyEquivalent:@""]; + NSString* t = + [[NSString alloc] initWithUTF8String:title.toUtf8().constData()]; + now_playing_ = + [[NSMenuItem alloc] initWithTitle:t action:NULL keyEquivalent:@""]; - now_playing_artist_ = [[NSMenuItem alloc] - initWithTitle:@"Nothing to see here" - action:NULL - keyEquivalent:@""]; + now_playing_artist_ = + [[NSMenuItem alloc] initWithTitle:@"Nothing to see here" + action:NULL + keyEquivalent:@""]; - now_playing_title_ = [[NSMenuItem alloc] - initWithTitle:@"Nothing to see here" - action:NULL - keyEquivalent:@""]; + now_playing_title_ = + [[NSMenuItem alloc] initWithTitle:@"Nothing to see here" + action:NULL + keyEquivalent:@""]; [dock_menu_ insertItem:now_playing_title_ atIndex:0]; [dock_menu_ insertItem:now_playing_artist_ atIndex:0]; @@ -84,7 +83,7 @@ class MacSystemTrayIconPrivate : boost::noncopyable { // Don't look now. // This must be called after our custom NSApplicationDelegate has been set. - [(AppDelegate*)([NSApp delegate]) setDockMenu:dock_menu_]; + [(AppDelegate*)([NSApp delegate])setDockMenu:dock_menu_]; ClearNowPlaying(); } @@ -92,13 +91,14 @@ class MacSystemTrayIconPrivate : boost::noncopyable { void AddMenuItem(QAction* action) { // Strip accelarators from name. QString text = action->text().remove("&"); - NSString* title = [[NSString alloc] initWithUTF8String: text.toUtf8().constData()]; - // Create an object that can receive user clicks and pass them on to the QAction. + NSString* title = + [[NSString alloc] initWithUTF8String:text.toUtf8().constData()]; + // Create an object that can receive user clicks and pass them on to the + // QAction. Target* target = [[Target alloc] initWithQAction:action]; - NSMenuItem* item = [[[NSMenuItem alloc] - initWithTitle:title - action:@selector(clicked) - keyEquivalent:@""] autorelease]; + NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title + action:@selector(clicked) + keyEquivalent:@""] autorelease]; [item setEnabled:action->isEnabled()]; [item setTarget:target]; [dock_menu_ addItem:item]; @@ -107,7 +107,8 @@ class MacSystemTrayIconPrivate : boost::noncopyable { void ActionChanged(QAction* action) { NSMenuItem* item = actions_[action]; - NSString* title = [[NSString alloc] initWithUTF8String: action->text().toUtf8().constData()]; + NSString* title = [[NSString alloc] + initWithUTF8String:action->text().toUtf8().constData()]; [item setTitle:title]; } @@ -118,13 +119,18 @@ class MacSystemTrayIconPrivate : boost::noncopyable { void ShowNowPlaying(const QString& artist, const QString& title) { ClearNowPlaying(); // Makes sure the order is consistent. - [now_playing_artist_ setTitle: - [[NSString alloc] initWithUTF8String: artist.toUtf8().constData()]]; - [now_playing_title_ setTitle: - [[NSString alloc] initWithUTF8String: title.toUtf8().constData()]]; - title.isEmpty() ? HideItem(now_playing_title_) : ShowItem(now_playing_title_); - artist.isEmpty() ? HideItem(now_playing_artist_) : ShowItem(now_playing_artist_); - artist.isEmpty() && title.isEmpty() ? HideItem(now_playing_) : ShowItem(now_playing_); + [now_playing_artist_ + setTitle:[[NSString alloc] + initWithUTF8String:artist.toUtf8().constData()]]; + [now_playing_title_ + setTitle:[[NSString alloc] + initWithUTF8String:title.toUtf8().constData()]]; + title.isEmpty() ? HideItem(now_playing_title_) + : ShowItem(now_playing_title_); + artist.isEmpty() ? HideItem(now_playing_artist_) + : ShowItem(now_playing_artist_); + artist.isEmpty() && title.isEmpty() ? HideItem(now_playing_) + : ShowItem(now_playing_); } void ClearNowPlaying() { @@ -156,20 +162,20 @@ class MacSystemTrayIconPrivate : boost::noncopyable { }; MacSystemTrayIcon::MacSystemTrayIcon(QObject* parent) - : SystemTrayIcon(parent), - orange_icon_(QPixmap(":icon_large.png").scaled( - 128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), - grey_icon_(QPixmap(":icon_large_grey.png").scaled( - 128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)) { + : SystemTrayIcon(parent), + orange_icon_(QPixmap(":icon_large.png").scaled( + 128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)), + grey_icon_(QPixmap(":icon_large_grey.png").scaled( + 128, 128, Qt::KeepAspectRatio, Qt::SmoothTransformation)) { QApplication::setWindowIcon(orange_icon_); } -MacSystemTrayIcon::~MacSystemTrayIcon() { -} +MacSystemTrayIcon::~MacSystemTrayIcon() {} -void MacSystemTrayIcon::SetupMenu( - QAction* previous, QAction* play, QAction* stop, QAction* stop_after, - QAction* next, QAction* mute, QAction* love, QAction* ban, QAction* quit) { +void MacSystemTrayIcon::SetupMenu(QAction* previous, QAction* play, + QAction* stop, QAction* stop_after, + QAction* next, QAction* mute, QAction* love, + QAction* ban, QAction* quit) { p_.reset(new MacSystemTrayIconPrivate()); SetupMenuItem(previous); SetupMenuItem(play); @@ -198,10 +204,9 @@ void MacSystemTrayIcon::ActionChanged() { p_->ActionChanged(action); } -void MacSystemTrayIcon::ClearNowPlaying() { - p_->ClearNowPlaying(); -} +void MacSystemTrayIcon::ClearNowPlaying() { p_->ClearNowPlaying(); } -void MacSystemTrayIcon::SetNowPlaying(const Song& song, const QString& image_path) { +void MacSystemTrayIcon::SetNowPlaying(const Song& song, + const QString& image_path) { p_->ShowNowPlaying(song.artist(), song.PrettyTitle()); } diff --git a/src/widgets/osd_mac.mm b/src/widgets/osd_mac.mm index 1e2bbdce4..0147aca5d 100644 --- a/src/widgets/osd_mac.mm +++ b/src/widgets/osd_mac.mm @@ -27,59 +27,60 @@ #include "core/scoped_nsautorelease_pool.h" #include "core/scoped_nsobject.h" -@interface GrowlInterface :NSObject { +@interface GrowlInterface : NSObject { } --(void) SendGrowlAlert:(NSString*)message title:(NSString*)title image:(NSData*)image; --(void) ClickCallback; // Called when user clicks on notification. +- (void)SendGrowlAlert:(NSString*)message + title:(NSString*)title + image:(NSData*)image; +- (void)ClickCallback; // Called when user clicks on notification. @end - @implementation GrowlInterface --(id) init { +- (id)init { if ((self = [super init])) { [GrowlApplicationBridge setGrowlDelegate:self]; } return self; } --(void) dealloc { +- (void)dealloc { [super dealloc]; } --(NSDictionary*) registrationDictionaryForGrowl { - NSArray* array = [NSArray arrayWithObjects:@"next_track", nil]; // Valid notification names. - NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:1], - @"TicketVersion", - array, - @"AllNotifications", - array, - @"DefaultNotifications", - @"com.davidsansome.clementine", - @"ApplicationId", - nil]; +- (NSDictionary*)registrationDictionaryForGrowl { + NSArray* array = [NSArray + arrayWithObjects:@"next_track", nil]; // Valid notification names. + NSDictionary* dict = [NSDictionary + dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1], @"TicketVersion", + array, @"AllNotifications", array, + @"DefaultNotifications", + @"com.davidsansome.clementine", + @"ApplicationId", nil]; return dict; } --(void) growlNotificationWasClicked:(id)clickContext { +- (void)growlNotificationWasClicked:(id)clickContext { if (clickContext) { [self ClickCallback]; } return; } --(void) SendGrowlAlert:(NSString*)message title:(NSString*)title image:(NSData*)image { - [GrowlApplicationBridge notifyWithTitle:title - description:message - notificationName:@"next_track" - iconData:image - priority:0 - isSticky:NO - clickContext:@"click_callback"]; // String sent to our callback. +- (void)SendGrowlAlert:(NSString*)message + title:(NSString*)title + image:(NSData*)image { + [GrowlApplicationBridge + notifyWithTitle:title + description:message + notificationName:@"next_track" + iconData:image + priority:0 + isSticky:NO + clickContext:@"click_callback"]; // String sent to our callback. } --(void) ClickCallback { +- (void)ClickCallback { qDebug() << "Growl notification clicked!"; return; } @@ -92,16 +93,15 @@ class OSD::GrowlNotificationWrapper { growl_interface_ = [[GrowlInterface alloc] init]; } - ~GrowlNotificationWrapper() { - [growl_interface_ release]; - } + ~GrowlNotificationWrapper() { [growl_interface_ release]; } - void ShowMessage(const QString& summary, - const QString& message, + void ShowMessage(const QString& summary, const QString& message, const QImage& image) { - NSString* mac_message = [[NSString alloc] initWithUTF8String:message.toUtf8().constData()]; - NSString* mac_summary = [[NSString alloc] initWithUTF8String:summary.toUtf8().constData()]; + NSString* mac_message = + [[NSString alloc] initWithUTF8String:message.toUtf8().constData()]; + NSString* mac_summary = + [[NSString alloc] initWithUTF8String:summary.toUtf8().constData()]; NSData* image_data = nil; // Growl expects raw TIFF data. @@ -110,12 +110,13 @@ class OSD::GrowlNotificationWrapper { QByteArray tiff_data; QBuffer tiff(&tiff_data); image.save(&tiff, "TIFF"); - image_data = [NSData dataWithBytes:tiff_data.constData() length:tiff_data.size()]; + image_data = + [NSData dataWithBytes:tiff_data.constData() length:tiff_data.size()]; } [growl_interface_ SendGrowlAlert:mac_message - title:mac_summary - image:image_data]; + title:mac_summary + image:image_data]; [mac_message release]; [mac_summary release]; @@ -126,17 +127,11 @@ class OSD::GrowlNotificationWrapper { ScopedNSAutoreleasePool pool_; }; -void OSD::Init() { - wrapper_ = new GrowlNotificationWrapper; -} +void OSD::Init() { wrapper_ = new GrowlNotificationWrapper; } -bool OSD::SupportsNativeNotifications() { - return true; -} +bool OSD::SupportsNativeNotifications() { return true; } -bool OSD::SupportsTrayPopups() { - return false; -} +bool OSD::SupportsTrayPopups() { return false; } namespace { @@ -150,12 +145,11 @@ void SendNotificationCenterMessage(NSString* title, NSString* subtitle) { Class user_notification_class = NSClassFromString(@"NSUserNotification"); id notification = [[user_notification_class alloc] init]; - [notification setTitle: title]; - [notification setSubtitle: subtitle]; + [notification setTitle:title]; + [notification setSubtitle:subtitle]; - [notification_center deliverNotification: notification]; + [notification_center deliverNotification:notification]; } - } void OSD::ShowMessageNative(const QString& summary, const QString& message, From e244c9cfb2033a9dc03fa228f2d017091484d0cc Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Thu, 30 Jan 2014 15:08:53 +0100 Subject: [PATCH 047/362] My fault, was testing something and forgoten to replace song.basefilename() --- src/ui/organisedialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 01bf74e96..4b4e3567e 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -147,7 +147,7 @@ int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_siz // Load some of the songs to show in the preview for (const QString& filename : filenames) { - TagReaderClient::Instance()->ReadFileBlocking(song.basefilename(), &song); + TagReaderClient::Instance()->ReadFileBlocking(filename, &song); if (song.is_valid()) songs << song; } From d58686e94ab50343128400a462b417085cd8c7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Thu, 30 Jan 2014 17:02:11 +0100 Subject: [PATCH 048/362] [Desktop file] Serbian translations --- dist/clementine.desktop | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/dist/clementine.desktop b/dist/clementine.desktop index d854b88f8..1bbe83a42 100755 --- a/dist/clementine.desktop +++ b/dist/clementine.desktop @@ -2,12 +2,24 @@ Version=1.0 Type=Application Name=Clementine +Name[sr]=Клементина +Name[sr@ijekavian]=Клементина +Name[sr@ijekavianlatin]=Klementina +Name[sr@latin]=Klementina GenericName=Clementine Music Player GenericName[pl]=Odtwarzacz muzyki Clementine GenericName[pt]=Reprodutor de músicas Clementine +GenericName[sr]=Клементина музички плејер +GenericName[sr@ijekavian]=Клементина музички плејер +GenericName[sr@ijekavianlatin]=Klementina muzički plejer +GenericName[sr@latin]=Klementina muzički plejer Comment=Plays music and last.fm streams Comment[pl]=Odtwarzanie muzyki i strumieni last.fm Comment[pt]=Reprodução de músicas e emissões last.fm +Comment[sr]=Репродукује музику и last.fm токове +Comment[sr@ijekavian]=Репродукује музику и last.fm токове +Comment[sr@ijekavianlatin]=Reprodukuje muziku i last.fm tokove +Comment[sr@latin]=Reprodukuje muziku i last.fm tokove Exec=clementine %U TryExec=clementine Icon=application-x-clementine @@ -59,6 +71,9 @@ Name[ru]=Воспроизвести Name[sk]=Hrať Name[sl]=Predvajaj Name[sr]=Пусти +Name[sr@ijekavian]=Пусти +Name[sr@ijekavianlatin]=Pusti +Name[sr@latin]=Pusti Name[sv]=Spela upp Name[tr]=Çal Name[uk]=Відтворити @@ -103,6 +118,9 @@ Name[ru]=Приостановить Name[sk]=Pozastaviť Name[sl]=Začasno ustavi Name[sr]=Паузирај +Name[sr@ijekavian]=Паузирај +Name[sr@ijekavianlatin]=Pauziraj +Name[sr@latin]=Pauziraj Name[sv]=Gör paus Name[tr]=Duraklat Name[uk]=Призупинити @@ -150,6 +168,9 @@ Name[ru]=Остановить Name[sk]=Zastaviť Name[sl]=Zaustavi Name[sr]=Заустави +Name[sr@ijekavian]=Заустави +Name[sr@ijekavianlatin]=Zaustavi +Name[sr@latin]=Zaustavi Name[sv]=Stoppa Name[tr]=Durdur Name[uk]=Зупинити @@ -194,7 +215,10 @@ Name[ro]=Precedenta Name[ru]=Предыдущий Name[sk]=Predchádzajúca Name[sl]=Predhodni -Name[sr]=Prethodno +Name[sr]=Претходна +Name[sr@ijekavian]=Претходна +Name[sr@ijekavianlatin]=Prethodna +Name[sr@latin]=Prethodna Name[sv]=Föregående Name[tr]=Önceki Name[uk]=Попередня @@ -243,7 +267,10 @@ Name[ro]=Următoarea Name[ru]=Дальше Name[sk]=Ďalšia Name[sl]=Naslednji -Name[sr]=Sledeće +Name[sr]=Следећа +Name[sr@ijekavian]=Сљедећа +Name[sr@ijekavianlatin]=Sljedeća +Name[sr@latin]=Sledeća Name[sv]=Nästa Name[tr]=İleri Name[uk]=Наступна From e3e03bcc182ead4ad4d35c2b8e68bccee460be4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Thu, 30 Jan 2014 17:04:55 +0100 Subject: [PATCH 049/362] [Desktop file] Add Audio group --- dist/clementine.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/clementine.desktop b/dist/clementine.desktop index d854b88f8..8dc5261d8 100755 --- a/dist/clementine.desktop +++ b/dist/clementine.desktop @@ -12,7 +12,7 @@ Exec=clementine %U TryExec=clementine Icon=application-x-clementine Terminal=false -Categories=AudioVideo;Player;Qt; +Categories=AudioVideo;Player;Qt;Audio; StartupNotify=false MimeType=application/ogg;application/x-ogg;application/x-ogm-audio;audio/aac;audio/mp4;audio/mpeg;audio/mpegurl;audio/ogg;audio/vnd.rn-realaudio;audio/vorbis;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-ms-wma;audio/x-musepack;audio/x-oggflac;audio/x-pn-realaudio;audio/x-scpls;audio/x-speex;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;video/x-ms-asf;x-content/audio-player;x-scheme-handler/zune;x-scheme-handler/itpc;x-scheme-handler/itms;x-scheme-handler/feed; X-Ayatana-Desktop-Shortcuts=Play;Pause;Stop;Previous;Next; From dac137cf11af701af327573f444eb6efea3ff31d Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Fri, 31 Jan 2014 20:17:26 +0100 Subject: [PATCH 050/362] Remove useless check. No need to check isNull if you're checking isEmpty (see http://qt-project.org/doc/qt-4.8/qstring.html#distinction-between-null-and-empty-strings "A null string is always empty"). --- src/podcasts/podcastepisode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/podcasts/podcastepisode.cpp b/src/podcasts/podcastepisode.cpp index 1b8f402d7..4924a7810 100644 --- a/src/podcasts/podcastepisode.cpp +++ b/src/podcasts/podcastepisode.cpp @@ -175,7 +175,7 @@ Song PodcastEpisode::ToSong(const Podcast& podcast) const { ret.set_album(podcast.title().simplified()); ret.set_art_automatic(podcast.ImageUrlLarge().toString()); - if (author().isNull() || author().isEmpty()) + if (author().isEmpty()) ret.set_artist(podcast.title().simplified()); } return ret; From 06184cc5fbccdbe49b6667cbe2140f802cc422eb Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Sat, 1 Feb 2014 03:22:41 +0100 Subject: [PATCH 051/362] Avoid having empty filenames, or filenames with extension only. In this case, keep the original filename. --- src/core/organise.cpp | 11 +++-------- src/core/organise.h | 2 -- src/core/organiseformat.cpp | 10 ++++++++++ src/core/utilities.cpp | 10 ++++++++++ src/core/utilities.h | 3 +++ 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 76fe82192..edae628b9 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -20,6 +20,7 @@ #include "taskmanager.h" #include "core/logging.h" #include "core/tagreaderclient.h" +#include "core/utilities.h" #include #include @@ -138,8 +139,8 @@ void Organise::ProcessSomeFiles() { song.set_filetype(task.new_filetype_); // Fiddle the filename extension as well to match the new type - song.set_url(QUrl::fromLocalFile(FiddleFileExtension(song.basefilename(), task.new_extension_))); - song.set_basefilename(FiddleFileExtension(song.basefilename(), task.new_extension_)); + song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_))); + song.set_basefilename(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_)); // Have to set this to the size of the new file or else funny stuff happens song.set_filesize(QFileInfo(task.transcoded_filename_).size()); @@ -274,12 +275,6 @@ void Organise::FileTranscoded(const QString& filename, bool success) { QTimer::singleShot(0, this, SLOT(ProcessSomeFiles())); } -QString Organise::FiddleFileExtension(const QString& filename, const QString& new_extension) { - if (filename.section('/', -1, -1).contains('.')) - return filename.section('.', 0, -2) + "." + new_extension; - return filename + "." + new_extension; -} - void Organise::timerEvent(QTimerEvent* e) { QObject::timerEvent(e); diff --git a/src/core/organise.h b/src/core/organise.h index bb675b830..a65142459 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -59,8 +59,6 @@ private: void UpdateProgress(); Song::FileType CheckTranscode(Song::FileType original_type) const; - static QString FiddleFileExtension(const QString& filename, const QString& new_extension); - private: struct Task { explicit Task(const Song& song = Song()) diff --git a/src/core/organiseformat.cpp b/src/core/organiseformat.cpp index 56b314ebd..f911252d8 100644 --- a/src/core/organiseformat.cpp +++ b/src/core/organiseformat.cpp @@ -18,10 +18,12 @@ #include "core/organiseformat.h" #include +#include #include #include #include "core/timeconstants.h" +#include "core/utilities.h" const char* OrganiseFormat::kTagPattern = "\\%([a-zA-Z]*)"; const char* OrganiseFormat::kBlockPattern = "\\{([^{}]+)\\}"; @@ -73,6 +75,14 @@ bool OrganiseFormat::IsValid() const { QString OrganiseFormat::GetFilenameForSong(const Song &song) const { QString filename = ParseBlock(format_, song); + if (QFileInfo(filename).completeBaseName().isEmpty()) { + // Avoid having empty filenames, or filenames with extension only: in this + // case, keep the original filename. + // We remove the extension from "filename" if it exists, as song.basefilename() + // also contains the extension. + filename = Utilities::PathWithoutFilenameExtension(filename) + song.basefilename(); + } + if (replace_spaces_) filename.replace(QRegExp("\\s"), "_"); diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index cf0ed3ad1..4c89139bb 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -667,6 +667,16 @@ QUrl GetRelativePathToClementineBin(const QUrl& url) { return QUrl::fromLocalFile(appPath.relativeFilePath(url.toLocalFile())); } +QString PathWithoutFilenameExtension(const QString& filename) { + if (filename.section('/', -1, -1).contains('.')) + return filename.section('.', 0, -2); + return filename; +} + +QString FiddleFileExtension(const QString& filename, const QString& new_extension) { + return PathWithoutFilenameExtension(filename) + "." + new_extension; +} + } // namespace Utilities diff --git a/src/core/utilities.h b/src/core/utilities.h index bf3c31426..b71225bf0 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -113,6 +113,9 @@ namespace Utilities { // Get relative path to clementine binary QUrl GetRelativePathToClementineBin(const QUrl& url); + // Get the path without the filename extension + QString PathWithoutFilenameExtension(const QString& filename); + QString FiddleFileExtension(const QString& filename, const QString& new_extension); enum ConfigPath { Path_Root, From ee20103510336a13fdf09cae3dbb36372bcc0b6b Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Sat, 1 Feb 2014 03:35:34 +0100 Subject: [PATCH 052/362] Set overwrite to false by default in organise dialog. Too dangerous to be activated by default IMO. --- src/ui/organisedialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 4b4e3567e..3d915b827 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -231,7 +231,7 @@ void OrganiseDialog::Reset() { ui_->replace_ascii->setChecked(false); ui_->replace_spaces->setChecked(false); ui_->replace_the->setChecked(false); - ui_->overwrite->setChecked(true); + ui_->overwrite->setChecked(false); ui_->eject_after->setChecked(false); } @@ -244,7 +244,7 @@ void OrganiseDialog::showEvent(QShowEvent*) { ui_->replace_ascii->setChecked(s.value("replace_ascii", false).toBool()); ui_->replace_spaces->setChecked(s.value("replace_spaces", false).toBool()); ui_->replace_the->setChecked(s.value("replace_the", false).toBool()); - ui_->overwrite->setChecked(s.value("overwrite", true).toBool()); + ui_->overwrite->setChecked(s.value("overwrite", false).toBool()); ui_->eject_after->setChecked(s.value("eject_after", false).toBool()); QString destination = s.value("destination").toString(); From 7317b6792e08679bc927f0bb48608c9d80ba0549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20T=C3=A4tzner?= Date: Sat, 1 Feb 2014 20:21:28 +0100 Subject: [PATCH 053/362] don't rescan unchanged files if library has been unavailable --- src/library/library.cpp | 2 ++ src/library/librarybackend.cpp | 7 ++++--- src/library/librarybackend.h | 2 +- src/library/librarywatcher.cpp | 27 +++++++++++++++++---------- src/library/librarywatcher.h | 8 +++++--- 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/library/library.cpp b/src/library/library.cpp index 308ce7233..ec50c825b 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -126,6 +126,8 @@ void Library::Init() { backend_, SLOT(UpdateMTimesOnly(SongList))); connect(watcher_, SIGNAL(SongsDeleted(SongList)), backend_, SLOT(MarkSongsUnavailable(SongList))); + connect(watcher_, SIGNAL(SongsReadded(SongList,bool)), + backend_, SLOT(MarkSongsUnavailable(SongList,bool))); connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), diff --git a/src/library/librarybackend.cpp b/src/library/librarybackend.cpp index 78c73b396..ad7cd2ecd 100644 --- a/src/library/librarybackend.cpp +++ b/src/library/librarybackend.cpp @@ -445,12 +445,13 @@ void LibraryBackend::DeleteSongs(const SongList &songs) { UpdateTotalSongCountAsync(); } -void LibraryBackend::MarkSongsUnavailable(const SongList &songs) { +void LibraryBackend::MarkSongsUnavailable(const SongList& songs, bool unavailable) { + qLog(Debug) << int(unavailable) << " mark unavailable"; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery remove(QString("UPDATE %1 SET unavailable = 1 WHERE ROWID = :id") - .arg(songs_table_), db); + QSqlQuery remove(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id") + .arg(songs_table_).arg(int(unavailable)), db); ScopedTransaction transaction(&db); foreach (const Song& song, songs) { diff --git a/src/library/librarybackend.h b/src/library/librarybackend.h index b5026d41f..45137c800 100644 --- a/src/library/librarybackend.h +++ b/src/library/librarybackend.h @@ -174,7 +174,7 @@ class LibraryBackend : public LibraryBackendInterface { void AddOrUpdateSongs(const SongList& songs); void UpdateMTimesOnly(const SongList& songs); void DeleteSongs(const SongList& songs); - void MarkSongsUnavailable(const SongList& songs); + void MarkSongsUnavailable(const SongList& songs, bool unavailable = true); void AddOrUpdateSubdirs(const SubdirectoryList& subdirs); void UpdateCompilations(); void UpdateManualAlbumArt(const QString& artist, const QString& album, const QString& art); diff --git a/src/library/librarywatcher.cpp b/src/library/librarywatcher.cpp index 4a421a840..c32680e2c 100644 --- a/src/library/librarywatcher.cpp +++ b/src/library/librarywatcher.cpp @@ -108,6 +108,9 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() { if (!deleted_songs.isEmpty()) emit watcher_->SongsDeleted(deleted_songs); + if (!readded_songs.isEmpty()) + emit watcher_->SongsReadded(readded_songs); + if (!new_subdirs.isEmpty()) emit watcher_->SubdirsDiscovered(new_subdirs); @@ -323,8 +326,7 @@ void LibraryWatcher::ScanSubdirectory( // watch out for cue songs which have their mtime equal to qMax(media_file_mtime, cue_sheet_mtime) bool changed = (matching_song.mtime() != qMax(file_info.lastModified().toTime_t(), song_cue_mtime)) - || cue_deleted || cue_added - || matching_song.is_unavailable(); + || cue_deleted || cue_added; // Also want to look to see whether the album art has changed QString image = ImageForSong(file, album_art); @@ -347,6 +349,11 @@ void LibraryWatcher::ScanSubdirectory( UpdateNonCueAssociatedSong(file, matching_song, image, cue_deleted, t); } } + + // nothing has changed - mark the song available without re-scanning + if (matching_song.is_unavailable()) + t->readded_songs << matching_song; + } else { // The song is on disk but not in the DB SongList song_list = ScanNewFile(file, path, matching_cue, &cues_processed); @@ -516,11 +523,11 @@ void LibraryWatcher::PreserveUserSetData(const QString& file, const QString& ima out->MergeUserSetData(matching_song); - // The song was deleted from the database (e.g. due to an unmounted + // The song was deleted from the database (e.g. due to an unmounted // filesystem), but has been restored. if (matching_song.is_unavailable()) { qLog(Debug) << file << " unavailable song restored"; - + t->new_songs << *out; } else if (!matching_song.IsMetadataEqual(*out)) { qLog(Debug) << file << "metadata changed"; @@ -623,14 +630,14 @@ void LibraryWatcher::RescanPathsNow() { } QString LibraryWatcher::PickBestImage(const QStringList& images) { - + // This is used when there is more than one image in a directory. // Pick the biggest image that matches the most important filter - + QStringList filtered; - + foreach(const QString& filter_text, best_image_filters_) { - // the images in the images list are represented by a full path, + // the images in the images list are represented by a full path, // so we need to isolate just the filename foreach(const QString& image, images) { QFileInfo file_info(image); @@ -639,13 +646,13 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { filtered << image; } - /* We assume the filters are give in the order best to worst, so + /* We assume the filters are give in the order best to worst, so if we've got a result, we go with it. Otherwise we might start capturing more generic rules */ if (!filtered.isEmpty()) break; } - + if (filtered.isEmpty()){ // the filter was too restrictive, just use the original list filtered = images; diff --git a/src/library/librarywatcher.h b/src/library/librarywatcher.h index 09b205742..8678a5c5c 100644 --- a/src/library/librarywatcher.h +++ b/src/library/librarywatcher.h @@ -57,6 +57,7 @@ class LibraryWatcher : public QObject { void NewOrUpdatedSongs(const SongList& songs); void SongsMTimeUpdated(const SongList& songs); void SongsDeleted(const SongList& songs); + void SongsReadded(const SongList& songs, bool unavailable = false); void SubdirsDiscovered(const SubdirectoryList& subdirs); void SubdirsMTimeUpdated(const SubdirectoryList& subdirs); void CompilationsNeedUpdating(); @@ -99,6 +100,7 @@ class LibraryWatcher : public QObject { bool ignores_mtime() const { return ignores_mtime_; } SongList deleted_songs; + SongList readded_songs; SongList new_songs; SongList touched_songs; SubdirectoryList new_subdirs; @@ -160,7 +162,7 @@ class LibraryWatcher : public QObject { void UpdateNonCueAssociatedSong(const QString& file, const Song& matching_song, const QString& image, bool cue_deleted, ScanTransaction* t) ; - // Updates a new song with some metadata taken from it's equivalent old + // Updates a new song with some metadata taken from it's equivalent old // song (for example rating and score). void PreserveUserSetData(const QString& file, const QString& image, const Song& matching_song, Song* out, ScanTransaction* t); @@ -178,12 +180,12 @@ class LibraryWatcher : public QObject { FileSystemWatcherInterface* fs_watcher_; QHash subdir_mapping_; - /* A list of words use to try to identify the (likely) best image + /* A list of words use to try to identify the (likely) best image * found in an directory to use as cover artwork. * e.g. using ["front", "cover"] would identify front.jpg and * exclude back.jpg. */ - QStringList best_image_filters_; + QStringList best_image_filters_; bool stop_requested_; bool scan_on_startup_; From 96075faf88bf65ed7b94985f98228a2d0974a437 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 2 Feb 2014 09:21:31 +0000 Subject: [PATCH 054/362] Namespace clementine's 3rdparty implementation of sha2 to prevent its symbols conflicting with the system's openssl symbols with the same names. This was causing SSL connections to fail in weird ways on Debian. Fixes #4130. --- 3rdparty/sha2/CMakeLists.txt | 2 +- 3rdparty/sha2/{sha2.c => sha2.cpp} | 3 + 3rdparty/sha2/sha2.h | 121 ++++------------------------- src/core/utilities.cpp | 14 ++-- 4 files changed, 26 insertions(+), 114 deletions(-) rename 3rdparty/sha2/{sha2.c => sha2.cpp} (99%) diff --git a/3rdparty/sha2/CMakeLists.txt b/3rdparty/sha2/CMakeLists.txt index 9befb1ecd..3a5da0a2f 100644 --- a/3rdparty/sha2/CMakeLists.txt +++ b/3rdparty/sha2/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 2.6) -add_library(sha2 STATIC sha2.c) +add_library(sha2 STATIC sha2.cpp) diff --git a/3rdparty/sha2/sha2.c b/3rdparty/sha2/sha2.cpp similarity index 99% rename from 3rdparty/sha2/sha2.c rename to 3rdparty/sha2/sha2.cpp index 7ad5ea666..36be426a9 100644 --- a/3rdparty/sha2/sha2.c +++ b/3rdparty/sha2/sha2.cpp @@ -92,6 +92,8 @@ #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN #endif +namespace clementine_sha2 { + /* * Define the followingsha2_* types to types of the correct length on * the native archtecture. Most BSD systems and Linux define u_intXX_t @@ -1066,3 +1068,4 @@ char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_S return SHA384_End(&context, digest); } +} // namespace clementine_sha2 diff --git a/3rdparty/sha2/sha2.h b/3rdparty/sha2/sha2.h index e8413e549..6f2335511 100644 --- a/3rdparty/sha2/sha2.h +++ b/3rdparty/sha2/sha2.h @@ -32,13 +32,8 @@ * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ */ -#ifndef __SHA2_H__ -#define __SHA2_H__ - -#ifdef __cplusplus -extern "C" { -#endif - +#ifndef __CLEMENTINE_SHA2_H__ +#define __CLEMENTINE_SHA2_H__ /* * Import u_intXX_t size_t type definitions from system headers. You @@ -47,23 +42,18 @@ extern "C" { */ #include -#ifdef SHA2_USE_INTTYPES_H - -#include - -#endif /* SHA2_USE_INTTYPES_H */ - +namespace clementine_sha2 { /*** SHA-256/384/512 Various Length Definitions ***********************/ -#define SHA256_BLOCK_LENGTH 64 -#define SHA256_DIGEST_LENGTH 32 -#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) -#define SHA384_BLOCK_LENGTH 128 -#define SHA384_DIGEST_LENGTH 48 -#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) -#define SHA512_BLOCK_LENGTH 128 -#define SHA512_DIGEST_LENGTH 64 -#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) +static const int SHA256_BLOCK_LENGTH = 64; +static const int SHA256_DIGEST_LENGTH = 32; +static const int SHA256_DIGEST_STRING_LENGTH = (SHA256_DIGEST_LENGTH * 2 + 1); +static const int SHA384_BLOCK_LENGTH = 128; +static const int SHA384_DIGEST_LENGTH = 48; +static const int SHA384_DIGEST_STRING_LENGTH = (SHA384_DIGEST_LENGTH * 2 + 1); +static const int SHA512_BLOCK_LENGTH = 128; +static const int SHA512_DIGEST_LENGTH = 64; +static const int SHA512_DIGEST_STRING_LENGTH = (SHA512_DIGEST_LENGTH * 2 + 1); /*** SHA-256/384/512 Context Structures *******************************/ @@ -76,36 +66,6 @@ typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ #endif -/* - * Most BSD systems already define u_intXX_t types, as does Linux. - * Some systems, however, like Compaq's Tru64 Unix instead can use - * uintXX_t types defined by very recent ANSI C standards and included - * in the file: - * - * #include - * - * If you choose to use then please define: - * - * #define SHA2_USE_INTTYPES_H - * - * Or on the command line during compile: - * - * cc -DSHA2_USE_INTTYPES_H ... - */ -#ifdef SHA2_USE_INTTYPES_H - -typedef struct _SHA256_CTX { - uint32_t state[8]; - uint64_t bitcount; - uint8_t buffer[SHA256_BLOCK_LENGTH]; -} SHA256_CTX; -typedef struct _SHA512_CTX { - uint64_t state[8]; - uint64_t bitcount[2]; - uint8_t buffer[SHA512_BLOCK_LENGTH]; -} SHA512_CTX; - -#else /* SHA2_USE_INTTYPES_H */ typedef struct _SHA256_CTX { u_int32_t state[8]; @@ -118,35 +78,9 @@ typedef struct _SHA512_CTX { u_int8_t buffer[SHA512_BLOCK_LENGTH]; } SHA512_CTX; -#endif /* SHA2_USE_INTTYPES_H */ - typedef SHA512_CTX SHA384_CTX; -/*** SHA-256/384/512 Function Prototypes ******************************/ -#ifndef NOPROTO -#ifdef SHA2_USE_INTTYPES_H - -void SHA256_Init(SHA256_CTX *); -void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); -void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); -char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); -char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); - -void SHA384_Init(SHA384_CTX*); -void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); -void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); -char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); -char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); - -void SHA512_Init(SHA512_CTX*); -void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); -void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); -char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); -char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); - -#else /* SHA2_USE_INTTYPES_H */ - void SHA256_Init(SHA256_CTX *); void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); @@ -165,33 +99,6 @@ void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); -#endif /* SHA2_USE_INTTYPES_H */ - -#else /* NOPROTO */ - -void SHA256_Init(); -void SHA256_Update(); -void SHA256_Final(); -char* SHA256_End(); -char* SHA256_Data(); - -void SHA384_Init(); -void SHA384_Update(); -void SHA384_Final(); -char* SHA384_End(); -char* SHA384_Data(); - -void SHA512_Init(); -void SHA512_Update(); -void SHA512_Final(); -char* SHA512_End(); -char* SHA512_Data(); - -#endif /* NOPROTO */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SHA2_H__ */ +} // namespace clementine_sha2 +#endif /* __CLEMENTINE_SHA2_H__ */ diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 4c89139bb..0f7dc6373 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -445,13 +445,15 @@ QByteArray HmacSha1(const QByteArray& key, const QByteArray& data) { } QByteArray Sha256(const QByteArray& data) { - SHA256_CTX context; - SHA256_Init(&context); - SHA256_Update(&context, reinterpret_cast(data.constData()), - data.length()); + clementine_sha2::SHA256_CTX context; + clementine_sha2::SHA256_Init(&context); + clementine_sha2::SHA256_Update( + &context, reinterpret_cast(data.constData()), + data.length()); - QByteArray ret(SHA256_DIGEST_LENGTH, '\0'); - SHA256_Final(reinterpret_cast(ret.data()), &context); + QByteArray ret(clementine_sha2::SHA256_DIGEST_LENGTH, '\0'); + clementine_sha2::SHA256_Final( + reinterpret_cast(ret.data()), &context); return ret; } From a349a96f5a5c1df47e883856a89932bc14aee134 Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Sun, 2 Feb 2014 19:28:45 +0100 Subject: [PATCH 055/362] Avoid having similar filenames when organising songs (number them instead) --- src/core/organise.cpp | 24 ++++++------ src/core/organise.h | 17 +++++++-- src/core/organiseformat.cpp | 3 +- src/ui/organisedialog.cpp | 33 ++++++++++++++-- src/ui/organisedialog.h | 10 +++++ tests/CMakeLists.txt | 1 + tests/organisedialog_test.cpp | 71 +++++++++++++++++++++++++++++++++++ 7 files changed, 138 insertions(+), 21 deletions(-) create mode 100644 tests/organisedialog_test.cpp diff --git a/src/core/organise.cpp b/src/core/organise.cpp index edae628b9..b9efc0dab 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -36,7 +36,7 @@ const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, boost::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, - const SongList& songs, bool eject_after) + const NewSongInfoList& songs_info, bool eject_after) : thread_(NULL), task_manager_(task_manager), transcoder_(new Transcoder(this)), @@ -45,7 +45,7 @@ Organise::Organise(TaskManager* task_manager, copy_(copy), overwrite_(overwrite), eject_after_(eject_after), - task_count_(songs.count()), + task_count_(songs_info.count()), transcode_suffix_(1), tasks_complete_(0), started_(false), @@ -54,8 +54,8 @@ Organise::Organise(TaskManager* task_manager, { original_thread_ = thread(); - for (const Song& song : songs) { - tasks_pending_ << Task(song); + for (const NewSongInfo& song_info : songs_info) { + tasks_pending_ << Task(song_info); } } @@ -81,7 +81,7 @@ void Organise::ProcessSomeFiles() { if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( for (const Task& task : tasks_pending_) - files_with_errors_ << task.song_.url().toLocalFile(); + files_with_errors_ << task.song_info_.song_.url().toLocalFile(); tasks_pending_.clear(); } started_ = true; @@ -124,10 +124,10 @@ void Organise::ProcessSomeFiles() { break; Task task = tasks_pending_.takeFirst(); - qLog(Info) << "Processing" << task.song_.url().toLocalFile(); + qLog(Info) << "Processing" << task.song_info_.song_.url().toLocalFile(); // Use a Song instead of a tag reader - Song song = task.song_; + Song song = task.song_info_.song_; if (!song.is_valid()) continue; @@ -157,14 +157,14 @@ void Organise::ProcessSomeFiles() { QString::number(transcode_suffix_++); task.new_extension_ = preset.extension_; task.new_filetype_ = dest_type; - tasks_transcoding_[task.song_.url().toLocalFile()] = task; + tasks_transcoding_[task.song_info_.song_.url().toLocalFile()] = task; qLog(Debug) << "Transcoding to" << task.transcoded_filename_; // Start the transcoding - this will happen in the background and // FileTranscoded() will get called when it's done. At that point the // task will get re-added to the pending queue with the new filename. - transcoder_->AddJob(task.song_.url().toLocalFile(), preset, task.transcoded_filename_); + transcoder_->AddJob(task.song_info_.song_.url().toLocalFile(), preset, task.transcoded_filename_); transcoder_->Start(); continue; } @@ -172,8 +172,8 @@ void Organise::ProcessSomeFiles() { MusicStorage::CopyJob job; job.source_ = task.transcoded_filename_.isEmpty() ? - task.song_.url().toLocalFile() : task.transcoded_filename_; - job.destination_ = format_.GetFilenameForSong(song); + task.song_info_.song_.url().toLocalFile() : task.transcoded_filename_; + job.destination_ = task.song_info_.new_filename_; job.metadata_ = song; job.overwrite_ = overwrite_; job.remove_original_ = !copy_; @@ -181,7 +181,7 @@ void Organise::ProcessSomeFiles() { this, _1, !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { - files_with_errors_ << task.song_.basefilename(); + files_with_errors_ << task.song_info_.song_.basefilename(); } // Clean up the temporary transcoded file diff --git a/src/core/organise.h b/src/core/organise.h index a65142459..b40bf8cb9 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -34,10 +34,19 @@ class Organise : public QObject { Q_OBJECT public: + + struct NewSongInfo { + NewSongInfo(const Song& song = Song(), const QString& new_filename = QString()) + : song_(song), new_filename_(new_filename) {} + Song song_; + QString new_filename_; + }; + typedef QList NewSongInfoList; + Organise(TaskManager* task_manager, boost::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, - const SongList& songs, bool eject_after); + const NewSongInfoList& songs, bool eject_after); static const int kBatchSize; static const int kTranscodeProgressInterval; @@ -61,10 +70,10 @@ private: private: struct Task { - explicit Task(const Song& song = Song()) - : song_(song), transcode_progress_(0.0) {} + explicit Task(const NewSongInfo& song_info = NewSongInfo()) + : song_info_(song_info), transcode_progress_(0.0) {} - Song song_; + NewSongInfo song_info_; float transcode_progress_; QString transcoded_filename_; diff --git a/src/core/organiseformat.cpp b/src/core/organiseformat.cpp index f911252d8..e8be2030a 100644 --- a/src/core/organiseformat.cpp +++ b/src/core/organiseformat.cpp @@ -161,8 +161,7 @@ QString OrganiseFormat::TagValue(const QString &tag, const Song &song) const { QString::number(song.length_nanosec() / kNsecPerSec); else if (tag == "bitrate") value = QString::number(song.bitrate()); else if (tag == "samplerate") value = QString::number(song.samplerate()); - else if (tag == "extension") value = - song.url().toLocalFile().section('.', -1, -1); + else if (tag == "extension") value = QFileInfo(song.url().toLocalFile()).suffix(); else if (tag == "artistinitial") { value = song.effective_albumartist().trimmed(); if (replace_the_ && !value.isEmpty()) diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 3d915b827..27eaf4e7d 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -22,9 +22,11 @@ #include "core/musicstorage.h" #include "core/organise.h" #include "core/tagreaderclient.h" +#include "core/utilities.h" #include #include +#include #include #include #include @@ -162,6 +164,29 @@ void OrganiseDialog::InsertTag(const QString &tag) { ui_->naming->insertPlainText("%" + tag); } +Organise::NewSongInfoList OrganiseDialog::ComputeNewSongsFilenames( + const SongList& songs, const OrganiseFormat& format) { + + // Check if we will have multiple files with the same name. + // If so, they will erase each other if the overwrite flag is set. + // Better to rename them: e.g. foo.bar -> foo(2).bar + QHash filenames; + Organise::NewSongInfoList new_songs_info; + + for (const Song& song : songs) { + QString new_filename = format.GetFilenameForSong(song); + if (filenames.contains(new_filename)) { + QString song_number = QString::number(++filenames[new_filename]); + new_filename = + Utilities::PathWithoutFilenameExtension(new_filename) + + "(" + song_number + ")." + QFileInfo(new_filename).suffix(); + } + filenames.insert(new_filename, 1); + new_songs_info << Organise::NewSongInfo(song, new_filename); + } + return new_songs_info; +} + void OrganiseDialog::UpdatePreviews() { const QModelIndex destination = ui_->destination->model()->index( ui_->destination->currentIndex(), 0); @@ -205,14 +230,16 @@ void OrganiseDialog::UpdatePreviews() { if (!format_valid) return; + new_songs_info_ = ComputeNewSongsFilenames(songs_, format_); + // Update the previews ui_->preview->clear(); ui_->preview_group->setVisible(has_local_destination); ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { - for (const Song& song : songs_) { + for (const Organise::NewSongInfo& song_info : new_songs_info_) { QString filename = storage->LocalPath() + "/" + - format_.GetFilenameForSong(song); + song_info.new_filename_; ui_->preview->addItem(QDir::toNativeSeparators(filename)); } } @@ -278,7 +305,7 @@ void OrganiseDialog::accept() { const bool copy = ui_->aftercopying->currentIndex() == 0; Organise* organise = new Organise( task_manager_, storage, format_, copy, ui_->overwrite->isChecked(), - songs_, ui_->eject_after->isChecked()); + new_songs_info_, ui_->eject_after->isChecked()); connect(organise, SIGNAL(Finished(QStringList)), SLOT(OrganiseFinished(QStringList))); organise->Start(); diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index 3b545ccd7..a9a2ce0b8 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -23,6 +23,9 @@ #include #include +#include "gtest/gtest_prod.h" + +#include "core/organise.h" #include "core/organiseformat.h" #include "core/song.h" @@ -68,17 +71,24 @@ private slots: void OrganiseFinished(const QStringList& files_with_errors); private: + static Organise::NewSongInfoList ComputeNewSongsFilenames( + const SongList& songs, + const OrganiseFormat& format); + Ui_OrganiseDialog* ui_; TaskManager* task_manager_; OrganiseFormat format_; SongList songs_; + Organise::NewSongInfoList new_songs_info_; quint64 total_size_; std::unique_ptr error_dialog_; bool resized_by_user_; + + FRIEND_TEST(OrganiseDialogTest, ComputeNewSongsFilenamesTest); }; #endif // ORGANISEDIALOG_H diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 24f7165ea..9149e4b1f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -132,6 +132,7 @@ add_test_file(fmpsparser_test.cpp false) #add_test_file(m3uparser_test.cpp false) add_test_file(mergedproxymodel_test.cpp false) add_test_file(organiseformat_test.cpp false) +add_test_file(organisedialog_test.cpp false) #add_test_file(playlist_test.cpp true) #add_test_file(plsparser_test.cpp false) add_test_file(scopedtransaction_test.cpp false) diff --git a/tests/organisedialog_test.cpp b/tests/organisedialog_test.cpp new file mode 100644 index 000000000..53460fffd --- /dev/null +++ b/tests/organisedialog_test.cpp @@ -0,0 +1,71 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#include "gtest/gtest.h" +#include "test_utils.h" + +#include "core/song.h" +#include "core/organiseformat.h" +#include "ui/organisedialog.h" + + +TEST(OrganiseDialogTest, ComputeNewSongsFilenamesTest) { + // Create some songs, with multiple similar songs + SongList songs; + { + Song song; + song.set_title("Test1"); + song.set_album("Album"); + songs << song; + } + // Empty song + { + Song song; + song.set_basefilename("filename.mp3"); + songs << song; + } + // Without extension + for (int i = 0; i < 2; i++) { + Song song; + song.set_title("Test2"); + song.set_url(QUrl("file://test" + QString::number(i))); + songs << song; + } + + // With file extension + for (int i = 0; i < 3; i++) { + Song song; + song.set_artist("Foo"); + song.set_title("Bar"); + song.set_url(QUrl("file://foobar" + QString::number(i) + ".mp3")); + songs << song; + } + + // Generate new filenames + OrganiseFormat format; + format.set_format(OrganiseDialog::kDefaultFormat); + Organise::NewSongInfoList new_songs_info = OrganiseDialog::ComputeNewSongsFilenames(songs, format); + + EXPECT_EQ("/Album/Test1.", new_songs_info[0].new_filename_); + EXPECT_EQ("//filename.mp3", new_songs_info[1].new_filename_); + EXPECT_EQ("//Test2.", new_songs_info[2].new_filename_); + EXPECT_EQ("//Test2(2).", new_songs_info[3].new_filename_); + EXPECT_EQ("Foo//Bar.mp3", new_songs_info[4].new_filename_); + EXPECT_EQ("Foo//Bar(2).mp3", new_songs_info[5].new_filename_); + EXPECT_EQ("Foo//Bar(3).mp3", new_songs_info[6].new_filename_); +} + From efd4e8666e5e0ed7b08a0b06bff8d4301b921ee7 Mon Sep 17 00:00:00 2001 From: Clementine Buildbot Date: Mon, 3 Feb 2014 10:01:44 +0100 Subject: [PATCH 056/362] Automatic merge of translations from Transifex (https://www.transifex.net/projects/p/clementine/resource/clementineplayer) --- src/translations/af.po | 74 +- src/translations/ar.po | 74 +- src/translations/be.po | 74 +- src/translations/bg.po | 74 +- src/translations/bn.po | 74 +- src/translations/br.po | 74 +- src/translations/bs.po | 74 +- src/translations/ca.po | 94 +- src/translations/cs.po | 74 +- src/translations/cy.po | 74 +- src/translations/da.po | 74 +- src/translations/de.po | 96 +- src/translations/el.po | 74 +- src/translations/en_CA.po | 74 +- src/translations/en_GB.po | 74 +- src/translations/eo.po | 74 +- src/translations/es.po | 86 +- src/translations/et.po | 74 +- src/translations/eu.po | 74 +- src/translations/fa.po | 74 +- src/translations/fi.po | 74 +- src/translations/fr.po | 94 +- src/translations/ga.po | 74 +- src/translations/gl.po | 74 +- src/translations/he.po | 74 +- src/translations/he_IL.po | 74 +- src/translations/hi.po | 74 +- src/translations/hr.po | 80 +- src/translations/hu.po | 74 +- src/translations/hy.po | 74 +- src/translations/ia.po | 74 +- src/translations/id.po | 74 +- src/translations/is.po | 74 +- src/translations/it.po | 74 +- src/translations/ja.po | 74 +- src/translations/ka.po | 74 +- src/translations/kk.po | 74 +- src/translations/ko.po | 74 +- src/translations/lt.po | 74 +- src/translations/lv.po | 89 +- src/translations/mk_MK.po | 74 +- src/translations/mr.po | 74 +- src/translations/ms.po | 74 +- src/translations/my.po | 74 +- src/translations/nb.po | 74 +- src/translations/nl.po | 74 +- src/translations/oc.po | 74 +- src/translations/pa.po | 74 +- src/translations/pl.po | 74 +- src/translations/pt.po | 86 +- src/translations/pt_BR.po | 74 +- src/translations/ro.po | 74 +- src/translations/ru.po | 74 +- src/translations/si_LK.po | 74 +- src/translations/sk.po | 74 +- src/translations/sl.po | 74 +- src/translations/sr.po | 1739 ++++++++++++------------ src/translations/sr@latin.po | 2445 +++++++++++++++++----------------- src/translations/sv.po | 74 +- src/translations/te.po | 74 +- src/translations/tr.po | 86 +- src/translations/tr_TR.po | 74 +- src/translations/uk.po | 74 +- src/translations/uz.po | 74 +- src/translations/vi.po | 74 +- src/translations/zh_CN.po | 74 +- src/translations/zh_TW.po | 74 +- 67 files changed, 4558 insertions(+), 4555 deletions(-) diff --git a/src/translations/af.po b/src/translations/af.po index 4a3c1c9f7..115d61807 100644 --- a/src/translations/af.po +++ b/src/translations/af.po @@ -454,7 +454,7 @@ msgstr "Voeg nuwe vouer by..." msgid "Add podcast" msgstr "Voeg potgooi by" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Voeg potgooi by..." @@ -603,7 +603,7 @@ msgstr "Na" msgid "After copying..." msgstr "Na kopiëring..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideale hardheid vir alle snitte)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "Kunstenaarsradio" msgid "Artist tags" msgstr "Kunstenaarsetikette" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Kunstenaar se voorletters" @@ -841,7 +841,7 @@ msgstr "Gemiddelde beeldgrootte" msgid "BBC Podcasts" msgstr "BBC potgooi" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "SPM" @@ -862,7 +862,7 @@ msgstr "Agtergrond prentjie" msgid "Background opacity" msgstr "Agtergrond deurskynendheid" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Databasis word gerugsteun" @@ -903,7 +903,7 @@ msgstr "Biografie vanaf %1" msgid "Bit rate" msgstr "Bistempo" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma geskeide lys van klas:vlak, vlak is 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentaar" @@ -1202,7 +1202,7 @@ msgstr "Voltooi etikette outomaties" msgid "Complete tags automatically..." msgstr "Voltooi etikette outomaties..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "Globale soek instellings..." msgid "Configure library..." msgstr "Stel my versameling in..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Stel potgooie op..." @@ -1298,8 +1298,8 @@ msgstr "Skakel alle musiek wat die toestel nie kan speel nie om" msgid "Copy to clipboard" msgstr "Kopiëer na knipbord" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiëer na die toestel..." @@ -1497,7 +1497,7 @@ msgstr "DBus lêergids" msgid "Dance" msgstr "Dans" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "Skrap" msgid "Delete Grooveshark playlist" msgstr "Verwyder Grooveshark afspeellys" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Vee afgelaaide data uit" @@ -1670,7 +1670,7 @@ msgstr "Skakel berekening van die 'moodbar' af" msgid "Disabled" msgstr "Steek weg" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skyf" @@ -1728,7 +1728,7 @@ msgstr "Dubbelkliek om oop te maak" msgid "Double clicking a song will..." msgstr "Dubbelkliek op 'n liedjie sal..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Laai %n episodes af" @@ -1749,7 +1749,7 @@ msgstr "Laai lidmaatskap af" msgid "Download new episodes automatically" msgstr "Laai nuwe episodes outomaties af" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Aflaai tou" @@ -1765,7 +1765,7 @@ msgstr "Laai hierdie album af" msgid "Download this album..." msgstr "Laai hierdie album af..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Laai hierdie episode af" @@ -1773,7 +1773,7 @@ msgstr "Laai hierdie episode af" msgid "Download..." msgstr "Laai af..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Besig met aflaai (%1%)..." @@ -2178,7 +2178,7 @@ msgstr "Fout met haal van omslae" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Lêeruitsbreiding" @@ -2328,7 +2328,7 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "Groeppeer volgens Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Groeppeer volgens Genre/Kunstenaar/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2604,7 +2604,7 @@ msgstr "Voeg in..." msgid "Installed" msgstr "Geïnstalleer" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integriteitstoets" @@ -2807,7 +2807,7 @@ msgstr "Laat leeg vir standaardwaarde. Voorbeelde: \"/dev/dsp\", \"front\", ens msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengte" @@ -3020,11 +3020,11 @@ msgstr "Handmatig" msgid "Manufacturer" msgstr "Vervaardiger" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Merk as geluister" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Merk as nuut" @@ -3461,7 +3461,7 @@ msgstr "Sorteer Lêers" msgid "Organise files..." msgstr "Sorteer Lêers..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Lêers word gesorteer" @@ -3535,7 +3535,7 @@ msgstr "Afspeel is gepauseer" msgid "Paused" msgstr "Gepauseerd" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3630,7 +3630,7 @@ msgstr "Kies jou webblaaier en kom dan terug na Clementine." msgid "Plugin status:" msgstr "Uitbreiding toestand:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Potgooie" @@ -4065,7 +4065,7 @@ msgstr "Verwyder toestel veilig na kopiëring" msgid "Sample rate" msgstr "Monstertempo" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Monstertempo" @@ -4889,7 +4889,7 @@ msgstr "Hierdie stroom is slegs vir betalende lede." msgid "This type of device is not supported: %1" msgstr "Hierdie tipe toestel word nie ondersteun nie: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "Totale aantal grepe oorgedra" msgid "Total network requests made" msgstr "Totale aantal versoeke oor die netwerk gemaak" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "Onbekende fout" msgid "Unset cover" msgstr "Verwyder omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Teken uit" @@ -5050,7 +5050,7 @@ msgstr "Komende opvoerings" msgid "Update Grooveshark playlist" msgstr "Dateer Grooveshark afspeellys op" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Dateer alle potgooie op" @@ -5062,7 +5062,7 @@ msgstr "Gaan versameling na vir veranderinge" msgid "Update the library when Clementine starts" msgstr "Gaan die versameling vir veranderings na elke keer as Clementine oopgemaak word" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Dateer hierdie potgooi op" @@ -5349,7 +5349,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ar.po b/src/translations/ar.po index 26b38c48b..a499fc2af 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -458,7 +458,7 @@ msgstr "أضف مجلد جديد..." msgid "Add podcast" msgstr "إضافة بودكاست" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "إضافة بودكاست..." @@ -607,7 +607,7 @@ msgstr "بعد" msgid "After copying..." msgstr "بعد النسخ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -620,7 +620,7 @@ msgstr "الألبوم" msgid "Album (ideal loudness for all tracks)" msgstr "ألبوم (شدة صوت مثلى لجميع المقاطع)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -773,7 +773,7 @@ msgid "" "the songs of your library?" msgstr "هل أنت متأكد من رغبتك بكتابة احصائيات المقاطع في ملفات المقاطع بالنسبة لكل المقاطع التي في مكتبتك الصوتية؟" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -795,7 +795,7 @@ msgstr "راديو الفنان" msgid "Artist tags" msgstr "وسومات الفنان" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "بداية الفنان" @@ -845,7 +845,7 @@ msgstr "القياس المتوسط للصور" msgid "BBC Podcasts" msgstr "بودكاست BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -866,7 +866,7 @@ msgstr "صورة الخلفية" msgid "Background opacity" msgstr "شفافية الخلفية" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "استعادة قاعدة البيانات" @@ -907,7 +907,7 @@ msgstr "السيرة الذاتية من %1" msgid "Bit rate" msgstr "معدل البت" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1194,7 +1194,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "لائحة عناصر مفروقة بفاصلة لـ \"class:level\"، قيمة Level بين 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "تعليق" @@ -1206,7 +1206,7 @@ msgstr "أكمل الوسوم تلقائيا" msgid "Complete tags automatically..." msgstr "أكمل الوسوم تلقائيا..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1249,7 +1249,7 @@ msgstr "إعدادات البحث العامة..." msgid "Configure library..." msgstr "إعدادات المكتبة" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "إعدادات بودكاست..." @@ -1302,8 +1302,8 @@ msgstr "حول جميع المقاطع التي لا يستطيع الجهاز msgid "Copy to clipboard" msgstr "نسخ إلى المكتبة..." -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "نسخ إلى جهاز..." @@ -1501,7 +1501,7 @@ msgstr "مسار DBus" msgid "Dance" msgstr "رقص" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1557,7 +1557,7 @@ msgstr "احذف" msgid "Delete Grooveshark playlist" msgstr "احذف قائمة تسغيل Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "حذف البيانات المحملة" @@ -1674,7 +1674,7 @@ msgstr "ألغ إنشاء شريط المزاج" msgid "Disabled" msgstr "غير مفعل" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "قرص مدمج" @@ -1732,7 +1732,7 @@ msgstr "النقر مرتين للتشغيل" msgid "Double clicking a song will..." msgstr "النقر مرتين على مقطع سـ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "حمل %n حلقات" @@ -1753,7 +1753,7 @@ msgstr "عضوية التحميل" msgid "Download new episodes automatically" msgstr "حمل الحلقات الجديدة تلقائيا" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "حمل مقاطع لائحة الانتظار" @@ -1769,7 +1769,7 @@ msgstr "حمل هذا الألبوم" msgid "Download this album..." msgstr "حمل هذا الألبوم..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "حمل هذه الحلقة" @@ -1777,7 +1777,7 @@ msgstr "حمل هذه الحلقة" msgid "Download..." msgstr "حمل..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "تحميل (%1%)..." @@ -2182,7 +2182,7 @@ msgstr "خطأ أثناء جلب الغلاف" msgid "File Format" msgstr "صيغة الملف" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "امتداد الملف" @@ -2332,7 +2332,7 @@ msgstr "عام" msgid "General settings" msgstr "إعدادات عامة" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2441,7 +2441,7 @@ msgstr "تجميع حسب النوع/الألبوم" msgid "Group by Genre/Artist/Album" msgstr "تجميع حسب النوع/الفنان/الألبوم" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "تجميع" @@ -2608,7 +2608,7 @@ msgstr "إدارج..." msgid "Installed" msgstr "مثبت" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "فحص شامل" @@ -2811,7 +2811,7 @@ msgstr "اتركه فارغا لاعتماد التفضيلات البدئية. msgid "Left" msgstr "يسار" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "المدة" @@ -3024,11 +3024,11 @@ msgstr "يدويا" msgid "Manufacturer" msgstr "المصنع" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "علم كمستمع إليه" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "علم كجديد" @@ -3465,7 +3465,7 @@ msgstr "ترتيب الملفات" msgid "Organise files..." msgstr "ترتيب الملفات..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "ترتيب الملفات" @@ -3539,7 +3539,7 @@ msgstr "أوقف التشغيل مؤقتا" msgid "Paused" msgstr "تم الإيقاف مؤقتا" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "المؤدي" @@ -3634,7 +3634,7 @@ msgstr "الرجاء إغلاق متصفحك والعودة إلى كلمنتا msgid "Plugin status:" msgstr "حالة الملحق:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "بودكاست" @@ -4069,7 +4069,7 @@ msgstr "احذف الجهاز بأمان بعد انتهاء النسخ" msgid "Sample rate" msgstr "معدل العينة" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "معدل العينة" @@ -4893,7 +4893,7 @@ msgstr "هذا التيار للاشتراكات المدفوعة فقط" msgid "This type of device is not supported: %1" msgstr "هذا النوع من الأجهزة غير مدعوم: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4954,7 +4954,7 @@ msgstr "إجمالي البايتات المرسلة" msgid "Total network requests made" msgstr "إجمالي طلبات الشبكة " -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5042,7 +5042,7 @@ msgstr "خطأ مجهول" msgid "Unset cover" msgstr "ألغ الغلاف" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "ألغ الاشتراك" @@ -5054,7 +5054,7 @@ msgstr "الحفلات القادمة" msgid "Update Grooveshark playlist" msgstr "حدّث قائمة تشغيل Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "حدّث جميع البودكاست" @@ -5066,7 +5066,7 @@ msgstr "حدّث المجلدات التي تغيرت في المكتبة" msgid "Update the library when Clementine starts" msgstr "حدّث المكتبة عند بدء كلمنتاين" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "حدّث هذا البودكاست" @@ -5353,7 +5353,7 @@ msgstr "أكتب جميع إحصائيات المقاطع في ملفات الم msgid "Wrong username or password." msgstr "اسم مستخدم أو كلمة سر خاطئة." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/be.po b/src/translations/be.po index ed2e8a1ca..840d457fd 100644 --- a/src/translations/be.po +++ b/src/translations/be.po @@ -455,7 +455,7 @@ msgstr "Дадаць новы каталёг..." msgid "Add podcast" msgstr "Дадаць подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Дадаць подкаст..." @@ -604,7 +604,7 @@ msgstr "Пасьля" msgid "After copying..." msgstr "Пасьля капіяваньня..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідэальная гучнасьць для ўсіх трэкаў)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "Радыё выканаўцы" msgid "Artist tags" msgstr "Тэгі выканаўцы" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Ініцыялы выканаўцы" @@ -842,7 +842,7 @@ msgstr "Прыкладны памер выявы" msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "Фонавая выява" msgid "Background opacity" msgstr "Празрыстасьць фону" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Рэзэрвнае капіяваньне базы дадзеных" @@ -904,7 +904,7 @@ msgstr "Біяграфія з %1" msgid "Bit rate" msgstr "Бітрэйт" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Падзелены коскамі сьпіс \"кляс:узровень\", дзе ўзровень ад 0 да 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Камэнтар" @@ -1203,7 +1203,7 @@ msgstr "Аўтаматычна запоўніць тэгі" msgid "Complete tags automatically..." msgstr "Аўтаматычна запоўніць тэгі..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "Наладзіць глябальны пошук..." msgid "Configure library..." msgstr "Наладзіць калекцыю..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Наладзіць подкасты..." @@ -1299,8 +1299,8 @@ msgstr "Канвэртаваць ўсю музыку, якую можа прай msgid "Copy to clipboard" msgstr "Скапіяваць у буфэр" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Капіяваць на прыладу..." @@ -1498,7 +1498,7 @@ msgstr "DBus path" msgid "Dance" msgstr "Танцавальны" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "Выдаліць" msgid "Delete Grooveshark playlist" msgstr "Выдаліць плэйліст Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Выдаліць спампаваныя дадзеныя" @@ -1671,7 +1671,7 @@ msgstr "Выключыць генэрацыю панэлі настрою" msgid "Disabled" msgstr "Выключана" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Дыск" @@ -1729,7 +1729,7 @@ msgstr "Двайная пстрычка для адкрыцьця" msgid "Double clicking a song will..." msgstr "Двайны клік на песьні" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Спампаваць %n сэрыяў" @@ -1750,7 +1750,7 @@ msgstr "\"Download\" падпіска" msgid "Download new episodes automatically" msgstr "Пампаваць новыя выпускі аўтаматычна" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Запампоўка даданая ў чаргу" @@ -1766,7 +1766,7 @@ msgstr "Загрузіць гэты альбом" msgid "Download this album..." msgstr "Спампаваць гэты альбом..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Спампаваць гэтую сэрыю" @@ -1774,7 +1774,7 @@ msgstr "Спампаваць гэтую сэрыю" msgid "Download..." msgstr "Спампаваць..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Пампаваньне (%1%)..." @@ -2179,7 +2179,7 @@ msgstr "Памылка пошуку вокладкі" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Пашырэньне файлу" @@ -2329,7 +2329,7 @@ msgstr "Агульныя" msgid "General settings" msgstr "Агульныя налады" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "Сартаваць па Жанр/Альбом" msgid "Group by Genre/Artist/Album" msgstr "Сартаваць па Жанр/Выканаўца/Альбом" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групаваньне" @@ -2605,7 +2605,7 @@ msgstr "Устаўка" msgid "Installed" msgstr "Усталявана" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Праверка цельнасьці" @@ -2808,7 +2808,7 @@ msgstr "Пакіньце пустым для змоўчаньня. Напрык msgid "Left" msgstr "Левы" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Працягласьць" @@ -3021,11 +3021,11 @@ msgstr "Самастойна" msgid "Manufacturer" msgstr "Вытворца" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Пазначыць як праслуханае" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Пазначыць як новае" @@ -3462,7 +3462,7 @@ msgstr "Упарадкаваць файлы" msgid "Organise files..." msgstr "Упарадкаваць файлы..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Арганізацыя файлаў" @@ -3536,7 +3536,7 @@ msgstr "Прыпыніць прайграваньне" msgid "Paused" msgstr "Прыпынены" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3631,7 @@ msgstr "Зачыніце браўзэр і вяпніцеся ў Clementine." msgid "Plugin status:" msgstr "Статус плагіну:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасты" @@ -4066,7 +4066,7 @@ msgstr "Бясьпечна выняць прыладу пасьля капіяв msgid "Sample rate" msgstr "Чашчыня" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Чашчыня дыскрэтызацыі" @@ -4890,7 +4890,7 @@ msgstr "Гэты струмень толькі для платных падпі msgid "This type of device is not supported: %1" msgstr "Гэты тып прылады не падтрымліваецца: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "Перадана байтаў увогуле" msgid "Total network requests made" msgstr "Выканана сеткавых запытаў увогуле" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "Невядомая памылка" msgid "Unset cover" msgstr "Выдаліць вокладку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Адпісацца" @@ -5051,7 +5051,7 @@ msgstr "Канцэрты, якія маюць адбыцца" msgid "Update Grooveshark playlist" msgstr "Абнавіць плэйліст Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Абнавіць усе подкасты" @@ -5063,7 +5063,7 @@ msgstr "Абнавіць зьмененыя тэчкі бібліятэкі" msgid "Update the library when Clementine starts" msgstr "Абнаўляць бібліятэку пры старце Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Абнавіць гэты подкаст" @@ -5350,7 +5350,7 @@ msgstr "Запісваць усю статыстыку песень ў іх фа msgid "Wrong username or password." msgstr "Няправільнае імя ці пароль." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/bg.po b/src/translations/bg.po index 7389a0f39..79369ed84 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -458,7 +458,7 @@ msgstr "Добавяне на нова папка..." msgid "Add podcast" msgstr "Добавя движещ се текст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Добавяне на подкаст..." @@ -607,7 +607,7 @@ msgstr "След " msgid "After copying..." msgstr "След копиране..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -620,7 +620,7 @@ msgstr "Албум" msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална сила на звука за всички песни)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -773,7 +773,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -795,7 +795,7 @@ msgstr "Радио на изпълнител" msgid "Artist tags" msgstr "Етикети за изпълнителя" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Инициали на изпълнителя" @@ -845,7 +845,7 @@ msgstr "Среден размер на изображение" msgid "BBC Podcasts" msgstr "BBC подкасти" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Темпо" @@ -866,7 +866,7 @@ msgstr "Фоново изображение" msgid "Background opacity" msgstr "Прозрачност на фона" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Архивиране на базата данни" @@ -907,7 +907,7 @@ msgstr "Биография от %1" msgid "Bit rate" msgstr "Поток в битове" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1194,7 +1194,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделен със запетаи списък с class:level, level (ниво) е 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" @@ -1206,7 +1206,7 @@ msgstr "Автоматично довършване на етикетите" msgid "Complete tags automatically..." msgstr "Автоматично довършване на етикетите..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1249,7 +1249,7 @@ msgstr "Конфигурирай глобално търсене" msgid "Configure library..." msgstr "Настройване на библиотека..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Конфигуриране на подкасти..." @@ -1302,8 +1302,8 @@ msgstr "Конвертиране само музиката, която това msgid "Copy to clipboard" msgstr "Копиране в буфера" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копирай в устройство..." @@ -1501,7 +1501,7 @@ msgstr "Път то DBus" msgid "Dance" msgstr "Денс" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1557,7 +1557,7 @@ msgstr "Изтрий" msgid "Delete Grooveshark playlist" msgstr "Изтриване на Grooveshark списък с песни" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Изтрий свалените данни" @@ -1674,7 +1674,7 @@ msgstr "" msgid "Disabled" msgstr "Изключено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1732,7 +1732,7 @@ msgstr "Двойно цъкване за отваряне" msgid "Double clicking a song will..." msgstr "Двойното цъкване върху песен ще..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Сваля %n епизода" @@ -1753,7 +1753,7 @@ msgstr "Членство за сваляне" msgid "Download new episodes automatically" msgstr "Сваляй автоматично новите епизоди" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Опашка на свалянето" @@ -1769,7 +1769,7 @@ msgstr "Сваляне на този албум" msgid "Download this album..." msgstr "Сваляне на този албум..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Свали този епизод" @@ -1777,7 +1777,7 @@ msgstr "Свали този епизод" msgid "Download..." msgstr "Изтегляне..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Сваляне (%1%)..." @@ -2182,7 +2182,7 @@ msgstr "Грешка по време на свалянето на обложка msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Файлово разширение" @@ -2332,7 +2332,7 @@ msgstr "Общи" msgid "General settings" msgstr "Общи настройки" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2441,7 +2441,7 @@ msgstr "Групиране по Жанр/Албум" msgid "Group by Genre/Artist/Album" msgstr "Групиране по Жанр/Изпълнител/Албум" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2608,7 +2608,7 @@ msgstr "Вмъкване..." msgid "Installed" msgstr "Инсталирани" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Проверка на интегритета" @@ -2811,7 +2811,7 @@ msgstr "Оставете празно за данни по подразбира msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Дължина" @@ -3024,11 +3024,11 @@ msgstr "Ръчно" msgid "Manufacturer" msgstr "Производител" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Маркирай като чута" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Маркирай като нова" @@ -3465,7 +3465,7 @@ msgstr "Организиране на Файлове" msgid "Organise files..." msgstr "Организиране на файлове..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Файловете се организират" @@ -3539,7 +3539,7 @@ msgstr "На пауза" msgid "Paused" msgstr "На пауза" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3634,7 +3634,7 @@ msgstr "Моля изберете вашия браузър и се върнет msgid "Plugin status:" msgstr "Състояние на приставката:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасти" @@ -4069,7 +4069,7 @@ msgstr "Безопасно премахване на устройството с msgid "Sample rate" msgstr "Дискретизация" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Дискретизация" @@ -4893,7 +4893,7 @@ msgstr "Този поток е само за платени регистраци msgid "This type of device is not supported: %1" msgstr "Този тип устройство не е подържано:%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4954,7 +4954,7 @@ msgstr "Общо прехвърлени байта" msgid "Total network requests made" msgstr "Общ брой направени мрежови заявки" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5042,7 +5042,7 @@ msgstr "Неизвестна грешка" msgid "Unset cover" msgstr "Махни обложката" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Премахване абонамент" @@ -5054,7 +5054,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "Обновяване на Grooveshark списъците с песни" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Обнови всички подкасти" @@ -5066,7 +5066,7 @@ msgstr "Обнови папките с промени в библиотекат msgid "Update the library when Clementine starts" msgstr "Обновяване на библиотеката при стартиране на Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Обнови този подкаст" @@ -5353,7 +5353,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/bn.po b/src/translations/bn.po index 71c5f2622..440bacf4c 100644 --- a/src/translations/bn.po +++ b/src/translations/bn.po @@ -454,7 +454,7 @@ msgstr "এক টি নতুন ফোল্ডার যোগ করুন" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -603,7 +603,7 @@ msgstr "" msgid "After copying..." msgstr "কপি হওয়ার পর" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "অ্যালবাম" msgid "Album (ideal loudness for all tracks)" msgstr "অ্যালবাম (পরিচ্ছন্ন আওয়াজ সমস্ত সঙ্গীত এর জন্য)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "শিল্পীর অদ্যাক্ষর" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "বিপিএম" @@ -862,7 +862,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -903,7 +903,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1202,7 +1202,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1298,8 +1298,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1497,7 +1497,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1670,7 +1670,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1728,7 +1728,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1749,7 +1749,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1765,7 +1765,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1773,7 +1773,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2178,7 +2178,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2328,7 +2328,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2604,7 +2604,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2807,7 +2807,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "দৈর্ঘ্য" @@ -3020,11 +3020,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3461,7 +3461,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3535,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3630,7 +3630,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4065,7 +4065,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4889,7 +4889,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5050,7 +5050,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5062,7 +5062,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5349,7 +5349,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/br.po b/src/translations/br.po index 91f8c00c4..0b382b652 100644 --- a/src/translations/br.po +++ b/src/translations/br.po @@ -455,7 +455,7 @@ msgstr "Ouzhpennañ un teuliad nevez..." msgid "Add podcast" msgstr "Ouzhpennañ ar podkast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Ouzhpennañ ur podkast..." @@ -604,7 +604,7 @@ msgstr "Goude " msgid "After copying..." msgstr "Goude an eiladur..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "Albom" msgid "Album (ideal loudness for all tracks)" msgstr "Albom (Ampled peurvat evit an holl roud)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "Ha sur oc'h da gaout c'hoant enrollañ an stadegoù an ton e-barzh restr an ton evit kement ton en ho sonaoueg ?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "Skingomz dre arzour" msgid "Artist tags" msgstr "Klavioù an arzour" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Lizherennoù-tal an arzour" @@ -842,7 +842,7 @@ msgstr "Ment keidennek ar skeudenn" msgid "BBC Podcasts" msgstr "Podkastoù BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "Skeudenn drekleur" msgid "Background opacity" msgstr "Divoullder drekleur" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Enrolladenn ar stlennvon" @@ -904,7 +904,7 @@ msgstr "Buhezskrid %1" msgid "Bit rate" msgstr "Fonnder" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Listenn dispartiet gant ur virgulenn eus klas:live, live etre 0 ha 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Evezhiadenn" @@ -1203,7 +1203,7 @@ msgstr "Leuniañ ar c'hlavioù ent emgefreek" msgid "Complete tags automatically..." msgstr "Leuniañ ar c'hlavioù ent emgefreek..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "Kefluniañ an enklsak hollek..." msgid "Configure library..." msgstr "Kefluniañ ar sonaoueg..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Kefluniañ ar podkastoù" @@ -1299,8 +1299,8 @@ msgstr "Treuzkemm ar sonerezh ne c'hell ket an drobarzhell lenn" msgid "Copy to clipboard" msgstr "Kopiañ d'ar golver" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiañ war an drobarzhell" @@ -1498,7 +1498,7 @@ msgstr "Hent DBus" msgid "Dance" msgstr "Dañs" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "Diverkañ" msgid "Delete Grooveshark playlist" msgstr "Diverkañ ur roll seniñ Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Diverkañ ar roadennoù pellgarget" @@ -1671,7 +1671,7 @@ msgstr "Diweredekaat ar varenn-imor" msgid "Disabled" msgstr "Diwederakaet" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Pladenn" @@ -1729,7 +1729,7 @@ msgstr "Daouglikañ evit digeriñ" msgid "Double clicking a song will..." msgstr "Daouglikañ war un ton..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Pellgargañ %n pennad" @@ -1750,7 +1750,7 @@ msgstr "Kevreañ d'ar pellgargadenn" msgid "Download new episodes automatically" msgstr "Pellgargañ pennadoù nevez ent emgefreek" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Pellgargadur e steuad" @@ -1766,7 +1766,7 @@ msgstr "Pellgargañ an albom" msgid "Download this album..." msgstr "Pellgargañ an albom..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Pellgargañ ar pennad-mañ" @@ -1774,7 +1774,7 @@ msgstr "Pellgargañ ar pennad-mañ" msgid "Download..." msgstr "Pellgargañ" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "O pellgargañ (%1%)..." @@ -2179,7 +2179,7 @@ msgstr "Ur gudenn a zo savet e-pad pellgargadur ar golo" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Askouzehadenn ar restr" @@ -2329,7 +2329,7 @@ msgstr "Hollek" msgid "General settings" msgstr "Kefluniadur hollek" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "Strollañ dre Zoare/Albom" msgid "Group by Genre/Artist/Album" msgstr "Strollañ dre Zoare/Arzour/Albom" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Strolladenn" @@ -2605,7 +2605,7 @@ msgstr "Enlakaat..." msgid "Installed" msgstr "Staliaet" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "O gwiriañ an anterinder" @@ -2808,7 +2808,7 @@ msgstr "Laoskit goullo evit an arventennoù dre ziouer" msgid "Left" msgstr "Kleiz" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Padelezh" @@ -3021,11 +3021,11 @@ msgstr "Gant an dorn" msgid "Manufacturer" msgstr "Aozer" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Merkañ evel selaouet" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Merkañ evel nevez" @@ -3462,7 +3462,7 @@ msgstr "Aozañ ar restroù" msgid "Organise files..." msgstr "Aozañ ar restroù..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Oc'h aozañ ar restroù" @@ -3536,7 +3536,7 @@ msgstr "Ehan al lenn" msgid "Paused" msgstr "Ehanet" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Soner" @@ -3631,7 +3631,7 @@ msgstr "Klozit ho merdeer ha deuit en-dro war Clementine mar plij." msgid "Plugin status:" msgstr "Stad an enlugellad" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podkastoù" @@ -4066,7 +4066,7 @@ msgstr "Tennañ an drobarzhell diarvar goude an eilañ" msgid "Sample rate" msgstr "Standilhonañ" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Standilhonañ" @@ -4890,7 +4890,7 @@ msgstr "Al lanv-mañ a zo evit an izili o deus paet." msgid "This type of device is not supported: %1" msgstr "An doare trobarzhell-mañ n'eo ket meret :%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "Niver a eizhbit treuzkaset" msgid "Total network requests made" msgstr "Niver a atersadennoù rouedad" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "Kudenn dianav" msgid "Unset cover" msgstr "Ar golo n'eo ket bet lakaet" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Digoumanantiñ" @@ -5051,7 +5051,7 @@ msgstr "Sonadegoù o-tont" msgid "Update Grooveshark playlist" msgstr "O hizivaat roll seniñ Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Hizivaat ar podkastoù" @@ -5063,7 +5063,7 @@ msgstr "Hizivaat teuliadoù kemmet ar sonaoueg" msgid "Update the library when Clementine starts" msgstr "Hizivaat ar sonaoueg pa grog Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Hizivaat ar podkast-mañ" @@ -5350,7 +5350,7 @@ msgstr "Skrivañ stadegoù an holl tonioù e restroù an tonioù" msgid "Wrong username or password." msgstr "Anv-implijer pe ger-tremen fall." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/bs.po b/src/translations/bs.po index ca8b13b49..59a202646 100644 --- a/src/translations/bs.po +++ b/src/translations/bs.po @@ -452,7 +452,7 @@ msgstr "Dodaj novu fasciklu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "Poslije kopiranja..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna jačina za sve pjesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Izvođačevi inicijali" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "Providnost pozadine" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "Biografija od %1" msgid "Bit rate" msgstr "Protok bitova" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1200,7 +1200,7 @@ msgstr "Automatski završi oznake" msgid "Complete tags automatically..." msgstr "Automatski završi oznake..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "Podesi biblioteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "Pretvori svu muziku koju ovaj uređaje ne podržava" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiraj na uređaj..." @@ -1495,7 +1495,7 @@ msgstr "DBus putanja" msgid "Dance" msgstr "Dens" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "Onemogućeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1726,7 +1726,7 @@ msgstr "Dupli klik za otvaranje" msgid "Double clicking a song will..." msgstr "Dupli klik na pjesmu će..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "Prezmi članstvo" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "Preuzmi ovaj album" msgid "Download this album..." msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ca.po b/src/translations/ca.po index 6da383e26..30620d6c4 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-02-01 18:44+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/clementine/language/ca/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -457,7 +457,7 @@ msgstr "Afegeix una carpeta nova…" msgid "Add podcast" msgstr "Afegeix un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Afegeix un podcast…" @@ -606,7 +606,7 @@ msgstr "Després de" msgid "After copying..." msgstr "Després de copiar…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -619,7 +619,7 @@ msgstr "Àlbum" msgid "Album (ideal loudness for all tracks)" msgstr "Àlbum (volum ideal per a totes les pistes)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -772,7 +772,7 @@ msgid "" "the songs of your library?" msgstr "Esteu segur que voleu escriure les estadístiques de les cançons en tots els fitxers de la vostra col·lecció?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -794,7 +794,7 @@ msgstr "Ràdio de l’artista" msgid "Artist tags" msgstr "Etiquetes de l’artista" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Inicials de l’artista" @@ -844,7 +844,7 @@ msgstr "Mida d’imatge mitjà" msgid "BBC Podcasts" msgstr "Podcasts de la BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -865,7 +865,7 @@ msgstr "Imatge de fons" msgid "Background opacity" msgstr "Opacitat del fons" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "S’està fent una còpia de seguretat de la base de dades" @@ -906,7 +906,7 @@ msgstr "Biografia de %1" msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1125,7 +1125,7 @@ msgid "" "Clementine couldn't fetch your subscription status since there are problems " "with your connection. Played tracks will be cached and sent later to " "Last.fm." -msgstr "El Clementine no ha pogut obtenir l'estat de la vostra subscripció degut a un problema amb la connexió. Les cançons reproduïdes seran emmagatzemades i enviades més tard a Last.fm. " +msgstr "El Clementine no ha pogut obtenir l’estat de la vostra subscripció perquè hi ha problemes amb la connexió. Les cançons reproduïdes s’emmagatzemaran i enviaran més tard a Last.fm." #: widgets/prettyimage.cpp:201 msgid "Clementine image viewer" @@ -1193,7 +1193,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Llista separada per comes de classe:nivell, el nivell és 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" @@ -1205,7 +1205,7 @@ msgstr "Completa les etiquetes automàticament" msgid "Complete tags automatically..." msgstr "Completa les etiquetes automàticament…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1248,7 +1248,7 @@ msgstr "Configura la cerca global…" msgid "Configure library..." msgstr "Configura la col·lecció…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configura els podcasts…" @@ -1301,8 +1301,8 @@ msgstr "Convertir qualsevol música que el dispositiu no pugui reproduir" msgid "Copy to clipboard" msgstr "Copiar al porta-retalls" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Còpia al dispositiu…" @@ -1500,7 +1500,7 @@ msgstr "Camí del DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1556,7 +1556,7 @@ msgstr "Eliminar" msgid "Delete Grooveshark playlist" msgstr "Esborrar la llista de reproducció de Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Esborra les dades baixades" @@ -1673,7 +1673,7 @@ msgstr "Desactiva la generació de barres d’ànim" msgid "Disabled" msgstr "Deshabilitat" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1731,7 +1731,7 @@ msgstr "Feu doble clic per obrir" msgid "Double clicking a song will..." msgstr "En fer doble clic a una cançó..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Baixa %n episodis" @@ -1752,7 +1752,7 @@ msgstr "Membres de descarrega" msgid "Download new episodes automatically" msgstr "Baixa els episodis nous automàticament" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Baixada en la cua" @@ -1768,7 +1768,7 @@ msgstr "Baixa aquest àlbum" msgid "Download this album..." msgstr "Baixa aquest àlbum…" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Baixa aquest episodi" @@ -1776,7 +1776,7 @@ msgstr "Baixa aquest episodi" msgid "Download..." msgstr "Baixa…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "S’està baixant (%1%)…" @@ -2181,7 +2181,7 @@ msgstr "S’ha produït un error en obtenir la caràtula" msgid "File Format" msgstr "Format del fitxer" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensió del fitxer" @@ -2331,7 +2331,7 @@ msgstr "General" msgid "General settings" msgstr "Configuració general" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2440,7 +2440,7 @@ msgstr "Agrupa per gènere/àlbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupa per gènere/artista/àlbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupació" @@ -2597,7 +2597,7 @@ msgstr "Informació" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opcions d’entrada" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." @@ -2607,7 +2607,7 @@ msgstr "Insereix…" msgid "Installed" msgstr "Instal·lat" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Comprovació d’integritat" @@ -2653,7 +2653,7 @@ msgstr "El nom d’usuari i/o la contrasenya no és vàlid" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Inverteix la selecció" #: internet/jamendoservice.cpp:127 msgid "Jamendo" @@ -2810,7 +2810,7 @@ msgstr "Deixeu-ho buit per assignar el valor predeterminat. Exemples: «/dev/dsp msgid "Left" msgstr "Esquerra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durada" @@ -3023,11 +3023,11 @@ msgstr "Manualment" msgid "Manufacturer" msgstr "Fabricant" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marca com a escoltat" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marca com a nou" @@ -3434,7 +3434,7 @@ msgstr "Obre al navegador" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 msgid "Open..." -msgstr "Obre..." +msgstr "Obre…" #: internet/lastfmservice.cpp:431 msgid "Operation failed" @@ -3450,7 +3450,7 @@ msgstr "Optimitza la qualitat" #: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." -msgstr "Opcions..." +msgstr "Opcions…" #: ../bin/src/ui_transcodersettingspage.h:181 msgid "Opus" @@ -3464,7 +3464,7 @@ msgstr "Organitza fitxers" msgid "Organise files..." msgstr "Organitza fitxers..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organitzant fitxers" @@ -3538,7 +3538,7 @@ msgstr "Pausa la reproducció" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intèrpret" @@ -3633,7 +3633,7 @@ msgstr "Tanqueu el navegador i torneu a Clementine." msgid "Plugin status:" msgstr "Estat del connector" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4028,7 +4028,7 @@ msgstr "Dreta" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Captura" #: ui/ripcd.cpp:116 msgid "Rip CD" @@ -4068,7 +4068,7 @@ msgstr "Treure el dispositiu amb seguretat després de copiar" msgid "Sample rate" msgstr "Freqüència de mostreig" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Freqüència de mostreig" @@ -4572,7 +4572,7 @@ msgstr "Destacat" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Inicia la captura" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4892,7 +4892,7 @@ msgstr "Aquest flux es sol per als subscriptors que paguen" msgid "This type of device is not supported: %1" msgstr "Aquest tipus de dispositiu no és compatible: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4953,7 +4953,7 @@ msgstr "Bytes totals transferits" msgid "Total network requests made" msgstr "Total de sol·licituds de xarxa fetes" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5041,7 +5041,7 @@ msgstr "Error desconegut" msgid "Unset cover" msgstr "Esborra'n la portada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Canceleu la subscripció" @@ -5053,7 +5053,7 @@ msgstr "Propers concerts" msgid "Update Grooveshark playlist" msgstr "Actualitza la llista de reproducció de Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Actualitza tots els podcasts" @@ -5065,7 +5065,7 @@ msgstr "Actualitza les carpetes de la col·lecció amb canvis" msgid "Update the library when Clementine starts" msgstr "Actualitza la col·lecció quan Clementine arranqui" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Actualitza aquest podcast" @@ -5089,7 +5089,7 @@ msgstr "S’està actualitzant la col·lecció" #: core/commandlineoptions.cpp:150 msgid "Usage" -msgstr "Forma d'ús" +msgstr "Ús" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" @@ -5352,7 +5352,7 @@ msgstr "Escriu totes les estadístiques en els fitxers de les cançons" msgid "Wrong username or password." msgstr "Nom d’usuari o contrasenya incorrectes." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/cs.po b/src/translations/cs.po index d31b413b6..edad1382c 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -465,7 +465,7 @@ msgstr "Přidat novou složku..." msgid "Add podcast" msgstr "Přidat záznam" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Přidat zvukový záznam..." @@ -614,7 +614,7 @@ msgstr "Po " msgid "After copying..." msgstr "Po zkopírování..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -627,7 +627,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideální hlasitost pro všechny skladby)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -780,7 +780,7 @@ msgid "" "the songs of your library?" msgstr "Opravdu chcete ukládat statistiky písní do souboru písně u všech písní ve vaší sbírce?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -802,7 +802,7 @@ msgstr "Rádio umělce" msgid "Artist tags" msgstr "Značky umělce" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniciály umělce" @@ -852,7 +852,7 @@ msgstr "Průměrná velikost obrázku" msgid "BBC Podcasts" msgstr "Záznamy BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -873,7 +873,7 @@ msgstr "Obrázek na pozadí" msgid "Background opacity" msgstr "Neprůhlednost pozadí" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Záloha databáze" @@ -914,7 +914,7 @@ msgstr "Životopis od %1" msgid "Bit rate" msgstr "Datový tok" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1201,7 +1201,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Čárkou oddělený seznam class:level, level je 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Poznámka" @@ -1213,7 +1213,7 @@ msgstr "Doplnit značky automaticky" msgid "Complete tags automatically..." msgstr "Doplnit značky automaticky..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1256,7 +1256,7 @@ msgstr "Nastavit celkové hledání:" msgid "Configure library..." msgstr "Nastavit sbírku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Nastavit záznamy..." @@ -1309,8 +1309,8 @@ msgstr "Převést veškerou hudbu, kterou zařízení nedokáže přehrát" msgid "Copy to clipboard" msgstr "Kopírovat do schránky" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Zkopírovat do zařízení..." @@ -1508,7 +1508,7 @@ msgstr "Cesta k DBus" msgid "Dance" msgstr "Taneční hudba" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1564,7 +1564,7 @@ msgstr "Smazat" msgid "Delete Grooveshark playlist" msgstr "Smazat seznam skladeb Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Smazat stažená data" @@ -1681,7 +1681,7 @@ msgstr "Zakázat tvoření náladového proužku" msgid "Disabled" msgstr "Zakázáno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1739,7 +1739,7 @@ msgstr "Klepnout dvakrát pro otevření" msgid "Double clicking a song will..." msgstr "Dvojité klepnutí na píseň..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Stáhnout %n dílů" @@ -1760,7 +1760,7 @@ msgstr "Stáhnout členství" msgid "Download new episodes automatically" msgstr "Stáhnout nové díly automaticky" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Stahování zařazeno" @@ -1776,7 +1776,7 @@ msgstr "Stáhnout toto album" msgid "Download this album..." msgstr "Stáhnout toto album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Stáhnout tento díl" @@ -1784,7 +1784,7 @@ msgstr "Stáhnout tento díl" msgid "Download..." msgstr "Stáhnout..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Stahuje se (%1%)..." @@ -2189,7 +2189,7 @@ msgstr "Chyba při stahování obalu" msgid "File Format" msgstr "Souborový formát" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Přípona souboru" @@ -2339,7 +2339,7 @@ msgstr "Obecné" msgid "General settings" msgstr "Obecná nastavení" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2448,7 +2448,7 @@ msgstr "Seskupovat podle žánru/alba" msgid "Group by Genre/Artist/Album" msgstr "Seskupovat podle žánru/umělce/alba" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Seskupení" @@ -2615,7 +2615,7 @@ msgstr "Vložit..." msgid "Installed" msgstr "Nainstalován" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Ověření celistvosti" @@ -2818,7 +2818,7 @@ msgstr "Pro výchozí nastavení ponechte prázdné. Příklady: \"/dev/dsp\", \ msgid "Left" msgstr "Vlevo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Délka" @@ -3031,11 +3031,11 @@ msgstr "Ručně" msgid "Manufacturer" msgstr "Výrobce" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Označit jako poslechnuté" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Označit jako nové" @@ -3472,7 +3472,7 @@ msgstr "Uspořádat soubory" msgid "Organise files..." msgstr "Uspořádat soubory..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Uspořádávají se soubory" @@ -3546,7 +3546,7 @@ msgstr "Pozastavit přehrávání" msgid "Paused" msgstr "Pozastaveno" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkující" @@ -3641,7 +3641,7 @@ msgstr "Zavřete, prosím, svůj prohlížeč a vraťte se do Clementine." msgid "Plugin status:" msgstr "Stav přídavného modulu:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Zvukové záznamy" @@ -4076,7 +4076,7 @@ msgstr "Po dokončení kopírování bezpečně odebrat zařízení" msgid "Sample rate" msgstr "Vzorkovací kmitočet" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Vzorkovací frekvence" @@ -4900,7 +4900,7 @@ msgstr "Tento proud je pouze pro předplatitele" msgid "This type of device is not supported: %1" msgstr "Tento typ zařízení není podporován: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4961,7 +4961,7 @@ msgstr "Celkem přeneseno bajtů" msgid "Total network requests made" msgstr "Celkem uskutečněno síťových požadavků" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5049,7 +5049,7 @@ msgstr "Neznámá chyba" msgid "Unset cover" msgstr "Odebrat obal" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Zrušit odběr" @@ -5061,7 +5061,7 @@ msgstr "Připravované koncerty" msgid "Update Grooveshark playlist" msgstr "Obnovit seznam skladeb Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Obnovit všechny zvukovové záznamy" @@ -5073,7 +5073,7 @@ msgstr "Obnovit změněné složky sbírky" msgid "Update the library when Clementine starts" msgstr "Při spuštění Clementine obnovit hudební sbírku" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Obnovit tento zvukový záznam" @@ -5360,7 +5360,7 @@ msgstr "Zapsat všechny statistiky písní do souborů písní" msgid "Wrong username or password." msgstr "Nesprávné uživatelské jméno nebo heslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/cy.po b/src/translations/cy.po index 9e89a89e4..caeb57adf 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/da.po b/src/translations/da.po index ebbe7a279..859ec1627 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -460,7 +460,7 @@ msgstr "Tilføj ny mappe..." msgid "Add podcast" msgstr "Tilføj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Tilføj podcast..." @@ -609,7 +609,7 @@ msgstr "Efter" msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideel lydstyrke for alle spor)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -775,7 +775,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -797,7 +797,7 @@ msgstr "Kunstnerradio" msgid "Artist tags" msgstr "Kunstner-mærker" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Kunstners initial" @@ -847,7 +847,7 @@ msgstr "Gns. billedstørrelse" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "Baggrundsbillede" msgid "Background opacity" msgstr "Baggrundsgennemsigtighed" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Sikkerhedskopierer database" @@ -909,7 +909,7 @@ msgstr "Biografi fra %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1196,7 +1196,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separeret liste af klasse:level, level er 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1208,7 +1208,7 @@ msgstr "Fuldfør mærker automatisk" msgid "Complete tags automatically..." msgstr "Fuldfør mærker automatisk..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1251,7 +1251,7 @@ msgstr "Indstil Global søgning ..." msgid "Configure library..." msgstr "Indstil bibliotek..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigurer podcasts ..." @@ -1304,8 +1304,8 @@ msgstr "Konverter musik som enheden ikke kan afspille" msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Koper til enhed..." @@ -1503,7 +1503,7 @@ msgstr "DBus sti" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1559,7 +1559,7 @@ msgstr "Slet" msgid "Delete Grooveshark playlist" msgstr "Slet Grooveshark afspilningsliste" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Sletter hentet data" @@ -1676,7 +1676,7 @@ msgstr "Deaktiver generering af stemningslinje" msgid "Disabled" msgstr "Deaktiveret" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1734,7 +1734,7 @@ msgstr "Dobbeltklik for at åbne" msgid "Double clicking a song will..." msgstr "Når jeg dobbeltklikker på en sang..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Hent %n episoder" @@ -1755,7 +1755,7 @@ msgstr "Hent medlemskab" msgid "Download new episodes automatically" msgstr "Hent automatisk nye episoder" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Hent filer i downloadkø" @@ -1771,7 +1771,7 @@ msgstr "Hent dette album" msgid "Download this album..." msgstr "Hent dette album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Hent denne episode" @@ -1779,7 +1779,7 @@ msgstr "Hent denne episode" msgid "Download..." msgstr "Henter..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Henter (%1%)..." @@ -2184,7 +2184,7 @@ msgstr "Kunne ikke hente omslag" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "File suffiks" @@ -2334,7 +2334,7 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle indstillinger" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2443,7 +2443,7 @@ msgstr "Gruppér efter genre/album" msgid "Group by Genre/Artist/Album" msgstr "Gruppér efter genre/kunstner/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering " @@ -2610,7 +2610,7 @@ msgstr "Indsæt..." msgid "Installed" msgstr "Installeret" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integritetskontrol" @@ -2813,7 +2813,7 @@ msgstr "Lad stå blank for standard. Eksempler: \"/dev/dsp\", \"front\", osv." msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Længde" @@ -3026,11 +3026,11 @@ msgstr "Manuelt" msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marker som aflyttet" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marker som ny" @@ -3467,7 +3467,7 @@ msgstr "Organiser filer" msgid "Organise files..." msgstr "Organiser filer..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiserer filer" @@ -3541,7 +3541,7 @@ msgstr "Pause i afspilning" msgid "Paused" msgstr "På pause" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Kunstner" @@ -3636,7 +3636,7 @@ msgstr "Luk venligst din hjemmesidelæser, og returner til Clementine" msgid "Plugin status:" msgstr "Status for udvidelsesmodulen" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4071,7 +4071,7 @@ msgstr "Sikker fjernelse af enhed efter kopiering" msgid "Sample rate" msgstr "Samplingsrate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Samplingsfrekvens" @@ -4895,7 +4895,7 @@ msgstr "Denne stream er kun for betalende abonnenter" msgid "This type of device is not supported: %1" msgstr "Denne enhedstype (%1) er ikke understøttet." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4956,7 +4956,7 @@ msgstr "Totalt antal bytes overført" msgid "Total network requests made" msgstr "Totalt antal forespørgsler over nettet" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5044,7 +5044,7 @@ msgstr "Ukendt fejl" msgid "Unset cover" msgstr "Fravælg omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Opsig abonnement" @@ -5056,7 +5056,7 @@ msgstr "Kommende Koncerter" msgid "Update Grooveshark playlist" msgstr "Opdater Grooveshark afspilningslister" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Ajourfør alle podcasts" @@ -5068,7 +5068,7 @@ msgstr "Opdater ændrede bibliotekskataloger" msgid "Update the library when Clementine starts" msgstr "Opdater biblioteket når Clementine starter" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Ajourfør denne podcast" @@ -5355,7 +5355,7 @@ msgstr "" msgid "Wrong username or password." msgstr "Forkert brugernavn og/eller password." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/de.po b/src/translations/de.po index 992d6b2be..b3c9769b8 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 03:14+0000\n" +"PO-Revision-Date: 2014-01-27 16:02+0000\n" "Last-Translator: to_ba\n" "Language-Team: German (http://www.transifex.com/projects/p/clementine/language/de/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -315,7 +315,7 @@ msgid "" "directly into the file each time they changed.

Please note it might " "not work for every format and, as there is no standard for doing so, other " "music players might not be able to read them.

" -msgstr "

Deaktiviert: Clementine wird versuchen, Ratings und andere Statistiken in einer separaten Datenbank zu speichern, ohne Ihre Dateien zu verändern.

Aktiviert: Statistiken werden bei jeder Änderung sowohl in einer Datenbank als auch direkt in der betreffenden Datei gespeichert.

Bitte beachten Sie, dass dies unter Umständen nicht mit jedem Format klappt; da es keinen Standard gibt, ist es möglich, dass ein anderer Musikspieler die Daten nicht lesen kann.

" +msgstr "

Deaktiviert: Clementine wird versuchen, Bewertungen und andere Statistiken in einer separaten Datenbank zu speichern, ohne Ihre Dateien zu verändern.

Aktiviert: Statistiken werden bei jeder Änderung sowohl in einer Datenbank als auch direkt in der betreffenden Datei gespeichert.

Bitte beachten Sie, dass dies unter Umständen nicht mit jedem Format klappt; da es keinen Standard gibt, ist es möglich, dass ein anderer Musikspieler die Daten nicht lesen kann.

" #: ../bin/src/ui_librarysettingspage.h:199 msgid "" @@ -481,7 +481,7 @@ msgstr "Neuen Ordner hinzufügen …" msgid "Add podcast" msgstr "Podcast hinzufügen" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast hinzufügen …" @@ -539,7 +539,7 @@ msgstr "Abspielzähler des aktuellen Titels" #: ../bin/src/ui_notificationssettingspage.h:419 msgid "Add song rating" -msgstr "Rating hinzufügen" +msgstr "Bewertung hinzufügen" #: ../bin/src/ui_notificationssettingspage.h:416 msgid "Add song skip count" @@ -630,7 +630,7 @@ msgstr "Nach " msgid "After copying..." msgstr "Nach dem Kopieren …" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -643,7 +643,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealer Pegel für alle Stücke)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -796,7 +796,7 @@ msgid "" "the songs of your library?" msgstr "Sind Sie sicher, dass Sie, für alle Lieder Ihrer Bibliothek, die Liedstatistiken in die Lieddatei schreiben wollen?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -818,7 +818,7 @@ msgstr "Künstler-Radio" msgid "Artist tags" msgstr "Stichworte zum Interpreten" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Initialen des Interpreten" @@ -868,7 +868,7 @@ msgstr "Durchschnittliche Bildgröße" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -889,7 +889,7 @@ msgstr "Hintergrundbild" msgid "Background opacity" msgstr "Deckkraft:" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Die Datenbank wird gesuchert" @@ -930,7 +930,7 @@ msgstr "Biografie von %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1217,7 +1217,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma getrennte Liste mit »class:level«, Level zwischen 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1229,7 +1229,7 @@ msgstr "Tags automatisch vervollständigen" msgid "Complete tags automatically..." msgstr "Schlagworte automatisch vervollständigen …" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1272,7 +1272,7 @@ msgstr "Globale Suche konfigurieren …" msgid "Configure library..." msgstr "Bibliothek einrichten …" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podcasts einrichten …" @@ -1325,8 +1325,8 @@ msgstr "Musik konvertieren, die das Gerät nicht abspielen kann" msgid "Copy to clipboard" msgstr "Kopieren" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Auf das Gerät kopieren …" @@ -1524,7 +1524,7 @@ msgstr "DBus Pfad" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1580,7 +1580,7 @@ msgstr "Löschen" msgid "Delete Grooveshark playlist" msgstr "Grooveshark-Wiedergabeliste löschen" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Heruntergeladene Dateien löschen" @@ -1697,7 +1697,7 @@ msgstr "Erzeugung des Stimmungsbarometers deaktivieren" msgid "Disabled" msgstr "Deaktiviert" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD-Nr." @@ -1755,7 +1755,7 @@ msgstr "Zum Öffnen doppelklicken" msgid "Double clicking a song will..." msgstr "Beim Doppelklick auf einen Titel diesen …" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n Episoden herunterladen" @@ -1776,13 +1776,13 @@ msgstr "Herunterlademitgliedschaft" msgid "Download new episodes automatically" msgstr "Neue Episoden automatisch herunterladen" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Herunterladewarteschlange" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" -msgstr "Die Android App herunterladen" +msgstr "Die Android-App herunterladen" #: internet/magnatuneservice.cpp:276 msgid "Download this album" @@ -1792,7 +1792,7 @@ msgstr "Dieses Album herunterladen" msgid "Download this album..." msgstr "Album herunterladen …" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Diese Episode herunterladen" @@ -1800,7 +1800,7 @@ msgstr "Diese Episode herunterladen" msgid "Download..." msgstr "Herunterladen …" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "(%1%) herunterladen …" @@ -1966,7 +1966,7 @@ msgstr "Geben Sie den Namen des Ordners ein" #: ../bin/src/ui_networkremotesettingspage.h:198 msgid "Enter this IP in the App to connect to Clementine." -msgstr "Gib diese IP in der App ein um dich mit Clementine zu verbinden." +msgstr "Diese IP in der App eingeben, um mit Clementine zu verbinden." #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" @@ -2205,7 +2205,7 @@ msgstr "Holen des Titelbildes fehlgeschlagen" msgid "File Format" msgstr "Dateiformat" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Dateiendung" @@ -2355,7 +2355,7 @@ msgstr "Allgemein" msgid "General settings" msgstr "Allgemeine Einstellungen" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2464,7 +2464,7 @@ msgstr "Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Genre/Interpret/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppierung" @@ -2631,7 +2631,7 @@ msgstr "Einfügen …" msgid "Installed" msgstr "Installiert" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integritätsprüfung" @@ -2834,7 +2834,7 @@ msgstr "Beispiele: »/dev/dsp« , »front«, usw. Leer lassen für Standardeinst msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Länge" @@ -3047,11 +3047,11 @@ msgstr "Manuell" msgid "Manufacturer" msgstr "Hersteller" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Als gehört markieren" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Als ungehört markieren" @@ -3219,7 +3219,7 @@ msgstr "Netzwerk-Proxy" #: ../bin/src/ui_networkremotesettingspage.h:177 msgid "Network Remote" -msgstr "Netzwerk Fernsteuerung" +msgstr "Netzwerkfernsteuerung" #: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 msgid "Never" @@ -3488,7 +3488,7 @@ msgstr "Dateien organisieren" msgid "Organise files..." msgstr "Dateien organisieren …" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Dateien organisieren" @@ -3562,7 +3562,7 @@ msgstr "Wiedergabe pausieren" msgid "Paused" msgstr "Pausiert" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Besetzung" @@ -3657,7 +3657,7 @@ msgstr "Bitte Browser schließen und zu Clementine zurückkehren" msgid "Plugin status:" msgstr "Erweiterungsstatus:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -3684,7 +3684,7 @@ msgstr "Anzeigedauer:" #: ../bin/src/ui_networkproxysettingspage.h:166 #: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Port" -msgstr "Port" +msgstr "Anschluss" #: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 msgid "Pre-amp" @@ -3991,7 +3991,7 @@ msgstr "Die Wiedergabeliste ersetzen lassen" #: ../bin/src/ui_organisedialog.h:205 msgid "Replaces spaces with underscores" -msgstr "Ersetze Leerzeichen mit Unterstrichen" +msgstr "Leerzeichen mit Unterstrichen ersetzen" #: ../bin/src/ui_playbacksettingspage.h:309 msgid "Replay Gain" @@ -4092,7 +4092,7 @@ msgstr "Das Gerät nach dem Kopiervorgang sicher entfernen" msgid "Sample rate" msgstr "Abtastrate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Abtastrate" @@ -4154,7 +4154,7 @@ msgstr "Bildgröße anpassen" #: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" -msgstr "Rating" +msgstr "Punkte" #: ../bin/src/ui_lastfmsettingspage.h:156 msgid "Scrobble tracks that I listen to" @@ -4916,7 +4916,7 @@ msgstr "Dieser Stream ist nur für zahlende Kunden verfügbar" msgid "This type of device is not supported: %1" msgstr "Diese Geräteart wird nicht unterstützt: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4977,7 +4977,7 @@ msgstr "Insgesamt übertragene Bytes" msgid "Total network requests made" msgstr "Insgesamt gestellte Netzwerkanfragen" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5065,7 +5065,7 @@ msgstr "Unbekannter Fehler" msgid "Unset cover" msgstr "Titelbild entfernen" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Abonnement kündigen" @@ -5077,7 +5077,7 @@ msgstr "Nächste Konzerte" msgid "Update Grooveshark playlist" msgstr "Grooveshark-Wiedergabelisten aktualisieren" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Alle Podcasts aktualisieren" @@ -5089,7 +5089,7 @@ msgstr "Geänderte Bibliotheksordner aktualisieren" msgid "Update the library when Clementine starts" msgstr "Bibliothek beim Programmstart aktualisieren" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Diesen Podcast aktualisieren" @@ -5145,7 +5145,7 @@ msgstr "Einen benutzerdefinierten Text für Benachrichtigungen benutzen" #: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Use a network remote control" -msgstr "Eine Netzwerk Fernsteuerung verwenden" +msgstr "Eine Netzwerkfernsteuerung verwenden" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" @@ -5376,7 +5376,7 @@ msgstr "Speichere alle Titel-Statistiken in die Titel-Dateien" msgid "Wrong username or password." msgstr "Benutzername oder Passwort falsch." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5504,7 +5504,7 @@ msgstr "Sie werden kein Last.fm-Radio abspielen können, da sie kein Last.fm-Abo #: ../bin/src/ui_networkremotesettingspage.h:200 msgid "Your IP address:" -msgstr "Deine IP:" +msgstr "Ihre IP-Adresse:" #: internet/lastfmsettingspage.cpp:80 msgid "Your Last.fm credentials were incorrect" diff --git a/src/translations/el.po b/src/translations/el.po index 7bd1a5e57..28159ebcc 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -459,7 +459,7 @@ msgstr "Προσθήκη νέου φακέλου..." msgid "Add podcast" msgstr "Προσθήκη podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Προσθήκη podcast..." @@ -608,7 +608,7 @@ msgstr "Μετά " msgid "After copying..." msgstr "Μετά την αντιγραφή..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -621,7 +621,7 @@ msgstr "Άλμπουμ" msgid "Album (ideal loudness for all tracks)" msgstr "Άλμπουμ (ιδανική ένταση για όλα τα κομμάτια)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -774,7 +774,7 @@ msgid "" "the songs of your library?" msgstr "Είστε σίγουροι πως θέλετε να γράψετε τα στατιστικά των τραγουδιών στα αρχεία των τραγουδιών για όλα τα τραγούδια στη βιβλιοθήκη σας;" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -796,7 +796,7 @@ msgstr "Ραδιόφωνο καλλιτέχνη" msgid "Artist tags" msgstr "Ετικέτες Καλλιτέχνη" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Αρχικά του καλλιτέχνη" @@ -846,7 +846,7 @@ msgstr "Μέσο μέγεθος εικόνας" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -867,7 +867,7 @@ msgstr "Εικόνα φόντου" msgid "Background opacity" msgstr "Διαφάνεια φόντου" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Αντίγραφο ασφαλείας της βάσης δεδομένων" @@ -908,7 +908,7 @@ msgstr "Βιογραφία από %1" msgid "Bit rate" msgstr "Ρυθμός bit" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1195,7 +1195,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Λίστα χωρισμένη με κόμμα από class:level, το level είναι 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Σχόλια" @@ -1207,7 +1207,7 @@ msgstr "Συμπλήρωση των ετικετών αυτόματα" msgid "Complete tags automatically..." msgstr "Συμπλήρωση των ετικετών αυτόματα..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1250,7 +1250,7 @@ msgstr "Ρύθμιση καθολικής αναζήτησης..." msgid "Configure library..." msgstr "Παραμετροποίηση της βιβλιοθήκης" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Ρύθμιση των podcasts..." @@ -1303,8 +1303,8 @@ msgstr "Μετατροπή κάθε μουσικής που η συσκευή δ msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Αντιγραφή στην συσκευή..." @@ -1502,7 +1502,7 @@ msgstr "Διαδρομή του DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1558,7 +1558,7 @@ msgstr "Διαγραφή" msgid "Delete Grooveshark playlist" msgstr "Διαγραφή της λίστας αναπαραγωγής " -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Διαγραφή δεδομένων που έχουν \"κατέβει\"" @@ -1675,7 +1675,7 @@ msgstr "Απενεργοποίηση δημιουργίας moodbar " msgid "Disabled" msgstr "Απενεργοποιημένο" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Δίσκος" @@ -1733,7 +1733,7 @@ msgstr "Διπλό «κλικ» για άνοιγμα" msgid "Double clicking a song will..." msgstr "Διπλό \"κλικ\" σε ένα τραγούδι θα..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Λήψη %n επεισοδίων" @@ -1754,7 +1754,7 @@ msgstr "\"Κατέβασμα\" συνδρομής" msgid "Download new episodes automatically" msgstr "Αυτόματη λήψη νέων επεισοδίων" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Η λήψη μπήκε στην αναμονή" @@ -1770,7 +1770,7 @@ msgstr "Λήψη αυτού του άλμπουμ" msgid "Download this album..." msgstr "Μεταφόρτωση αυτού του άλμπουμ..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Λήψη αυτού του επεισοδίου" @@ -1778,7 +1778,7 @@ msgstr "Λήψη αυτού του επεισοδίου" msgid "Download..." msgstr "Λήψη..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Λήψη του (%1%)..." @@ -2183,7 +2183,7 @@ msgstr "Σφάλμα στο κατέβασμα του εξώφυλλου" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Επέκταση αρχείου" @@ -2333,7 +2333,7 @@ msgstr "Γενικά" msgid "General settings" msgstr "Γενικές ρυθμίσεις" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2442,7 +2442,7 @@ msgstr "Ομαδοποίηση κατά Είδος/Άλμπουμ" msgid "Group by Genre/Artist/Album" msgstr "Ομαδοποίηση κατά Είδος/Καλλιντέχνη/Άλμπουμ" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ομαδοποίηση" @@ -2609,7 +2609,7 @@ msgstr "Εισαγωγή..." msgid "Installed" msgstr "Εγκατεστημένο" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "έλεγχος ακεραιότητας" @@ -2812,7 +2812,7 @@ msgstr "Κενό για τα προεπιλεγμένα. Π.χ. \"/dev/dsp\", \ msgid "Left" msgstr "Αριστερά" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Διάρκεια" @@ -3025,11 +3025,11 @@ msgstr "Χειροκίνητα" msgid "Manufacturer" msgstr "Κατασκευαστής" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Επισήμανση ως έχει ακουστεί" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Επισήμανση ως νέο" @@ -3466,7 +3466,7 @@ msgstr "Οργάνωση Αρχείων" msgid "Organise files..." msgstr "Οργάνωση αρχείων..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Γίνετε οργάνωση αρχείων" @@ -3540,7 +3540,7 @@ msgstr "Παύση αναπαραγωγής" msgid "Paused" msgstr "Σταματημένο" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Εκτελεστής" @@ -3635,7 +3635,7 @@ msgstr "Παρακαλώ κλείστε τον περιηγητή σας και msgid "Plugin status:" msgstr "Κατάσταση πρόσθετου:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4070,7 +4070,7 @@ msgstr "Ασφαλής αφαίρεση συσκευής μετά την αντ msgid "Sample rate" msgstr "Ρυθμός δειγματοληψίας" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Δειγματοληψία" @@ -4894,7 +4894,7 @@ msgstr "Η ροή (stream) αυτή είναι μόνο για συνδρομη msgid "This type of device is not supported: %1" msgstr "Αυτού του τύπου η συσκευή δεν υποστηρίζετε %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4955,7 +4955,7 @@ msgstr "Συνολικά bytes που μεταφέρθηκαν" msgid "Total network requests made" msgstr "Συνολικές αιτήσεις δικτύου που πραγματοποιήθηκαν" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5043,7 +5043,7 @@ msgstr "Άγνωστο σφάλμα" msgid "Unset cover" msgstr "Αφαίρεση εξώφυλλου" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Ακύρωση συνδρομής" @@ -5055,7 +5055,7 @@ msgstr "Προσεχής Συναυλίες" msgid "Update Grooveshark playlist" msgstr "Ενημέρωση λίστας αναπαραγωγής του Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Ενημέρωση όλων των podcasts" @@ -5067,7 +5067,7 @@ msgstr "Ενημέρωση φακέλων βιβλιοθήκης που άλλα msgid "Update the library when Clementine starts" msgstr "Ενημέρωση της βιβλιοθήκης κατά την εκκίνηση του Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Ενημέρωσε αυτό το podcast" @@ -5354,7 +5354,7 @@ msgstr "Εγγραφή όλων των στατιστικών των τραγο msgid "Wrong username or password." msgstr "Λάθος όνομα χρήστη ή συνθηματικό" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index f6df9d6b1..ea3e60cc5 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -453,7 +453,7 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "Artist radio" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +861,7 @@ msgstr "" msgid "Background opacity" msgstr "Background opacity" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "" msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" @@ -1201,7 +1201,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "Configure library..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1297,8 +1297,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1496,7 +1496,7 @@ msgstr "" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "Disabled" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1727,7 +1727,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1764,7 +1764,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1772,7 +1772,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "Group by Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3534,7 +3534,7 @@ msgstr "Pause playback" msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4064,7 +4064,7 @@ msgstr "" msgid "Sample rate" msgstr "Sample rate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "This stream is for paid subscribers only" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "Unknown error" msgid "Unset cover" msgstr "Unset cover" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Update the library when Clementine starts" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index e7efec449..005f6a28f 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -452,7 +452,7 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "After copying..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "Artist radio" msgid "Artist tags" msgstr "Artist tags" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artist's initial" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "Background opacity" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "Biography from %1" msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "Configure library..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "Disabled" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "Group by Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "Pause playback" msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "Sample rate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "This stream is for paid subscribers only" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "Unknown error" msgid "Unset cover" msgstr "Unset cover" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/eo.po b/src/translations/eo.po index 7378b3b4e..84f95a33b 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -452,7 +452,7 @@ msgstr "Aldoni novan dosierujon..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "Post kopiado..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Albumo" msgid "Album (ideal loudness for all tracks)" msgstr "Albumo (ideala laŭteco por ĉiuj sonaĵoj)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/es.po b/src/translations/es.po index 6379084e6..979a3ec96 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -27,8 +27,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-02-01 18:35+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/clementine/language/es/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -472,7 +472,7 @@ msgstr "Añadir carpeta nueva…" msgid "Add podcast" msgstr "Añadir un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Añadir un podcast…" @@ -621,7 +621,7 @@ msgstr "Después de " msgid "After copying..." msgstr "Después de copiar…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -634,7 +634,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volumen ideal para todas las pistas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -787,7 +787,7 @@ msgid "" "the songs of your library?" msgstr "¿Está seguro de que quiere almacenar las estadísticas en todos los archivos de su colección?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -809,7 +809,7 @@ msgstr "Radio del artista" msgid "Artist tags" msgstr "Etiquetas del artista" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniciales del artista" @@ -859,7 +859,7 @@ msgstr "Tamaño promedio de imagen" msgid "BBC Podcasts" msgstr "Podcasts de BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -880,7 +880,7 @@ msgstr "Imagen de fondo" msgid "Background opacity" msgstr "Opacidad del fondo" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Respaldando la base de datos" @@ -921,7 +921,7 @@ msgstr "Biografía de %1" msgid "Bit rate" msgstr "Tasa de bits" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1208,7 +1208,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de la clase:nivel, el nivel es 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" @@ -1220,7 +1220,7 @@ msgstr "Completar etiquetas automáticamente" msgid "Complete tags automatically..." msgstr "Completar etiquetas automáticamente…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1263,7 +1263,7 @@ msgstr "Configurar búsqueda global…" msgid "Configure library..." msgstr "Configurar colección…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configurar podcasts…" @@ -1316,8 +1316,8 @@ msgstr "Convertir cualquier música que el dispositivo no pueda reproducir" msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar al dispositivo…" @@ -1515,7 +1515,7 @@ msgstr "Ruta de DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1571,7 +1571,7 @@ msgstr "Eliminar" msgid "Delete Grooveshark playlist" msgstr "Eliminar lista de reproducción de Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Eliminar datos descargados" @@ -1688,7 +1688,7 @@ msgstr "Desactivar generación de barras de ánimo" msgid "Disabled" msgstr "Desactivado" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1746,7 +1746,7 @@ msgstr "Pulse dos veces para abrir" msgid "Double clicking a song will..." msgstr "Al pulsar dos veces sobre una canción…" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Descargar %n episodios" @@ -1767,7 +1767,7 @@ msgstr "Membresía para descarga" msgid "Download new episodes automatically" msgstr "Descargar episodios nuevos automáticamente" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Descarga en cola" @@ -1783,7 +1783,7 @@ msgstr "Descargar este álbum" msgid "Download this album..." msgstr "Descargar este álbum…" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Descargar este episodio" @@ -1791,7 +1791,7 @@ msgstr "Descargar este episodio" msgid "Download..." msgstr "Descargar…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Descargando (%1%)…" @@ -2196,7 +2196,7 @@ msgstr "Error al obtener la carátula" msgid "File Format" msgstr "Formato de archivo" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensión del archivo" @@ -2346,7 +2346,7 @@ msgstr "General" msgid "General settings" msgstr "Configuración general" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2455,7 +2455,7 @@ msgstr "Agrupar por género/álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Conjunto" @@ -2612,7 +2612,7 @@ msgstr "Información" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opciones de entrada" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." @@ -2622,7 +2622,7 @@ msgstr "Insertar…" msgid "Installed" msgstr "Instalado" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Comprobación de integridad" @@ -2668,7 +2668,7 @@ msgstr "Nombre de usuario y/o contraseña no válidos" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Invertir la selección" #: internet/jamendoservice.cpp:127 msgid "Jamendo" @@ -2825,7 +2825,7 @@ msgstr "Déjelo en blanco para el predeterminado. Ejemplos: «/dev/dsp», «fro msgid "Left" msgstr "Izquierda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" @@ -3038,11 +3038,11 @@ msgstr "Manualmente" msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marcar como escuchado" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marcar como nuevo" @@ -3479,7 +3479,7 @@ msgstr "Organizar archivos" msgid "Organise files..." msgstr "Organizar archivos…" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizando los archivos" @@ -3553,7 +3553,7 @@ msgstr "Pausar la reproducción" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3648,7 +3648,7 @@ msgstr "Cierre el navegador y regrese a Clementine." msgid "Plugin status:" msgstr "Estado del complemento:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4043,7 +4043,7 @@ msgstr "Derecha" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Extraer" #: ui/ripcd.cpp:116 msgid "Rip CD" @@ -4083,7 +4083,7 @@ msgstr "Quitar dispositivo con seguridad después de copiar" msgid "Sample rate" msgstr "Tasa de muestreo" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Tasa de muestreo" @@ -4587,7 +4587,7 @@ msgstr "Destacado" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Iniciar extracción" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4907,7 +4907,7 @@ msgstr "Este flujo es solo para los suscriptores de pago" msgid "This type of device is not supported: %1" msgstr "No se admite este tipo de dispositivo: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4968,7 +4968,7 @@ msgstr "Total de bytes transferidos" msgid "Total network requests made" msgstr "Total de solicitudes hechas a la red" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5056,7 +5056,7 @@ msgstr "Error desconocido" msgid "Unset cover" msgstr "Eliminar la carátula" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Cancelar suscripción" @@ -5068,7 +5068,7 @@ msgstr "Próximos conciertos" msgid "Update Grooveshark playlist" msgstr "Actualizar lista de reproducción de Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Actualizar todos los podcasts" @@ -5080,7 +5080,7 @@ msgstr "Actualizar carpetas de la colección modificadas" msgid "Update the library when Clementine starts" msgstr "Actualizar la colección cuando inicie Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Actualizar este podcast" @@ -5367,7 +5367,7 @@ msgstr "Escribir las estadísticas de todas las canciones en los archivos" msgid "Wrong username or password." msgstr "Nombre de usuario o contraseña incorrectos." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/et.po b/src/translations/et.po index 47537a49e..1e6c330fc 100644 --- a/src/translations/et.po +++ b/src/translations/et.po @@ -455,7 +455,7 @@ msgstr "Lisa uus kaust..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -604,7 +604,7 @@ msgstr "" msgid "After copying..." msgstr "Pärast kopeerimist..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kõigil radadel ideaalne valjus)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "" msgid "Artist tags" msgstr "Artisti sildipilv" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -842,7 +842,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "" msgid "Background opacity" msgstr "Tausta läbipaistvus" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -904,7 +904,7 @@ msgstr "" msgid "Bit rate" msgstr "Bitikiirus" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Märkus" @@ -1203,7 +1203,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1299,8 +1299,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopeeri seadmesse..." @@ -1498,7 +1498,7 @@ msgstr "" msgid "Dance" msgstr "Tantsumuusika" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1671,7 +1671,7 @@ msgstr "" msgid "Disabled" msgstr "Keelatud" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Ketas" @@ -1729,7 +1729,7 @@ msgstr "Avamiseks tee topeltklikk" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1750,7 +1750,7 @@ msgstr "Lae liikmelisus" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1766,7 +1766,7 @@ msgstr "Lae see album alla" msgid "Download this album..." msgstr "Lae see album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2179,7 +2179,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Faililaiend" @@ -2329,7 +2329,7 @@ msgstr "" msgid "General settings" msgstr "Üldised seadistused" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "Grupeeri zanri/albumi järgi" msgid "Group by Genre/Artist/Album" msgstr "Grupeeri zanri/esitaja/albumi järgi" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "Lisa..." msgid "Installed" msgstr "Paigaldatud" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2808,7 +2808,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kestvus" @@ -3021,11 +3021,11 @@ msgstr "" msgid "Manufacturer" msgstr "Tootja" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3462,7 +3462,7 @@ msgstr "Organiseeri faile" msgid "Organise files..." msgstr "Organiseeri faile..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiseerin faile" @@ -3536,7 +3536,7 @@ msgstr "Peata esitus" msgid "Paused" msgstr "Peatatud" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3631,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4066,7 +4066,7 @@ msgstr "" msgid "Sample rate" msgstr "Diskreetimissagedus" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Diskreetimissagedus" @@ -4890,7 +4890,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "Tundmatu viga" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5051,7 +5051,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5063,7 +5063,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5350,7 +5350,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/eu.po b/src/translations/eu.po index 73eff1e5f..028696665 100644 --- a/src/translations/eu.po +++ b/src/translations/eu.po @@ -456,7 +456,7 @@ msgstr "Gehitu karpeta berria..." msgid "Add podcast" msgstr "Podcast-a gehitu" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast-a gehitu..." @@ -605,7 +605,7 @@ msgstr "Ondoren" msgid "After copying..." msgstr "Kopiatu ondoren..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Albuma" msgid "Album (ideal loudness for all tracks)" msgstr "Albuma (pista guztientzako bolumen ideala)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Artistaren irratia" msgid "Artist tags" msgstr "Artistaren etiketak" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artistaren inizialak" @@ -843,7 +843,7 @@ msgstr "Batez besteko irudi-tamaina" msgid "BBC Podcasts" msgstr "BBC-ko podcast-ak" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Atzeko planoko irudia" msgid "Background opacity" msgstr "Atzeko planoko opakotasuna" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Datu-basearen babeskopia burutzen" @@ -905,7 +905,7 @@ msgstr "%1-ko biografia" msgid "Bit rate" msgstr "Bit-tasa" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Komaz banaturiko klase-zerrenda:maila, maila 0-3 da" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Iruzkina" @@ -1204,7 +1204,7 @@ msgstr "Bete etiketak automatikoki" msgid "Complete tags automatically..." msgstr "Bete etiketak automatikoki..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Bilaketa globala konfiguratu..." msgid "Configure library..." msgstr "Konfiguratu bilduma..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podcast-ak konfiguratu" @@ -1300,8 +1300,8 @@ msgstr "Gailuak erreproduzitu ezin dezakeen musika bihurtu" msgid "Copy to clipboard" msgstr "Kopiatu arbelean" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiatu gailura..." @@ -1499,7 +1499,7 @@ msgstr "DBus bide-izena" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Ezabatu" msgid "Delete Grooveshark playlist" msgstr "Ezabatu Grooveshark-eko erreprodukzio-zerrenda" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Ezabatu deskargatutako datuak" @@ -1672,7 +1672,7 @@ msgstr "Aldarte-barren sortzea desgaitu" msgid "Disabled" msgstr "Desgaituta" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diska" @@ -1730,7 +1730,7 @@ msgstr "Klik bikoitza irekitzeko" msgid "Double clicking a song will..." msgstr "Abesti batean klik bikoitza eginez gero..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n atal deskargatu" @@ -1751,7 +1751,7 @@ msgstr "Deskargarako bazkidetza" msgid "Download new episodes automatically" msgstr "Atal berriak automatikoki deskargatu" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Deskarga zerrendaren zain" @@ -1767,7 +1767,7 @@ msgstr "Deskargatu album hau" msgid "Download this album..." msgstr "Deskargatu album hau..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Atal hau deskargatu" @@ -1775,7 +1775,7 @@ msgstr "Atal hau deskargatu" msgid "Download..." msgstr "Deskargatu..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Deskargatzen (%%1)..." @@ -2180,7 +2180,7 @@ msgstr "Errorea azalak eskuratzean" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Fitxategi-luzapena" @@ -2330,7 +2330,7 @@ msgstr "Orokorra" msgid "General settings" msgstr "Ezarpen orokorrak" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Taldekatu genero/albumaren arabera" msgid "Group by Genre/Artist/Album" msgstr "Taldekatu generoa/artista/albumaren arabera" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2606,7 +2606,7 @@ msgstr "Txertatu" msgid "Installed" msgstr "Instalatuta" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Osotasunaren egiaztapena" @@ -2809,7 +2809,7 @@ msgstr "Hutsik utzi lehenetsirako. Adibideak: \"/dev/dsp\", \"front\", e.a." msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Iraupena" @@ -3022,11 +3022,11 @@ msgstr "Eskuz" msgid "Manufacturer" msgstr "Fabrikatzailea" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Entzunda bezala markatu" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Berri bezala markatu" @@ -3463,7 +3463,7 @@ msgstr "Antolatu fitxategiak" msgid "Organise files..." msgstr "Antolatu fitxategiak..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Fitxategiak antolatzen" @@ -3537,7 +3537,7 @@ msgstr "Erreprodukzioa pausatu" msgid "Paused" msgstr "Pausatua" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3632,7 +3632,7 @@ msgstr "Mesedez, itxi nabigatzailea eta itzuli Clementine-ra." msgid "Plugin status:" msgstr "Pluginaren egoera:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast-ak" @@ -4067,7 +4067,7 @@ msgstr "Kopiatu ondoren kendu gailua arriskurik gabe" msgid "Sample rate" msgstr "Lagintze-tasa" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Lagintze-tasa" @@ -4891,7 +4891,7 @@ msgstr "Jario hau ordainpeko harpidedunentzat da bakarrik" msgid "This type of device is not supported: %1" msgstr "Gailu mota hau ez da onartzen :%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Transferituriko byte-ak guztira" msgid "Total network requests made" msgstr "Eginiko sareko eskaerak guztira" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Errore ezezaguna" msgid "Unset cover" msgstr "Ezarri gabeko azala" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Harpidetza kendu" @@ -5052,7 +5052,7 @@ msgstr "Hurrengo Kontzertuak" msgid "Update Grooveshark playlist" msgstr "Grooveshark erreprodukzio-zerrenda eguneratu" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Eguneratu podcast guztiak" @@ -5064,7 +5064,7 @@ msgstr "Eguneratu bildumako aldatutako karpetak" msgid "Update the library when Clementine starts" msgstr "Eguneratu bilduma Clementine abiaraztean" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Podcast hau eguneratu" @@ -5351,7 +5351,7 @@ msgstr "" msgid "Wrong username or password." msgstr "Erabiltzailea edo pasahitza ez da zuzena." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/fa.po b/src/translations/fa.po index 6bf330f9c..5a62e081f 100644 --- a/src/translations/fa.po +++ b/src/translations/fa.po @@ -456,7 +456,7 @@ msgstr "افزودن پوشه‌ی نو..." msgid "Add podcast" msgstr "افزودن پادکست" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "افزودن پادکست..." @@ -605,7 +605,7 @@ msgstr "پس از" msgid "After copying..." msgstr "پس از کپی‌کردن..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "آلبوم" msgid "Album (ideal loudness for all tracks)" msgstr "آلبوم (بلندی صدای ایده‌آل برای همه‌ی ترک‌ها)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "رادیوی هنرمند" msgid "Artist tags" msgstr "برچسب هنرمند" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "حرف اول هنرمند" @@ -843,7 +843,7 @@ msgstr "میانگین اندازه‌ی فرتور" msgid "BBC Podcasts" msgstr "پادکست بی‌بی‌سی" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ض.د.د" @@ -864,7 +864,7 @@ msgstr "فرتور پس‌زمینه" msgid "Background opacity" msgstr "تاری پس‌زمینه" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "پشتیبان‌گیری از پایگاه داده" @@ -905,7 +905,7 @@ msgstr "بیوگرافی از %1" msgid "Bit rate" msgstr "ضرب آهنگ" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "لیست مجزا بوسیله‌ی ویرگول از کلاس:طبقه، طبقه ۰-۳ است" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "توضیح" @@ -1204,7 +1204,7 @@ msgstr "تکمیل خودکار برچسب‌ها" msgid "Complete tags automatically..." msgstr "تکمیل خودکار برچسب‌ها..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "پیکربندی جستجوی سراسری..." msgid "Configure library..." msgstr "پیکربندی کتابخانه..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "پیکربندی پادکست..." @@ -1300,8 +1300,8 @@ msgstr "برگردان تمام آهنگ‌هایی که دستگاه نمی‌ msgid "Copy to clipboard" msgstr "کپی به کلیپ‌بورد" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "کپی‌کردن در دستگاه..." @@ -1499,7 +1499,7 @@ msgstr "مسیر DBus" msgid "Dance" msgstr "رقص" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "پاک‌کردن" msgid "Delete Grooveshark playlist" msgstr "پاک‌کردن لیست پخش گرووشارک" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "پاک‌کردن دانستنی‌های بارگیری شده" @@ -1672,7 +1672,7 @@ msgstr "ناپویا کردن ساخت میله‌ی مود" msgid "Disabled" msgstr "ناپویا شد" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "دیسک" @@ -1730,7 +1730,7 @@ msgstr "برای گشودن دو بار کلیک کنید" msgid "Double clicking a song will..." msgstr "دو بار کلیک یک آهنگ باعث..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "بارگیری %n داستان" @@ -1751,7 +1751,7 @@ msgstr "بارگیری هموندی" msgid "Download new episodes automatically" msgstr "بارگیری خودکار داستان‌های تازه" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "صف بارگیری" @@ -1767,7 +1767,7 @@ msgstr "بارگیری این آلبوم" msgid "Download this album..." msgstr "بارگیری این آلبوم..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "بارگیری این داستان" @@ -1775,7 +1775,7 @@ msgstr "بارگیری این داستان" msgid "Download..." msgstr "بارگیری..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "درحال بارگیری (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "خطای واکشی جلد" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "پسوند پرونده" @@ -2330,7 +2330,7 @@ msgstr "عمومی" msgid "General settings" msgstr "تنظیم‌های عمومی" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "ژانر/آلبوم" msgid "Group by Genre/Artist/Album" msgstr "ژانر/هنرمند/آلبوم" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2606,7 +2606,7 @@ msgstr "قرار دادن..." msgid "Installed" msgstr "نصب شد" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "بررسی درستی" @@ -2809,7 +2809,7 @@ msgstr "برای پیش‌نشان، تهی رها کنید. مثال: \"/dev/ msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "طول" @@ -3022,11 +3022,11 @@ msgstr "دستی" msgid "Manufacturer" msgstr "تولید‌کننده" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "نشان‌گذاری شنیده شده" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "نشان‌گذاری تازه" @@ -3463,7 +3463,7 @@ msgstr "سازماندهی پرونده‌ها" msgid "Organise files..." msgstr "سازماندهی پرونده‌ها..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "پرونده‌های سازماندهی شونده" @@ -3537,7 +3537,7 @@ msgstr "درنگ پخش" msgid "Paused" msgstr "درنگ‌شده" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3632,7 +3632,7 @@ msgstr "خواهشمندم مرورگر را ببندید و به کلمنتای msgid "Plugin status:" msgstr "وضعیت افزونه" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "پادکست" @@ -4067,7 +4067,7 @@ msgstr "دستگاه را پس از کپی، با امنیت پاک کن" msgid "Sample rate" msgstr "الگوی ضرباهنگ" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "ضرباهنگ‌الگو" @@ -4891,7 +4891,7 @@ msgstr "این جریان تنها برای مشترکان پولی است" msgid "This type of device is not supported: %1" msgstr "این گونه از دستگاه پشتیبانی نمی‌شود: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "همه‌ی بایت‌های ارسال شده" msgid "Total network requests made" msgstr "همه‌ی درخواست‌های شبکه انجام شد" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "خطای ناشناخته" msgid "Unset cover" msgstr "قرار ندادن جلد" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "لغو هموندی" @@ -5052,7 +5052,7 @@ msgstr "کنسرت‌های پیش‌رو" msgid "Update Grooveshark playlist" msgstr "به‌روز رسانی لیست‌پخش گرووشارک" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "به‌روز رسانی همه‌ی پادکست‌ها" @@ -5064,7 +5064,7 @@ msgstr "تغییرات پوشه‌های کتابخانه را به‌روز ب msgid "Update the library when Clementine starts" msgstr "زمانی که کلمنتاین شروع می‌شود کتابخانه را به‌روز کن" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "به‌روز رسانی این پادکست" @@ -5351,7 +5351,7 @@ msgstr "" msgid "Wrong username or password." msgstr "شناسه و گذرواژه‌ی نادرست" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/fi.po b/src/translations/fi.po index c1c718cd1..cd3008978 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -456,7 +456,7 @@ msgstr "Lisää uusi kansio..." msgid "Add podcast" msgstr "Lisää podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Lisää podcast..." @@ -605,7 +605,7 @@ msgstr "Jälkeen" msgid "After copying..." msgstr "Kopioinnin jälkeen..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Levy" msgid "Album (ideal loudness for all tracks)" msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "Oletko varma että haluat kirjoittaa kaikkien kirjastosi kappleiden tilastot suoraan kirjastosi tiedostoihin?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Artistiradio" msgid "Artist tags" msgstr "Esittäjän tunnisteet" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Esittäjän nimen ensimmäinen kirjain" @@ -843,7 +843,7 @@ msgstr "Kuvatiedoston koko keskimäärin" msgid "BBC Podcasts" msgstr "BBC-podcastit" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Taustakuva" msgid "Background opacity" msgstr "Taustan läpinäkyvyys" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Varmuuskopioidaan tietokantaa" @@ -905,7 +905,7 @@ msgstr "Biografian tarjoaa %1" msgid "Bit rate" msgstr "Bittivirta" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Pilkuin erotettu lista luokka:taso -määritteitä, jossa taso on väliltä 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentti" @@ -1204,7 +1204,7 @@ msgstr "Täydennä tunnisteet automaattisesti" msgid "Complete tags automatically..." msgstr "Täydennä tunnisteet automaattisesti..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Muokkaa hakua..." msgid "Configure library..." msgstr "Kirjaston asetukset..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Muokkaa podcasteja..." @@ -1300,8 +1300,8 @@ msgstr "Muuta musiikki, jota laite ei voi muuten toistaa" msgid "Copy to clipboard" msgstr "Kopioi leikepöydälle" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopioi laitteelle..." @@ -1499,7 +1499,7 @@ msgstr "DBus-polku" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Poista" msgid "Delete Grooveshark playlist" msgstr "Poista Grooveshark-soittolista" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Poista ladattu data" @@ -1672,7 +1672,7 @@ msgstr "Poista mielialan luominen käytöstä" msgid "Disabled" msgstr "Poissa käytöstä" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Levy" @@ -1730,7 +1730,7 @@ msgstr "Kaksoisnapsauta avataksesi" msgid "Double clicking a song will..." msgstr "Kappaleen kaksoisnapsautus..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Poista %n jaksoa" @@ -1751,7 +1751,7 @@ msgstr "Latausjäsenyys" msgid "Download new episodes automatically" msgstr "Lataa uudet jaksot automaattisesti" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Lataus asetettu jonoon" @@ -1767,7 +1767,7 @@ msgstr "Lataa tämä levy" msgid "Download this album..." msgstr "Lataa tämä levy..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Lataa tämä jakso" @@ -1775,7 +1775,7 @@ msgstr "Lataa tämä jakso" msgid "Download..." msgstr "Lataa..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Ladataan (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "Virhe kansikuvan noudossa" msgid "File Format" msgstr "Tiedostomuoto" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Tiedostopääte" @@ -2330,7 +2330,7 @@ msgstr "Yleiset" msgid "General settings" msgstr "Yleiset asetukset" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Järjestä tyylin/levyn mukaan" msgid "Group by Genre/Artist/Album" msgstr "Järjestä tyylin/esittäjän/levyn mukaan" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ryhmittely" @@ -2606,7 +2606,7 @@ msgstr "Lisää..." msgid "Installed" msgstr "Asennettu" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Eheystarkistus" @@ -2809,7 +2809,7 @@ msgstr "Jätä tyhjäksi oletusta varten. Esimerkkejä: \"/dev/dsp\", \"front\" msgid "Left" msgstr "Vasen" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kesto" @@ -3022,11 +3022,11 @@ msgstr "Käsin" msgid "Manufacturer" msgstr "Valmistaja" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Merkitse kuunnelluksi" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Merkitse uudeksi" @@ -3463,7 +3463,7 @@ msgstr "Hallitse tiedostoja" msgid "Organise files..." msgstr "Hallitse tiedostoja..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Hallinnoidaan tiedostoja" @@ -3537,7 +3537,7 @@ msgstr "Keskeytä toisto" msgid "Paused" msgstr "Keskeytetty" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Esittäjä" @@ -3632,7 +3632,7 @@ msgstr "Sulje selain ja palaa Clementineen." msgid "Plugin status:" msgstr "Liitännäisen tila:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastit" @@ -4067,7 +4067,7 @@ msgstr "Poista laite turvallisesti kopioinnin jälkeen" msgid "Sample rate" msgstr "Näytteenottotaajuus" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Näytteenottotaajuus" @@ -4891,7 +4891,7 @@ msgstr "Suoratoisto on tarjolla vain maksaville asiakkaille" msgid "This type of device is not supported: %1" msgstr "Tämän tyyppinen laite ei ole tuettu: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Yhteensä tavuja siirretty" msgid "Total network requests made" msgstr "Yhteensä verkko pyyntöjä tehty" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Tuntematon virhe" msgid "Unset cover" msgstr "Poista kansikuva" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Poista tilaus" @@ -5052,7 +5052,7 @@ msgstr "Tulevat konsertit" msgid "Update Grooveshark playlist" msgstr "Päivitä Grooveshark-soittolista" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Päivitä kaikki podcastit" @@ -5064,7 +5064,7 @@ msgstr "Päivitä muuttuneet kirjastokansiot" msgid "Update the library when Clementine starts" msgstr "Päivitä kirjasto Clementine käynnistyessä" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Päivitä tämä podcast" @@ -5351,7 +5351,7 @@ msgstr "Kirjoita kaikki kappaletilastot kappaletiedostoihin" msgid "Wrong username or password." msgstr "Väärä käyttäjätunnus tai salasana." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/fr.po b/src/translations/fr.po index bf4a22b7e..d9b8b8703 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -39,8 +39,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-01-31 19:36+0000\n" +"Last-Translator: arnaudbienner \n" "Language-Team: French (http://www.transifex.com/projects/p/clementine/language/fr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -454,11 +454,11 @@ msgstr "Ajouter un fichier" #: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" -msgstr "Ajouter des fichiers à transcoder." +msgstr "Ajouter un fichier à transcoder" #: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" -msgstr "Ajouter des fichiers à transcoder." +msgstr "Ajouter des fichiers à transcoder" #: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." @@ -466,7 +466,7 @@ msgstr "Ajouter un fichier..." #: transcoder/transcodedialog.cpp:219 msgid "Add files to transcode" -msgstr "Ajouter des fichiers à transcoder." +msgstr "Ajouter des fichiers à transcoder" #: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" @@ -484,7 +484,7 @@ msgstr "Ajouter un nouveau dossier..." msgid "Add podcast" msgstr "Ajouter un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Ajouter un podcast..." @@ -633,7 +633,7 @@ msgstr "Après " msgid "After copying..." msgstr "Après avoir copié..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -646,7 +646,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume idéal pour toutes les pistes)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -799,7 +799,7 @@ msgid "" "the songs of your library?" msgstr "Êtes-vous sûr de vouloir enregistrer les statistiques du morceau dans le fichier du morceau pour tous les morceaux de votre bibliothèque ?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -821,7 +821,7 @@ msgstr "Radio par artiste" msgid "Artist tags" msgstr "Mots-clés de l'artiste" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Initiale de l'artiste" @@ -871,7 +871,7 @@ msgstr "Taille moyenne de l'image" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -892,7 +892,7 @@ msgstr "Image d'arrière-plan" msgid "Background opacity" msgstr "Opacité de l'arrière-plan" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Sauvegarde de la base de données" @@ -933,7 +933,7 @@ msgstr "Biographie de %1" msgid "Bit rate" msgstr "Débit" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1220,7 +1220,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Liste séparée par une virgule des classes:niveau, le niveau étant entre 1 et 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commentaire" @@ -1232,7 +1232,7 @@ msgstr "Compléter les tags automatiquement" msgid "Complete tags automatically..." msgstr "Compléter les tags automatiquement..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1275,7 +1275,7 @@ msgstr "Configurer la recherche globale..." msgid "Configure library..." msgstr "Configurer votre bibliothèque..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configurer les podcasts..." @@ -1328,8 +1328,8 @@ msgstr "Convertir la musique que le périphérique ne peut pas lire" msgid "Copy to clipboard" msgstr "Copier dans le presse papier" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copier sur le périphérique" @@ -1527,7 +1527,7 @@ msgstr "Chemin DBus" msgid "Dance" msgstr "Danse" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1583,7 +1583,7 @@ msgstr "Supprimer" msgid "Delete Grooveshark playlist" msgstr "Supprimer la liste de lecture Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Effacer les données téléchargées" @@ -1660,7 +1660,7 @@ msgstr "Périphériques" #: ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "Dialogue" +msgstr "Boîte de dialogue" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1700,7 +1700,7 @@ msgstr "Désactiver la génération des barres d'humeur" msgid "Disabled" msgstr "Désactivées" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD" @@ -1758,7 +1758,7 @@ msgstr "Double-cliquer pour ouvrir" msgid "Double clicking a song will..." msgstr "Double-cliquer sur un morceau..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Télécharger %n épisodes" @@ -1779,7 +1779,7 @@ msgstr "Adhésion au téléchargement" msgid "Download new episodes automatically" msgstr "Télécharger les nouveaux épisodes automatiquement" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Téléchargement en file" @@ -1795,7 +1795,7 @@ msgstr "Télécharger cet album" msgid "Download this album..." msgstr "Télécharger cet album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Télécharger cet épisode" @@ -1803,7 +1803,7 @@ msgstr "Télécharger cet épisode" msgid "Download..." msgstr "Télécharger..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Téléchargement (%1%)..." @@ -2208,7 +2208,7 @@ msgstr "Erreur lors de la récupération de la pochette" msgid "File Format" msgstr "Format de fichier" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extension de fichier" @@ -2358,7 +2358,7 @@ msgstr "Général" msgid "General settings" msgstr "Configuration générale" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2467,7 +2467,7 @@ msgstr "Grouper par Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Grouper par Genre/Artiste/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groupement" @@ -2624,7 +2624,7 @@ msgstr "Information" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Réglages d'entrée" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." @@ -2634,7 +2634,7 @@ msgstr "Insérer..." msgid "Installed" msgstr "Installé" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Vérification de l'intégrité" @@ -2680,7 +2680,7 @@ msgstr "Nom d'utilisateur et / ou mot de passe invalide" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Inverser la sélection" #: internet/jamendoservice.cpp:127 msgid "Jamendo" @@ -2837,7 +2837,7 @@ msgstr "Laisser vide pour les paramètres par défaut. Exemples : \"/dev/dsp\", msgid "Left" msgstr "Gauche" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durée" @@ -3050,11 +3050,11 @@ msgstr "Manuellement" msgid "Manufacturer" msgstr "Fabricant" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marquer comme lu" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marquer comme nouveau" @@ -3491,7 +3491,7 @@ msgstr "Organiser les fichiers" msgid "Organise files..." msgstr "Organisation des fichiers..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organisation des fichiers" @@ -3565,7 +3565,7 @@ msgstr "Mettre la lecture en pause" msgid "Paused" msgstr "En pause" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Interprète" @@ -3660,7 +3660,7 @@ msgstr "Merci de fermer votre navigateur et de retourner dans Clementine." msgid "Plugin status:" msgstr "État du module externe :" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4055,7 +4055,7 @@ msgstr "Droite" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Extraire" #: ui/ripcd.cpp:116 msgid "Rip CD" @@ -4095,7 +4095,7 @@ msgstr "Enlever le périphérique en toute sécurité à la fin de la copie" msgid "Sample rate" msgstr "Échantillonnage" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Échantillonnage" @@ -4599,7 +4599,7 @@ msgstr "Favoris" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Démarrer l'extraction" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4919,7 +4919,7 @@ msgstr "Ce flux n'est accessible qu'aux abonnés ayant payé" msgid "This type of device is not supported: %1" msgstr "Ce type de périphérique n'est pas supporté : %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4980,7 +4980,7 @@ msgstr "Nombre total d'octets transférés" msgid "Total network requests made" msgstr "Nombre total de requêtes réseau effectuées" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5068,7 +5068,7 @@ msgstr "Erreur de type inconnu" msgid "Unset cover" msgstr "Enlever cette pochette" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Se désinscrire" @@ -5080,7 +5080,7 @@ msgstr "Concerts à venir" msgid "Update Grooveshark playlist" msgstr "Mise à jour de la liste de lecture Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Mettre à jour tous les podcasts" @@ -5092,7 +5092,7 @@ msgstr "Mettre à jour les dossiers de la bibliothèque" msgid "Update the library when Clementine starts" msgstr "Mettre à jour la bibliothèque quand Clementine démarre" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Mettre à jour ce podcast" @@ -5379,7 +5379,7 @@ msgstr "Enregistrer toutes les statistiques dans les fichiers des morceaux" msgid "Wrong username or password." msgstr "Nom d'utilisateur et/ou mot de passe invalide." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ga.po b/src/translations/ga.po index 5a15be1d1..40da17bb6 100644 --- a/src/translations/ga.po +++ b/src/translations/ga.po @@ -452,7 +452,7 @@ msgstr "Cuir fillteán nua leis..." msgid "Add podcast" msgstr "Cuir podchraoladh leis" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Cuir podchraoladh leis..." @@ -601,7 +601,7 @@ msgstr "I ndiaidh" msgid "After copying..." msgstr "I ndiaidh macasamhlú..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Albam" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "Podchraoltaí an BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +860,7 @@ msgstr "Íomhá an chúlra" msgid "Background opacity" msgstr "Teimhneacht an chúlra" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "Beathaisnéis ó %1" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Trácht" @@ -1200,7 +1200,7 @@ msgstr "Críochnaigh clibeanna go huathoibríoch" msgid "Complete tags automatically..." msgstr "Críochnaigh clibeanna go huathoibríoch" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "Cumraigh leabharlann..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Cumraigh podchraoltaí..." @@ -1296,8 +1296,8 @@ msgstr "Tiontaigh ceol ar bith nach féidir leis an ngléas a sheinm" msgid "Copy to clipboard" msgstr "Macasamhlaigh go dtí an ngearrthaisce" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Macasamhlaigh go gléas..." @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "Damhsa" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Scrios sonraí íosluchtaithe" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "Díchumasaithe" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diosca" @@ -1726,7 +1726,7 @@ msgstr "Brúigh faoi dhó chun é a oscailt" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Íosluchtaigh %n eagráin" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "Íosluchtaigh eagráin nua go huathoibríoch" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Tá an t-íosluchtú i scuaine" @@ -1763,7 +1763,7 @@ msgstr "Íosluchtaigh an t-albam seo" msgid "Download this album..." msgstr "Íosluchtaigh an t-albam seo..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Íosluchtaigh an t-eagrán seo" @@ -1771,7 +1771,7 @@ msgstr "Íosluchtaigh an t-eagrán seo" msgid "Download..." msgstr "Íosluchtaigh..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Ag íosluchtú (%1%)..." @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Iarmhír comhadainm" @@ -2326,7 +2326,7 @@ msgstr "Coiteann" msgid "General settings" msgstr "Socruithe coiteann" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "Ionsáigh..." msgid "Installed" msgstr "Suiteáilte" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Dearbháil sláine" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Aga" @@ -3018,11 +3018,11 @@ msgstr "De láimh" msgid "Manufacturer" msgstr "Déantúsóir" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Rianaigh mar éiste" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Rianaigh mar nua" @@ -3459,7 +3459,7 @@ msgstr "Eagraigh comhaid" msgid "Organise files..." msgstr "Eagraigh comhaid..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Ag eagrú comhaid" @@ -3533,7 +3533,7 @@ msgstr "Cuir athsheinm ar sos" msgid "Paused" msgstr "Curtha ar sos" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podchraoltaí" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "Líon iomlán na bearta aistrithe" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "Botún anaithnid" msgid "Unset cover" msgstr "Díshocraigh an clúdach" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Nuashonraigh gach podchraoladh" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Nuashonraigh an podchraoladh seo" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/gl.po b/src/translations/gl.po index 241c824c6..9d801487f 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -456,7 +456,7 @@ msgstr "Engadir novo cartafol" msgid "Add podcast" msgstr "Engadir un podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Engadir un podcast…" @@ -605,7 +605,7 @@ msgstr "Despois de " msgid "After copying..." msgstr "Despóis de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (sonoridade ideal para todas as pistas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "Seguro que quere escribir as estadísticas das cancións nos ficheiros para tódalas cancións na biblioteca?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Radio do intérprete" msgid "Artist tags" msgstr "Etiquetas do intérprete" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniciais do intérprete" @@ -843,7 +843,7 @@ msgstr "Tamaño medio das imaxes" msgid "BBC Podcasts" msgstr "Podcasts da BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Imaxe de fondo" msgid "Background opacity" msgstr "Opacidad de fondo" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Gardando unha copia de seguranza da base de datos…" @@ -905,7 +905,7 @@ msgstr "Biografía de %1" msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de :, onde o nivel será un valor do 0 ao 3." #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" @@ -1204,7 +1204,7 @@ msgstr "Completar as etiquetas automaticamente." msgid "Complete tags automatically..." msgstr "Completar as etiquetas automaticamente…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Configurar a busca global…" msgid "Configure library..." msgstr "Configurar a biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configurar os podcasts…" @@ -1300,8 +1300,8 @@ msgstr "Converter calquera música que este dispositivo non poda reproducir" msgid "Copy to clipboard" msgstr "Copiar no portapapeis" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo" @@ -1499,7 +1499,7 @@ msgstr "Ruta a DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Eliminar" msgid "Delete Grooveshark playlist" msgstr "Eliminar a lista de Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Eliminar os datos descargados" @@ -1672,7 +1672,7 @@ msgstr "Desactivar a xeración da barra do ánimo." msgid "Disabled" msgstr "Desactivado" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1730,7 +1730,7 @@ msgstr "Prema dúas veces para abrir" msgid "Double clicking a song will..." msgstr "Ao premer dúas veces unha canción…" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Descargar %n episodios…" @@ -1751,7 +1751,7 @@ msgstr "Grupo da descarga" msgid "Download new episodes automatically" msgstr "Descargar novos episodios automaticamente" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Cola de descarga" @@ -1767,7 +1767,7 @@ msgstr "Descargar o álbum" msgid "Download this album..." msgstr "Descargar o álbum…" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Descargar o episodio" @@ -1775,7 +1775,7 @@ msgstr "Descargar o episodio" msgid "Download..." msgstr "Descargar…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Descargando (%1%)…" @@ -2180,7 +2180,7 @@ msgstr "Produciuse un erro ao descargar a portada" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensión do ficheiro" @@ -2330,7 +2330,7 @@ msgstr "Xeral" msgid "General settings" msgstr "Configuración xeral" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Agrupar por Xénero/Álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por xénero/intérprete/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupación" @@ -2606,7 +2606,7 @@ msgstr "Inserir" msgid "Installed" msgstr "Instalado" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Comprobación da integridade" @@ -2809,7 +2809,7 @@ msgstr "Deixe baleiro para empregar o predeterminado. Exemplos: «/dev/dsp», « msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" @@ -3022,11 +3022,11 @@ msgstr "Manualmente" msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marcar como escoitada" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marcar como nova" @@ -3463,7 +3463,7 @@ msgstr "Organizar os ficheiros" msgid "Organise files..." msgstr "Organizar os ficheiros…" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizando os ficheiros…" @@ -3537,7 +3537,7 @@ msgstr "Pausa" msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3632,7 +3632,7 @@ msgstr "Peche o navegador web e volva a Clementine." msgid "Plugin status:" msgstr "Estado do complemento:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4067,7 +4067,7 @@ msgstr "Retirar o dispositivo de maneira segura tras a copia." msgid "Sample rate" msgstr "Frecuencia de mostraxe" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Frecuencia de mostraxe" @@ -4891,7 +4891,7 @@ msgstr "O fluxo só está dispoñíbel para subscritores de pago." msgid "This type of device is not supported: %1" msgstr "Clementine non é compatíbel con este tipo de dispositivo: %1." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Bytes enviados" msgid "Total network requests made" msgstr "Solicitudes de rede" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Erro descoñecido" msgid "Unset cover" msgstr "Anular a escolla da portada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Anular a subscrición" @@ -5052,7 +5052,7 @@ msgstr "Vindeiros concertos" msgid "Update Grooveshark playlist" msgstr "Actualizar a lista de Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Actualizar todos os podcasts" @@ -5064,7 +5064,7 @@ msgstr "Actualizar os cartafoles da biblioteca con cambios" msgid "Update the library when Clementine starts" msgstr "Actualizar a biblioteca ao iniciar Clementine." -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Actualizar o podcast" @@ -5351,7 +5351,7 @@ msgstr "Escribir as estadísticas de tódalas cancións nos ficheiros" msgid "Wrong username or password." msgstr "O nome de usuario ou contrasinal non son correctos." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/he.po b/src/translations/he.po index b57e408b9..27d02dfb9 100644 --- a/src/translations/he.po +++ b/src/translations/he.po @@ -456,7 +456,7 @@ msgstr "הוספת תיקייה חדשה..." msgid "Add podcast" msgstr "הוספת פודקאסט" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "הוספת פודקאסט..." @@ -605,7 +605,7 @@ msgstr "לאחר " msgid "After copying..." msgstr "אחרי העתקה..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "אלבום" msgid "Album (ideal loudness for all tracks)" msgstr "אלבום (עצמת שמע אידאלית לכל הרצועות)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "רדיו אמן" msgid "Artist tags" msgstr "תגיות אמן" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "ראשי תיבות של האמן" @@ -843,7 +843,7 @@ msgstr "גודל תמונה ממוצע" msgid "BBC Podcasts" msgstr "BBC פודקאסט" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "מספר פעימות לדקה" @@ -864,7 +864,7 @@ msgstr "תמונת רקע" msgid "Background opacity" msgstr "שקיפות הרקע" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "מסד הנתונים מגובה" @@ -905,7 +905,7 @@ msgstr "ביוגרפיה מתוך %1" msgid "Bit rate" msgstr "קצב הסיביות" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "רשימה מופרדת בפסיקים של class:level,level יכול להיות 0-3 " #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "הערה" @@ -1204,7 +1204,7 @@ msgstr "השלמת תג אוטומטית" msgid "Complete tags automatically..." msgstr "השלמת תגים אוטומטית..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "מגדיר חיפוש " msgid "Configure library..." msgstr "הגדרת הספרייה..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "הגדרת פודקאסטים..." @@ -1300,8 +1300,8 @@ msgstr "המרת כל המוזיקה שהתקן זה לא מסוגל לנגן" msgid "Copy to clipboard" msgstr "העתקה אל הלוח" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "העתקה להתקן.." @@ -1499,7 +1499,7 @@ msgstr "נתיב DBus" msgid "Dance" msgstr "דאנס" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "מחיקה" msgid "Delete Grooveshark playlist" msgstr "מחיקת רשימת השמעה של Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "מחיקת מידע שהתקבל" @@ -1672,7 +1672,7 @@ msgstr "מניעת יצירת סרגל האווירה" msgid "Disabled" msgstr "מנוטרל" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "דיסק" @@ -1730,7 +1730,7 @@ msgstr "לחיצה כפולה לפתיחה" msgid "Double clicking a song will..." msgstr "לחיצה כפולה על שיר לביצוע..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "ירדו %n פרקים" @@ -1751,7 +1751,7 @@ msgstr "חברות המאפשרת הורדה" msgid "Download new episodes automatically" msgstr "הורדת פרקים חדשים אוטומטית" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "ההורדה נכנסה לתור" @@ -1767,7 +1767,7 @@ msgstr "הורדת האלבום הזה" msgid "Download this album..." msgstr "הורדת האלבום הזה..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "הורדת הפרק הזה" @@ -1775,7 +1775,7 @@ msgstr "הורדת הפרק הזה" msgid "Download..." msgstr "בהורדה..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "בהורדה (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "שגיאה באחזור המידע על העטיפה" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "סיומת הקובץ" @@ -2330,7 +2330,7 @@ msgstr "כללי" msgid "General settings" msgstr "הגדרות כלליות" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "קיבוץ על פי סגנון/אלבום" msgid "Group by Genre/Artist/Album" msgstr "קיבוץ על פי סגנון/אמן/אלבום" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "קיבוץ" @@ -2606,7 +2606,7 @@ msgstr "הוספה..." msgid "Installed" msgstr "הותקן" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "בדיקת שלמות" @@ -2809,7 +2809,7 @@ msgstr "יש להשאיר ריק בשביל בררת מחדל. דוגמאות: \ msgid "Left" msgstr "שמאל" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "אורך" @@ -3022,11 +3022,11 @@ msgstr "ידני" msgid "Manufacturer" msgstr "יצרן" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "סימון כהושמע" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "סימון כחדש" @@ -3463,7 +3463,7 @@ msgstr "ארגון קבצים" msgid "Organise files..." msgstr "ארגון קבצים..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "הקבצים מאורגנים" @@ -3537,7 +3537,7 @@ msgstr "השהיית הנגינה" msgid "Paused" msgstr "מושהה" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "מבצע" @@ -3632,7 +3632,7 @@ msgstr "נא לסגור את הדפדפן ולחזור ל Clementine" msgid "Plugin status:" msgstr "מצב התוסף:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "פודקאסטים" @@ -4067,7 +4067,7 @@ msgstr "הסרת ההתקן באופן בטוח לאחר סיום ההעתקה" msgid "Sample rate" msgstr "קצב הדגימה" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "קצב דגימה" @@ -4891,7 +4891,7 @@ msgstr "המדיה הזורמת הזו היא עבור חברות בתשלום msgid "This type of device is not supported: %1" msgstr "סוג התקן זה לא נתמך: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "סך הכל בתים שהועברו" msgid "Total network requests made" msgstr "סך הכל בקשות שנשלחו" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "שגיאה לא ידועה" msgid "Unset cover" msgstr "הסרת עטיפה" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "הסרת מינוי" @@ -5052,7 +5052,7 @@ msgstr "קונצרטים צפויים" msgid "Update Grooveshark playlist" msgstr "עדכון רשימת ההשמעה ב־Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "עדכון כל הפודקאסטים" @@ -5064,7 +5064,7 @@ msgstr "עדכון תיקיות שהשתנו בספרייה" msgid "Update the library when Clementine starts" msgstr "עדכון הספרייה בזמן הפעלת Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "עדכון פודקאסט זה" @@ -5351,7 +5351,7 @@ msgstr "רשום את כל הסטטיסטיקות עבור השירים לתוך msgid "Wrong username or password." msgstr "שם משתמש או סיסמא שגויים" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/he_IL.po b/src/translations/he_IL.po index 63392a85b..74e41cfcf 100644 --- a/src/translations/he_IL.po +++ b/src/translations/he_IL.po @@ -451,7 +451,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -600,7 +600,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -613,7 +613,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -766,7 +766,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -788,7 +788,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -838,7 +838,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -859,7 +859,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -900,7 +900,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1187,7 +1187,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1199,7 +1199,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1295,8 +1295,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1494,7 +1494,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1550,7 +1550,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1667,7 +1667,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1725,7 +1725,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1746,7 +1746,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1762,7 +1762,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1770,7 +1770,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2175,7 +2175,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2325,7 +2325,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2434,7 +2434,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2601,7 +2601,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2804,7 +2804,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3017,11 +3017,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3458,7 +3458,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3532,7 +3532,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3627,7 +3627,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4062,7 +4062,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4886,7 +4886,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4947,7 +4947,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5035,7 +5035,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5047,7 +5047,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5059,7 +5059,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5346,7 +5346,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/hi.po b/src/translations/hi.po index 84364ddec..34396a7d3 100644 --- a/src/translations/hi.po +++ b/src/translations/hi.po @@ -454,7 +454,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -603,7 +603,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -862,7 +862,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -903,7 +903,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1202,7 +1202,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1298,8 +1298,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1497,7 +1497,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1670,7 +1670,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1728,7 +1728,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1749,7 +1749,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1765,7 +1765,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1773,7 +1773,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2178,7 +2178,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2328,7 +2328,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2604,7 +2604,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2807,7 +2807,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3020,11 +3020,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3461,7 +3461,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3535,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3630,7 +3630,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4065,7 +4065,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4889,7 +4889,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5050,7 +5050,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5062,7 +5062,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5349,7 +5349,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/hr.po b/src/translations/hr.po index 252c3b38a..a726e1907 100644 --- a/src/translations/hr.po +++ b/src/translations/hr.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-01-28 14:34+0000\n" +"Last-Translator: gogo \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/clementine/language/hr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -456,7 +456,7 @@ msgstr "Dodajte novu mapu" msgid "Add podcast" msgstr "Dodajte podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodajte podcast..." @@ -605,7 +605,7 @@ msgstr "Nakon " msgid "After copying..." msgstr "Nakon kopiranja..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna glasnoća za sve pjesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "Sigurno želite zapisati statistiku pjesama u datoteke pjesama za sve pjesme u vašoj fonoteci?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Izvođač radia" msgid "Artist tags" msgstr "Vrsta glazbe izvođača" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Prvi izvođač" @@ -843,7 +843,7 @@ msgstr "Prosječna veličina slike" msgid "BBC Podcasts" msgstr "BBC podcasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Slika pozadine" msgid "Background opacity" msgstr "Prozirnost pozadine" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Sigurnosno kopiranje baze podataka" @@ -905,7 +905,7 @@ msgstr "Životopis sa %1" msgid "Bit rate" msgstr "Brzina prijenosa" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Zarezom odvojen popis klasa:razina, razina je 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1204,7 +1204,7 @@ msgstr "Završi oznake automatski" msgid "Complete tags automatically..." msgstr "Završite oznake automatski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Podesite globalno pretraživanje..." msgid "Configure library..." msgstr "Podesi fonoteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podesite podcaste..." @@ -1300,8 +1300,8 @@ msgstr "Konvertiraj svu glazbu koju uređaj može reproducirati" msgid "Copy to clipboard" msgstr "Kopiraj u međuspremnik" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopirajte na uređaj..." @@ -1499,7 +1499,7 @@ msgstr "DBus putanja" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Izbriši" msgid "Delete Grooveshark playlist" msgstr "Izbrišite Grooveshark popis izvođenja" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Obriši preuzete podatke" @@ -1632,7 +1632,7 @@ msgstr "Uređaji" #: ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Dijalog" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1672,7 +1672,7 @@ msgstr "Onemogući generiranje traka tonaliteta" msgid "Disabled" msgstr "Onemogući" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1730,7 +1730,7 @@ msgstr "Za otvaranje kliknite dva puta" msgid "Double clicking a song will..." msgstr "Dvostrukim klikom pjesma će..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Preuzeto %n nastavaka" @@ -1751,7 +1751,7 @@ msgstr "Učlani se" msgid "Download new episodes automatically" msgstr "Preuzmi automatski nove nastavke" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Zahtjev preuzimanja" @@ -1767,7 +1767,7 @@ msgstr "Preuzmi ovaj album" msgid "Download this album..." msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Preuzmi ovaj nastavak" @@ -1775,7 +1775,7 @@ msgstr "Preuzmi ovaj nastavak" msgid "Download..." msgstr "Preuzmi..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Preuzimanje (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "Greška pri preuzimanju omota" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Ekstenzija datoteke" @@ -2330,7 +2330,7 @@ msgstr "Općenito" msgid "General settings" msgstr "Opće postavke" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Grupiraj po Vrsti glazbe/Albumu" msgid "Group by Genre/Artist/Album" msgstr "Grupiraj po Vrsti glazbe/Izvođaču/Albumu" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupiranje" @@ -2606,7 +2606,7 @@ msgstr "Umetni..." msgid "Installed" msgstr "Instaliran" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Provjera integriteta" @@ -2809,7 +2809,7 @@ msgstr "Ostavite prazno za zadano. Naprimjer: \"/dev/dsp\", \"front\", itd." msgid "Left" msgstr "Lijevo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trajanje" @@ -3022,11 +3022,11 @@ msgstr "Ručno" msgid "Manufacturer" msgstr "Proizvođač" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Označi kao preslušano" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Označi kao novo" @@ -3463,7 +3463,7 @@ msgstr "Organizirajte datoteke" msgid "Organise files..." msgstr "Organizirajte datoteke..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiziranje datoteka" @@ -3537,7 +3537,7 @@ msgstr "Pauziraj reprodukciju" msgid "Paused" msgstr "Reprodukcija pauzirana" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvođač" @@ -3632,7 +3632,7 @@ msgstr "Odaberite vaš preglednik i vratite se u Clementine." msgid "Plugin status:" msgstr "Status dodatka:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasti" @@ -4067,7 +4067,7 @@ msgstr "Sigurno ukloni uređaj nakon kopiranja" msgid "Sample rate" msgstr "Frekvencija" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Frekvencija" @@ -4891,7 +4891,7 @@ msgstr "Ovaj stream je samo za pretplaćene korisnike" msgid "This type of device is not supported: %1" msgstr "Ova vrst uređaja nije podržana: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Ukupno preuzeto bajtova" msgid "Total network requests made" msgstr "Ukupno mrežnih zahtjeva" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Nepoznata greška" msgid "Unset cover" msgstr "Uklonite omot" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Otkažite pretplatu" @@ -5052,7 +5052,7 @@ msgstr "Nadolazeći koncerti" msgid "Update Grooveshark playlist" msgstr "Ažuriraj Grooveshark popis izvođenja" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Ažuriraj sve podcaste" @@ -5064,7 +5064,7 @@ msgstr "Ažurirajte promjene u mapi fonoteke" msgid "Update the library when Clementine starts" msgstr "Ažuriraj fonoteku kada se Clementine pokrene" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Ažuriraj ovaj podcast" @@ -5351,7 +5351,7 @@ msgstr "Zapiši svu statistiku pjesama u datoteke pjesama" msgid "Wrong username or password." msgstr "Pogrešno korisničko ime ili lozinka." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/hu.po b/src/translations/hu.po index d2eea7328..0bbeb31b6 100644 --- a/src/translations/hu.po +++ b/src/translations/hu.po @@ -460,7 +460,7 @@ msgstr "Új mappa hozzáadása…" msgid "Add podcast" msgstr "Podcast hozzáadása" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast hozzáadása..." @@ -609,7 +609,7 @@ msgstr "Utána" msgid "After copying..." msgstr "Másolás után…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideális hangerő minden számhoz)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -775,7 +775,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -797,7 +797,7 @@ msgstr "Előadó rádió" msgid "Artist tags" msgstr "Előadó címkék" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Előadó kezdése" @@ -847,7 +847,7 @@ msgstr "Átlagos képméret" msgid "BBC Podcasts" msgstr "BBC podcastok" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "Háttérkép" msgid "Background opacity" msgstr "Háttér áttetszősége" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Adatbázis biztonsági mentése" @@ -909,7 +909,7 @@ msgstr "Életrajz innen: %1" msgid "Bit rate" msgstr "Bitráta" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1196,7 +1196,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Vesszővel tagolt lista az osztály:szint pároknak, a szintek 0-3 értékeket vehetnek fel" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Megjegyzés" @@ -1208,7 +1208,7 @@ msgstr "Címkék automatikus kiegészítése" msgid "Complete tags automatically..." msgstr "Címkék automatikus kiegészítése" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1251,7 +1251,7 @@ msgstr "Globális keresés beállítása..." msgid "Configure library..." msgstr "Zenetár beállítása..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podcastok beállítása…" @@ -1304,8 +1304,8 @@ msgstr "Az eszköz által nem támogatott számok konvertálása" msgid "Copy to clipboard" msgstr "Másolás vágólapra" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Másolás eszközre..." @@ -1503,7 +1503,7 @@ msgstr "DBus elérési útvonal" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1559,7 +1559,7 @@ msgstr "Törlés" msgid "Delete Grooveshark playlist" msgstr "Grooveshark lejátszólista törlése" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Letöltött adatok törlése" @@ -1676,7 +1676,7 @@ msgstr "Hangulatsáv generáció letiltása" msgid "Disabled" msgstr "Tiltva" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Lemez" @@ -1734,7 +1734,7 @@ msgstr "Dupla kattintás a megnyitáshoz" msgid "Double clicking a song will..." msgstr "Dupla kattintásra egy számon..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n epizód letöltése" @@ -1755,7 +1755,7 @@ msgstr "Tagsági információk betöltése" msgid "Download new episodes automatically" msgstr "Új epizódok automatikus letöltése" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Letöltés sorba állítva" @@ -1771,7 +1771,7 @@ msgstr "Album letöltése" msgid "Download this album..." msgstr "Album letöltése..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Epizód letöltése" @@ -1779,7 +1779,7 @@ msgstr "Epizód letöltése" msgid "Download..." msgstr "Letöltés…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Letöltés (%1%)..." @@ -2184,7 +2184,7 @@ msgstr "Hiba a borító betöltése közben" msgid "File Format" msgstr "Fájl formátum" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Fájlkiterjesztés" @@ -2334,7 +2334,7 @@ msgstr "Általános" msgid "General settings" msgstr "Általános beállítások" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2443,7 +2443,7 @@ msgstr "Műfaj/Album szerint" msgid "Group by Genre/Artist/Album" msgstr "Műfaj/Előadó/Album szerint" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2610,7 +2610,7 @@ msgstr "Beszúrás..." msgid "Installed" msgstr "Telepítve" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integritás ellenőrzése" @@ -2813,7 +2813,7 @@ msgstr "Hagyja üresen az alapértelmezéshez. Példák: \"/dev/dsp\", \"front\" msgid "Left" msgstr "Balra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Időtartam" @@ -3026,11 +3026,11 @@ msgstr "Manuálisan" msgid "Manufacturer" msgstr "Gyártó" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Megjelölés meghallgatottként" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Megjelölés újként" @@ -3467,7 +3467,7 @@ msgstr "Fájlok rendezése" msgid "Organise files..." msgstr "Fájlok rendezése..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Fájlok rendezés alatt" @@ -3541,7 +3541,7 @@ msgstr "Lejátszás szüneteltetése" msgid "Paused" msgstr "Szüneteltetve" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3636,7 +3636,7 @@ msgstr "Zárja be a böngészőjét, és térjen vissza a Clementine-be" msgid "Plugin status:" msgstr "Beépülő állapot:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastok" @@ -4071,7 +4071,7 @@ msgstr "Eszköz biztonságos eltávolítása másolás után" msgid "Sample rate" msgstr "Mintavételi sűrűség" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Mintavétel" @@ -4895,7 +4895,7 @@ msgstr "Ez az adatfolyam csak előfizetőknek érhető el" msgid "This type of device is not supported: %1" msgstr "A %1 eszköztípus nem támogatott" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4956,7 +4956,7 @@ msgstr "Összes átküldött bájt" msgid "Total network requests made" msgstr "Összes hálózati kérés" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5044,7 +5044,7 @@ msgstr "Ismeretlen hiba" msgid "Unset cover" msgstr "Borító törlése" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Leiratkozás" @@ -5056,7 +5056,7 @@ msgstr "Következő koncertek" msgid "Update Grooveshark playlist" msgstr "Grooveshark lejátszólisták frissítése" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Összes podcast frissítése" @@ -5068,7 +5068,7 @@ msgstr "Megváltozott zenetárbeli könyvtárak frissítése" msgid "Update the library when Clementine starts" msgstr "Zenetár frissítése a Clementine indításakor" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Podcast frissítése" @@ -5355,7 +5355,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/hy.po b/src/translations/hy.po index d8849a5df..6dd09fc35 100644 --- a/src/translations/hy.po +++ b/src/translations/hy.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ia.po b/src/translations/ia.po index b59b8eef3..25f350206 100644 --- a/src/translations/ia.po +++ b/src/translations/ia.po @@ -454,7 +454,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -603,7 +603,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -841,7 +841,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -862,7 +862,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -903,7 +903,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1202,7 +1202,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1298,8 +1298,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1497,7 +1497,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1670,7 +1670,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1728,7 +1728,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1749,7 +1749,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1765,7 +1765,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1773,7 +1773,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2178,7 +2178,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2328,7 +2328,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2604,7 +2604,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2807,7 +2807,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3020,11 +3020,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3461,7 +3461,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3535,7 +3535,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3630,7 +3630,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4065,7 +4065,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4889,7 +4889,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "Error Incognite" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "De-subscriber" @@ -5050,7 +5050,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "Actualisar lista de reproduction de Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Actualisar omne podcasts" @@ -5062,7 +5062,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Actualisar le bibliotheca quando initia Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Actualisar iste podcast" @@ -5349,7 +5349,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/id.po b/src/translations/id.po index 42c542c9c..210b8262b 100644 --- a/src/translations/id.po +++ b/src/translations/id.po @@ -460,7 +460,7 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "Tambah podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Tambah podcast..." @@ -609,7 +609,7 @@ msgstr "Setelah " msgid "After copying..." msgstr "Setelah menyalin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kenyaringan ideal untuk semua trek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -775,7 +775,7 @@ msgid "" "the songs of your library?" msgstr "Apa anda yakin ingin menuliskan statistik lagu kedalam berkas lagu untuk semua lagu di perpustakan anda?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -797,7 +797,7 @@ msgstr "Radio Artis" msgid "Artist tags" msgstr "Label artis" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Inisial Artis" @@ -847,7 +847,7 @@ msgstr "Ukuran rata-rata gambar" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "Gambar latar belakang" msgid "Background opacity" msgstr "Keburaman Latar Belakang" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Buat cadangan database" @@ -909,7 +909,7 @@ msgstr "Biografi dari %1" msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1196,7 +1196,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Daftar koma terpisah dari kelas: tingkat, tingkat ini adalah 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" @@ -1208,7 +1208,7 @@ msgstr "Isi tag secara otomatis" msgid "Complete tags automatically..." msgstr "Isi tag secara otomatis..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1251,7 +1251,7 @@ msgstr "Konfigurasi pencarian global..." msgid "Configure library..." msgstr "Konfigurasi Pustaka" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigurasi podcast..." @@ -1304,8 +1304,8 @@ msgstr "Konversi semua musik yang tidak dapat dimainkan oleh perangkat itu." msgid "Copy to clipboard" msgstr "Salin ke papan klip" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Salin ke perangkat..." @@ -1503,7 +1503,7 @@ msgstr "Jalur Dbus" msgid "Dance" msgstr "Dansa" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1559,7 +1559,7 @@ msgstr "Hapus" msgid "Delete Grooveshark playlist" msgstr "Hapus daftar lagu Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Hapus data yang sudah diunduh" @@ -1676,7 +1676,7 @@ msgstr "Nonaktifkan generasi moodbar" msgid "Disabled" msgstr "Nonaktifkan " -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Piringan" @@ -1734,7 +1734,7 @@ msgstr "Kilk ganda untuk buka" msgid "Double clicking a song will..." msgstr "Klik ganda lagu akan ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Memuat %n episode" @@ -1755,7 +1755,7 @@ msgstr "Unduh keanggotaan" msgid "Download new episodes automatically" msgstr "Unduh episode baru secara otomatis" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Antri unduh" @@ -1771,7 +1771,7 @@ msgstr "Unduh album ini" msgid "Download this album..." msgstr "Unduh album ini..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Unduh episode ini" @@ -1779,7 +1779,7 @@ msgstr "Unduh episode ini" msgid "Download..." msgstr "Unduh..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Memuat (%1%)..." @@ -2184,7 +2184,7 @@ msgstr "Kesalahan pengambilan sampul " msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Ekstensi file" @@ -2334,7 +2334,7 @@ msgstr "Umum" msgid "General settings" msgstr "Pengaturan umum" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2443,7 +2443,7 @@ msgstr "Kelompokkan menurut Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Kelompokkan menurut Genre/Artis/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Pengelompokan" @@ -2610,7 +2610,7 @@ msgstr "sisipkan" msgid "Installed" msgstr "Terinstall" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Cek kesatuan" @@ -2813,7 +2813,7 @@ msgstr "Kosongkan untuk standarnya. Contoh: \"/dev/dsp\", \"front\", dll." msgid "Left" msgstr "Kiri" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durasi" @@ -3026,11 +3026,11 @@ msgstr "Secara manual" msgid "Manufacturer" msgstr "Produsen" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Tandai sebagai sudah mendengar" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Tandai sebagai baru" @@ -3467,7 +3467,7 @@ msgstr "Mengatur Berkas" msgid "Organise files..." msgstr "Mengatur Berkas..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Mengorganisir berkas" @@ -3541,7 +3541,7 @@ msgstr "Menjeda pemutaran" msgid "Paused" msgstr "Jeda" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Penyanyi" @@ -3636,7 +3636,7 @@ msgstr "Silakan tutup browser Anda dan kembali ke Clementine." msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" @@ -4071,7 +4071,7 @@ msgstr "Aman untuk melepas perangkat setelah menyalin" msgid "Sample rate" msgstr "Laju sampel" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Laju sampel" @@ -4895,7 +4895,7 @@ msgstr "Stream ini hanya untuk pelanggan berbayar" msgid "This type of device is not supported: %1" msgstr "Tipe perangkat ini tidak didukung: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4956,7 +4956,7 @@ msgstr "Jumlah byte yang ditransfer" msgid "Total network requests made" msgstr "Total permintaan jaringan yang dibuat" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5044,7 +5044,7 @@ msgstr "Kesalahan tidak diketahui" msgid "Unset cover" msgstr "Batalkan setingan sampul" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Berhenti berlangganan" @@ -5056,7 +5056,7 @@ msgstr "Konser mendatang" msgid "Update Grooveshark playlist" msgstr "Perbarui daftar lagu Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Perbarui semua podcast" @@ -5068,7 +5068,7 @@ msgstr "Perbarui perubahan folder pustaka " msgid "Update the library when Clementine starts" msgstr "Perbarui pustaka ketika memulai Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Perbarui podcast ini" @@ -5355,7 +5355,7 @@ msgstr "Tulis semua statistik lagu kedalam berkas lagu" msgid "Wrong username or password." msgstr "Nama pengguna dan kata sandi salah." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/is.po b/src/translations/is.po index beb6c2cde..ede1aa983 100644 --- a/src/translations/is.po +++ b/src/translations/is.po @@ -453,7 +453,7 @@ msgstr "Bæta við nýrri möppu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "After copying..." msgstr "Eftir afritun..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "Plata" msgid "Album (ideal loudness for all tracks)" msgstr "Plata (kjörstyrkur hljóðs fyrir öll lög)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +861,7 @@ msgstr "" msgid "Background opacity" msgstr "Gegnsæi bakgrunns" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1201,7 +1201,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1297,8 +1297,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1496,7 +1496,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1727,7 +1727,7 @@ msgstr "Tvíklikka til að opna" msgid "Double clicking a song will..." msgstr "Tvíklikka á lag mun..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1764,7 +1764,7 @@ msgstr "Niðurhala þessari plötu" msgid "Download this album..." msgstr "Niðurhala þessari plötu..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1772,7 +1772,7 @@ msgstr "" msgid "Download..." msgstr "Niðurhala..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3534,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4064,7 +4064,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/it.po b/src/translations/it.po index 26b5187e6..129c3286a 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -456,7 +456,7 @@ msgstr "Aggiungi nuova cartella..." msgid "Add podcast" msgstr "Aggiungi podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Aggiungi podcast..." @@ -605,7 +605,7 @@ msgstr "Dopo " msgid "After copying..." msgstr "Dopo la copia..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume ideale per tutte le tracce)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "Sei sicuro di voler scrivere le statistiche nei file dei brani della tua scaletta?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Radio dell'artista" msgid "Artist tags" msgstr "Tag Artista" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniziale dell'artista" @@ -843,7 +843,7 @@ msgstr "Dimensione immagine media" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Immagine di sfondo" msgid "Background opacity" msgstr "Opacità dello sfondo" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Copia di sicurezza del database" @@ -905,7 +905,7 @@ msgstr "Biografia da %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Elenco separato da virgole di classe:livello, livello è 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commento" @@ -1204,7 +1204,7 @@ msgstr "Completa automaticamente i tag" msgid "Complete tags automatically..." msgstr "Completa automaticamente i tag..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Configura la ricerca globale..." msgid "Configure library..." msgstr "Configura raccolta..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configura podcast..." @@ -1300,8 +1300,8 @@ msgstr "Converti qualsiasi musica che il dispositivo non può riprodurre" msgid "Copy to clipboard" msgstr "Copia negli appunti" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copia su dispositivo..." @@ -1499,7 +1499,7 @@ msgstr "Percorso DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Elimina" msgid "Delete Grooveshark playlist" msgstr "Elimina scaletta di Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Elimina i dati scaricati" @@ -1672,7 +1672,7 @@ msgstr "Disabilita la creazione della barra dell'atmosfera" msgid "Disabled" msgstr "Disabilitata" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1730,7 +1730,7 @@ msgstr "Doppio clic per aprire" msgid "Double clicking a song will..." msgstr "Al doppio clic su un brano..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Scarica %n puntate" @@ -1751,7 +1751,7 @@ msgstr "Scaricamento" msgid "Download new episodes automatically" msgstr "Scarica automaticamente le nuove puntate" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Scaricamento accodato" @@ -1767,7 +1767,7 @@ msgstr "Scarica questo album" msgid "Download this album..." msgstr "Scarica questo album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Scarica questa puntata" @@ -1775,7 +1775,7 @@ msgstr "Scarica questa puntata" msgid "Download..." msgstr "Scarica..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Scaricamento in corso (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "Errore di scaricamento della copertina" msgid "File Format" msgstr "Formato file" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Estensione file" @@ -2330,7 +2330,7 @@ msgstr "Generale" msgid "General settings" msgstr "Impostazioni generali" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Raggruppa per genere/album" msgid "Group by Genre/Artist/Album" msgstr "Raggruppa per genere/artista/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppo" @@ -2606,7 +2606,7 @@ msgstr "Inserisci..." msgid "Installed" msgstr "Installati" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Controllo d'integrità" @@ -2809,7 +2809,7 @@ msgstr "Lascia vuoto il campo per il valore predefinito. Esempi: \"/dev/dsp\", \ msgid "Left" msgstr "Sinistra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durata" @@ -3022,11 +3022,11 @@ msgstr "Manualmente" msgid "Manufacturer" msgstr "Produttore" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marca come ascoltata" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marca come nuova" @@ -3463,7 +3463,7 @@ msgstr "Organizza file" msgid "Organise files..." msgstr "Organizza file..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizzazione file" @@ -3537,7 +3537,7 @@ msgstr "Sospendi riproduzione" msgid "Paused" msgstr "In pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Musicista" @@ -3632,7 +3632,7 @@ msgstr "Chiudi il browser e ritorna a Clementine." msgid "Plugin status:" msgstr "Stato del plugin:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" @@ -4067,7 +4067,7 @@ msgstr "Rimuovi il dispositivo in sicurezza al termine della copia" msgid "Sample rate" msgstr "Campionamento" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Campionamento" @@ -4891,7 +4891,7 @@ msgstr "Questo flusso è riservato ai soli abbonati" msgid "This type of device is not supported: %1" msgstr "Questi tipo di dispositivo non è supportato: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Totale byte trasferiti" msgid "Total network requests made" msgstr "Totale richieste di rete effettuate" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Errore sconosciuto" msgid "Unset cover" msgstr "Rimuovi copertina" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Rimuovi sottoscrizione" @@ -5052,7 +5052,7 @@ msgstr "Prossimi concerti" msgid "Update Grooveshark playlist" msgstr "Aggiorna la scaletta di Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Aggiorna tutti i podcast" @@ -5064,7 +5064,7 @@ msgstr "Aggiorna le cartelle modificate della raccolta" msgid "Update the library when Clementine starts" msgstr "Aggiorna la raccolta all'avvio di Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Aggiorna questo podcast" @@ -5351,7 +5351,7 @@ msgstr "Scrivi le statistiche dei brani nei file" msgid "Wrong username or password." msgstr "Nome utente o password non validi." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ja.po b/src/translations/ja.po index e046b70b5..cbedd3f4a 100644 --- a/src/translations/ja.po +++ b/src/translations/ja.po @@ -455,7 +455,7 @@ msgstr "新しいフォルダーを追加..." msgid "Add podcast" msgstr "ポッドキャストを追加" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "ポッドキャストを追加..." @@ -604,7 +604,7 @@ msgstr "" msgid "After copying..." msgstr "コピー後..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "アルバム" msgid "Album (ideal loudness for all tracks)" msgstr "アルバム (すべてのトラックで最適な音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "アーティストラジオ" msgid "Artist tags" msgstr "アーティストタグ" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "アーティストの頭文字" @@ -842,7 +842,7 @@ msgstr "平均画像サイズ" msgid "BBC Podcasts" msgstr "BBC ポッドキャスト" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "背景画像" msgid "Background opacity" msgstr "背景の不透明度" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "データベースをバックアップ中" @@ -904,7 +904,7 @@ msgstr "%1 からのバイオグラフィ" msgid "Bit rate" msgstr "ビットレート" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "コンマ区切りの クラス:レベル のリスト、レベルは 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "コメント" @@ -1203,7 +1203,7 @@ msgstr "タグの自動補完" msgid "Complete tags automatically..." msgstr "タグを自動補完..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "全体検索の設定..." msgid "Configure library..." msgstr "ライブラリの設定..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "ポッドキャストの設定..." @@ -1299,8 +1299,8 @@ msgstr "デバイスが再生できないすべての曲を変換する" msgid "Copy to clipboard" msgstr "クリップボードにコピー" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "デバイスへコピー..." @@ -1498,7 +1498,7 @@ msgstr "DBus のパス" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "削除" msgid "Delete Grooveshark playlist" msgstr "Grooveshark プレイリストの削除" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "ダウンロード済みデータを削除" @@ -1671,7 +1671,7 @@ msgstr "ムードバーの生成をやめる" msgid "Disabled" msgstr "無効" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ディスク" @@ -1729,7 +1729,7 @@ msgstr "ダブルクリックで開く" msgid "Double clicking a song will..." msgstr "曲をダブルクリックした際の動作..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n 個のエピソードをダウンロード" @@ -1750,7 +1750,7 @@ msgstr "メンバーシップのダウンロード" msgid "Download new episodes automatically" msgstr "新しいエピソードを自動的にダウンロードする" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "ダウンロードがキューに追加されました" @@ -1766,7 +1766,7 @@ msgstr "このアルバムのダウンロード" msgid "Download this album..." msgstr "このアルバムをダウンロード..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "このエピソードをダウンロード" @@ -1774,7 +1774,7 @@ msgstr "このエピソードをダウンロード" msgid "Download..." msgstr "ダウンロード..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "ダウンロード中 (%1%)..." @@ -2179,7 +2179,7 @@ msgstr "カバーの取得エラー" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "ファイル拡張子" @@ -2329,7 +2329,7 @@ msgstr "全般" msgid "General settings" msgstr "全般設定" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "ジャンル/アルバムでグループ化" msgid "Group by Genre/Artist/Album" msgstr "ジャンル/アーティスト/アルバムでグループ化" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "挿入..." msgid "Installed" msgstr "インストール済み" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2808,7 +2808,7 @@ msgstr "既定にするには空のままにします。例: \"/dev/dsp\"、\"fr msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長さ" @@ -3021,11 +3021,11 @@ msgstr "手動" msgid "Manufacturer" msgstr "製造元" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3462,7 +3462,7 @@ msgstr "ファイルの整理" msgid "Organise files..." msgstr "ファイルの整理..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "ファイルの整理中" @@ -3536,7 +3536,7 @@ msgstr "再生を一時停止します" msgid "Paused" msgstr "一時停止中" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3631,7 @@ msgstr "ブラウザーを閉じて Clementine に戻ってください。" msgid "Plugin status:" msgstr "プラグインの状態:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "ポッドキャスト" @@ -4066,7 +4066,7 @@ msgstr "コピー後にデバイスを安全に取り外す" msgid "Sample rate" msgstr "サンプルレート" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "サンプルレート" @@ -4890,7 +4890,7 @@ msgstr "このストリームは有料会員専用です" msgid "This type of device is not supported: %1" msgstr "この種類のデバイスはサポートされていません: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "合計転送バイト数" msgid "Total network requests made" msgstr "合計ネットワーク要求回数" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "不明なエラー" msgid "Unset cover" msgstr "カバーを未設定にする" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "購読解除" @@ -5051,7 +5051,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "Grooveshark のプレイリストを更新" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "すべてのポッドキャストを更新" @@ -5063,7 +5063,7 @@ msgstr "変更されたライブラリフォルダーを更新" msgid "Update the library when Clementine starts" msgstr "Clementine の起動時にライブラリを更新する" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "このポッドキャストを更新" @@ -5350,7 +5350,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ka.po b/src/translations/ka.po index f6e8690b9..9702c1fee 100644 --- a/src/translations/ka.po +++ b/src/translations/ka.po @@ -453,7 +453,7 @@ msgstr "ახალი დასტის დამატება..." msgid "Add podcast" msgstr "პოდკასტის დამატება" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "პოდკასტის დამატება..." @@ -602,7 +602,7 @@ msgstr "" msgid "After copying..." msgstr "კოპირების შემდეგ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "ალბომი" msgid "Album (ideal loudness for all tracks)" msgstr "ალბომი (იდეალური ხმის სიმაღლე ყველა ჩანაწერისთვის)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "შემსრულებლის რადიო" msgid "Artist tags" msgstr "შემსრულებლის ჭდეები" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "შემსრულებლის ინიციალი" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "BBC-ის პოდკასტები" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +861,7 @@ msgstr "" msgid "Background opacity" msgstr "ფონის გაუმჭვირვალობა" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "" msgid "Bit rate" msgstr "ბიტური სიჩქარე" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "კომენტარი" @@ -1201,7 +1201,7 @@ msgstr "ჭდეების ავტომატური შევსებ msgid "Complete tags automatically..." msgstr "ჭდეების ავტომატური შევსება..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "ბიბლიოთეკის გამართვა..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1297,8 +1297,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1496,7 +1496,7 @@ msgstr "" msgid "Dance" msgstr "ცეკვა" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "გათიშული" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "დისკი" @@ -1727,7 +1727,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1764,7 +1764,7 @@ msgstr "ამ ალბომის ჩამოტვირთვა" msgid "Download this album..." msgstr "ამ ალბომის ჩამოტვირთვა..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1772,7 +1772,7 @@ msgstr "" msgid "Download..." msgstr "ჩამოტვირთვა..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "ფაილების ორგანიზება" msgid "Organise files..." msgstr "ფაილების ორგანიზება..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3534,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4064,7 +4064,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "ყველა პოდკასტის განახლება" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/kk.po b/src/translations/kk.po index 4d9440087..ecd7830e7 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "Кейін" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +860,7 @@ msgstr "Фон суреті" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Түсіндірме" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "Алмасу буферіне көшіру" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "Билеу" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "Өшіру" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "Сөндірулі" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n эпизодты жүктеп алу" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "Жүктеп алу..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Жүктелуде (%1%)..." @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Файл кеңейтілуі" @@ -2326,7 +2326,7 @@ msgstr "Жалпы" msgid "General settings" msgstr "Жалпы баптаулары" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "Кірістіру..." msgid "Installed" msgstr "Орнатылған" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ұзындығы" @@ -3018,11 +3018,11 @@ msgstr "Қолмен" msgid "Manufacturer" msgstr "Шығарушы" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Жаңа етіп белгілеу" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "Ойнатуды аялдату" msgid "Paused" msgstr "Аялдатылған" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Орындайтын" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасттар" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Дискреттеу жиілігі" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "Белгісіз қате" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Жазылудан бас тарту" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ko.po b/src/translations/ko.po index 7c4b21d9d..ab28db315 100644 --- a/src/translations/ko.po +++ b/src/translations/ko.po @@ -459,7 +459,7 @@ msgstr "새로운 폴더 추가..." msgid "Add podcast" msgstr "팟케스트 추가" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "팟케스트 추가..." @@ -608,7 +608,7 @@ msgstr "이후" msgid "After copying..." msgstr "복사 한 후...." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -621,7 +621,7 @@ msgstr "앨범" msgid "Album (ideal loudness for all tracks)" msgstr "앨범 (모든 트랙에 이상적인 음량)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -774,7 +774,7 @@ msgid "" "the songs of your library?" msgstr "라이브러리의 모든 곡의 해당하는 음악 파일에 음악 통계를 작성 하시겠습니까?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -796,7 +796,7 @@ msgstr "음악가 라디오" msgid "Artist tags" msgstr "음악가 태그" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "음악가 이니셜" @@ -846,7 +846,7 @@ msgstr "평균 이미지 크기" msgid "BBC Podcasts" msgstr "BBC 팟케스트" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -867,7 +867,7 @@ msgstr "배경 그림" msgid "Background opacity" msgstr "배경 투명도" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "데이터베이스 백업" @@ -908,7 +908,7 @@ msgstr "%1의 바이오그래피" msgid "Bit rate" msgstr "비트 전송률" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1195,7 +1195,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "콤마로 클래스:단계의 목록을 나눔, 단계는 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "설명" @@ -1207,7 +1207,7 @@ msgstr "자동으로 태그 저장" msgid "Complete tags automatically..." msgstr "자동으로 태그 저장..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1250,7 +1250,7 @@ msgstr "글로벌 검색 설정..." msgid "Configure library..." msgstr "라이브러리 설정..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "팟케스트 설정..." @@ -1303,8 +1303,8 @@ msgstr "장치가 재생할 수 없는 곡 변환" msgid "Copy to clipboard" msgstr "클립보드로 복사" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "장치에 복사..." @@ -1502,7 +1502,7 @@ msgstr "DBus 경로" msgid "Dance" msgstr "댄스" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1558,7 +1558,7 @@ msgstr "삭제" msgid "Delete Grooveshark playlist" msgstr "그루브샤크 재생목록 지우기" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "다운로드된 데이터 삭제" @@ -1675,7 +1675,7 @@ msgstr "분위기 막대 생성 " msgid "Disabled" msgstr "사용 안함" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "디스크" @@ -1733,7 +1733,7 @@ msgstr "열려면 더블클릭하세요" msgid "Double clicking a song will..." msgstr "노래를 더블클릭하면..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "에피소드 %n 다운로드" @@ -1754,7 +1754,7 @@ msgstr "멤버십 다운로드" msgid "Download new episodes automatically" msgstr "자동으로 새로운 에피소드 다운로드" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "다운로드 대기열 추가됨" @@ -1770,7 +1770,7 @@ msgstr "이 앨범 다운로드" msgid "Download this album..." msgstr "이 앨범 다운로드..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "이 에피소드 다운로드" @@ -1778,7 +1778,7 @@ msgstr "이 에피소드 다운로드" msgid "Download..." msgstr "다운로드..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "다운로드 중 (%1%)..." @@ -2183,7 +2183,7 @@ msgstr "커버 가져오기 오류" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "파일 확장자" @@ -2333,7 +2333,7 @@ msgstr "일반 " msgid "General settings" msgstr "일반 " -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2442,7 +2442,7 @@ msgstr "장르/앨범에 의한 그룹" msgid "Group by Genre/Artist/Album" msgstr "장르/음악가/앨범에 의한 그룹" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "그룹화" @@ -2609,7 +2609,7 @@ msgstr "추가..." msgid "Installed" msgstr "설치 됨" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2812,7 +2812,7 @@ msgstr "" msgid "Left" msgstr "왼쪽" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "길이" @@ -3025,11 +3025,11 @@ msgstr "수동적" msgid "Manufacturer" msgstr "제조회사" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3466,7 +3466,7 @@ msgstr "파일 정리" msgid "Organise files..." msgstr "파일 정리..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "파일 정리 중..." @@ -3540,7 +3540,7 @@ msgstr "재생 일시중지" msgid "Paused" msgstr "일시중지됨" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "연주가" @@ -3635,7 +3635,7 @@ msgstr "브라우저를 닫고 클레멘타인으로 돌아오세요" msgid "Plugin status:" msgstr "플러그인 상태:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "팟케스트" @@ -4070,7 +4070,7 @@ msgstr "복사 후 안전하게 장치 제거" msgid "Sample rate" msgstr "샘플 레이트" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "샘플 레이트" @@ -4894,7 +4894,7 @@ msgstr "이 스트림은 유료 subscribers만 사용할 수 있습니다" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4955,7 +4955,7 @@ msgstr "전송된 총 바이트" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5043,7 +5043,7 @@ msgstr "알 수 없는 오류" msgid "Unset cover" msgstr "커버 해제" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "구독 안함" @@ -5055,7 +5055,7 @@ msgstr "다가오는 콘서트" msgid "Update Grooveshark playlist" msgstr "그루브샤크 재생목록 업데이트" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "모든 팟케스트 업데이트" @@ -5067,7 +5067,7 @@ msgstr "변경된 라이브러리 폴더 업데이트" msgid "Update the library when Clementine starts" msgstr "클레멘타인이 시작될 때 라이브러리 업데이트" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "이 팟케스트 업데이트" @@ -5354,7 +5354,7 @@ msgstr "모든 음악에 통계를 작성" msgid "Wrong username or password." msgstr "잘못된 사용자명 또는 비밀번호 입니다." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/lt.po b/src/translations/lt.po index 71f665f0c..f476818e2 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -456,7 +456,7 @@ msgstr "Pridėti naują aplankalą..." msgid "Add podcast" msgstr "Pridėti srautą" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pridėti srautą..." @@ -605,7 +605,7 @@ msgstr "Po" msgid "After copying..." msgstr "Po kopijavimo..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Albumas" msgid "Album (ideal loudness for all tracks)" msgstr "Albumas (idealus garsumas visoms dainoms)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "Ar tikrai norite įrašyti dainos statistiką į dainos failą visoms dainoms Jūsų fonotekoje?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Atlikėjo radijas" msgid "Artist tags" msgstr "Atlikėjo žymės" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Atlikėjo inicialai" @@ -843,7 +843,7 @@ msgstr "Vidutinis paveikslo dydis" msgid "BBC Podcasts" msgstr "BBC srautas" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Fono pavaikslėlis" msgid "Background opacity" msgstr "Fono nepermatomumas" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Daroma duomenų bazės atsarginė kopija" @@ -905,7 +905,7 @@ msgstr "Biografija iš %1" msgid "Bit rate" msgstr "Bitų greitis" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Kableliais išskirtas sąrašas iš klasės:lygio, lygis yra nuo 0 iki 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentaras" @@ -1204,7 +1204,7 @@ msgstr "Užbaigti žymes automatiškai" msgid "Complete tags automatically..." msgstr "Pabaigti žymes automatiškai..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Nustatyti visuotinę paiešką..." msgid "Configure library..." msgstr "Konfigūruoti fonoteką..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigūruojamas srautas... " @@ -1300,8 +1300,8 @@ msgstr "Konvertuoti visą įrenginio nepalaikomą muziką" msgid "Copy to clipboard" msgstr "Kopijuoti į atmintinę" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopijuoti į įrenginį..." @@ -1499,7 +1499,7 @@ msgstr "„DBus“ kelias" msgid "Dance" msgstr "Šokių" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Trinti" msgid "Delete Grooveshark playlist" msgstr "Šalinti Grooveshark grojaraštį" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Naikinti atsiųstus duomenis" @@ -1672,7 +1672,7 @@ msgstr "Išjungti moodbar generavimą" msgid "Disabled" msgstr "Išjungtas" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diskas" @@ -1730,7 +1730,7 @@ msgstr "Du kart spustelėkite norėdami atverti" msgid "Double clicking a song will..." msgstr "Du kartus spūstelėjus dainą..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Atsiųsti %n epizodus" @@ -1751,7 +1751,7 @@ msgstr "Atsiųsti narystę" msgid "Download new episodes automatically" msgstr "Atsisiųsti naujus epizodus automatiškai" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Atsiuntimas eilėje" @@ -1767,7 +1767,7 @@ msgstr "Atsisiųsti šį albumą" msgid "Download this album..." msgstr "Atsisiunčiamas šis albumas" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Atsiųsti šį epizodą" @@ -1775,7 +1775,7 @@ msgstr "Atsiųsti šį epizodą" msgid "Download..." msgstr "Atsisiųsti..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Atsiunčiama (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "Viršelio atsiuntimo klaida" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Failo plėtinys" @@ -2330,7 +2330,7 @@ msgstr "Bendri" msgid "General settings" msgstr "Pagrindiniai nustatymai" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Grupuoti pagal Žanrą/Albumą" msgid "Group by Genre/Artist/Album" msgstr "Grupuoti pagal Žanrą/Atlikėją/Albumą" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupavimas" @@ -2606,7 +2606,7 @@ msgstr "Įterpti..." msgid "Installed" msgstr "Įdiegta" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Vientisumo tikrinimas" @@ -2809,7 +2809,7 @@ msgstr "Palikite tuščią numatytoms reikšmėms. Pavyzdžiai: \"/dev/dsp\", \" msgid "Left" msgstr "Kairė" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trukmė" @@ -3022,11 +3022,11 @@ msgstr "Rankiniu būdu" msgid "Manufacturer" msgstr "Gamintojas" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Pažymėti kaip klausytą" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Pažymėti kaip naują" @@ -3463,7 +3463,7 @@ msgstr "Tvarkyti failus" msgid "Organise files..." msgstr "Tvarkyti failus..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Tvarkomi failai" @@ -3537,7 +3537,7 @@ msgstr "Sulaikyti grojimą" msgid "Paused" msgstr "Pristabdyta" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Atlikėjas" @@ -3632,7 +3632,7 @@ msgstr "Prašome uždaryti Jūsų naršyklę, kad grįžti į Clementine." msgid "Plugin status:" msgstr "Plėtinio būklė:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" @@ -4067,7 +4067,7 @@ msgstr "Saugiai pašalinti įrenginį po kopijavimo" msgid "Sample rate" msgstr "Išrankos dažnis" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Išrankosdažnis" @@ -4891,7 +4891,7 @@ msgstr "Šis srautas yra tik apmokamiems prenumeratoriams" msgid "This type of device is not supported: %1" msgstr "Šio tipo įrenginys yra nepalaikomas: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Viso baitų perkelta" msgid "Total network requests made" msgstr "Viso tinklo užklausų padaryta" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Nežinoma klaida" msgid "Unset cover" msgstr "Pašalinti viršelį" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Nebeprenumeruoti" @@ -5052,7 +5052,7 @@ msgstr "Artėjantys koncertai" msgid "Update Grooveshark playlist" msgstr "Atnaujinti Grooveshark grojaraštį" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Atnaujinti visas garso prenumeratas" @@ -5064,7 +5064,7 @@ msgstr "Atnaujinti pakeistus fonotekos katalogus" msgid "Update the library when Clementine starts" msgstr "Atnaujinti fonoteką paleidžiant Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Atnaujinti šią garso prenumeratą" @@ -5351,7 +5351,7 @@ msgstr "Rašyti visą dainų statistiką į dainų failus" msgid "Wrong username or password." msgstr "Netinkamas naudotojo vardas ar slaptažodis." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/lv.po b/src/translations/lv.po index be3ca4d75..0eae6cae6 100644 --- a/src/translations/lv.po +++ b/src/translations/lv.po @@ -4,14 +4,15 @@ # # Translators: # FIRST AUTHOR , 2011 +# Gatis Kalniņš <>, 2014 # Kristaps, 2012 # uGGa , 2011 # ugga , 2013 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-01-30 07:59+0000\n" +"Last-Translator: Gatis Kalniņš <>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/clementine/language/lv/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -455,7 +456,7 @@ msgstr "Pievienot jaunu mapi..." msgid "Add podcast" msgstr "Pievienot podraidi" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pievienot podraidi..." @@ -604,7 +605,7 @@ msgstr "Pēc" msgid "After copying..." msgstr "Pēc kopēšanas..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +618,7 @@ msgstr "Albums" msgid "Album (ideal loudness for all tracks)" msgstr "Albums (ideāls skaļums visiem celiņiem)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -678,7 +679,7 @@ msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:196 msgid "Allow downloads" -msgstr "" +msgstr "Atļaut lejupielādes" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" @@ -770,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +793,7 @@ msgstr "Izpildītāja radio" msgid "Artist tags" msgstr "Izpildītāja birkas" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Izpildītājā iciāļi" @@ -842,7 +843,7 @@ msgstr "Vidējais attēlu izmērs" msgid "BBC Podcasts" msgstr "BBC podraides" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Sitieni minūtē" @@ -863,7 +864,7 @@ msgstr "Fona attēls" msgid "Background opacity" msgstr "Fona caurlaidība" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -904,7 +905,7 @@ msgstr "Biogrāfija no %1" msgid "Bit rate" msgstr "Bitreits" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Piezīmes" @@ -1203,7 +1204,7 @@ msgstr "Noformēt tagus automātiski" msgid "Complete tags automatically..." msgstr "Noformēt tagus automātiski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1247,7 @@ msgstr "" msgid "Configure library..." msgstr "Konfigurēt bibliotēku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigurēt podraides..." @@ -1299,8 +1300,8 @@ msgstr "Konvertēt mūziku, ko ierīce nespēj atskaņot" msgid "Copy to clipboard" msgstr "Kopēt starpliktuvē" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopēt uz ierīci..." @@ -1498,7 +1499,7 @@ msgstr "DBus ceļš" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1555,7 @@ msgstr "Dzēst" msgid "Delete Grooveshark playlist" msgstr "Izdzēst Grooveshark atskaņošanas sarakstu" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Dzēst lejuplādētos datus" @@ -1671,7 +1672,7 @@ msgstr "" msgid "Disabled" msgstr "Atslēgts" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disks" @@ -1729,7 +1730,7 @@ msgstr "Dubultklikšķis lai atvērtu" msgid "Double clicking a song will..." msgstr "Dubultklikšķis uz dziesmas..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Lejuplādēt %n sērijas" @@ -1750,7 +1751,7 @@ msgstr "Lejupielādēt dalību" msgid "Download new episodes automatically" msgstr "Automātiski lejuplādēt jaunās sērijas" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1766,7 +1767,7 @@ msgstr "Lejupielādēt šo albumu" msgid "Download this album..." msgstr "Lejupielādēt šo albumu..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Lejuplādēt šo sēriju" @@ -1774,7 +1775,7 @@ msgstr "Lejuplādēt šo sēriju" msgid "Download..." msgstr "Lejupielādēt..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Lejuplādē (%1%)..." @@ -2179,7 +2180,7 @@ msgstr "Kļūda piemeklējot vāku attēlus" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Faila tips" @@ -2329,7 +2330,7 @@ msgstr "Pamatuzstādījumi" msgid "General settings" msgstr "Pamata iestatījumi" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2439,7 @@ msgstr "Grupēt pēc Stils/Albums" msgid "Group by Genre/Artist/Album" msgstr "Grupēt pēc Stila/Izpildītāja/Albuma" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupēšana" @@ -2605,7 +2606,7 @@ msgstr "Ievietot..." msgid "Installed" msgstr "Uzstādīts" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2808,7 +2809,7 @@ msgstr "Atstājiet tukšu noklusētajam. Piemēri: /dev/dsp\", \"front\", utt." msgid "Left" msgstr "Pa kreisi" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ilgums" @@ -3021,11 +3022,11 @@ msgstr "" msgid "Manufacturer" msgstr "Ražotājs" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Atzīmēt kā dzirdētu" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Atzīmēt kā jaunu" @@ -3377,7 +3378,7 @@ msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:187 msgid "Only allow connections from the local network" -msgstr "" +msgstr "Atļaut savienojumus tikai no lokālā tīkla" #: ../bin/src/ui_querysortpage.h:142 msgid "Only show the first" @@ -3427,7 +3428,7 @@ msgstr "Atvērt jaunā skaņsarakstā" #: songinfo/echonestbiographies.cpp:96 msgid "Open in your browser" -msgstr "" +msgstr "Atvērt pārlūkprogrammā" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 @@ -3462,7 +3463,7 @@ msgstr "Organizēt Failus" msgid "Organise files..." msgstr "Organizēt failus..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Kārtoju failus" @@ -3536,7 +3537,7 @@ msgstr "Pauzēt atskaņošanu" msgid "Paused" msgstr "Nopauzēts" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3632,7 @@ msgstr "Lūdzu, aizveriet pārlūku un atgriezieties Clementine." msgid "Plugin status:" msgstr "Spraudņa statuss:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podraides" @@ -3902,7 +3903,7 @@ msgstr "Azivākt no dziesmu listes" #: playlist/playlisttabbar.cpp:174 msgid "Remove playlist" -msgstr "" +msgstr "Dzēst atskaņošanas sarakstu" #: playlist/playlistlistcontainer.cpp:315 msgid "Remove playlists" @@ -3981,7 +3982,7 @@ msgstr "Atjaunot" #: ../bin/src/ui_networkremotesettingspage.h:191 msgid "Require authentication code" -msgstr "" +msgstr "Nepieciešams autentifikācijas kods" #: widgets/lineedit.cpp:52 msgid "Reset" @@ -4066,7 +4067,7 @@ msgstr "Saudzīgi atvienot ierīci pēc kopēšanas" msgid "Sample rate" msgstr "Nolašu ātrums" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Nolašu ātrums" @@ -4890,7 +4891,7 @@ msgstr "Šī straume ir pieejama tikai maksas lietotājiem" msgid "This type of device is not supported: %1" msgstr "Šī tipa ierīce netiek atbalstīta: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4952,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5040,7 @@ msgstr "Nezināma kļūda" msgid "Unset cover" msgstr "Noņemt vāka attēlu" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Atabonēt" @@ -5051,7 +5052,7 @@ msgstr "Tuvākie koncerti" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5063,7 +5064,7 @@ msgstr "Atjaunot mainītās bibliotēkas mapes" msgid "Update the library when Clementine starts" msgstr "Atjaunot bibliotēku ieslēdzot Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Atjaunot šo podraidi" @@ -5350,7 +5351,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/mk_MK.po b/src/translations/mk_MK.po index 281f486d0..ed10cbdda 100644 --- a/src/translations/mk_MK.po +++ b/src/translations/mk_MK.po @@ -453,7 +453,7 @@ msgstr "Додади нова папка..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "After copying..." msgstr "После копирањето..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "Албум" msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална гласност за сите песни)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -861,7 +861,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1201,7 +1201,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1297,8 +1297,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1496,7 +1496,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1727,7 +1727,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1764,7 +1764,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1772,7 +1772,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "" msgid "Left" msgstr "Лево" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3534,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4064,7 +4064,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/mr.po b/src/translations/mr.po index bc6841e73..fce4d8f85 100644 --- a/src/translations/mr.po +++ b/src/translations/mr.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ms.po b/src/translations/ms.po index 9766fe1f7..27d8cfabb 100644 --- a/src/translations/ms.po +++ b/src/translations/ms.po @@ -453,7 +453,7 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "After copying..." msgstr "Selepas menyalin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (kelantangan ideal untuk semua trek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "" msgid "Artist tags" msgstr "Tag-tag artis" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +861,7 @@ msgstr "" msgid "Background opacity" msgstr "Kelegapan latar belakang" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "Biografi dari %1" msgid "Bit rate" msgstr "Kadar bit" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komen" @@ -1201,7 +1201,7 @@ msgstr "Lengkapkan tag-tag secara automatik" msgid "Complete tags automatically..." msgstr "Lengkapkan tag-tag secara automatik..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1297,8 +1297,8 @@ msgstr "Tukar mana-mana muzik yang tidak boleh dimainkan oleh peranti" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Salin ke peranti..." @@ -1496,7 +1496,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "Dilumpuhkan" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Cakera" @@ -1727,7 +1727,7 @@ msgstr "Dwi klik untuk buka" msgid "Double clicking a song will..." msgstr "Dwi klik sesuatu lagu akan..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "Keahlian muat turun" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1764,7 +1764,7 @@ msgstr "Muat turun album ini" msgid "Download this album..." msgstr "Muat turun album ini..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1772,7 +1772,7 @@ msgstr "" msgid "Download..." msgstr "Muat Turun..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "Kumpulkan mengikut Genre/Album" msgid "Group by Genre/Artist/Album" msgstr "Kumpulkan mengikut Genre/Artis/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "Terpasang" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Panjang" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "Pengeluar" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "Aturkan Fail-fail" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Mengatur fail-fail" @@ -3534,7 +3534,7 @@ msgstr "Hentikan sebentar mainbalik" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "" msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4064,7 +4064,7 @@ msgstr "Buangkan peranti dengan selamat selepas menyalin" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "Strim ini untun pelanggan berbayar sahaja" msgid "This type of device is not supported: %1" msgstr "Peranti jenis ini tidak disokong: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "Ralat tidak diketahui" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Kemaskinikan pustaka apabila Clemetine bermula" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/my.po b/src/translations/my.po index b2b25b9fa..99fae3979 100644 --- a/src/translations/my.po +++ b/src/translations/my.po @@ -452,7 +452,7 @@ msgstr "ဖိုင်တွဲအသစ်ထည့်..." msgid "Add podcast" msgstr "ပို့စ်ကဒ်ထည့်" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "ပို့စ်ကဒ်ထည့်..." @@ -601,7 +601,7 @@ msgstr "ပြီးနောက်" msgid "After copying..." msgstr "ကူးယူပြီးနောက်..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "အယ်လဘမ်" msgid "Album (ideal loudness for all tracks)" msgstr "အယ်လဘမ် (တေးသံလမ်းကြောများအားလံုးအတွက်အကောင်းဆုံးအသံကျယ်ကျယ်)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "သီချင်းတိုက်သီချင်းများအားလံုးအတွက်သီချင်းကိန်းဂဏန်းအချက်အလက်များကိုသီချင်းဖိုင်အဖြစ်ရေးလိုပါသလား?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "အနုပညာရှင်ရေဒီယို" msgid "Artist tags" msgstr "အနုပညာရှင်အမည်များ" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "အနုပညာရှင်အမည်၏အစ" @@ -839,7 +839,7 @@ msgstr "ပျမ်းမျှပုံအရွယ်အစား" msgid "BBC Podcasts" msgstr "ဘီဘီစီပို့စ်ကဒ်များ" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ဘီပီအမ်" @@ -860,7 +860,7 @@ msgstr "နောက်ခံပုံ" msgid "Background opacity" msgstr "နောက်ခံအလင်းပိတ်" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "အချက်အလက်အစုအရန်မှတ်သိမ်း" @@ -901,7 +901,7 @@ msgstr "%1 မှအတ္ထုပ္ပတ္တိ" msgid "Bit rate" msgstr "ဘစ်နှုန်း" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "အမျိုးအစားစာရင်းခွဲခြားရန်ပုဒ်ရပ်: အမျိုးအစား, အမျိုးအစားက ၀-၃" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "ထင်မြင်ချက်" @@ -1200,7 +1200,7 @@ msgstr "အမည်များအလိုအလျောက်ဖြည့် msgid "Complete tags automatically..." msgstr "အမည်များအလိုအလျောက်ဖြည့်..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "အနှံ့ရှာဖွေပုံစံပြင်..." msgid "Configure library..." msgstr "သီချင်းတိုက်ပုံစံပြင်..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "ပို့စ်ကဒ်များပုံစံပြင်..." @@ -1296,8 +1296,8 @@ msgstr "ယခုပစ္စည်းမဖွင့်နိုင်သော msgid "Copy to clipboard" msgstr "အောက်ခံကတ်ပြားသို့ကူးယူ" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "ပစ္စည်းသို့ကူးယူ" @@ -1495,7 +1495,7 @@ msgstr "ဒီဘတ်စ်လမ်းကြောင်း" msgid "Dance" msgstr "အက" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "ပယ်ဖျက်" msgid "Delete Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းပယ်ဖျက်" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "ကူးဆွဲပြီးအချက်အလက်ပယ်ဖျက်" @@ -1668,7 +1668,7 @@ msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းတို msgid "Disabled" msgstr "မလုပ်ဆောင်စေ" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ချပ်ပြားဝိုင်း" @@ -1726,7 +1726,7 @@ msgstr "ဖွင့်ရန်ကလစ်နှစ်ခါနှိပ်" msgid "Double clicking a song will..." msgstr "ကလစ်နှစ်ခါနှိပ်ခြင်းဖြင့်သီချင်းဟာ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "တွဲများ %n ကူးဆွဲ" @@ -1747,7 +1747,7 @@ msgstr "အသင်းဝင်ကူးဆွဲ" msgid "Download new episodes automatically" msgstr "တွဲအသစ်များအလိုအလျောက်ကူးဆွဲ" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "စီတန်းပြီးကူးဆွဲ" @@ -1763,7 +1763,7 @@ msgstr "ဒီအယ်လဘမ်ကူးဆွဲ" msgid "Download this album..." msgstr "ဒီအယ်လဘမ်ကူးဆွဲ..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "ဒီတွဲကူးဆွဲ" @@ -1771,7 +1771,7 @@ msgstr "ဒီတွဲကူးဆွဲ" msgid "Download..." msgstr "ကူးဆွဲ..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "ကူးဆွဲ(%1%)..." @@ -2176,7 +2176,7 @@ msgstr "အဖုံးအမှားယူဆောင်နေ" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "ဖိုင်နောက်ဆက်တွဲ" @@ -2326,7 +2326,7 @@ msgstr "အထွေထွေ" msgid "General settings" msgstr "အထွေထွေချိန်ညှိချက်" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "အမျိုးအစား/အယ်လဘမ်အုပ်စု msgid "Group by Genre/Artist/Album" msgstr "အမျိုးအစား/အနုပညာရှင်/အယ်လဘမ်အုပ်စုအလိုက်" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "အုပ်စုအလိုက်စုခြင်း" @@ -2602,7 +2602,7 @@ msgstr "ထည့်သွင်း..." msgid "Installed" msgstr "သွင်းပြီး" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "ခိုင်မြဲမှုစစ်ဆေး" @@ -2805,7 +2805,7 @@ msgstr "မူလပံုစံအတွက်အလွတ်ထားရှိ msgid "Left" msgstr "ဘယ်" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "အလျား" @@ -3018,11 +3018,11 @@ msgstr "လက်အားသံုး" msgid "Manufacturer" msgstr "ထုတ်လုပ်သူ" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "နားထောင်ပြီးကဲ့သို့မတ်သား" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "အသစ်ကဲ့သို့မတ်သား" @@ -3459,7 +3459,7 @@ msgstr "ဖိုင်များစုစည်း" msgid "Organise files..." msgstr "ဖိုင်များစုစည်း..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "ဖိုင်များစုစည်းနေ" @@ -3533,7 +3533,7 @@ msgstr "ပြန်ဖွင့်ရပ်တန့်" msgid "Paused" msgstr "ရပ်တန့်ပြီး" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "တင်ဆင်သူ" @@ -3628,7 +3628,7 @@ msgstr "ဘရောက်ဇာကိုပိတ်ပြီးကလီမန msgid "Plugin status:" msgstr "ဖြည့်စွက်ပရိုဂရမ်အခြေအနေ:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "ပို့စ်ကဒ်များ" @@ -4063,7 +4063,7 @@ msgstr "ကူးယူပြီးနောက်ပစ္စည်းလုံ msgid "Sample rate" msgstr "နမူနာနှုန်း" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "နမူနာနှုန်း" @@ -4887,7 +4887,7 @@ msgstr "ယခုသီချင်းစီးကြောင်းသည်အ msgid "This type of device is not supported: %1" msgstr "ယခုပစ္စည်းအမျိုးအစားမလက်ခံ: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "ဘိုက်စုစုပေါင်းများကူးပြ msgid "Total network requests made" msgstr "ကွန်ရက်တောင်းခံချက်စုစုပေါင်းများပြုလုပ်ပြီး" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "အမည်မသိအမှားပြ" msgid "Unset cover" msgstr "အဖုံးမသတ်မှတ်" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "မမှာယူ" @@ -5048,7 +5048,7 @@ msgstr "လာမည့်ဂီတဖြေဖျော်ပွဲများ msgid "Update Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းစစ်ဆေးခြင်း" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "ပို့စ်ကဒ်များစစ်ဆေးခြင်း" @@ -5060,7 +5060,7 @@ msgstr "ပြောင်းလဲပြီးသီချင်းတိုက msgid "Update the library when Clementine starts" msgstr "ကလီမန်တိုင်းစတင်သောအခါသီချင်းတိုက်မွမ်းမံ" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "ဒီပို့စ်ကဒ်စစ်ဆေးခြင်း" @@ -5347,7 +5347,7 @@ msgstr "သီချင်းဖိုင်များထဲသို့သီ msgid "Wrong username or password." msgstr "အသင်းဝင်အမည်နှင့်/သို့စကားဝှက်မမှန်" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/nb.po b/src/translations/nb.po index c7817e94d..93d86d2e8 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -454,7 +454,7 @@ msgstr "Legg til katalog..." msgid "Add podcast" msgstr "Legg til Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Legg til Podcast..." @@ -603,7 +603,7 @@ msgstr "Etter" msgid "After copying..." msgstr "Etter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideell lydstyrke for alle spor)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "Er du sikker på at du ønsker å skrive statistikken for sangene til filene, for alle sangene i biblioteket?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "Artistradio" msgid "Artist tags" msgstr "Artist etiketter" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artistens initial" @@ -841,7 +841,7 @@ msgstr "Gjennomsittlig bildestørrelse" msgid "BBC Podcasts" msgstr "BBC-Podcast" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -862,7 +862,7 @@ msgstr "Bakgrunnsbilde" msgid "Background opacity" msgstr "Bakgrunnsgjennomsiktighet" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Tar sikkerhetskopi av databasen" @@ -903,7 +903,7 @@ msgstr "Biografi fra %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separert liste av klasse:level, level er 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1202,7 +1202,7 @@ msgstr "Fullfør tags automatisk" msgid "Complete tags automatically..." msgstr "Fullfør tags automatisk..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "Konfigurér globalt søk..." msgid "Configure library..." msgstr "Sett opp bibliotek..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigurere podcasts..." @@ -1298,8 +1298,8 @@ msgstr "Konverter musikk som enheten ikke kan spille" msgid "Copy to clipboard" msgstr "Kopiér til utklippstavla" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopier til enhet..." @@ -1497,7 +1497,7 @@ msgstr "DBus sti" msgid "Dance" msgstr "Dansemusikk" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "Slett" msgid "Delete Grooveshark playlist" msgstr "Slett Grooveshark-spilleliste" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Slett nedlastede data" @@ -1670,7 +1670,7 @@ msgstr "Slå av opprettelse av stemningsstolper" msgid "Disabled" msgstr "Deaktivert" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1728,7 +1728,7 @@ msgstr "Dobbelklikk for å åpne" msgid "Double clicking a song will..." msgstr "Når jeg dobbelklikker en sang, ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Last ned %n episoder" @@ -1749,7 +1749,7 @@ msgstr "Last ned medlemskap" msgid "Download new episodes automatically" msgstr "Last ned nye episoder automatisk" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Lagt til i nedlastingskøen" @@ -1765,7 +1765,7 @@ msgstr "Last ned dette albumet" msgid "Download this album..." msgstr "Last ned dette albumet..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Last ned denne episoden" @@ -1773,7 +1773,7 @@ msgstr "Last ned denne episoden" msgid "Download..." msgstr "Last ned..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Laster ned (%1%)..." @@ -2178,7 +2178,7 @@ msgstr "Kunne ikke hente albumgrafikk" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Filetternavn" @@ -2328,7 +2328,7 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle innstillinger" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "Gruppér etter Sjanger/Album" msgid "Group by Genre/Artist/Album" msgstr "Gruppér etter Sjanger/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering" @@ -2604,7 +2604,7 @@ msgstr "Sett inn..." msgid "Installed" msgstr "Installert" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integritetskontrol" @@ -2807,7 +2807,7 @@ msgstr "La stå tom for standardvalg. Eksempler: \"/dev/dsp\", \"front\", osv." msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengde" @@ -3020,11 +3020,11 @@ msgstr "Manuelt" msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Merk som hørt" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Merk som ny" @@ -3461,7 +3461,7 @@ msgstr "Organisér filer" msgid "Organise files..." msgstr "Organisér filer..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiserer filer" @@ -3535,7 +3535,7 @@ msgstr "Pause" msgid "Paused" msgstr "Pauset" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Utøver" @@ -3630,7 +3630,7 @@ msgstr "Vennligst lukk nettleseren og gå tilbake til Clementine." msgid "Plugin status:" msgstr "Modulens status:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcaster" @@ -4065,7 +4065,7 @@ msgstr "Kjør trygg fjerning av enhet etter kopiering" msgid "Sample rate" msgstr "Samplingsrate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Samplingsrate" @@ -4889,7 +4889,7 @@ msgstr "Denne tjenesten er kun for betalende kunder" msgid "This type of device is not supported: %1" msgstr "Denne enhetstypen (%1) støttes ikke." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "Totalt overført, bytes" msgid "Total network requests made" msgstr "Totalt antall forespørsler over nettet" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "Ukjent feil" msgid "Unset cover" msgstr "Fjern omslaget" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Avmeld" @@ -5050,7 +5050,7 @@ msgstr "Fremtidige konserter" msgid "Update Grooveshark playlist" msgstr "Oppdater Grooveshark-spilleliste" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Oppdatér alle podcaster" @@ -5062,7 +5062,7 @@ msgstr "Oppdatér endrede bibliotekkataloge" msgid "Update the library when Clementine starts" msgstr "Oppdatér biblioteket når Clementine starte" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Oppdatér denne podcasten" @@ -5349,7 +5349,7 @@ msgstr "Skriv all statistikk til sangfilene" msgid "Wrong username or password." msgstr "Ugyldig brukernavn og/eller passord" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/nl.po b/src/translations/nl.po index 7855aab18..481494ac1 100644 --- a/src/translations/nl.po +++ b/src/translations/nl.po @@ -460,7 +460,7 @@ msgstr "Nieuwe map toevoegen…" msgid "Add podcast" msgstr "Voeg podcast toe" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Voeg podcast toe..." @@ -609,7 +609,7 @@ msgstr "Na" msgid "After copying..." msgstr "Na het kopiëren…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideaal volume voor alle nummers)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -775,7 +775,7 @@ msgid "" "the songs of your library?" msgstr "Weet u zeker dat u de waarderingen en statistieken in alle bestanden van uw muziekbibliotheek wilt opslaan?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -797,7 +797,7 @@ msgstr "Artiestradio" msgid "Artist tags" msgstr "Artiestlabels" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artiest's initiaal" @@ -847,7 +847,7 @@ msgstr "Gemiddelde afbeeldinggrootte" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +868,7 @@ msgstr "Achtergrondafbeelding" msgid "Background opacity" msgstr "Achtergrond-doorzichtigheid" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Bezig met het maken van een backup van de database" @@ -909,7 +909,7 @@ msgstr "Biografie van %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1196,7 +1196,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Door komma's gescheiden lijst van van klasse:niveau, het niveau is 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opmerking" @@ -1208,7 +1208,7 @@ msgstr "Labels automatisch voltooien" msgid "Complete tags automatically..." msgstr "Labels automatisch voltooien…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1251,7 +1251,7 @@ msgstr "Globaal zoeken instellen..." msgid "Configure library..." msgstr "Bibliotheek configureren…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podcasts configureren" @@ -1304,8 +1304,8 @@ msgstr "Alle muziek die het apparaat niet kan afspelen converteren" msgid "Copy to clipboard" msgstr "Kopieer naar klembord" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Naar apparaat kopiëren…" @@ -1503,7 +1503,7 @@ msgstr "DBus-pad" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1559,7 +1559,7 @@ msgstr "Verwijderen" msgid "Delete Grooveshark playlist" msgstr "Grooveshark afspeellijst wissen" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Verwijder gedownloadde gegevens" @@ -1676,7 +1676,7 @@ msgstr "Schakel het aanmaken van de stemmingsbalk uit" msgid "Disabled" msgstr "Uitgeschakeld" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Schijf" @@ -1734,7 +1734,7 @@ msgstr "Dubbeklik om te openen" msgid "Double clicking a song will..." msgstr "Dubbelklikken op een nummer zal…" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Download %n afleveringen" @@ -1755,7 +1755,7 @@ msgstr "Lidmaatschap downloaden" msgid "Download new episodes automatically" msgstr "Download nieuwe afleveringen automatisch" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Download in wachtrij gezet" @@ -1771,7 +1771,7 @@ msgstr "Dit album downloaden" msgid "Download this album..." msgstr "Dit album downloaden…" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Download deze aflevering" @@ -1779,7 +1779,7 @@ msgstr "Download deze aflevering" msgid "Download..." msgstr "Downloaden…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Bezig met downloaden (%1%)..." @@ -2184,7 +2184,7 @@ msgstr "Fout bij ophalen albumhoes" msgid "File Format" msgstr "Bestandsformaat" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Bestandsextensie" @@ -2334,7 +2334,7 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellingen" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2443,7 +2443,7 @@ msgstr "Groeperen op genre/album" msgid "Group by Genre/Artist/Album" msgstr "Groeperen op genre/artiest/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groepering" @@ -2610,7 +2610,7 @@ msgstr "Invoegen…" msgid "Installed" msgstr "Geïnstalleerd" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integriteits check" @@ -2813,7 +2813,7 @@ msgstr "Leeglaten voor standaardwaarde. Voorbeelden: ‘/dev/dsp’, ‘front msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duur" @@ -3026,11 +3026,11 @@ msgstr "Handmatig" msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Markeer als beluisterd" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Markeer als nieuw" @@ -3467,7 +3467,7 @@ msgstr "Bestanden sorteren" msgid "Organise files..." msgstr "Bestanden sorteren..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Bestanden sorteren" @@ -3541,7 +3541,7 @@ msgstr "Afspelen pauzeren" msgid "Paused" msgstr "Gepauzeerd" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Uitvoerend artiest" @@ -3636,7 +3636,7 @@ msgstr "Sluit uw browser en keer terug naar Clementine." msgid "Plugin status:" msgstr "Plug-in status:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4071,7 +4071,7 @@ msgstr "Apparaat veilig verwijderen na het kopiëren" msgid "Sample rate" msgstr "Samplerate" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Samplerate" @@ -4895,7 +4895,7 @@ msgstr "Deze stream is alleen voor betalende abonnees" msgid "This type of device is not supported: %1" msgstr "Dit type apparaat wordt niet ondersteund: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4956,7 +4956,7 @@ msgstr "Totaal aantal verzonden bytes" msgid "Total network requests made" msgstr "Totaal aantal netwerk-verzoeken" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5044,7 +5044,7 @@ msgstr "Onbekende fout" msgid "Unset cover" msgstr "Albumhoes wissen" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Uitschrijven" @@ -5056,7 +5056,7 @@ msgstr "Komende concerten" msgid "Update Grooveshark playlist" msgstr "Grooveshark afspeellijsten bijwerken" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Vernieuw alle podcasts" @@ -5068,7 +5068,7 @@ msgstr "Aangepaste databasemappen updaten" msgid "Update the library when Clementine starts" msgstr "Bibliotheek bijwerken zodra Clementine gestart wordt" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Vernieuw deze podcast" @@ -5355,7 +5355,7 @@ msgstr "Sla alle statistieken op in muziekbestanden" msgid "Wrong username or password." msgstr "Verkeerde gebruikersnaam of wachwoord." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/oc.po b/src/translations/oc.po index 2494b3cc2..8c3a1434c 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "Debit binari" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "Desactivat" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "Paramètres generals" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Longor" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "Metre en pausa la lectura" msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "Error desconeguda" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/pa.po b/src/translations/pa.po index cb78ac4eb..77926d630 100644 --- a/src/translations/pa.po +++ b/src/translations/pa.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/pl.po b/src/translations/pl.po index 397aa1c7e..96497cfce 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -460,7 +460,7 @@ msgstr "Dodaj nowy katalog..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodaj podcast..." @@ -609,7 +609,7 @@ msgstr "Po następującej ilości dni:" msgid "After copying..." msgstr "Po skopiowaniu..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -622,7 +622,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Według albumów (najlepsza głośność dla wszystkich ścieżek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -775,7 +775,7 @@ msgid "" "the songs of your library?" msgstr "Czy na pewno chcesz zapisać w plikach wszystkie statystyki każdego utworu z twojej biblioteki?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -797,7 +797,7 @@ msgstr "Radio wykonawcy" msgid "Artist tags" msgstr "Tagi wykonawcy" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Inicjały wykonawcy" @@ -847,7 +847,7 @@ msgstr "Przeciętny rozmiar grafiki" msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Uderzenia na minutę" @@ -868,7 +868,7 @@ msgstr "Obrazek tła" msgid "Background opacity" msgstr "Nieprzezroczystość tła" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Tworzenie kopii zapasowej bazy danych" @@ -909,7 +909,7 @@ msgstr "Biografia z %1" msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1196,7 +1196,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Rozdzielona przecinkami lista klasa:poziom, gdzie poziom wynosi 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentarz" @@ -1208,7 +1208,7 @@ msgstr "Automatycznie uzupełnij znaczniki" msgid "Complete tags automatically..." msgstr "Automatycznie uzupełnij znaczniki..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1251,7 +1251,7 @@ msgstr "Skonfiguruj globalne wyszukiwanie..." msgid "Configure library..." msgstr "Konfiguruj bibliotekę..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfiguruj podcasty..." @@ -1304,8 +1304,8 @@ msgstr "Przekonwertuj muzykę, której nie może odtworzyć urządzenie" msgid "Copy to clipboard" msgstr "Kopiuj do schowka" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Skopiuj na urządzenie..." @@ -1503,7 +1503,7 @@ msgstr "Ścieżka DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1559,7 +1559,7 @@ msgstr "Usuń" msgid "Delete Grooveshark playlist" msgstr "Usuń listę odtwarzania w serwisie Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Usuń pobrane dane" @@ -1676,7 +1676,7 @@ msgstr "Wyłącz generowanie pasków humoru" msgid "Disabled" msgstr "Wyłączone" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Płyta" @@ -1734,7 +1734,7 @@ msgstr "Kliknij podwójnie, by otworzyć" msgid "Double clicking a song will..." msgstr "Podwójne kliknięcie utworu spowoduje..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Ściągnij epizody (%n)" @@ -1755,7 +1755,7 @@ msgstr "Pobierz członkostwo" msgid "Download new episodes automatically" msgstr "Pobierz nowe odcinki automatycznie" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Pobieranie w kolejce" @@ -1771,7 +1771,7 @@ msgstr "Pobierz ten album" msgid "Download this album..." msgstr "Pobierz ten album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Pobierz ten odcinek" @@ -1779,7 +1779,7 @@ msgstr "Pobierz ten odcinek" msgid "Download..." msgstr "Pobierz..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Pobieranie (%1%)..." @@ -2184,7 +2184,7 @@ msgstr "Błąd podczas pobierania okładki" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Rozszerzenie pliku" @@ -2334,7 +2334,7 @@ msgstr "Ogólne" msgid "General settings" msgstr "Podstawowe ustawienia" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2443,7 +2443,7 @@ msgstr "Grupuj według Gatunek/Artysta" msgid "Group by Genre/Artist/Album" msgstr "Grupuj według Gatunek/Artysta/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupowanie" @@ -2610,7 +2610,7 @@ msgstr "Wstaw..." msgid "Installed" msgstr "Zainstalowano" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Sprawdzanie integralności" @@ -2813,7 +2813,7 @@ msgstr "Pozostaw puste, by użyć wartości domyślnej. Przykłady: \"/dev/dsp\" msgid "Left" msgstr "Lewy" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Długość" @@ -3026,11 +3026,11 @@ msgstr "Ręcznie" msgid "Manufacturer" msgstr "Wytwórca" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Oznacz jako przesłuchany" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Oznacz jako nowy" @@ -3467,7 +3467,7 @@ msgstr "Uporządkuj pliki" msgid "Organise files..." msgstr "Uporządkuj pliki..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Porządkowanie plików" @@ -3541,7 +3541,7 @@ msgstr "Wstrzymaj odtwarzanie" msgid "Paused" msgstr "Zatrzymane" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Wykonawca" @@ -3636,7 +3636,7 @@ msgstr "Aby kontynuować pracę z Clementine należy zamknąć przeglądarkę" msgid "Plugin status:" msgstr "Stan wtyczki:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasty" @@ -4071,7 +4071,7 @@ msgstr "Bezpiecznie usuń urządzenie po kopiowaniu" msgid "Sample rate" msgstr "Próbkowanie" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Próbkowanie" @@ -4895,7 +4895,7 @@ msgstr "Strumień wyłącznie dla płacących subskrybentów" msgid "This type of device is not supported: %1" msgstr "Ten typ urządzenia nie jest obsługiwany: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4956,7 +4956,7 @@ msgstr "Całkowita ilość przesłanych w bajtach" msgid "Total network requests made" msgstr "Całkowita ilość zapytań sieciowych" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5044,7 +5044,7 @@ msgstr "Nieznany błąd" msgid "Unset cover" msgstr "Usuń okładkę" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Anuluj subskrypcję" @@ -5056,7 +5056,7 @@ msgstr "Nadchodzące koncerty" msgid "Update Grooveshark playlist" msgstr "Uaktualnij listę odtwarzania w serwisie Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Uaktualnij wszystkie podcasty" @@ -5068,7 +5068,7 @@ msgstr "Odśwież zmienione katalogi biblioteki" msgid "Update the library when Clementine starts" msgstr "Odświeżaj bibliotekę przy uruchomieniu Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Uaktualnij ten podcast" @@ -5355,7 +5355,7 @@ msgstr "Zapisz wszystkie statystyki w plikach muzycznych" msgid "Wrong username or password." msgstr "Zły login lub hasło." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/pt.po b/src/translations/pt.po index 981c90c72..29346ce40 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-01-27 09:12+0000\n" +"Last-Translator: Sérgio Marques \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/clementine/language/pt/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -457,7 +457,7 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Adicionar podcast..." @@ -606,7 +606,7 @@ msgstr "Após " msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -619,7 +619,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -772,7 +772,7 @@ msgid "" "the songs of your library?" msgstr "Tem a certeza que pretende gravar as estatísticas e avaliações para todas as faixas da sua coleção?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -794,7 +794,7 @@ msgstr "Rádio do artista" msgid "Artist tags" msgstr "\"Tags\" do artista" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniciais do artista" @@ -844,7 +844,7 @@ msgstr "Tamanho médio" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -865,7 +865,7 @@ msgstr "Imagem de fundo" msgid "Background opacity" msgstr "Opacidade do fundo" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "A copiar base de dados" @@ -906,7 +906,7 @@ msgstr "Biografia de %1" msgid "Bit rate" msgstr "Taxa de dados" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1193,7 +1193,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista de classes separadas por vírgula: nível entre 0 e 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" @@ -1205,7 +1205,7 @@ msgstr "Preencher detalhes automaticamente" msgid "Complete tags automatically..." msgstr "Preencher detalhes automaticamente..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1248,7 +1248,7 @@ msgstr "Configurar procura global..." msgid "Configure library..." msgstr "Configurar coleção..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configurar podcasts..." @@ -1301,8 +1301,8 @@ msgstr "Converter quaisquer faixas não reconhecidas pelo dispositivo" msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." @@ -1500,7 +1500,7 @@ msgstr "Caminho DBus" msgid "Dance" msgstr "Dança" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1556,7 +1556,7 @@ msgstr "Eliminar" msgid "Delete Grooveshark playlist" msgstr "Eliminar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Eliminar dados transferidos" @@ -1673,7 +1673,7 @@ msgstr "Desativar barra de estado de espírito" msgid "Disabled" msgstr "Inativa" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1731,7 +1731,7 @@ msgstr "Duplo clique para abrir" msgid "Double clicking a song will..." msgstr "Ao clicar duas vezes numa faixa..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Transferir %n episódios" @@ -1752,7 +1752,7 @@ msgstr "Transferência" msgid "Download new episodes automatically" msgstr "Transferir novos episódios automaticamente" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Transferência colocada na fila" @@ -1768,7 +1768,7 @@ msgstr "Transferir este álbum" msgid "Download this album..." msgstr "Transferir este álbum..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Transferir este episódio" @@ -1776,7 +1776,7 @@ msgstr "Transferir este episódio" msgid "Download..." msgstr "Transferir..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "A transferir (%1%)..." @@ -2181,7 +2181,7 @@ msgstr "Erro ao obter a capa do álbum" msgid "File Format" msgstr "Formato de ficheiro" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensão do ficheiro" @@ -2331,7 +2331,7 @@ msgstr "Geral" msgid "General settings" msgstr "Definições gerais" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2440,7 +2440,7 @@ msgstr "Agrupar por género/álbum" msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupo" @@ -2597,7 +2597,7 @@ msgstr "Informações" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opções de entrada" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." @@ -2607,7 +2607,7 @@ msgstr "Inserir..." msgid "Installed" msgstr "Instalado" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Verificação de integridade" @@ -2653,7 +2653,7 @@ msgstr "Senha e/ou utilizador inválido" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Inverter seleção" #: internet/jamendoservice.cpp:127 msgid "Jamendo" @@ -2810,7 +2810,7 @@ msgstr "Deixar em branco para as predefinições. Exemplos: \"/dev/dsp\", \"fron msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" @@ -3023,11 +3023,11 @@ msgstr "Manualmente" msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marcar como reproduzido" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marcar como novo" @@ -3464,7 +3464,7 @@ msgstr "Organizar ficheiros" msgid "Organise files..." msgstr "Organizar ficheiros..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizando ficheiros" @@ -3538,7 +3538,7 @@ msgstr "Pausar a reprodução" msgid "Paused" msgstr "Em pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3633,7 +3633,7 @@ msgstr "Feche o navegador e volte ao Clementine" msgid "Plugin status:" msgstr "Estado:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4028,7 +4028,7 @@ msgstr "Direita" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Extrair" #: ui/ripcd.cpp:116 msgid "Rip CD" @@ -4068,7 +4068,7 @@ msgstr "Depois de copiar, remover dispositivo em segurança" msgid "Sample rate" msgstr "Frequência" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Frequência" @@ -4572,7 +4572,7 @@ msgstr "Com estrela" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Iniciar extração" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4892,7 +4892,7 @@ msgstr "Só os assinantes têm acesso a esta emissão" msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4953,7 +4953,7 @@ msgstr "Total de dados transferidos" msgid "Total network requests made" msgstr "Total de pedidos efetuados" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5041,7 +5041,7 @@ msgstr "Erro desconhecido" msgid "Unset cover" msgstr "Sem capa" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Cancelar subscrição" @@ -5053,7 +5053,7 @@ msgstr "Próximos eventos" msgid "Update Grooveshark playlist" msgstr "Atualizar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" @@ -5065,7 +5065,7 @@ msgstr "Atualizar pastas alteradas" msgid "Update the library when Clementine starts" msgstr "Atualizar coleção ao iniciar o Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Atualizar este podcast" @@ -5352,7 +5352,7 @@ msgstr "Gravar todas as estatísticas nos detalhes dos ficheiros" msgid "Wrong username or password." msgstr "Nome de utilizador ou senha inválido(a)" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index 70aa719c0..ed634d864 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -462,7 +462,7 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Adicionar Podcast..." @@ -611,7 +611,7 @@ msgstr "Depois" msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -624,7 +624,7 @@ msgstr "Álbum" msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -777,7 +777,7 @@ msgid "" "the songs of your library?" msgstr "Tem certeza de que deseja escrever estatísticas de música em arquivo de músicas para todas as músicas da sua biblioteca?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -799,7 +799,7 @@ msgstr "Rádio do artista" msgid "Artist tags" msgstr "Tags do artista" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Inicial do artista" @@ -849,7 +849,7 @@ msgstr "Tamanho médio de imagem" msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -870,7 +870,7 @@ msgstr "Imagem de fundo" msgid "Background opacity" msgstr "Opacidade de fundo" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Cópia do banco de dados" @@ -911,7 +911,7 @@ msgstr "Biografia de %1" msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1198,7 +1198,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por vírgulas de classe: o nível, o nível é 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" @@ -1210,7 +1210,7 @@ msgstr "Completar tags automaticamente" msgid "Complete tags automatically..." msgstr "Preencher tags automaticamente..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1253,7 +1253,7 @@ msgstr "Configurar busca global..." msgid "Configure library..." msgstr "Configurar biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Configurar podcasts" @@ -1306,8 +1306,8 @@ msgstr "Converter qualquer música que o dispositivo não puder tocar" msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." @@ -1505,7 +1505,7 @@ msgstr "Caminho do DBus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1561,7 +1561,7 @@ msgstr "Apagar" msgid "Delete Grooveshark playlist" msgstr "Excluir lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Apagar dados baixados" @@ -1678,7 +1678,7 @@ msgstr "Desabilitar criação da moodbar." msgid "Disabled" msgstr "Desativado" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1736,7 +1736,7 @@ msgstr "Clique duplo para abrir" msgid "Double clicking a song will..." msgstr "Clique duplo em uma música irá..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Baixar %n episódios" @@ -1757,7 +1757,7 @@ msgstr "Conta de download" msgid "Download new episodes automatically" msgstr "Baixar automaticamente novos episódios" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Download na fila" @@ -1773,7 +1773,7 @@ msgstr "Baixar este álbum" msgid "Download this album..." msgstr "Baixar este álbum..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Baixar este episódio" @@ -1781,7 +1781,7 @@ msgstr "Baixar este episódio" msgid "Download..." msgstr "Baixar..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Baixando (%1%)" @@ -2186,7 +2186,7 @@ msgstr "Erro ao buscar a capa" msgid "File Format" msgstr "Formato de arquivo" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensão de arquivo" @@ -2336,7 +2336,7 @@ msgstr "Geral" msgid "General settings" msgstr "Configurações gerais" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2445,7 +2445,7 @@ msgstr "Organizar por Gênero/Álbum" msgid "Group by Genre/Artist/Album" msgstr "Organizar por Gênero/Artista/Álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupamento" @@ -2612,7 +2612,7 @@ msgstr "Inserir..." msgid "Installed" msgstr "Instalado" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Verificar integridade" @@ -2815,7 +2815,7 @@ msgstr "Deixe em branco por padrão. Exemplos: \"/dev/dsp\", \"front\", etc." msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" @@ -3028,11 +3028,11 @@ msgstr "Manualmente" msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Marcar como ouvida" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Marcar como nova" @@ -3469,7 +3469,7 @@ msgstr "Organizar Arquivos" msgid "Organise files..." msgstr "Organizar arquivos..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizando arquivos" @@ -3543,7 +3543,7 @@ msgstr "Pausar reprodução" msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Artista" @@ -3638,7 +3638,7 @@ msgstr "Por favor, feche seu navegador e volte ao Clementine" msgid "Plugin status:" msgstr "Status do plugin:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4073,7 +4073,7 @@ msgstr "Remover o dispositivo com segurança após copiar" msgid "Sample rate" msgstr "Taxa de amostragem" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Taxa de amostragem" @@ -4897,7 +4897,7 @@ msgstr "Este canal é apenas para assinantes" msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4958,7 +4958,7 @@ msgstr "Total de bytes transferido" msgid "Total network requests made" msgstr "Total de requisições de rede feitas" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5046,7 +5046,7 @@ msgstr "Erro desconhecido" msgid "Unset cover" msgstr "Capa não fixada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Desinscrever" @@ -5058,7 +5058,7 @@ msgstr "Próximos shows" msgid "Update Grooveshark playlist" msgstr "Atualizar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" @@ -5070,7 +5070,7 @@ msgstr "Atualizar pastas da biblioteca modificadas" msgid "Update the library when Clementine starts" msgstr "Atualizar a biblioteca quando o Clementine iniciar" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Atualizar este podcast" @@ -5357,7 +5357,7 @@ msgstr "Escrever todas as estatísticas de músicas em arquivos de canções" msgid "Wrong username or password." msgstr "Nome de usuário ou senha incorreta." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ro.po b/src/translations/ro.po index e99c070c0..ac3a05ee6 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -455,7 +455,7 @@ msgstr "Adaugă un dosar nou..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -604,7 +604,7 @@ msgstr "" msgid "After copying..." msgstr "După copiere..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (volum ideal pentru toate piesele)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "Radioul artistului" msgid "Artist tags" msgstr "Etichetele artistului" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Inițiala artistului" @@ -842,7 +842,7 @@ msgstr "Dimensiunea medie a imaginii" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "" msgid "Background opacity" msgstr "Opacitatea fundalului" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -904,7 +904,7 @@ msgstr "Biografie de la %1" msgid "Bit rate" msgstr "Rată de biți" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Listă separată prin virgulă de clasă:nivel, nivel este 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentariu" @@ -1203,7 +1203,7 @@ msgstr "Completează etichetele automat" msgid "Complete tags automatically..." msgstr "Taguri complete în mod automat ..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "" msgid "Configure library..." msgstr "Configurează biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1299,8 +1299,8 @@ msgstr "Convertește muzica pe care nu o poate reda dispozitivul" msgid "Copy to clipboard" msgstr "Copiază în clipboard" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Copiază pe dispozitiv..." @@ -1498,7 +1498,7 @@ msgstr "DBus path" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "Șterge listă de redare Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1671,7 +1671,7 @@ msgstr "" msgid "Disabled" msgstr "Dezactivat" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1729,7 +1729,7 @@ msgstr "Dublu clic pentru a deschide" msgid "Double clicking a song will..." msgstr "Dublu clic pe o melodie va..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1750,7 +1750,7 @@ msgstr "Descarcă apartenență" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1766,7 +1766,7 @@ msgstr "Descarcă acest album" msgid "Download this album..." msgstr "Descarcă acest album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1774,7 +1774,7 @@ msgstr "" msgid "Download..." msgstr "Descărcare..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2179,7 +2179,7 @@ msgstr "Eroare la obținerea coperții de album" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Extensie fișier" @@ -2329,7 +2329,7 @@ msgstr "" msgid "General settings" msgstr "Setări generale" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "Grupează după gen/album" msgid "Group by Genre/Artist/Album" msgstr "Grupează după gen/artist/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "Introduce..." msgid "Installed" msgstr "Instalat" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2808,7 +2808,7 @@ msgstr "Lăsați necompletat pentru implicit. Exemple: \"/ dev /dsp\", \"front\" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durată" @@ -3021,11 +3021,11 @@ msgstr "" msgid "Manufacturer" msgstr "Producător" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3462,7 +3462,7 @@ msgstr "Organizează Fișiere" msgid "Organise files..." msgstr "Organizează fișiere..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organizare fișiere" @@ -3536,7 +3536,7 @@ msgstr "Întrerupe redarea" msgid "Paused" msgstr "În pauză" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3631,7 @@ msgstr "" msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4066,7 +4066,7 @@ msgstr "" msgid "Sample rate" msgstr "Rată de eșantionare" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4890,7 +4890,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "Eroare necunoscută" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5051,7 +5051,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5063,7 +5063,7 @@ msgstr "Actualizează foldere schimbate din bibliotecă" msgid "Update the library when Clementine starts" msgstr "Actualizează librăria când pornește Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5350,7 +5350,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/ru.po b/src/translations/ru.po index 8d773438c..d85620281 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -474,7 +474,7 @@ msgstr "Добавить новую папку..." msgid "Add podcast" msgstr "Добавить подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Добавить подкаст..." @@ -623,7 +623,7 @@ msgstr "После " msgid "After copying..." msgstr "После копирования..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -636,7 +636,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (идеальная громкость всех композиций)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -789,7 +789,7 @@ msgid "" "the songs of your library?" msgstr "Вы действительно хотите записать статистические данные композиции в файл для всех композиций вашей медиатеки?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -811,7 +811,7 @@ msgstr "Радио исполнителя" msgid "Artist tags" msgstr "Теги испольнителя" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Инициалы исполнителя" @@ -861,7 +861,7 @@ msgstr "Примерный размер изображения" msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -882,7 +882,7 @@ msgstr "Фоновое изображение" msgid "Background opacity" msgstr "Прозрачность фона" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Резервное копирование базы данных" @@ -923,7 +923,7 @@ msgstr "Биография из %1" msgid "Bit rate" msgstr "Скорость передачи данных" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1210,7 +1210,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделенный запятыми список \"класс:уровень\", где уровень от 0 до 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Комментарий" @@ -1222,7 +1222,7 @@ msgstr "Заполнить поля автоматически" msgid "Complete tags automatically..." msgstr "Заполнить поля автоматически..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1265,7 +1265,7 @@ msgstr "Настроить глобальный поиск..." msgid "Configure library..." msgstr "Настроить коллекцию..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Настроить подкасты..." @@ -1318,8 +1318,8 @@ msgstr "Конвертировать всю музыку, которую мож msgid "Copy to clipboard" msgstr "Скопировать в буфер" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копировать на устройство..." @@ -1517,7 +1517,7 @@ msgstr "DBus path" msgid "Dance" msgstr "Танцевальный" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1573,7 +1573,7 @@ msgstr "Удалить" msgid "Delete Grooveshark playlist" msgstr "Удалить список воспроизведения Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Удалить загруженные данные" @@ -1690,7 +1690,7 @@ msgstr "Отключить создание индикатора настрое msgid "Disabled" msgstr "Отключено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1748,7 +1748,7 @@ msgstr "Двойной щелчок для открытия" msgid "Double clicking a song will..." msgstr "Двойной щелчок на песне..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Загрузить %n выпусков" @@ -1769,7 +1769,7 @@ msgstr "\"Download\" подписка" msgid "Download new episodes automatically" msgstr "Загружать новые выпуски автоматически" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Загрузка добавлена в очередь" @@ -1785,7 +1785,7 @@ msgstr "Загрузить этот альбом" msgid "Download this album..." msgstr "Загрузить этот альбом" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Загрузить этот выпуск" @@ -1793,7 +1793,7 @@ msgstr "Загрузить этот выпуск" msgid "Download..." msgstr "Загрузить..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Загрузка (%1%)..." @@ -2198,7 +2198,7 @@ msgstr "Ошибка поиска обложки" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Расширение файла" @@ -2348,7 +2348,7 @@ msgstr "Общие" msgid "General settings" msgstr "Общие настройки" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2457,7 +2457,7 @@ msgstr "Группировать по жанру/альбому" msgid "Group by Genre/Artist/Album" msgstr "Группировать по жанру/исполнителю/альбому" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Группа" @@ -2624,7 +2624,7 @@ msgstr "Вставить..." msgid "Installed" msgstr "Установлено" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Проверка целостности" @@ -2827,7 +2827,7 @@ msgstr "Оставьте пустым для значения по-умолча msgid "Left" msgstr "Левый канал" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Длительность" @@ -3040,11 +3040,11 @@ msgstr "Вручную" msgid "Manufacturer" msgstr "Производитель" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Пометить как прослушанное" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Пометить как новое" @@ -3481,7 +3481,7 @@ msgstr "Упорядочить файлы" msgid "Organise files..." msgstr "Упорядочить файлы..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Организация файлов" @@ -3555,7 +3555,7 @@ msgstr "Приостановить воспроизведение" msgid "Paused" msgstr "Приостановлен" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Исполнитель" @@ -3650,7 +3650,7 @@ msgstr "Закройте браузер и вернитесь в Clementine." msgid "Plugin status:" msgstr "Статус модуля:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасты" @@ -4085,7 +4085,7 @@ msgstr "Безопасно извлечь устройство после коп msgid "Sample rate" msgstr "Частота" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Частота дискретизации" @@ -4909,7 +4909,7 @@ msgstr "Поток только для платных подписчиков" msgid "This type of device is not supported: %1" msgstr "Тип устройства не поддерживается: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4970,7 +4970,7 @@ msgstr "Всего передано байт" msgid "Total network requests made" msgstr "Всего выполнено сетевых запросов" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5058,7 +5058,7 @@ msgstr "Неизвестная ошибка" msgid "Unset cover" msgstr "Удалить обложку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Отписаться" @@ -5070,7 +5070,7 @@ msgstr "Предстоящие концерты" msgid "Update Grooveshark playlist" msgstr "Обновить список воспроизведения на Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Обновить все подкасты" @@ -5082,7 +5082,7 @@ msgstr "Обновить измененные папки коллекции" msgid "Update the library when Clementine starts" msgstr "Обновлять коллекцию при запуске Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Обновить этот подкаст" @@ -5369,7 +5369,7 @@ msgstr "Записать все статистические данные в ф msgid "Wrong username or password." msgstr "Неверное имя или пароль" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/si_LK.po b/src/translations/si_LK.po index 111fe6878..06e454196 100644 --- a/src/translations/si_LK.po +++ b/src/translations/si_LK.po @@ -451,7 +451,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -600,7 +600,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -613,7 +613,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -766,7 +766,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -788,7 +788,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -838,7 +838,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -859,7 +859,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -900,7 +900,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1187,7 +1187,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1199,7 +1199,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1295,8 +1295,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1494,7 +1494,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1550,7 +1550,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1667,7 +1667,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1725,7 +1725,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1746,7 +1746,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1762,7 +1762,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1770,7 +1770,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2175,7 +2175,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2325,7 +2325,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2434,7 +2434,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2601,7 +2601,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2804,7 +2804,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3017,11 +3017,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3458,7 +3458,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3532,7 +3532,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3627,7 +3627,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4062,7 +4062,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4886,7 +4886,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4947,7 +4947,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5035,7 +5035,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5047,7 +5047,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5059,7 +5059,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5346,7 +5346,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/sk.po b/src/translations/sk.po index 33583a1ed..6c347495b 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -454,7 +454,7 @@ msgstr "Pridať nový priečinok..." msgid "Add podcast" msgstr "Pridať podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Pridať podcast..." @@ -603,7 +603,7 @@ msgstr "Po " msgid "After copying..." msgstr "Po kopírovaní..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideálna hlasitosť pre všetky skladby)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "Ste si istý, že chcete ukladať štatistiky piesní do súboru piesne pri všetkých piesňach vo vašej zbierke?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "Rádio interpréta" msgid "Artist tags" msgstr "Tagy interpréta" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Iniciálky interpréta" @@ -841,7 +841,7 @@ msgstr "Priemerná veľkosť obrázku" msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -862,7 +862,7 @@ msgstr "Obrázok na pozadí" msgid "Background opacity" msgstr "Priehľadnosť pozadia" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Zálohuje sa databáza" @@ -903,7 +903,7 @@ msgstr "Životopis z %1" msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Čiarkou oddelený zoznam class:level, level je 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentár" @@ -1202,7 +1202,7 @@ msgstr "Vyplniť tagy automaticky" msgid "Complete tags automatically..." msgstr "Vyplniť tagy automaticky..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "Nastaviť globálne vyhľadávanie..." msgid "Configure library..." msgstr "Nastaviť zbierku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Nastaviť podcasty..." @@ -1298,8 +1298,8 @@ msgstr "Konvertovať hudbu ktorú zariadenie nemôže prehrať" msgid "Copy to clipboard" msgstr "Kopírovať do schránky" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Skopírovať na zariadenie..." @@ -1497,7 +1497,7 @@ msgstr "DBus cesta" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "Vymazať" msgid "Delete Grooveshark playlist" msgstr "Vymazať Grooveshark playlist" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Vymazať stiahnuté dáta" @@ -1670,7 +1670,7 @@ msgstr "Zakázať vytváranie panelu nálady" msgid "Disabled" msgstr "Žiadne" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1728,7 +1728,7 @@ msgstr "Otvoríte dvojklikom" msgid "Double clicking a song will..." msgstr "Dvojklik na pieseň..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Stiahnuť %n častí" @@ -1749,7 +1749,7 @@ msgstr "Členstvo sťahovania" msgid "Download new episodes automatically" msgstr "Sťahovať nové časti automaticky" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Sťahovanie zaradené" @@ -1765,7 +1765,7 @@ msgstr "Stiahnuť tento album" msgid "Download this album..." msgstr "Stiahnuť tento album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Stiahnuť túto časť" @@ -1773,7 +1773,7 @@ msgstr "Stiahnuť túto časť" msgid "Download..." msgstr "Stiahnuť..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Sťahovanie (%1%)..." @@ -2178,7 +2178,7 @@ msgstr "Chyba pri získavaní obalu" msgid "File Format" msgstr "Formát súboru" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Prípona súboru" @@ -2328,7 +2328,7 @@ msgstr "Všeobecné" msgid "General settings" msgstr "Všeobecné nastavenia" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "Zoradiť podľa žáner/album" msgid "Group by Genre/Artist/Album" msgstr "Zoradiť podľa žáner/interprét/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Zoskupenie" @@ -2604,7 +2604,7 @@ msgstr "Vložiť..." msgid "Installed" msgstr "Nainštalované" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Kontrola integrity" @@ -2807,7 +2807,7 @@ msgstr "Nechajte prázdne, ak chcete pôvodné. Príklady: \"/dev/dsp\", \"front msgid "Left" msgstr "Ľavý" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dĺžka" @@ -3020,11 +3020,11 @@ msgstr "Ručne" msgid "Manufacturer" msgstr "Výrobca" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Označiť ako vypočuté" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Označiť ako nové" @@ -3461,7 +3461,7 @@ msgstr "Organizovať súbory" msgid "Organise files..." msgstr "Spravovať súbory..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Spravovanie súborov" @@ -3535,7 +3535,7 @@ msgstr "Pozastaviť prehrávanie" msgid "Paused" msgstr "Pozastavené" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkujúci" @@ -3630,7 +3630,7 @@ msgstr "Prosím zatvorte váš internetový prehliadač a vráťte sa do Clement msgid "Plugin status:" msgstr "Stav pluginu:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasty" @@ -4065,7 +4065,7 @@ msgstr "Bezpečne odpojiť zariadenie po skončení kopírovania" msgid "Sample rate" msgstr "Rýchlosť vzorkovania" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Rýchlosť vzorkovania" @@ -4889,7 +4889,7 @@ msgstr "Tento stream je len pre platiacich predplatiteľov" msgid "This type of device is not supported: %1" msgstr "Tento typ zariadení nieje podporovaný: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "Spolu prenesených bytov" msgid "Total network requests made" msgstr "Spolu urobených požiadavok cez sieť" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "Neznáma chyba" msgid "Unset cover" msgstr "Nenastavený obal" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Zrušiť predplatné" @@ -5050,7 +5050,7 @@ msgstr "Pripravované koncerty" msgid "Update Grooveshark playlist" msgstr "Aktualizovať Grooveshark playlist" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Aktualizovať všetky podcasty" @@ -5062,7 +5062,7 @@ msgstr "Aktualizovať zmenené priečinky v zbierke" msgid "Update the library when Clementine starts" msgstr "Aktualizovať zbierku pri zapnutí Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Aktualizovať tento podcast" @@ -5349,7 +5349,7 @@ msgstr "Zapísať všetky štatistiky piesní do súborov piesní" msgid "Wrong username or password." msgstr "Nesprávne meno používateľa alebo heslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/sl.po b/src/translations/sl.po index 9898163f7..b71c4638d 100644 --- a/src/translations/sl.po +++ b/src/translations/sl.po @@ -458,7 +458,7 @@ msgstr "Dodaj novo mapo ..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Dodaj podcast ..." @@ -607,7 +607,7 @@ msgstr "Po " msgid "After copying..." msgstr "Po kopiranju ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -620,7 +620,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (najboljša glasnost za vse skladbe)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -773,7 +773,7 @@ msgid "" "the songs of your library?" msgstr "Ali ste prepričani, da želite zapisati statistike skladbe v datoteko skladbe za vse skladbe v vaši knjižnici?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -795,7 +795,7 @@ msgstr "Radio izvajalca" msgid "Artist tags" msgstr "Oznake izvajalcev" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Začetnice izvajalca" @@ -845,7 +845,7 @@ msgstr "Povprečna velikost slike" msgid "BBC Podcasts" msgstr "BBC-jevi podcasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "udarcev/min" @@ -866,7 +866,7 @@ msgstr "Slika ozadja" msgid "Background opacity" msgstr "Prekrivnost ozadja" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Varnostno kopiranje podatkovne zbirke" @@ -907,7 +907,7 @@ msgstr "Biografija iz %1" msgid "Bit rate" msgstr "Bitna hitrost" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1194,7 +1194,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Z vejicami ločen seznam razred:raven, raven je 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opomba" @@ -1206,7 +1206,7 @@ msgstr "Samodejno dopolni oznake" msgid "Complete tags automatically..." msgstr "Samodejno dopolni oznake ..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1249,7 +1249,7 @@ msgstr "Nastavi splošno iskanje" msgid "Configure library..." msgstr "Nastavi knjižnico ..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Nastavi podcaste ..." @@ -1302,8 +1302,8 @@ msgstr "Pretvori vso glasbo, ki je naprava ne more predvajati" msgid "Copy to clipboard" msgstr "Kopiraj v odložišče" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiraj na napravo ..." @@ -1501,7 +1501,7 @@ msgstr "Pot DBus" msgid "Dance" msgstr "Plesna" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1557,7 +1557,7 @@ msgstr "Izbriši" msgid "Delete Grooveshark playlist" msgstr "Izbriši seznam predvajanja Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Izbriši prejete podatke" @@ -1674,7 +1674,7 @@ msgstr "Onemogoči ustvarjanje moodbara" msgid "Disabled" msgstr "Onemogočeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1732,7 +1732,7 @@ msgstr "Dvoklik za odpiranje" msgid "Double clicking a song will..." msgstr "Dvoklik skladbe bo povzročil sledeče ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Prejmi %n epizod" @@ -1753,7 +1753,7 @@ msgstr "Članstvo prejemanja" msgid "Download new episodes automatically" msgstr "Samodejno prejmi nove epizode" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Prejem je v čakalni vrsti" @@ -1769,7 +1769,7 @@ msgstr "Prejmi ta album" msgid "Download this album..." msgstr "Prejmi ta album ..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Prejmi to epizodo" @@ -1777,7 +1777,7 @@ msgstr "Prejmi to epizodo" msgid "Download..." msgstr "Prejmi ..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Prejemanje (%1 %) ..." @@ -2182,7 +2182,7 @@ msgstr "Napaka med pridobivanjem ovitka" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Pripona datoteke" @@ -2332,7 +2332,7 @@ msgstr "Splošno" msgid "General settings" msgstr "Splošne nastavitve" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2441,7 +2441,7 @@ msgstr "Združi po zvrsti/albumu" msgid "Group by Genre/Artist/Album" msgstr "Združi po zvrsti/izvajalcu/albumu" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Združevanje" @@ -2608,7 +2608,7 @@ msgstr "Vstavi ..." msgid "Installed" msgstr "Nameščeno" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Preverjanje celovitosti" @@ -2811,7 +2811,7 @@ msgstr "Pustite prazno za privzeto. Primeri: \"/dev/dsp\", \"front\", itd." msgid "Left" msgstr "Levo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dolžina" @@ -3024,11 +3024,11 @@ msgstr "Ročno" msgid "Manufacturer" msgstr "Proizvajalec" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Označi kot poslušano" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Označi kot novo" @@ -3465,7 +3465,7 @@ msgstr "Organiziraj datoteke" msgid "Organise files..." msgstr "Organiziraj datoteke ..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiziranje datotek" @@ -3539,7 +3539,7 @@ msgstr "Naredi premor predvajanja" msgid "Paused" msgstr "V premoru" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvajalec" @@ -3634,7 +3634,7 @@ msgstr "Zaprite vaš brskalnik in se vrnite v Clementine." msgid "Plugin status:" msgstr "Stanje vstavka:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasti" @@ -4069,7 +4069,7 @@ msgstr "Varno odstrani napravo po kopiranju" msgid "Sample rate" msgstr "Hitrost vzorčenja" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Hitrost vzorčenja" @@ -4893,7 +4893,7 @@ msgstr "Ta pretok je le za plačane naročnike" msgid "This type of device is not supported: %1" msgstr "Ta vrsta naprave ni podprta: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4954,7 +4954,7 @@ msgstr "Skupno prenesenih bajtov" msgid "Total network requests made" msgstr "Skupno število omrežnih zahtev" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5042,7 +5042,7 @@ msgstr "Neznana napaka" msgid "Unset cover" msgstr "Odstrani ovitek" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Ukini naročnino" @@ -5054,7 +5054,7 @@ msgstr "Prihajajoči koncerti" msgid "Update Grooveshark playlist" msgstr "Posodobi seznam predvajanja Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Posodobi vse podcaste" @@ -5066,7 +5066,7 @@ msgstr "Posodobi spremenjene mape v knjižnici" msgid "Update the library when Clementine starts" msgstr "Posodobi knjižnico ob zagonu Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Posodobi ta podcast" @@ -5353,7 +5353,7 @@ msgstr "Zapiši vse statistike skladb v datoteke skladb" msgid "Wrong username or password." msgstr "Napačno uporabniško ime ali geslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/sr.po b/src/translations/sr.po index 576d0ddc3..f7eb6c3d8 100644 --- a/src/translations/sr.po +++ b/src/translations/sr.po @@ -5,11 +5,12 @@ # Translators: # FIRST AUTHOR , 2010 # Jovana Savic , 2012 +# daimonion , 2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-02-02 00:11+0000\n" +"Last-Translator: daimonion \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/clementine/language/sr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,11 +24,11 @@ msgid "" "You can favorite playlists by clicking the star icon next to a playlist name\n" "\n" "Favorited playlists will be saved here" -msgstr "" +msgstr "\n\nМожете ставити листе нумера у омиљене кликом на звездицу поред имена листе\n\nОмиљене листе нумера биће сачуване овде" #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" -msgstr "" +msgstr " дана" #: ../bin/src/ui_transcoderoptionsaac.h:130 #: ../bin/src/ui_transcoderoptionsmp3.h:195 @@ -58,7 +59,7 @@ msgstr " секунди" #: ../bin/src/ui_querysortpage.h:143 msgid " songs" -msgstr " песме" +msgstr " песама" #: widgets/osd.cpp:193 #, qt-format @@ -78,32 +79,32 @@ msgstr "пре %1 дана" #: podcasts/gpoddersync.cpp:79 #, qt-format msgid "%1 on %2" -msgstr "" +msgstr "%1 на %2" #: playlistparsers/playlistparser.cpp:76 #, qt-format msgid "%1 playlists (%2)" -msgstr "%1 листа нумера (%2)" +msgstr "%1 листи нумера (%2)" #: playlist/playlistmanager.cpp:413 #, qt-format msgid "%1 selected of" -msgstr "%1 odabrano od" +msgstr "%1 изабрано од" #: devices/deviceview.cpp:123 #, qt-format msgid "%1 song" -msgstr "%1" +msgstr "%1 песма" #: devices/deviceview.cpp:125 #, qt-format msgid "%1 songs" -msgstr "%1 pesama" +msgstr "%1 песама" #: smartplaylists/searchpreview.cpp:133 #, qt-format msgid "%1 songs found" -msgstr "%1 pesama pronađeno" +msgstr "%1 песама пронађено" #: smartplaylists/searchpreview.cpp:130 #, qt-format @@ -118,13 +119,13 @@ msgstr "%1 нумера" #: ui/albumcovermanager.cpp:459 #, qt-format msgid "%1 transferred" -msgstr "%1 prebačeno" +msgstr "%1 пребачено" #: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 #: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" -msgstr "%1: Wiimotedev module" +msgstr "%1: Wiimotedev модул" #: songinfo/lastfmtrackinfoprovider.cpp:94 #, qt-format @@ -138,7 +139,7 @@ msgstr "%L1 укупних слушања" #: ../bin/src/ui_notificationssettingspage.h:427 msgid "%filename%" -msgstr "" +msgstr "%filename%" #: transcoder/transcodedialog.cpp:207 #, c-format, qt-plural-format @@ -161,36 +162,36 @@ msgstr "&Поравнај текст" #: playlist/playlistheader.cpp:40 msgid "&Center" -msgstr "&Centrirano" +msgstr "&центрирај" #: ../bin/src/ui_globalshortcutssettingspage.h:178 msgid "&Custom" -msgstr "&Посебно" +msgstr "&Посебна" #: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" -msgstr "Специјалитети" +msgstr "&Додаци" #: ../bin/src/ui_mainwindow.h:734 msgid "&Help" -msgstr "Помоћ" +msgstr "&Помоћ" #: playlist/playlistheader.cpp:70 #, qt-format msgid "&Hide %1" -msgstr "Сакриј %1" +msgstr "&Сакриј %1" #: playlist/playlistheader.cpp:33 msgid "&Hide..." -msgstr "Сакриј..." +msgstr "&Сакриј..." #: playlist/playlistheader.cpp:39 msgid "&Left" -msgstr "&Лево" +msgstr "&лево" #: ../bin/src/ui_mainwindow.h:732 msgid "&Music" -msgstr "Музика" +msgstr "&Музика" #: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "&None" @@ -198,7 +199,7 @@ msgstr "&Ниједна" #: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" -msgstr "Листа нумера" +msgstr "&Листа нумера" #: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" @@ -206,23 +207,23 @@ msgstr "&Напусти" #: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" -msgstr "Режим понављања" +msgstr "&Режим понављања" #: playlist/playlistheader.cpp:41 msgid "&Right" -msgstr "&Десно" +msgstr "&десно" #: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" -msgstr "Испретумбани режим" +msgstr "&Насумични режим" #: playlist/playlistheader.cpp:34 msgid "&Stretch columns to fit window" -msgstr "&Развуци редове да одговарају прозору" +msgstr "&Уклопи колоне у прозор" #: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" -msgstr "Алатке" +msgstr "&Алатке" #: ui/edittagdialog.cpp:48 msgid "(different across multiple songs)" @@ -230,11 +231,11 @@ msgstr "(другачије кроз разне песме)" #: ui/about.cpp:77 msgid "...and all the Amarok contributors" -msgstr "И сви они који су доприниели Амароку" +msgstr "и свима који су допринели Амароку" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" -msgstr "" +msgstr "0" #: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 msgid "0:00:00" @@ -242,7 +243,7 @@ msgstr "0:00:00" #: ../bin/src/ui_appearancesettingspage.h:289 msgid "0px" -msgstr "" +msgstr "0px" #: core/utilities.cpp:110 msgid "1 day" @@ -254,16 +255,16 @@ msgstr "1 нумера" #: ../bin/src/ui_networkremotesettingspage.h:201 msgid "127.0.0.1" -msgstr "" +msgstr "127.0.0.1" #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" -msgstr "128к МП3" +msgstr "128k МП3" #: ../bin/src/ui_appearancesettingspage.h:291 msgid "40%" -msgstr "" +msgstr "40%" #: library/library.cpp:60 msgid "50 random tracks" @@ -271,13 +272,13 @@ msgstr "50 насумичних песама" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "Upgrade to Premium now" +msgstr "Надогради на Премијум налог" #: ../bin/src/ui_ubuntuonesettingspage.h:133 msgid "" "Create a new account or reset " "your password" -msgstr "" +msgstr "Направите нови налог или ресетујте вашу лозинку" #: ../bin/src/ui_librarysettingspage.h:195 msgid "" @@ -287,7 +288,7 @@ msgid "" "directly into the file each time they changed.

Please note it might " "not work for every format and, as there is no standard for doing so, other " "music players might not be able to read them.

" -msgstr "" +msgstr "

Ако није штиклирано Клементина ће уписивати ваше оцене и и осталу статистику само у одвојеној бази података и неће мењати ваше фајлове.

Ако је штиклирано, уписиваће статистику и у бази података и директно у фајл при свакој измени.

Имајте на уму да ово можда неће радити за сваки формат фајла и, како нема стандарда за то, остали музички плејери можда неће умети да то прочитају.

" #: ../bin/src/ui_librarysettingspage.h:199 msgid "" @@ -295,7 +296,7 @@ msgid "" "files tags for all your library's songs.

This is not needed if the " ""Save ratings and statistics in file tags" option has always been " "activated.

" -msgstr "" +msgstr "

Упис статистике и оцена песама у ознаке фајлова за све песме ваше библиотеке.

Није потребно ако је поставка „Упиши оцену/статистику песме у ознаке кад је то могуће“ увек била активирана.

" #: ../bin/src/ui_organisedialog.h:199 msgid "" @@ -306,22 +307,22 @@ msgstr "

Tokens start with %, for example: %artist %album %title

\n\n

If #: internet/groovesharksettingspage.cpp:111 msgid "A Grooveshark Anywhere account is required." -msgstr "" +msgstr "Потребан је Грувшарк Билокуд налог" #: internet/spotifysettingspage.cpp:162 msgid "A Spotify Premium account is required." -msgstr "Потребан је Spotify Premium налог" +msgstr "Потребан је Спотифај Премијум налог" #: ../bin/src/ui_networkremotesettingspage.h:189 msgid "A client can connect only, if the correct code was entered." -msgstr "" +msgstr "Клијент може да се повеже само ако је унесен исправан кôд." #: smartplaylists/wizard.cpp:78 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." -msgstr "Паметна листа је промењива листа песама која потиче из твоје библиотеке. Постоје различити типови паметних листа који нуде различите путеве избирања песама." +msgstr "Паметна листа нумера је динамичка листа песама из ваше библиотеке. Постоје различити типови паметних листа који нуде различите начине избора песама." #: smartplaylists/querywizardplugin.cpp:153 msgid "" @@ -338,15 +339,15 @@ msgstr "ААЦ" #: ../bin/src/ui_digitallyimportedsettingspage.h:179 msgid "AAC 128k" -msgstr "" +msgstr "ААЦ 128k" #: ../bin/src/ui_digitallyimportedsettingspage.h:171 msgid "AAC 32k" -msgstr "" +msgstr "ААЦ 32k" #: ../bin/src/ui_digitallyimportedsettingspage.h:178 msgid "AAC 64k" -msgstr "" +msgstr "ААЦ 64k" #: core/song.cpp:348 msgid "AIFF" @@ -354,11 +355,11 @@ msgstr "АИФФ" #: widgets/nowplayingwidget.cpp:127 msgid "ALL GLORY TO THE HYPNOTOAD" -msgstr "" +msgstr "СЛАВА ХИПНОЖАПЦУ" #: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 msgid "Abort" -msgstr "" +msgstr "Прекини" #: ui/about.cpp:32 #, qt-format @@ -367,11 +368,11 @@ msgstr "О %1" #: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." -msgstr "О Клементини" +msgstr "О Клементини..." #: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." -msgstr "Више о Qt..." +msgstr "Више о Куту..." #: ../bin/src/ui_groovesharksettingspage.h:113 #: ../bin/src/ui_magnatunesettingspage.h:155 @@ -383,7 +384,7 @@ msgstr "Детаљи о налогу" #: ../bin/src/ui_digitallyimportedsettingspage.h:161 msgid "Account details (Premium)" -msgstr "" +msgstr "Детаљи о налогу (Премијум)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" @@ -391,11 +392,11 @@ msgstr "Радња" #: wiimotedev/wiimotesettingspage.cpp:98 msgid "Active/deactive Wiiremote" -msgstr "Укључи/Искључи Wii даљински" +msgstr "Укључи/искључи Wii даљински" #: podcasts/addpodcastdialog.cpp:56 msgid "Add Podcast" -msgstr "" +msgstr "Додај подкаст" #: ../bin/src/ui_addstreamdialog.h:113 msgid "Add Stream" @@ -403,7 +404,7 @@ msgstr "Додај ток" #: ../bin/src/ui_notificationssettingspage.h:425 msgid "Add a new line if supported by the notification type" -msgstr "" +msgstr "Додај нову линију ако је подржано типом обавештења" #: ../bin/src/ui_wiimotesettingspage.h:193 msgid "Add action" @@ -411,35 +412,35 @@ msgstr "Додај радњу" #: internet/savedradio.cpp:103 msgid "Add another stream..." -msgstr "Додај још један ток" +msgstr "Додај други ток..." #: library/librarysettingspage.cpp:68 msgid "Add directory..." -msgstr "Додај фасциклу" +msgstr "Додај фасциклу..." #: ui/mainwindow.cpp:1623 msgid "Add file" -msgstr "" +msgstr "Додавање фајла" #: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" -msgstr "" +msgstr "Додај фајл у прекодер" #: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" -msgstr "" +msgstr "Додај фајло(ове) у прекодер" #: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." -msgstr "Додај фајл" +msgstr "Додај фајл..." #: transcoder/transcodedialog.cpp:219 msgid "Add files to transcode" -msgstr "Додај фајлове за транскодирање" +msgstr "Додавање фајлова за прекодирање" #: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" -msgstr "Додај фасциклу" +msgstr "Додавање фасцикле" #: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." @@ -451,83 +452,83 @@ msgstr "Додај нову фасциклу..." #: ../bin/src/ui_addpodcastdialog.h:179 msgid "Add podcast" -msgstr "" +msgstr "Додавање подкаста" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." -msgstr "" +msgstr "Додај подкаст..." #: smartplaylists/searchtermwidget.cpp:341 msgid "Add search term" -msgstr "Додај тражени појам" +msgstr "Додај појам за претрагу" #: ../bin/src/ui_notificationssettingspage.h:380 msgid "Add song album tag" -msgstr "" +msgstr "Уметни албум песме" #: ../bin/src/ui_notificationssettingspage.h:386 msgid "Add song albumartist tag" -msgstr "" +msgstr "Уметни извођача албума песме" #: ../bin/src/ui_notificationssettingspage.h:377 msgid "Add song artist tag" -msgstr "" +msgstr "Уметни извођача песме" #: ../bin/src/ui_notificationssettingspage.h:422 msgid "Add song auto score" -msgstr "" +msgstr "Уметни скор песме" #: ../bin/src/ui_notificationssettingspage.h:392 msgid "Add song composer tag" -msgstr "" +msgstr "Уметни композитора песме" #: ../bin/src/ui_notificationssettingspage.h:401 msgid "Add song disc tag" -msgstr "" +msgstr "Уметни диск песме" #: ../bin/src/ui_notificationssettingspage.h:429 msgid "Add song filename" -msgstr "" +msgstr "Уметни име фајла песме" #: ../bin/src/ui_notificationssettingspage.h:407 msgid "Add song genre tag" -msgstr "" +msgstr "Уметни жанр песме" #: ../bin/src/ui_notificationssettingspage.h:398 msgid "Add song grouping tag" -msgstr "" +msgstr "Уметни груписање песме" #: ../bin/src/ui_notificationssettingspage.h:410 msgid "Add song length tag" -msgstr "" +msgstr "Уметни дужину песме" #: ../bin/src/ui_notificationssettingspage.h:395 msgid "Add song performer tag" -msgstr "" +msgstr "Уметни извођача песме" #: ../bin/src/ui_notificationssettingspage.h:413 msgid "Add song play count" -msgstr "" +msgstr "Уметни број пуштања песме" #: ../bin/src/ui_notificationssettingspage.h:419 msgid "Add song rating" -msgstr "" +msgstr "Уметни оцену песме" #: ../bin/src/ui_notificationssettingspage.h:416 msgid "Add song skip count" -msgstr "" +msgstr "Уметни број прескока песме" #: ../bin/src/ui_notificationssettingspage.h:383 msgid "Add song title tag" -msgstr "" +msgstr "Уметни наслов песме" #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" -msgstr "" +msgstr "Уметни нумеру песме" #: ../bin/src/ui_notificationssettingspage.h:389 msgid "Add song year tag" -msgstr "Додај ознаку године песме" +msgstr "Уметни годину песме" #: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." @@ -535,11 +536,11 @@ msgstr "Додај ток..." #: internet/groovesharkservice.cpp:1087 msgid "Add to Grooveshark favorites" -msgstr "" +msgstr "Додај у Грувшарк омиљене" #: internet/groovesharkservice.cpp:1099 msgid "Add to Grooveshark playlists" -msgstr "" +msgstr "Додај у Грувшарк плејлисте" #: ui/mainwindow.cpp:1448 msgid "Add to another playlist" @@ -551,11 +552,11 @@ msgstr "Додај у листу нумера" #: ../bin/src/ui_behavioursettingspage.h:220 msgid "Add to the queue" -msgstr "Стави у ред" +msgstr "стави у ред" #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" -msgstr "Додај wiimotedev акцију" +msgstr "Додај wiimotedev радњу" #: ../bin/src/ui_transcodedialog.h:209 msgid "Add..." @@ -563,24 +564,24 @@ msgstr "Додај..." #: ../bin/src/ui_libraryfilterwidget.h:95 msgid "Added this month" -msgstr "Додато овог месеца" +msgstr "додато овог месеца" #: ../bin/src/ui_libraryfilterwidget.h:89 msgid "Added this week" -msgstr "Додато ове недеље" +msgstr "додато ове недеље" #: ../bin/src/ui_libraryfilterwidget.h:94 msgid "Added this year" -msgstr "Додато ове године" +msgstr "додато ове године" #: ../bin/src/ui_libraryfilterwidget.h:88 msgid "Added today" -msgstr "Додато данас" +msgstr "додато данас" #: ../bin/src/ui_libraryfilterwidget.h:90 #: ../bin/src/ui_libraryfilterwidget.h:92 msgid "Added within three months" -msgstr "Додато у последња три месеца" +msgstr "додато у последња три месеца" #: internet/groovesharkservice.cpp:1394 msgid "Adding song to My Music" @@ -592,42 +593,42 @@ msgstr "" #: library/libraryfilterwidget.cpp:116 msgid "Advanced grouping..." -msgstr "Напредно груписање" +msgstr "Напредно груписање..." #: ../bin/src/ui_podcastsettingspage.h:247 msgid "After " -msgstr "" +msgstr "након " #: ../bin/src/ui_organisedialog.h:190 msgid "After copying..." -msgstr "После умножавања...." +msgstr "Након копирања:" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 #: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" -msgstr "Албум" +msgstr "албум" #: ../bin/src/ui_playbacksettingspage.h:315 msgid "Album (ideal loudness for all tracks)" -msgstr "Албум (идеална јачина за све песме)" +msgstr "албум (идеална јачина за све песме)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" -msgstr "Извођач албума" +msgstr "извођач албума" #: ../bin/src/ui_appearancesettingspage.h:284 msgid "Album cover" -msgstr "" +msgstr "Омот албума" #: internet/jamendoservice.cpp:415 msgid "Album info on jamendo.com..." -msgstr "Албум инфо на jamendo.com...." +msgstr "Подаци албума са jamendo.com..." #: ui/albumcovermanager.cpp:134 msgid "Albums with covers" @@ -643,7 +644,7 @@ msgstr "Сви фајлови (*)" #: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" -msgstr "" +msgstr "Слава Хипножапцу!" #: ui/albumcovermanager.cpp:133 msgid "All albums" @@ -664,7 +665,7 @@ msgstr "Све листе нумера (%1)" #: ui/about.cpp:74 msgid "All the translators" -msgstr "Сви преводиоци" +msgstr "свим преводиоцима" #: library/library.cpp:84 msgid "All tracks" @@ -672,38 +673,38 @@ msgstr "Све нумере" #: ../bin/src/ui_networkremotesettingspage.h:194 msgid "Allow a client to download music from this computer." -msgstr "" +msgstr "Дозволи клијенту да преузима музику са овог рачунара." #: ../bin/src/ui_networkremotesettingspage.h:196 msgid "Allow downloads" -msgstr "" +msgstr "Дозволи преузимања" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" -msgstr "" +msgstr "Дозволи „mid/side“ кодирање" #: ../bin/src/ui_transcodedialog.h:217 msgid "Alongside the originals" -msgstr "Поред оригинала" +msgstr "поред оригинала" #: ../bin/src/ui_behavioursettingspage.h:203 msgid "Always hide the main window" -msgstr "Увек сакриј главни прозор" +msgstr "увек сакриј главни прозор" #: ../bin/src/ui_behavioursettingspage.h:202 msgid "Always show the main window" -msgstr "Увек прикажи главни прозор" +msgstr "увек прикажи главни прозор" #: ../bin/src/ui_behavioursettingspage.h:212 #: ../bin/src/ui_behavioursettingspage.h:226 msgid "Always start playing" -msgstr "Увек почни да свираш" +msgstr "увек ће почети пуштање" #: internet/spotifyblobdownloader.cpp:60 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" -msgstr "Додатак је потребан да би се користио Spotify у Клементини. Да ли желиш да га преузмеш и одмах уградиш?" +msgstr "Потребан је додатни прикључак за коришћење Спотифаја у Клементини. Желите ли да га преузмете и инсталирате сада?" #: devices/gpodloader.cpp:61 msgid "An error occurred loading the iTunes database" @@ -724,7 +725,7 @@ msgstr "И:" #: moodbar/moodbarrenderer.cpp:156 msgid "Angry" -msgstr "" +msgstr "љутит" #: ../bin/src/ui_songinfosettingspage.h:155 #: ../bin/src/ui_appearancesettingspage.h:271 @@ -743,32 +744,32 @@ msgstr "Додај у тренутну листу нумера" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" -msgstr "Додај у листу нумера" +msgstr "дода у листу нумера" #: ../bin/src/ui_playbacksettingspage.h:318 msgid "Apply compression to prevent clipping" -msgstr "Примени компресије како би се спречило одсецање" +msgstr "Примени компресију како би се спречило одсецање" #: ui/equalizer.cpp:201 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" -msgstr "Сигурнисте да желите обрисати претподешавање \"%1\"?" +msgstr "Желите ли заиста да обришете препоставку „%1“?" #: internet/groovesharkservice.cpp:1292 msgid "Are you sure you want to delete this playlist?" -msgstr "" +msgstr "Желите ли заиста да обришете ову листу нумера?" #: ui/edittagdialog.cpp:769 msgid "Are you sure you want to reset this song's statistics?" -msgstr "Да ли сте сигурни да желите да поништите статистику ове песме?" +msgstr "Желите ли заиста да поништите статистику ове песме?" #: library/librarysettingspage.cpp:152 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" -msgstr "" +msgstr "Желите ли заиста да упишете статистику песме у фајл песме за све песме из ваше библиотеке?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -776,11 +777,11 @@ msgstr "" #: ../bin/src/ui_trackselectiondialog.h:210 #: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" -msgstr "Извођач" +msgstr "извођач" #: ui/mainwindow.cpp:248 msgid "Artist info" -msgstr "Инфо извођача" +msgstr "Подаци о извођачу" #: internet/lastfmservice.cpp:208 msgid "Artist radio" @@ -790,9 +791,9 @@ msgstr "Радио извођача" msgid "Artist tags" msgstr "Ознаке извођача" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" -msgstr "Иницијали извођача" +msgstr "иницијали извођача" #: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" @@ -806,7 +807,7 @@ msgstr "Аутентификација није успела" #: ../bin/src/ui_podcastinfowidget.h:192 msgid "Author" -msgstr "" +msgstr "Аутор" #: ui/about.cpp:65 msgid "Authors" @@ -814,7 +815,7 @@ msgstr "Аутори" #: ../bin/src/ui_transcoderoptionsspeex.h:227 msgid "Auto" -msgstr "Ауто" +msgstr "аутоматски" #: ../bin/src/ui_librarysettingspage.h:190 msgid "Automatic updating" @@ -830,7 +831,7 @@ msgstr "Доступно" #: ../bin/src/ui_transcoderoptionsspeex.h:221 msgid "Average bitrate" -msgstr "Просечни проток бита" +msgstr "Просечни битски проток" #: covers/coversearchstatisticsdialog.cpp:70 msgid "Average image size" @@ -838,12 +839,12 @@ msgstr "Просечна величина слике" #: podcasts/addpodcastdialog.cpp:80 msgid "BBC Podcasts" -msgstr "" +msgstr "ББЦ-ијеви подкасти" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" -msgstr "ОПМ" +msgstr "темпо" #: ../bin/src/ui_backgroundstreamssettingspage.h:56 msgid "Background Streams" @@ -855,19 +856,19 @@ msgstr "Боја позадине" #: ../bin/src/ui_appearancesettingspage.h:279 msgid "Background image" -msgstr "" +msgstr "Слика позадине" #: ../bin/src/ui_notificationssettingspage.h:452 msgid "Background opacity" msgstr "Непрозирност позадине" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" -msgstr "" +msgstr "Бекапујем базу података" #: ../bin/src/ui_equalizer.h:173 msgid "Balance" -msgstr "" +msgstr "Равнотежа" #: ../bin/src/ui_mainwindow.h:666 msgid "Ban" @@ -875,15 +876,15 @@ msgstr "Забрани" #: analyzers/baranalyzer.cpp:19 msgid "Bar analyzer" -msgstr "Трака анализатора" +msgstr "Тракасти анализатор" #: ../bin/src/ui_notificationssettingspage.h:456 msgid "Basic Blue" -msgstr "Основно плаво" +msgstr "основна плава" #: ../bin/src/ui_digitallyimportedsettingspage.h:167 msgid "Basic audio type" -msgstr "" +msgstr "Тип звука (основно)" #: ../bin/src/ui_behavioursettingspage.h:191 msgid "Behavior" @@ -891,18 +892,18 @@ msgstr "Понашање" #: ../bin/src/ui_transcoderoptionsflac.h:83 msgid "Best" -msgstr "Најбољи" +msgstr "најбољи" #: songinfo/echonestbiographies.cpp:83 #, qt-format msgid "Biography from %1" -msgstr "Биографија из %1" +msgstr "Биографија са %1" #: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" -msgstr "Битски проток" +msgstr "битски проток" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -922,11 +923,11 @@ msgstr "Тип блока" #: ../bin/src/ui_appearancesettingspage.h:288 msgid "Blur amount" -msgstr "" +msgstr "Замућење" #: ../bin/src/ui_notificationssettingspage.h:449 msgid "Body" -msgstr "" +msgstr "Тело" #: analyzers/boomanalyzer.cpp:8 msgid "Boom analyzer" @@ -934,7 +935,7 @@ msgstr "Бум анализатор" #: ../bin/src/ui_boxsettingspage.h:103 msgid "Box" -msgstr "" +msgstr "Бокс" #: ../bin/src/ui_magnatunedownloaddialog.h:146 #: ../bin/src/ui_podcastsettingspage.h:242 @@ -944,15 +945,15 @@ msgstr "Прегледај..." #: ../bin/src/ui_playbacksettingspage.h:327 msgid "Buffer duration" -msgstr "" +msgstr "Величина бафера" #: engines/gstengine.cpp:784 msgid "Buffering" -msgstr "" +msgstr "Баферујем" #: ../bin/src/ui_globalsearchview.h:211 msgid "But these sources are disabled:" -msgstr "" +msgstr "али ови извори су онемогућени:" #: ../bin/src/ui_wiimotesettingspage.h:192 msgid "Buttons" @@ -960,19 +961,19 @@ msgstr "Дугмад" #: core/song.cpp:351 msgid "CDDA" -msgstr "CDDA" +msgstr "ЦДДА" #: library/library.cpp:100 msgid "CUE sheet support" -msgstr "CUE подршка листа" +msgstr "Подршка за ЦУЕ лист" #: internet/spotifyblobdownloader.cpp:44 msgid "Cancel" -msgstr "Otkaži" +msgstr "Одустани" #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" -msgstr "Промени слику насловне" +msgstr "Промени слику омота" #: songinfo/songinfotextview.cpp:83 msgid "Change font size..." @@ -984,7 +985,7 @@ msgstr "Промени понављање" #: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "Change shortcut..." -msgstr "Промени пречицу..." +msgstr "Измени пречицу..." #: core/globalshortcuts.cpp:61 msgid "Change shuffle mode" @@ -992,7 +993,7 @@ msgstr "Промени насумичност" #: core/commandlineoptions.cpp:172 msgid "Change the language" -msgstr "Promeni jezik" +msgstr "Промени језик" #: ../bin/src/ui_playbacksettingspage.h:330 msgid "" @@ -1002,52 +1003,52 @@ msgstr "" #: ../bin/src/ui_podcastsettingspage.h:228 msgid "Check for new episodes" -msgstr "" +msgstr "Тражи нове епизоде" #: ui/mainwindow.cpp:602 msgid "Check for updates..." -msgstr "Потражи ажурирања..." +msgstr "Потражи надоградње..." #: smartplaylists/wizard.cpp:86 msgid "Choose a name for your smart playlist" -msgstr "Изабери име за своју паметну листу" +msgstr "Изаберите име за вашу паметну листу" #: ../bin/src/ui_playbacksettingspage.h:323 msgid "Choose automatically" -msgstr "Аутоматски одабери" +msgstr "Изабери аутоматски" #: ../bin/src/ui_notificationssettingspage.h:461 msgid "Choose color..." -msgstr "Одабери боју..." +msgstr "Изабери боју..." #: ../bin/src/ui_notificationssettingspage.h:462 msgid "Choose font..." -msgstr "Odaberi font" +msgstr "Изабери фонт..." #: ../bin/src/ui_visualisationselector.h:113 msgid "Choose from the list" -msgstr "Одабери са листе" +msgstr "избор са списка" #: smartplaylists/querywizardplugin.cpp:155 msgid "Choose how the playlist is sorted and how many songs it will contain." -msgstr "Odaberi kako je lista sortirana i koliko će pesama sadržati." +msgstr "Одредите сортирање листе нумера и колико песама ће да садржи." #: podcasts/podcastsettingspage.cpp:132 msgid "Choose podcast download directory" -msgstr "" +msgstr "Избор фасцикле преузимања за подкаст" #: ../bin/src/ui_songinfosettingspage.h:160 msgid "" "Choose the websites you want Clementine to use when searching for lyrics." -msgstr "Изабери сајт који ти хоћеш да Клементина користи при тражењу текста." +msgstr "Изаберите сајтове које желите да Клементина користи при тражењу стихова." #: ui/equalizer.cpp:115 msgid "Classical" -msgstr "Класика" +msgstr "класична" #: ../bin/src/ui_podcastsettingspage.h:243 msgid "Cleaning up" -msgstr "" +msgstr "Чишћење" #: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 #: ../bin/src/ui_queuemanager.h:139 @@ -1081,27 +1082,27 @@ msgstr "Визуелизација Клементине" msgid "" "Clementine can automatically convert the music you copy to this device into " "a format that it can play." -msgstr "Клементина може аутоматски да конвертује музику коју ти умножиш на овај уређај у формат који може бити пуштен." +msgstr "Клементина може аутоматски да претвори музику коју копирате на овај уређај у формат који тај уређај може да пусти." #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "" +msgstr "Клементина може да пушта музику коју сте учитали на Бокс" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "" +msgstr "Клементина може да пушта музику коју сте учитали на Дропбокс" #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "" +msgstr "Клементина може да пушта музику коју сте учитали на Гугл Драјв" #: ../bin/src/ui_ubuntuonesettingspage.h:128 msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "" +msgstr "Клементина може да пушта музику коју сте учитали на Убунту 1" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." -msgstr "Клементина може приказивати поруке приликом измена нумера" +msgstr "Клементина може приказивати поруке приликом измена нумера." #: ../bin/src/ui_podcastsettingspage.h:250 msgid "" @@ -1114,14 +1115,14 @@ msgstr "" msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." -msgstr "Клементина не може учитати пројекатМ визуализацију. Проверите да ли сте правилно инсталирали Клементину." +msgstr "Клементина не може да учита ниједну пројектМ визуелизацију. Проверите да ли сте исправно инсталирали Клементину." #: internet/lastfmsettingspage.cpp:110 msgid "" "Clementine couldn't fetch your subscription status since there are problems " "with your connection. Played tracks will be cached and sent later to " "Last.fm." -msgstr "Клементина није могла да узме твој претплатнички статус пошто има проблема са твојом конекцијом. Пуштене нумере ће бити кеширане и касније послате на Last.fm." +msgstr "Клементина није могла да добави ваш претплатнички статус због проблема са везом. Пуштене нумере ће бити кеширане и касније послате на Ласт.фм." #: widgets/prettyimage.cpp:201 msgid "Clementine image viewer" @@ -1129,25 +1130,25 @@ msgstr "Клеметинин прегледач слика" #: ../bin/src/ui_trackselectiondialog.h:206 msgid "Clementine was unable to find results for this file" -msgstr "Клементине није била у могућности да нађе резултате за овај фајл." +msgstr "Клементина није могла да нађе резултате за овај фајл" #: ../bin/src/ui_globalsearchview.h:210 msgid "Clementine will find music in:" -msgstr "" +msgstr "Клементина ће тражити музику у:" #: library/libraryview.cpp:349 msgid "Click here to add some music" -msgstr "Кликни овде да додате неку музику" +msgstr "Кликните овде да додате музику" #: playlist/playlisttabbar.cpp:293 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "" +msgstr "Кликните овде да ставите ову листу нумера у омиљене да би била сачувана и приступачна преко „Листе нумера“ панела на бочној траци с лева" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" -msgstr "Кликни да би мењао између преосталог и укупног времена" +msgstr "Кликните да промените приказ преосталог/укупног времена" #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 @@ -1158,11 +1159,11 @@ msgstr "" #: widgets/didyoumean.cpp:37 msgid "Close" -msgstr "Zatvori" +msgstr "Затвори" #: playlist/playlisttabbar.cpp:54 msgid "Close playlist" -msgstr "" +msgstr "Затвори листу нумера" #: visualisations/visualisationcontainer.cpp:127 msgid "Close visualization" @@ -1170,28 +1171,28 @@ msgstr "Затвори визуелизацију" #: internet/magnatunedownloaddialog.cpp:280 msgid "Closing this window will cancel the download." -msgstr "Затварање овог прозора прекинуће преузимање" +msgstr "Затварање овог прозора прекинуће преузимање." #: ui/albumcovermanager.cpp:216 msgid "Closing this window will stop searching for album covers." -msgstr "Затварање овог прозора прекинуће потрагу за омотима албума" +msgstr "Затварање овог прозора прекинуће потрагу за омотима албума." #: ui/equalizer.cpp:116 msgid "Club" -msgstr "Клуб" +msgstr "клуб" #: ../bin/src/ui_appearancesettingspage.h:272 msgid "Colors" -msgstr "" +msgstr "Боје" #: core/commandlineoptions.cpp:175 msgid "Comma separated list of class:level, level is 0-3" msgstr "Зарез раздваја листу од класа:ниво, ниво је 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" -msgstr "Коментар" +msgstr "коментар" #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" @@ -1201,62 +1202,62 @@ msgstr "Попуни ознаке аутоматски" msgid "Complete tags automatically..." msgstr "Попуни ознаке аутоматски..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" -msgstr "Композитор" +msgstr "композитор" #: internet/searchboxwidget.cpp:42 #, qt-format msgid "Configure %1..." -msgstr "" +msgstr "Подеси %1..." #: internet/groovesharkservice.cpp:552 msgid "Configure Grooveshark..." -msgstr "" +msgstr "Подеси Грувшарк..." #: internet/lastfmservice.cpp:126 msgid "Configure Last.fm..." -msgstr "Подеси ЛастФМ" +msgstr "Подеси Ласт.фм..." #: internet/magnatuneservice.cpp:280 msgid "Configure Magnatune..." -msgstr "Подеси Магнатјун" +msgstr "Подеси Магнатјун..." #: ../bin/src/ui_globalshortcutssettingspage.h:167 msgid "Configure Shortcuts" -msgstr "Подеси пречице" +msgstr "Поставке пречица" #: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 msgid "Configure Spotify..." -msgstr "Подеси Spotify..." +msgstr "Подеси Спотифај..." #: internet/subsonicservice.cpp:96 msgid "Configure Subsonic..." -msgstr "" +msgstr "Подеси Субсоник..." #: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 msgid "Configure global search..." -msgstr "" +msgstr "Подеси глобалну претрагу..." #: ui/mainwindow.cpp:483 msgid "Configure library..." -msgstr "Подеси библиотеку" +msgstr "Подеси библиотеку..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." -msgstr "" +msgstr "Подеси подкасте..." #: internet/digitallyimportedservicebase.cpp:186 #: ../bin/src/ui_globalsearchsettingspage.h:150 #: internet/googledriveservice.cpp:193 msgid "Configure..." -msgstr "" +msgstr "Подеси..." #: ../bin/src/ui_wiimotesettingspage.h:186 msgid "Connect Wii Remotes using active/deactive action" -msgstr "Повежи Wii даљинске користећи укључено/искључено акције." +msgstr "Повежи Wii даљинске користећи радње укључено/искључено" #: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 msgid "Connect device" @@ -1264,7 +1265,7 @@ msgstr "Повежи уређај" #: internet/spotifyservice.cpp:253 msgid "Connecting to Spotify" -msgstr "Повежи се на Spotify" +msgstr "Повежи се на Спотифај" #: internet/subsonicsettingspage.cpp:107 msgid "" @@ -1279,11 +1280,11 @@ msgstr "" #: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" -msgstr "" +msgstr "Конзола" #: ../bin/src/ui_transcoderoptionsmp3.h:196 msgid "Constant bitrate" -msgstr "Константан битни проток" +msgstr "Константан битски проток" #: ../bin/src/ui_deviceproperties.h:379 msgid "Convert all music" @@ -1295,17 +1296,17 @@ msgstr "Претвори сву музику коју уређај не може #: internet/groovesharkservice.cpp:1172 msgid "Copy to clipboard" -msgstr "" +msgstr "Копирај на клипборд" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." -msgstr "Умножи на уређај...." +msgstr "Копирај на уређај...." #: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." -msgstr "Копирај у библиотеку" +msgstr "Копирај у библиотеку..." #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" @@ -1322,25 +1323,25 @@ msgstr "" msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" -msgstr "Не могу да направим Гстример елемент \"%1\" - проверите да ли су инсталирани сви Гстример прикључци" +msgstr "Не могу да направим Гстример елемент „%1“ - проверите да ли су инсталирани сви потребни Гстример прикључци" #: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" -msgstr "Не може да нађе муксер за %1, провери да ли имаш уграђен исправан додатак Гстримера" +msgstr "Не могу да нађем муксер за %1, проверите да ли имате инсталиране потребне прикључке за Гстример" #: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" -msgstr "Не може да нађе енкодер за %1, провери да ли имаш уграђен исправан додатак Гстримера" +msgstr "Не могу да нађем кодер за %1, проверите да ли имате инсталиране потребне прикључке за Гстример" #: internet/lastfmservice.cpp:875 msgid "Couldn't load the last.fm radio station" -msgstr "Не може да учита last.fm радио станицу" +msgstr "Не могу да учитам ласт.фм радио станицу" #: internet/magnatunedownloaddialog.cpp:203 #, qt-format @@ -1355,34 +1356,34 @@ msgstr "Менаџер омота" #: ui/edittagdialog.cpp:443 msgid "Cover art from embedded image" -msgstr "Омотница из уграђене слике" +msgstr "Омот из уграђене слике" #: ui/edittagdialog.cpp:445 #, qt-format msgid "Cover art loaded automatically from %1" -msgstr "Омитница учитана аутоматски на %1" +msgstr "Омот аутоматски учитан из %1" #: ui/edittagdialog.cpp:438 msgid "Cover art manually unset" -msgstr "Омотница није намештена ручно" +msgstr "Омот ручно уклоњен" #: ui/edittagdialog.cpp:447 msgid "Cover art not set" -msgstr "Омотница није намештена" +msgstr "Омот није постављен" #: ui/edittagdialog.cpp:441 #, qt-format msgid "Cover art set from %1" -msgstr "Омотница намештена на %1" +msgstr "Омот постављен из %1" #: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 #, qt-format msgid "Covers from %1" -msgstr "Омотница на %1" +msgstr "Омоти са %1" #: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 msgid "Create a new Grooveshark playlist" -msgstr "" +msgstr "Направи нову Грувшарк листу нумера" #: ../bin/src/ui_playbacksettingspage.h:302 msgid "Cross-fade when changing tracks automatically" @@ -1458,7 +1459,7 @@ msgstr "Ctrl+Shift+O" #: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Shift+T" #: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" @@ -1470,23 +1471,23 @@ msgstr "Ctrl+Up" #: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 msgid "Custom" -msgstr "Прилагођено" +msgstr "посебно" #: ../bin/src/ui_appearancesettingspage.h:286 msgid "Custom image:" -msgstr "" +msgstr "Посебна слика:" #: ../bin/src/ui_notificationssettingspage.h:444 msgid "Custom message settings" -msgstr "" +msgstr "Поставке посебне поруке" #: internet/lastfmservice.cpp:216 msgid "Custom radio" -msgstr "" +msgstr "Посебни радио" #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." -msgstr "Посебно..." +msgstr "посебна..." #: devices/devicekitlister.cpp:123 msgid "DBus path" @@ -1494,9 +1495,9 @@ msgstr "Дбус путања" #: ui/equalizer.cpp:117 msgid "Dance" -msgstr "Денс" +msgstr "денс" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1505,27 +1506,27 @@ msgstr "" #: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" -msgstr "Направљено" +msgstr "направљен" #: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" -msgstr "Измењено" +msgstr "измењен" #: smartplaylists/searchterm.cpp:311 msgid "Days" -msgstr "Dani" +msgstr "дана" #: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "De&fault" -msgstr "Под&разумевано" +msgstr "Под&разумевана" #: core/commandlineoptions.cpp:159 msgid "Decrease the volume by 4%" -msgstr "Утишај јачину звука за 4%" +msgstr "Утишај звук за 4%" #: core/commandlineoptions.cpp:161 msgid "Decrease the volume by percent" -msgstr "" +msgstr "Утишај звук за <вредност> процената" #: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 msgid "Decrease volume" @@ -1533,11 +1534,11 @@ msgstr "Утишај звук" #: ../bin/src/ui_appearancesettingspage.h:280 msgid "Default background image" -msgstr "" +msgstr "Подразумевана" #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" -msgstr "Podrazumevano" +msgstr "Подразумевано" #: ../bin/src/ui_visualisationselector.h:115 msgid "Delay between visualizations" @@ -1546,24 +1547,24 @@ msgstr "Застој између визуелизација" #: playlist/playlistlistcontainer.cpp:73 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" -msgstr "" +msgstr "Обриши" #: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 msgid "Delete Grooveshark playlist" -msgstr "" +msgstr "Обриши Грувшарк листу нумера" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" -msgstr "" +msgstr "Обриши преузете податке" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 #: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" -msgstr "Obriši fajlove" +msgstr "Брисање фајлова" #: devices/deviceview.cpp:220 msgid "Delete from device..." -msgstr "Избруши са уређаја" +msgstr "Обриши са уређаја..." #: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 @@ -1572,19 +1573,19 @@ msgstr "Обриши са диска..." #: ../bin/src/ui_podcastsettingspage.h:244 msgid "Delete played episodes" -msgstr "" +msgstr "Обриши пуштене епизоде" #: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" -msgstr "Обриши претподешавање" +msgstr "Обриши препоставку" #: library/libraryview.cpp:383 msgid "Delete smart playlist" -msgstr "Избриши паметну листу" +msgstr "Обриши паметну листу" #: ../bin/src/ui_organisedialog.h:194 msgid "Delete the original files" -msgstr "Избриши оригиналне фајлове" +msgstr "обриши оригиналне фајлове" #: core/deletefiles.cpp:50 msgid "Deleting files" @@ -1617,7 +1618,7 @@ msgstr "Својства уређаја" #: ../bin/src/ui_podcastsettingspage.h:254 msgid "Device name" -msgstr "Ime uređaja" +msgstr "Име уређаја" #: devices/deviceview.cpp:207 msgid "Device properties..." @@ -1629,7 +1630,7 @@ msgstr "Уређаји" #: ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Дијалог" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1637,15 +1638,15 @@ msgstr "Да ли сте мислили" #: ../bin/src/ui_digitallyimportedsettingspage.h:160 msgid "Digitally Imported" -msgstr "" +msgstr "Диџитали Импортед" #: ../bin/src/ui_digitallyimportedsettingspage.h:164 msgid "Digitally Imported password" -msgstr "" +msgstr "Лозинка" #: ../bin/src/ui_digitallyimportedsettingspage.h:162 msgid "Digitally Imported username" -msgstr "" +msgstr "Корисничко име" #: ../bin/src/ui_networkproxysettingspage.h:159 msgid "Direct internet connection" @@ -1654,7 +1655,7 @@ msgstr "Директна интернет веза" #: ../bin/src/ui_magnatunedownloaddialog.h:145 #: ../bin/src/ui_transcodedialog.h:207 msgid "Directory" -msgstr "Фасцикла" +msgstr "фасцикла" #: ../bin/src/ui_notificationssettingspage.h:440 msgid "Disable duration" @@ -1662,21 +1663,21 @@ msgstr "Онемогући трајање" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" -msgstr "" +msgstr "Искључи стварање расположења" #: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 msgid "Disabled" -msgstr "Искључено" +msgstr "Онемогућено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" -msgstr "Диск" +msgstr "диск" #: ../bin/src/ui_transcoderoptionsspeex.h:234 msgid "Discontinuous transmission" -msgstr "Непрекидно пребацивање" +msgstr "Испрекидан пренос" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 #: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 @@ -1689,15 +1690,15 @@ msgstr "Прикажи екрански преглед" #: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" -msgstr "Уради поновно скенирање библиотеке" +msgstr "Поново скенирај библиотеку" #: ../bin/src/ui_deviceproperties.h:377 msgid "Do not convert any music" -msgstr "Немој претварати омотницу" +msgstr "Не претварај музику" #: ../bin/src/ui_albumcoverexport.h:209 msgid "Do not overwrite" -msgstr "" +msgstr "Не пребрисуј" #: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" @@ -1705,11 +1706,11 @@ msgstr "Не понављај" #: library/libraryview.cpp:405 msgid "Don't show in various artists" -msgstr "Немој показивати различите извођаче" +msgstr "Не приказуј у разним извођачима" #: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" -msgstr "Не пуштај нумере наизменично" +msgstr "Не пуштај насумично" #: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 msgid "Don't stop!" @@ -1717,20 +1718,20 @@ msgstr "Не заустављај!" #: internet/somafmservice.cpp:103 msgid "Donate" -msgstr "" +msgstr "Донирај" #: devices/deviceview.cpp:115 msgid "Double click to open" -msgstr "Кликни двапут да отвориш" +msgstr "Кликните двапут да отворите" #: ../bin/src/ui_behavioursettingspage.h:214 msgid "Double clicking a song will..." -msgstr "Двостуки клик на песму ће..." +msgstr "Двоклик на песму ће да је..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" -msgstr "" +msgstr "Преузми %n епизода" #: internet/magnatunedownloaddialog.cpp:252 msgid "Download directory" @@ -1738,23 +1739,23 @@ msgstr "Фасцикла за преузимање" #: ../bin/src/ui_podcastsettingspage.h:240 msgid "Download episodes to" -msgstr "" +msgstr "Преузимај епизоде у" #: ../bin/src/ui_magnatunesettingspage.h:161 msgid "Download membership" -msgstr "Преузмите чланство" +msgstr "преузимања садржаја" #: ../bin/src/ui_podcastsettingspage.h:241 msgid "Download new episodes automatically" -msgstr "" +msgstr "Преузимај нове епизоде аутоматски" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" -msgstr "" +msgstr "Преузмите апликацију за Андроид" #: internet/magnatuneservice.cpp:276 msgid "Download this album" @@ -1762,40 +1763,40 @@ msgstr "Преузми овај албум" #: internet/jamendoservice.cpp:417 msgid "Download this album..." -msgstr "Preuzmi ovaj albm" +msgstr "Преузми овај албум..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" -msgstr "" +msgstr "Преузми ову епизоду" #: ../bin/src/ui_spotifysettingspage.h:215 msgid "Download..." -msgstr "Preuzmi..." +msgstr "Преузми..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." -msgstr "" +msgstr "Преузимам (%1%)..." #: internet/icecastservice.cpp:101 msgid "Downloading Icecast directory" -msgstr "Преузимање Icecast директоријума" +msgstr "Преузимам Ајскаст директоријум" #: internet/jamendoservice.cpp:187 msgid "Downloading Jamendo catalogue" -msgstr "Преузимање Jamendo каталога" +msgstr "Преузимам Џамендов каталог" #: internet/magnatuneservice.cpp:158 msgid "Downloading Magnatune catalogue" -msgstr "Преузми Магнатјунов каталог" +msgstr "Преузимам Магнатјунов каталог" #: internet/spotifyblobdownloader.cpp:44 msgid "Downloading Spotify plugin" -msgstr "Преузимање Spotify додатка" +msgstr "Преузимам Спотифај прикључак" #: musicbrainz/tagfetcher.cpp:102 msgid "Downloading metadata" -msgstr "Преузимање метаподатака" +msgstr "Преузимам метаподатке" #: ui/notificationssettingspage.cpp:37 msgid "Drag to reposition" @@ -1803,32 +1804,32 @@ msgstr "Одвуците га где желите" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" -msgstr "" +msgstr "Дропбокс" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "дабстеп" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Трајање" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" -msgstr "Промењив режим је укључен" +msgstr "Динамички режим је укључен" #: internet/jamendoservice.cpp:113 library/library.cpp:93 msgid "Dynamic random mix" -msgstr "Промењиво насумично мешање" +msgstr "Динамички насумични микс" #: library/libraryview.cpp:381 msgid "Edit smart playlist..." -msgstr "Измени паметну листу" +msgstr "Уреди паметну листу..." #: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." -msgstr "" +msgstr "Уреди ознаку „%1“..." #: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." @@ -1836,20 +1837,20 @@ msgstr "Уреди ознаку..." #: ../bin/src/ui_edittagdialog.h:695 msgid "Edit tags" -msgstr "Измени ознаке" +msgstr "Уреди ознаке" #: ../bin/src/ui_edittagdialog.h:662 msgid "Edit track information" -msgstr "Уреди податке о нумери" +msgstr "Уређивање података нумере" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 #: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." -msgstr "Уреди податке о нумери..." +msgstr "Уреди податке нумере..." #: library/libraryview.cpp:397 msgid "Edit tracks information..." -msgstr "Измени податке о нумери" +msgstr "Уреди податке нумера.." #: internet/savedradio.cpp:101 msgid "Edit..." @@ -1879,23 +1880,23 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" -msgstr "" +msgstr "Комплексност кодирања" #: ../bin/src/ui_transcoderoptionsmp3.h:197 msgid "Encoding engine quality" -msgstr "" +msgstr "Квалитет мотора кодирања" #: ../bin/src/ui_transcoderoptionsspeex.h:224 msgid "Encoding mode" -msgstr "" +msgstr "Режим кодирања" #: ../bin/src/ui_addpodcastbyurl.h:76 msgid "Enter a URL" -msgstr "" +msgstr "Унос УРЛ-а" #: ../bin/src/ui_coverfromurldialog.h:103 msgid "Enter a URL to download a cover from the Internet:" -msgstr "" +msgstr "Унесите УРЛ за преузимање омота са интернета:" #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" @@ -1903,17 +1904,17 @@ msgstr "" #: playlist/playlisttabbar.cpp:137 msgid "Enter a new name for this playlist" -msgstr "Унеси нови назив листе нумера" +msgstr "Унесите ново име за ову листу нумера" #: ../bin/src/ui_lastfmstationdialog.h:93 msgid "" "Enter an artist or tag to start listening to Last.fm radio." -msgstr "Унесите извођача or ознаку да почнете са слушањем ЛастФМ радиа." +msgstr "Унесите извођача или ознаку да почнете да слушате Ласт.фм радио." #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" -msgstr "" +msgstr "Унесите појмове за тражење изнад да бисте пронашли музику на вашем рачунару или на интернету" #: ../bin/src/ui_itunessearchpage.h:77 msgid "Enter search terms below to find podcasts in the iTunes Store" @@ -1934,7 +1935,7 @@ msgstr "Унеси УРЛ интернет радио ток" #: playlist/playlistlistcontainer.cpp:172 msgid "Enter the name of the folder" -msgstr "" +msgstr "Унесите име фасцикле" #: ../bin/src/ui_networkremotesettingspage.h:198 msgid "Enter this IP in the App to connect to Clementine." @@ -1942,7 +1943,7 @@ msgstr "" #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" -msgstr "Читава колекција" +msgstr "читаву колекцију" #: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" @@ -1968,108 +1969,108 @@ msgstr "Грешка повезивања МТП уређаја" #: ui/organiseerrordialog.cpp:55 msgid "Error copying songs" -msgstr "Грешка при умножавању песама" +msgstr "Грешка копирања песама" #: ui/organiseerrordialog.cpp:60 msgid "Error deleting songs" -msgstr "Грешка при брисању песама" +msgstr "Грешка брисања песама" #: internet/spotifyblobdownloader.cpp:215 msgid "Error downloading Spotify plugin" -msgstr "Грешка преузимања Spotify додатка" +msgstr "Грешка преузимања Спотифај прикључка" #: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" -msgstr "Грешка при учитавању %1" +msgstr "Грешка учитавања %1" #: internet/digitallyimportedservicebase.cpp:203 #: internet/digitallyimportedurlhandler.cpp:89 msgid "Error loading di.fm playlist" -msgstr "" +msgstr "Грешка учитавања di.fm листе нумера" #: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" -msgstr "Грешка при обради %1: %2" +msgstr "Грешка обраде %1: %2" #: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" -msgstr "Грешка приликом учитавања аудио CD-a" +msgstr "Грешка приликом учитавања аудио ЦД-а" #: library/library.cpp:63 msgid "Ever played" -msgstr "Икада пуштена" +msgstr "Већ пуштано" #: ../bin/src/ui_podcastsettingspage.h:232 msgid "Every 10 minutes" -msgstr "" +msgstr "сваких 10 минута" #: ../bin/src/ui_podcastsettingspage.h:238 msgid "Every 12 hours" -msgstr "" +msgstr "сваких 12 сати" #: ../bin/src/ui_podcastsettingspage.h:236 msgid "Every 2 hours" -msgstr "" +msgstr "свака 2 сата" #: ../bin/src/ui_podcastsettingspage.h:233 msgid "Every 20 minutes" -msgstr "" +msgstr "сваких 20 минута" #: ../bin/src/ui_podcastsettingspage.h:234 msgid "Every 30 minutes" -msgstr "" +msgstr "сваких 30 минута" #: ../bin/src/ui_podcastsettingspage.h:237 msgid "Every 6 hours" -msgstr "" +msgstr "сваких 6 сати" #: ../bin/src/ui_podcastsettingspage.h:235 msgid "Every hour" -msgstr "" +msgstr "сваког сата" #: ../bin/src/ui_playbacksettingspage.h:303 msgid "Except between tracks on the same album or in the same CUE sheet" -msgstr "Осим између трака на истом албуму или на истом CUE листу" +msgstr "Осим између нумера на истом албуму или на истом ЦУЕ листу" #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "Постојећи омоти" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" -msgstr "" +msgstr "Рашири" #: widgets/loginstatewidget.cpp:142 #, qt-format msgid "Expires on %1" -msgstr "" +msgstr "Истиче %1" #: ../bin/src/ui_albumcovermanager.h:226 msgid "Export Covers" -msgstr "" +msgstr "Извези омоте" #: ../bin/src/ui_albumcoverexport.h:203 msgid "Export covers" -msgstr "" +msgstr "Извоз омота" #: ../bin/src/ui_albumcoverexport.h:206 msgid "Export downloaded covers" -msgstr "" +msgstr "Извези преузете омоте" #: ../bin/src/ui_albumcoverexport.h:207 msgid "Export embedded covers" -msgstr "" +msgstr "Извези уграђене омоте" #: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 msgid "Export finished" -msgstr "" +msgstr "Извоз завршен" #: ui/albumcovermanager.cpp:786 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "" +msgstr "Извезено %1 омота од %2 (%3 прескочено)" #: ../bin/src/ui_mainwindow.h:682 msgid "F1" @@ -2103,7 +2104,7 @@ msgstr "ФЛАЦ" #: ../bin/src/ui_playbacksettingspage.h:306 msgid "Fade out on pause / fade in on resume" -msgstr "" +msgstr "Утапај при паузи/настављању" #: ../bin/src/ui_playbacksettingspage.h:300 msgid "Fade out when stopping a track" @@ -2111,43 +2112,43 @@ msgstr "Утапај нумеру при заустављању" #: ../bin/src/ui_playbacksettingspage.h:299 msgid "Fading" -msgstr "С утапањем" +msgstr "Утапање" #: ../bin/src/ui_playbacksettingspage.h:304 #: ../bin/src/ui_playbacksettingspage.h:307 msgid "Fading duration" -msgstr "Трајање утапања" +msgstr "Трајање претапања" #: ui/mainwindow.cpp:1690 msgid "Failed reading CD drive" -msgstr "" +msgstr "Неуспех читања ЦД уређаја" #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" -msgstr "" +msgstr "Неуспех добављања директоријума" #: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 #: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 #: podcasts/itunessearchpage.cpp:82 msgid "Failed to fetch podcasts" -msgstr "" +msgstr "Неуспех добављања подкаста" #: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 msgid "Failed to load podcast" -msgstr "" +msgstr "Неуспех учитавања подкаста" #: podcasts/podcasturlloader.cpp:167 msgid "Failed to parse the XML for this RSS feed" -msgstr "" +msgstr "Неуспех рашчлањивања ИксМЛ-а за овај РСС довод" #: ../bin/src/ui_transcoderoptionsflac.h:82 #: ../bin/src/ui_transcoderoptionsmp3.h:200 msgid "Fast" -msgstr "Brzo" +msgstr "брз" #: internet/groovesharkservice.cpp:617 msgid "Favorites" -msgstr "" +msgstr "Омиљене" #: library/library.cpp:77 msgid "Favourite tracks" @@ -2167,23 +2168,23 @@ msgstr "Добављање завршено" #: internet/subsonicservice.cpp:241 msgid "Fetching Subsonic library" -msgstr "" +msgstr "Добављам Субсоникову библиотеку" #: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" -msgstr "Грешка добављања омотнице" +msgstr "Грешка добављања омота" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Формат фајла" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "наставак фајла" #: ../bin/src/ui_deviceproperties.h:384 msgid "File formats" -msgstr "" +msgstr "Формати фајлова" #: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" @@ -2191,7 +2192,7 @@ msgstr "име фајла" #: playlist/playlist.cpp:1232 msgid "File name (without path)" -msgstr "Име фајла (без путање)" +msgstr "име фајла (без путање)" #: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" @@ -2205,7 +2206,7 @@ msgstr "тип фајла" #: ../bin/src/ui_transcodedialog.h:208 msgid "Filename" -msgstr "Име фајла" +msgstr "име фајла" #: ui/mainwindow.cpp:242 msgid "Files" @@ -2213,19 +2214,19 @@ msgstr "Фајлови" #: ../bin/src/ui_transcodedialog.h:205 msgid "Files to transcode" -msgstr "Фајлови за транскодирање" +msgstr "Фајлови за прекодирање" #: smartplaylists/querywizardplugin.cpp:90 msgid "Find songs in your library that match the criteria you specify." -msgstr "Пронађи песме у твојој библиотеци које одговарају критеријуму који си прецизирао." +msgstr "Пронађите песме у библиотеци које одговарају одређеном критеријуму." #: musicbrainz/tagfetcher.cpp:55 msgid "Fingerprinting song" -msgstr "Утискивање песме" +msgstr "Идентификујем песму" #: smartplaylists/wizard.cpp:85 msgid "Finish" -msgstr "Završi" +msgstr "Заврши" #: ../bin/src/ui_groupbydialog.h:125 msgid "First level" @@ -2237,7 +2238,7 @@ msgstr "ФЛАЦ" #: ../bin/src/ui_songinfosettingspage.h:156 msgid "Font size" -msgstr "Veličina fonta" +msgstr "Величина фонта" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." @@ -2245,7 +2246,7 @@ msgstr "Због лиценцираниг разлога Spotify подршка #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" -msgstr "Присили моно енкодирање" +msgstr "Присили моно кодирање" #: devices/deviceview.cpp:204 devices/deviceview.cpp:310 #: devices/deviceview.cpp:314 @@ -2256,7 +2257,7 @@ msgstr "Заборави уређај" msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." -msgstr "Заборављање уређаја ће га уклоните из ове листе и Клементина ће морати поново да скенира све песме следећи пут када га повежете." +msgstr "Заборављањем уређаја уклонићете га са списка и Клементина ће морати поново да скенира све песме следећи пут када га повежете." #: ../bin/src/ui_deviceviewcontainer.h:98 #: ../bin/src/ui_searchproviderstatuswidget.h:94 @@ -2293,7 +2294,7 @@ msgstr "Број кадрова" #: ../bin/src/ui_transcoderoptionsspeex.h:236 msgid "Frames per buffer" -msgstr "" +msgstr "Сличица по баферу" #: internet/lastfmservice.cpp:224 msgid "Friends" @@ -2301,19 +2302,19 @@ msgstr "Пријатељи" #: moodbar/moodbarrenderer.cpp:157 msgid "Frozen" -msgstr "" +msgstr "залеђен" #: ui/equalizer.cpp:120 msgid "Full Bass" -msgstr "Пуни бас" +msgstr "пуни бас" #: ui/equalizer.cpp:122 msgid "Full Bass + Treble" -msgstr "Пуни бас + сопран" +msgstr "пуни бас + сопран" #: ui/equalizer.cpp:121 msgid "Full Treble" -msgstr "Пуни сопран" +msgstr "пуни сопран" #: ../bin/src/ui_playbacksettingspage.h:319 msgid "GStreamer audio engine" @@ -2321,18 +2322,18 @@ msgstr "Гстример звучни мотор" #: ui/settingsdialog.cpp:131 msgid "General" -msgstr "" +msgstr "Опште" #: ../bin/src/ui_notificationssettingspage.h:437 msgid "General settings" msgstr "Опште поставке" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" -msgstr "Жанр" +msgstr "жанр" #: internet/groovesharkservice.cpp:542 msgid "Get a URL to share this Grooveshark playlist" @@ -2348,11 +2349,11 @@ msgstr "" #: internet/somafmservice.cpp:114 msgid "Getting channels" -msgstr "Добављање канала" +msgstr "Добављам канале" #: internet/digitallyimportedservicebase.cpp:108 msgid "Getting streams" -msgstr "" +msgstr "Добављам токове" #: ../bin/src/ui_addstreamdialog.h:116 msgid "Give it a name:" @@ -2360,90 +2361,90 @@ msgstr "Дајте јој име:" #: ../bin/src/ui_addpodcastbyurl.h:78 msgid "Go" -msgstr "" +msgstr "Иди" #: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" -msgstr "Иди на нову картицу листе" +msgstr "Иди на следећи језичак листе" #: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" -msgstr "Иди на предходну картицу листе" +msgstr "Иди на претходни језичак листе" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" -msgstr "" +msgstr "Гугл Драјв" #: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" -msgstr "Набавио %1 омота од %2 (%3 неуспешно)" +msgstr "Добављено %1 омота од %2 (%3 неуспешно)" #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" -msgstr "Посиви непостојеће песме у листи" +msgstr "Посиви непостојеће песме у листи нумера" #: ../bin/src/ui_groovesharksettingspage.h:112 msgid "Grooveshark" -msgstr "" +msgstr "Грувшарк" #: internet/groovesharkservice.cpp:408 msgid "Grooveshark login error" -msgstr "Grooveshark prijava greške" +msgstr "Грешка пријаве на Грувшарк" #: internet/groovesharkservice.cpp:1162 msgid "Grooveshark playlist's URL" -msgstr "" +msgstr "УРЛ листе нумера Грувшарка" #: internet/groovesharkservice.cpp:603 msgid "Grooveshark radio" -msgstr "" +msgstr "Грувшарк радио" #: internet/groovesharkservice.cpp:1140 msgid "Grooveshark song's URL" -msgstr "" +msgstr "УРЛ песме Грувшарка" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." -msgstr "Групиши библиотеку по" +msgstr "Груписање библиотеке" #: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 msgid "Group by" -msgstr "Групиши по" +msgstr "Груписање" #: library/libraryfilterwidget.cpp:110 msgid "Group by Album" -msgstr "Групиши по албумима" +msgstr "албум" #: library/libraryfilterwidget.cpp:104 msgid "Group by Artist" -msgstr "Групиши по извођачима" +msgstr "извођач" #: library/libraryfilterwidget.cpp:106 msgid "Group by Artist/Album" -msgstr "Групиши по извођачима и албумима" +msgstr "извођач/албум" #: library/libraryfilterwidget.cpp:108 msgid "Group by Artist/Year - Album" -msgstr "Геупиши по извођачима и годинама албума" +msgstr "извођач/година — албум" #: library/libraryfilterwidget.cpp:112 msgid "Group by Genre/Album" -msgstr "Уреди према жанровима и албумима" +msgstr "жанр/албум" #: library/libraryfilterwidget.cpp:114 msgid "Group by Genre/Artist/Album" -msgstr "Групиши према Жанру/Извођачу/Албуму" +msgstr "жанр/извођач/албум" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" -msgstr "" +msgstr "груписање" #: podcasts/podcasturlloader.cpp:196 msgid "HTML page did not contain any RSS feeds" -msgstr "" +msgstr "ХТМЛ страница не садржи ниједан РСС довод" #: internet/subsonicsettingspage.cpp:135 msgid "" @@ -2452,11 +2453,11 @@ msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" -msgstr "HTTP посредник" +msgstr "ХТТП прокси" #: moodbar/moodbarrenderer.cpp:158 msgid "Happy" -msgstr "" +msgstr "срећан" #: ../bin/src/ui_deviceproperties.h:371 msgid "Hardware information" @@ -2468,33 +2469,33 @@ msgstr "Подаци о хардверу су доступни само док #: ../bin/src/ui_transcoderoptionsmp3.h:202 msgid "High" -msgstr "Висок" +msgstr "висок" #: analyzers/analyzercontainer.cpp:64 #: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "High (%1 fps)" -msgstr "Високо (%1 fps)" +msgstr "висок (%1 fps)" #: visualisations/visualisationcontainer.cpp:119 msgid "High (1024x1024)" -msgstr "Висока (1024x1024)" +msgstr "висок (1024x1024)" #: internet/subsonicsettingspage.cpp:112 msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "Домаћин није нађен, проверите УРЛ сервера. Пример: http://localhost:4040/" #: smartplaylists/searchterm.cpp:310 msgid "Hours" -msgstr "Часова" +msgstr "сати" #: core/backgroundstreams.cpp:30 msgid "Hypnotoad" -msgstr "" +msgstr "Хипножабац" #: ../bin/src/ui_magnatunesettingspage.h:159 msgid "I don't have a Magnatune account" -msgstr "Немам налог на Мегатјуну" +msgstr "немам налог на Магнатјуну" #: ../bin/src/ui_deviceproperties.h:370 msgid "Icon" @@ -2502,33 +2503,33 @@ msgstr "Икона" #: widgets/fancytabwidget.cpp:674 msgid "Icons on top" -msgstr "Иконице на врх" +msgstr "Иконе на врху" #: musicbrainz/tagfetcher.cpp:86 msgid "Identifying song" -msgstr "Препознавање песме" +msgstr "Идентификујем песму" #: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." -msgstr "Ако наставиш, овај уређај ће радити спорије и умножене песме на њему можда неће радити." +msgstr "Ако наставите, овај уређај ће радити споро а песме копиране на њега можда неће радити." #: ../bin/src/ui_addpodcastbyurl.h:77 msgid "If you know the URL of a podcast, enter it below and press Go." -msgstr "" +msgstr "Ако знате УРЛ подкаста, унесите га испод и кликните на „Иди“." #: ../bin/src/ui_organisedialog.h:204 msgid "Ignore \"The\" in artist names" -msgstr "Игонориши \"The\" у имену извођача" +msgstr "Игонориши „The“ у имену извођача" #: ui/albumcoverchoicecontroller.cpp:43 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" +msgstr "Слике (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" #: ui/albumcoverchoicecontroller.cpp:45 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" +msgstr "Слике (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" #: core/utilities.cpp:147 #, qt-format @@ -2544,7 +2545,7 @@ msgstr "" msgid "" "In dynamic mode new tracks will be chosen and added to the playlist every " "time a song finishes." -msgstr "У промењивом режиму нове нумере ће бити изабране и додате листи сваки пут кад се песма заврши." +msgstr "У динамичком режиму нове нумере ће бити изабране и додате на листу сваки пут кад се песма заврши." #: internet/spotifyservice.cpp:360 msgid "Inbox" @@ -2556,7 +2557,7 @@ msgstr "Укључи омоте албума у обавештења" #: ../bin/src/ui_querysearchpage.h:118 msgid "Include all songs" -msgstr "Uključi sve pesme" +msgstr "Укључи све песме" #: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." @@ -2572,40 +2573,40 @@ msgstr "" #: core/commandlineoptions.cpp:158 msgid "Increase the volume by 4%" -msgstr "Повећај јачину за 4%" +msgstr "Појачај звук за 4%" #: core/commandlineoptions.cpp:160 msgid "Increase the volume by percent" -msgstr "" +msgstr "Појачај звук за <вредност> процената" #: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" -msgstr "Повећај јачину" +msgstr "Појачај звук" #: internet/cloudfileservice.cpp:136 #, qt-format msgid "Indexing %1" -msgstr "" +msgstr "Индексирам %1" #: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 msgid "Information" -msgstr "информација" +msgstr "Подаци" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Опције улаза" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." -msgstr "Убаци..." +msgstr "Уметни..." #: internet/spotifysettingspage.cpp:75 msgid "Installed" -msgstr "Instalirano" +msgstr "Инсталиран" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" -msgstr "" +msgstr "Провера интегритета" #: ui/mainwindow.cpp:244 msgid "Internet" @@ -2613,7 +2614,7 @@ msgstr "Интернет" #: ui/settingsdialog.cpp:153 msgid "Internet providers" -msgstr "" +msgstr "Интернет сервиси" #: internet/lastfmservice.cpp:433 msgid "Invalid API key" @@ -2629,11 +2630,11 @@ msgstr "Неисправан начин" #: internet/lastfmservice.cpp:429 msgid "Invalid parameters" -msgstr "Netačni parametri" +msgstr "Неисправни параметри" #: internet/lastfmservice.cpp:430 msgid "Invalid resource specified" -msgstr "Наведени ресурс неважећи" +msgstr "Наведен неисправан ресурс" #: internet/lastfmservice.cpp:425 msgid "Invalid service" @@ -2645,15 +2646,15 @@ msgstr "Неважећи кључ сесије" #: internet/groovesharkservice.cpp:401 msgid "Invalid username and/or password" -msgstr "Pogrešno koriničko ime i / ili šifra" +msgstr "Неисправно корисничко име и/или лозинка" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Обрни избор" #: internet/jamendoservice.cpp:127 msgid "Jamendo" -msgstr "Jamendo" +msgstr "Џамендо" #: internet/jamendoservice.cpp:109 msgid "Jamendo Most Listened Tracks" @@ -2661,23 +2662,23 @@ msgstr "Џамендо најслушаније нумере" #: internet/jamendoservice.cpp:107 msgid "Jamendo Top Tracks" -msgstr "Џамендо врх нумере" +msgstr "Џамендо најбоље нумере" #: internet/jamendoservice.cpp:103 msgid "Jamendo Top Tracks of the Month" -msgstr "Џамендо врх нумере овог месеца" +msgstr "Џамендо најбоље нумере овог месеца" #: internet/jamendoservice.cpp:105 msgid "Jamendo Top Tracks of the Week" -msgstr "Џамендо врх нумере ове седмице" +msgstr "Џамендо најбоље нумере ове седмице" #: internet/jamendoservice.cpp:171 msgid "Jamendo database" -msgstr "Jamendo baza podataka" +msgstr "Џамендо база података" #: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" -msgstr "Скочи на нумеру која се тренутно пушта" +msgstr "Скочи на тренутно пуштену нумеру" #: wiimotedev/wiimoteshortcutgrabber.cpp:72 #, qt-format @@ -2693,11 +2694,11 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:193 msgid "Keep running in the background when the window is closed" -msgstr "" +msgstr "Настави рад у позадини кад се прозор затвори" #: ../bin/src/ui_organisedialog.h:193 msgid "Keep the original files" -msgstr "Задржи оригиналне фајлове" +msgstr "задржи оригиналне фајлове" #: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" @@ -2705,32 +2706,32 @@ msgstr "Мачићи" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" -msgstr "Jezik" +msgstr "Језик" #: ui/equalizer.cpp:123 msgid "Laptop/Headphones" -msgstr "Лаптоп/слушалице" +msgstr "лаптоп/слушалице" #: ui/equalizer.cpp:124 msgid "Large Hall" -msgstr "Велика дворана" +msgstr "велика дворана" #: widgets/nowplayingwidget.cpp:94 msgid "Large album cover" -msgstr "Велики омот албума" +msgstr "Велики омот" #: widgets/fancytabwidget.cpp:670 msgid "Large sidebar" -msgstr "Велики" +msgstr "Широка трака" #: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" -msgstr "Последње пуштано" +msgstr "последњи пут пуштана" #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" -msgstr "ЛастФМ" +msgstr "Ласт.фм" #: internet/lastfmservice.cpp:85 #, qt-format @@ -2741,7 +2742,7 @@ msgstr "" #: internet/lastfmservice.cpp:722 #, qt-format msgid "Last.fm Library - %1" -msgstr "ЛастФМ Библиотека - %1" +msgstr "Ласт.фм библиотека - %1" #: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 #: internet/lastfmservice.cpp:260 @@ -2753,17 +2754,17 @@ msgstr "" #: internet/lastfmservice.cpp:265 #, qt-format msgid "Last.fm Neighbor Radio - %1" -msgstr "ЛастФМ комшијски радио -%1" +msgstr "Ласт.фм комшијски радио - %1" #: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 #, qt-format msgid "Last.fm Radio Station - %1" -msgstr "ЛастФМ радио станица - %1" +msgstr "Ласт.фм радио станица - %1" #: internet/lastfmservice.cpp:83 #, qt-format msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Сличан Извођач са %1" +msgstr "Last.fm слични Извођачи са %1" #: internet/lastfmservice.cpp:84 #, qt-format @@ -2772,27 +2773,27 @@ msgstr "" #: internet/lastfmservice.cpp:437 msgid "Last.fm is currently busy, please try again in a few minutes" -msgstr "ЛастФМ је тренутно заузет, молимо Вас пробајте поново за неколико минута" +msgstr "Ласт.фм је тренутно заузет, покушајте поново за неколико минута" #: ../bin/src/ui_lastfmsettingspage.h:154 msgid "Last.fm password" -msgstr "ЛастФМ лозинка" +msgstr "Лозинка" #: songinfo/lastfmtrackinfoprovider.cpp:78 msgid "Last.fm play counts" -msgstr "" +msgstr "Ласт.фм број пуштања" #: songinfo/lastfmtrackinfoprovider.cpp:131 msgid "Last.fm tags" -msgstr "" +msgstr "Ласт.фм ознаке" #: ../bin/src/ui_lastfmsettingspage.h:152 msgid "Last.fm username" -msgstr "ЛастФМ корисничко име" +msgstr "Корисничко име" #: songinfo/lastfmtrackinfoprovider.cpp:111 msgid "Last.fm wiki" -msgstr "" +msgstr "Ласт.фм вики" #: library/library.cpp:87 msgid "Least favourite tracks" @@ -2800,16 +2801,16 @@ msgstr "Најмање омиљене нумере" #: ../bin/src/ui_playbacksettingspage.h:326 msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Оставите празно за подразмевано. Примери: \"/dev/dsp\", \"front\", итд.." +msgstr "Оставите празно за подразмевано. Примери: „/dev/dsp“, „front“, итд." #: ../bin/src/ui_equalizer.h:172 msgid "Left" -msgstr "" +msgstr "Лево" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" -msgstr "Трајање" +msgstr "дужина" #: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" @@ -2821,7 +2822,7 @@ msgstr "Напредно груписање библиотеке" #: ui/mainwindow.cpp:2145 msgid "Library rescan notice" -msgstr "" +msgstr "Обавештење о поновном скенирању библиотеке" #: smartplaylists/querywizardplugin.cpp:86 msgid "Library search" @@ -2829,7 +2830,7 @@ msgstr "Претраживање библиотеке" #: ../bin/src/ui_querysortpage.h:140 msgid "Limits" -msgstr "Ograničenja" +msgstr "Ограничења" #: internet/groovesharkservice.cpp:604 msgid "" @@ -2838,7 +2839,7 @@ msgstr "" #: ui/equalizer.cpp:125 msgid "Live" -msgstr "Уживо" +msgstr "уживо" #: ../bin/src/ui_albumcovermanager.h:217 msgid "Load" @@ -2846,35 +2847,35 @@ msgstr "Учитај" #: ../bin/src/ui_coverfromurldialog.h:102 msgid "Load cover from URL" -msgstr "Учитај омот из УРЛ" +msgstr "Учитавање омот са УРЛ-а" #: ui/albumcoverchoicecontroller.cpp:61 msgid "Load cover from URL..." -msgstr "Учитај омот из УРЛ..." +msgstr "Учитај омот са УРЛ-а..." #: ui/albumcoverchoicecontroller.cpp:98 msgid "Load cover from disk" -msgstr "" +msgstr "Учитавање омота са диска" #: ui/albumcoverchoicecontroller.cpp:59 msgid "Load cover from disk..." -msgstr "Учитај омот са диска" +msgstr "Учитај омот са диска..." #: playlist/playlistcontainer.cpp:286 msgid "Load playlist" -msgstr "Учитај листу нумера" +msgstr "Учитавање листе нумера" #: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." -msgstr "Учитај листу нумера" +msgstr "Учитај листу нумера..." #: internet/lastfmservice.cpp:884 msgid "Loading Last.fm radio" -msgstr "Учитавам ЛастФМ радио" +msgstr "Учитавам Ласт.фм радио" #: devices/mtploader.cpp:42 msgid "Loading MTP device" -msgstr "Учивање МТП уређаја" +msgstr "Учитавам МТП уређај" #: devices/gpodloader.cpp:46 msgid "Loading iPod database" @@ -2882,11 +2883,11 @@ msgstr "Учитавам Ајподову базу података" #: smartplaylists/generatorinserter.cpp:52 msgid "Loading smart playlist" -msgstr "Учитавање паметне листе" +msgstr "Учитавам паметну листу" #: library/librarymodel.cpp:139 msgid "Loading songs" -msgstr "Учитавање песама" +msgstr "Учитавам песме" #: internet/digitallyimportedurlhandler.cpp:67 #: internet/somafmurlhandler.cpp:58 @@ -2899,17 +2900,17 @@ msgstr "Учитавам нумере" #: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" -msgstr "Учитавање инфо песама" +msgstr "Учитавам податке нумера" #: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 #: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 msgid "Loading..." -msgstr "Učitavanje" +msgstr "Учитавам..." #: core/commandlineoptions.cpp:167 msgid "Loads files/URLs, replacing current playlist" -msgstr "Учитава датотеке/УРЛ-е, замењујући тренутну листу" +msgstr "Учитава датотеке/УРЛ-ове, замењујући тренутну листу" #: ../bin/src/ui_digitallyimportedsettingspage.h:163 #: ../bin/src/ui_groovesharksettingspage.h:116 @@ -2925,11 +2926,11 @@ msgstr "Пријава" #: podcasts/podcastsettingspage.cpp:119 msgid "Login failed" -msgstr "" +msgstr "Пријава није успела" #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" -msgstr "" +msgstr "дугорочно предвиђање (LTP)" #: ../bin/src/ui_mainwindow.h:664 msgid "Love" @@ -2939,24 +2940,24 @@ msgstr "Воли" #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" -msgstr "Ниско (%1 fps)" +msgstr "низак (%1 fps)" #: visualisations/visualisationcontainer.cpp:117 msgid "Low (256x256)" -msgstr "Ниско (256X256)" +msgstr "низак (256X256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" -msgstr "" +msgstr "ниска комплексност (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" -msgstr "Текстови" +msgstr "Стихови" #: songinfo/ultimatelyricsprovider.cpp:156 #, qt-format msgid "Lyrics from %1" -msgstr "Текстови из %1" +msgstr "Стихови са %1" #: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" @@ -2964,15 +2965,15 @@ msgstr "MП3" #: ../bin/src/ui_digitallyimportedsettingspage.h:177 msgid "MP3 256k" -msgstr "" +msgstr "МП3 256k" #: ../bin/src/ui_digitallyimportedsettingspage.h:170 msgid "MP3 96k" -msgstr "" +msgstr "МП3 96k" #: core/song.cpp:341 msgid "MP4 AAC" -msgstr "" +msgstr "МП4 ААЦ" #: core/song.cpp:342 msgid "MPC" @@ -2992,11 +2993,11 @@ msgstr "Завршено преузимање са Магнатјуна" #: ../bin/src/ui_transcoderoptionsaac.h:134 msgid "Main profile (MAIN)" -msgstr "Главни налог (MAIN)" +msgstr "главни профил (MAIN)" #: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" -msgstr "" +msgstr "Ентерпрајз!" #: internet/spotifyservice.cpp:533 msgid "Make playlist available offline" @@ -3008,24 +3009,24 @@ msgstr "Лош одговор" #: ../bin/src/ui_networkproxysettingspage.h:160 msgid "Manual proxy configuration" -msgstr "Ручно подешавање посредника" +msgstr "Ручно подешавање проксија" #: ../bin/src/ui_podcastsettingspage.h:231 #: ../bin/src/ui_podcastsettingspage.h:245 msgid "Manually" -msgstr "" +msgstr "ручно" #: devices/deviceproperties.cpp:153 msgid "Manufacturer" msgstr "Произвођач" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" -msgstr "" +msgstr "Означи као преслушано" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" -msgstr "" +msgstr "Означи као ново" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" @@ -3037,29 +3038,29 @@ msgstr "Упореди један или више тражених термин #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" -msgstr "Највећи битрејт" +msgstr "Највећи битски проток" #: analyzers/analyzercontainer.cpp:63 #: visualisations/visualisationcontainer.cpp:108 #, qt-format msgid "Medium (%1 fps)" -msgstr "Осредње (%1 fps)" +msgstr "средњи (%1 fps)" #: visualisations/visualisationcontainer.cpp:118 msgid "Medium (512x512)" -msgstr "Средњи (512X512)" +msgstr "средњи (512X512)" #: ../bin/src/ui_magnatunesettingspage.h:156 msgid "Membership type" -msgstr "Врста чланства" +msgstr "Тип чланства" #: ../bin/src/ui_transcoderoptionsvorbis.h:206 msgid "Minimum bitrate" -msgstr "Најмањи битрејт" +msgstr "Најмањи битски проток" #: visualisations/projectmvisualisation.cpp:132 msgid "Missing projectM presets" -msgstr "" +msgstr "Недостају препоставке за пројектМ" #: devices/deviceproperties.cpp:152 msgid "Model" @@ -3071,28 +3072,28 @@ msgstr "Надгледај измене у библиотеци" #: ../bin/src/ui_playbacksettingspage.h:332 msgid "Mono playback" -msgstr "" +msgstr "Моно репродукција" #: smartplaylists/searchterm.cpp:313 msgid "Months" -msgstr "Meseci" +msgstr "месеци" #: playlist/playlist.cpp:1240 msgid "Mood" -msgstr "" +msgstr "расположење" #: ../bin/src/ui_appearancesettingspage.h:294 #: moodbar/moodbarproxystyle.cpp:342 msgid "Moodbar style" -msgstr "" +msgstr "Стил расположења" #: ../bin/src/ui_appearancesettingspage.h:292 msgid "Moodbars" -msgstr "" +msgstr "Расположења" #: library/library.cpp:74 msgid "Most played" -msgstr "Највише пуштано" +msgstr "Најчешће пуштано" #: devices/giolister.cpp:159 msgid "Mount point" @@ -3118,7 +3119,7 @@ msgstr "Помери горе" #: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" -msgstr "" +msgstr "Музика" #: ../bin/src/ui_librarysettingspage.h:186 msgid "Music Library" @@ -3131,7 +3132,7 @@ msgstr "Утишај" #: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 msgid "My Last.fm Library" -msgstr "Моја Last.fm библиотека" +msgstr "Моја Ласт.фм библиотека" #: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 msgid "My Last.fm Mix Radio" @@ -3151,7 +3152,7 @@ msgstr "Мој бирани радио" #: internet/groovesharkservice.cpp:608 msgid "My Music" -msgstr "" +msgstr "Моја музика" #: internet/lastfmservice.cpp:202 msgid "My Neighborhood" @@ -3175,11 +3176,11 @@ msgstr "Име" #: ../bin/src/ui_organisedialog.h:197 msgid "Naming options" -msgstr "" +msgstr "Опције именовања" #: ../bin/src/ui_transcoderoptionsspeex.h:230 msgid "Narrow band (NB)" -msgstr "Уски опсег (NB)" +msgstr "уски опсег (NB)" #: internet/lastfmservice.cpp:229 msgid "Neighbors" @@ -3187,30 +3188,30 @@ msgstr "Комшије" #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" -msgstr "Мрежни посредник" +msgstr "Мрежни прокси" #: ../bin/src/ui_networkremotesettingspage.h:177 msgid "Network Remote" -msgstr "" +msgstr "Мрежни даљински" #: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 msgid "Never" -msgstr "Nikad" +msgstr "Никад" #: library/library.cpp:67 msgid "Never played" -msgstr "Никад пуштено" +msgstr "Никад пуштано" #: ../bin/src/ui_behavioursettingspage.h:210 #: ../bin/src/ui_behavioursettingspage.h:224 msgid "Never start playing" -msgstr "Никад пуштано" +msgstr "неће почети пуштање" #: playlist/playlistlistcontainer.cpp:72 #: playlist/playlistlistcontainer.cpp:171 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" -msgstr "" +msgstr "Нова фасцикла" #: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" @@ -3222,7 +3223,7 @@ msgstr "Нова паметна листа" #: widgets/freespacebar.cpp:46 msgid "New songs" -msgstr "Nove pesme" +msgstr "Нове песме" #: ../bin/src/ui_dynamicplaylistcontrols.h:110 msgid "New tracks will be added automatically." @@ -3234,7 +3235,7 @@ msgstr "Најновије нумере" #: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 msgid "Next" -msgstr "Sledeće" +msgstr "Следећа" #: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 @@ -3251,41 +3252,41 @@ msgstr "Без анализатора" #: ../bin/src/ui_appearancesettingspage.h:285 msgid "No background image" -msgstr "" +msgstr "Без слике позадине" #: ui/albumcovermanager.cpp:778 msgid "No covers to export." -msgstr "" +msgstr "Нема омота за извоз." #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" -msgstr "" +msgstr "без дугих блокова" #: playlist/playlistcontainer.cpp:366 msgid "" "No matches found. Clear the search box to show the whole playlist again." -msgstr "Није нађено. Очистите поље за претрагу да би приказали целу листу поново." +msgstr "Нема поклапања. Очистите поље претраге да бисте приказали целу листу поново." #: ../bin/src/ui_transcoderoptionsaac.h:145 msgid "No short blocks" -msgstr "" +msgstr "без кратких блокова" #: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 #: ../bin/src/ui_groupbydialog.h:156 msgid "None" -msgstr "Ништа" +msgstr "ништа" #: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" -msgstr "Ниједна од одабраних песама није погодна за умножавање на уређај" +msgstr "Ниједна од изабраних песама није погодна за копирање на уређај" #: moodbar/moodbarrenderer.cpp:155 msgid "Normal" -msgstr "" +msgstr "нормалан" #: ../bin/src/ui_transcoderoptionsaac.h:144 msgid "Normal block type" -msgstr "" +msgstr "нормални тип блока" #: playlist/playlistsequence.cpp:170 msgid "Not available while using a dynamic playlist" @@ -3318,7 +3319,7 @@ msgstr "Није уграђен" #: globalsearch/globalsearchsettingspage.cpp:120 #: globalsearch/searchproviderstatuswidget.cpp:48 msgid "Not logged in" -msgstr "" +msgstr "Нисте пријављени" #: devices/deviceview.cpp:111 msgid "Not mounted - double click to mount" @@ -3346,15 +3347,15 @@ msgstr "" #: core/song.cpp:344 msgid "Ogg Flac" -msgstr "" +msgstr "ОГГ ФЛАЦ" #: core/song.cpp:347 msgid "Ogg Opus" -msgstr "" +msgstr "ОГГ Опус" #: core/song.cpp:345 msgid "Ogg Speex" -msgstr "" +msgstr "ОГГ Спикс" #: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 @@ -3371,19 +3372,19 @@ msgid "" "10.x.x.x\n" "172.16.0.0 - 172.31.255.255\n" "192.168.x.x" -msgstr "" +msgstr "Прихватај везе само од клијената унутар овог распона ип адреса:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" #: ../bin/src/ui_networkremotesettingspage.h:187 msgid "Only allow connections from the local network" -msgstr "" +msgstr "Дозволи само везе са локалне мреже" #: ../bin/src/ui_querysortpage.h:142 msgid "Only show the first" -msgstr "Само покажи почетне" +msgstr "Прикажи само почетних" #: ../bin/src/ui_appearancesettingspage.h:290 msgid "Opacity" -msgstr "" +msgstr "Прозирност" #: internet/digitallyimportedservicebase.cpp:179 #: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 @@ -3391,19 +3392,19 @@ msgstr "" #: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 #, qt-format msgid "Open %1 in browser" -msgstr "" +msgstr "Отвори %1 у прегледачу" #: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." -msgstr "" +msgstr "Отвори &аудио ЦД..." #: podcasts/addpodcastdialog.cpp:230 msgid "Open OPML file" -msgstr "" +msgstr "Отвори ОПМЛ фајл" #: podcasts/addpodcastdialog.cpp:73 msgid "Open OPML file..." -msgstr "" +msgstr "Отвори ОПМЛ фајл..." #: ../bin/src/ui_deviceproperties.h:382 msgid "Open device" @@ -3411,11 +3412,11 @@ msgstr "Отвори уређај" #: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." -msgstr "" +msgstr "Отвори фајл..." #: internet/googledriveservice.cpp:184 msgid "Open in Google Drive" -msgstr "" +msgstr "Отвори у Гугл Драјву" #: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 #: internet/internetservice.cpp:76 library/libraryview.cpp:371 @@ -3425,7 +3426,7 @@ msgstr "Отвори у новој листи" #: songinfo/echonestbiographies.cpp:96 msgid "Open in your browser" -msgstr "" +msgstr "Отвори у прегледачу" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 @@ -3438,29 +3439,29 @@ msgstr "Радња није успела" #: ../bin/src/ui_transcoderoptionsmp3.h:193 msgid "Optimize for bitrate" -msgstr "Намештено за битрејт" +msgstr "Оптимизуј битски проток" #: ../bin/src/ui_transcoderoptionsmp3.h:191 msgid "Optimize for quality" -msgstr "Намештено за квалитет" +msgstr "Оптимизуј квалитет" #: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." -msgstr "Opcije..." +msgstr "Опције..." #: ../bin/src/ui_transcodersettingspage.h:181 msgid "Opus" -msgstr "" +msgstr "Опус" #: ../bin/src/ui_organisedialog.h:188 msgid "Organise Files" -msgstr "Организуј фајлове" +msgstr "Организовање фајлова" #: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." msgstr "Организуј фајлове..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Организујем фајлове" @@ -3474,43 +3475,43 @@ msgstr "Остале опције" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "Излаз" #: ../bin/src/ui_playbacksettingspage.h:325 msgid "Output device" -msgstr "" +msgstr "Уређај излаза" #: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" -msgstr "Излазне опције" +msgstr "Опције излаза" #: ../bin/src/ui_playbacksettingspage.h:320 msgid "Output plugin" -msgstr "" +msgstr "Прикључак излаза" #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" -msgstr "" +msgstr "Пребриши све" #: ../bin/src/ui_organisedialog.h:207 msgid "Overwrite existing files" -msgstr "Prepiši postojeće fajlove" +msgstr "Пребриши постојеће фајлове" #: ../bin/src/ui_albumcoverexport.h:211 msgid "Overwrite smaller ones only" -msgstr "" +msgstr "Пребриши само мање фајлове" #: ../bin/src/ui_podcastinfowidget.h:195 msgid "Owner" -msgstr "" +msgstr "Власник" #: internet/jamendoservice.cpp:214 msgid "Parsing Jamendo catalogue" -msgstr "" +msgstr "Рашчлањујем Џамендов каталог" #: ui/equalizer.cpp:126 msgid "Party" -msgstr "Журке" +msgstr "журка" #: ../bin/src/ui_groovesharksettingspage.h:115 #: ../bin/src/ui_magnatunesettingspage.h:165 @@ -3534,18 +3535,18 @@ msgstr "Паузирај пуштање" msgid "Paused" msgstr "Паузирано" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" -msgstr "" +msgstr "извођач" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" -msgstr "" +msgstr "пиксела" #: widgets/fancytabwidget.cpp:672 msgid "Plain sidebar" -msgstr "" +msgstr "Обична трака" #: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 #: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 @@ -3556,11 +3557,11 @@ msgstr "Пусти" #: ../bin/src/ui_lastfmstationdialog.h:92 msgid "Play Artist or Tag" -msgstr "" +msgstr "Пусти извођача или ознаку" #: internet/lastfmservice.cpp:118 msgid "Play artist radio..." -msgstr "" +msgstr "Пусти радио извођача..." #: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" @@ -3568,7 +3569,7 @@ msgstr "број пуштања" #: internet/lastfmservice.cpp:122 msgid "Play custom radio..." -msgstr "" +msgstr "Пусти посебни радио..." #: core/commandlineoptions.cpp:152 msgid "Play if stopped, pause if playing" @@ -3577,15 +3578,15 @@ msgstr "Пусти ако је заустављено, заустави ако #: ../bin/src/ui_behavioursettingspage.h:211 #: ../bin/src/ui_behavioursettingspage.h:225 msgid "Play if there is nothing already playing" -msgstr "Пусти ако ништа тренутно не свира" +msgstr "почеће пуштање ако тренутно ништа није пуштено" #: internet/lastfmservice.cpp:120 msgid "Play tag radio..." -msgstr "" +msgstr "Пусти радио ознаке..." #: core/commandlineoptions.cpp:168 msgid "Play the th track in the playlist" -msgstr "Пусти у нумеру у листи" +msgstr "Пусти у нумеру сс листе" #: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 msgid "Play/Pause" @@ -3611,7 +3612,7 @@ msgstr "Листа нумера је завршена" #: core/commandlineoptions.cpp:165 msgid "Playlist options" -msgstr "Опције листе нуера" +msgstr "Опције листе нумера" #: smartplaylists/wizard.cpp:77 msgid "Playlist type" @@ -3619,23 +3620,23 @@ msgstr "Тип листе" #: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" -msgstr "" +msgstr "Листе нумера" #: ../data/oauthsuccess.html:38 msgid "Please close your browser and return to Clementine." -msgstr "" +msgstr "Затворите ваш прегледач и вратите се на Клементину." #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" msgstr "Статус додатка:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" -msgstr "" +msgstr "Подкасти" #: ui/equalizer.cpp:127 msgid "Pop" -msgstr "Поп" +msgstr "поп" #: internet/groovesharkservice.cpp:577 msgid "Popular songs" @@ -3651,12 +3652,12 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" -msgstr "" +msgstr "Трајање" #: ../bin/src/ui_networkproxysettingspage.h:166 #: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Port" -msgstr "Прикључак" +msgstr "Порт" #: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 msgid "Pre-amp" @@ -3671,11 +3672,11 @@ msgstr "Поставке" #: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." -msgstr "Поставке..." +msgstr "Подешавање..." #: ../bin/src/ui_librarysettingspage.h:202 msgid "Preferred album art filenames (comma separated)" -msgstr "Имена жељене омитнице (размаком раздвојено)" +msgstr "Имена фајлова омота (одвојена зарезом)" #: ../bin/src/ui_magnatunesettingspage.h:167 msgid "Preferred audio format" @@ -3683,19 +3684,19 @@ msgstr "Пожељни формат звука" #: ../bin/src/ui_spotifysettingspage.h:217 msgid "Preferred bitrate" -msgstr "" +msgstr "Пожељни битски проток" #: ../bin/src/ui_deviceproperties.h:380 msgid "Preferred format" -msgstr "Жељени формат" +msgstr "Пожељни формат" #: ../bin/src/ui_digitallyimportedsettingspage.h:174 msgid "Premium audio type" -msgstr "" +msgstr "Тип звука (премијум)" #: ../bin/src/ui_equalizer.h:164 msgid "Preset:" -msgstr "Преподешено:" +msgstr "Препоставка:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" @@ -3703,7 +3704,7 @@ msgstr "" #: ../bin/src/ui_globalshortcutgrabber.h:73 msgid "Press a key" -msgstr "" +msgstr "Притисните тастер" #: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format @@ -3712,7 +3713,7 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" -msgstr "" +msgstr "Опције лепог ОСД-а" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 @@ -3722,7 +3723,7 @@ msgstr "Преглед" #: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 msgid "Previous" -msgstr "Prethodno" +msgstr "Претходна" #: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 @@ -3731,11 +3732,11 @@ msgstr "Претходна нумера" #: core/commandlineoptions.cpp:176 msgid "Print out version information" -msgstr "" +msgstr "Прикажи податке о издању" #: ../bin/src/ui_transcoderoptionsaac.h:131 msgid "Profile" -msgstr "Налог" +msgstr "Профил" #: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 @@ -3744,7 +3745,7 @@ msgstr "Напредак" #: ui/equalizer.cpp:129 msgid "Psychedelic" -msgstr "" +msgstr "психоделично" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 #: wiimotedev/wiimotesettingspage.cpp:227 @@ -3753,7 +3754,7 @@ msgstr "" #: ../bin/src/ui_querysortpage.h:138 msgid "Put songs in a random order" -msgstr "Стави насумичне песме" +msgstr "Постави насумично" #: ../bin/src/ui_transcoderoptionsflac.h:81 #: ../bin/src/ui_transcoderoptionsmp3.h:192 @@ -3765,15 +3766,15 @@ msgstr "Квалитет" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." -msgstr "" +msgstr "Испитујем уређај..." #: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" -msgstr "Menaxer редоследа" +msgstr "Менаџер редоследа" #: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" -msgstr "Стави у ред одабране нумере" +msgstr "Стави у ред изабране нумере" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 #: ui/mainwindow.cpp:1384 @@ -3782,11 +3783,11 @@ msgstr "Стави нумеру у ред" #: ../bin/src/ui_playbacksettingspage.h:314 msgid "Radio (equal loudness for all tracks)" -msgstr "Радио (једнака јачина за све песме)" +msgstr "радио (једнака јачина за све песме)" #: internet/groovesharkservice.cpp:595 msgid "Radios" -msgstr "" +msgstr "Радио" #: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" @@ -3794,35 +3795,35 @@ msgstr "Киша" #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" -msgstr "" +msgstr "насумично" #: core/globalshortcuts.cpp:65 msgid "Rate the current song 0 stars" -msgstr "Оцени тренутну песму 0 звезда" +msgstr "Оцени текућу песму са 0 звезда" #: core/globalshortcuts.cpp:66 msgid "Rate the current song 1 star" -msgstr "Оцени тренутну песму 1 звезда" +msgstr "Оцени текућу песму са 1 звездом" #: core/globalshortcuts.cpp:67 msgid "Rate the current song 2 stars" -msgstr "Оцени тренутну песму 2 звезда" +msgstr "Оцени текућу песму са 2 звезде" #: core/globalshortcuts.cpp:68 msgid "Rate the current song 3 stars" -msgstr "Оцени тренутну песму 3 звезда" +msgstr "Оцени текућу песму са 3 звезде" #: core/globalshortcuts.cpp:69 msgid "Rate the current song 4 stars" -msgstr "Оцени тренутну песму 4 звезда" +msgstr "Оцени текућу песму са 4 звезде" #: core/globalshortcuts.cpp:70 msgid "Rate the current song 5 stars" -msgstr "Оцени тренутну песму 5 звезда" +msgstr "Оцени текућу песму са 5 звезда" #: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" -msgstr "Ocena" +msgstr "оцена" #: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 msgid "Really cancel?" @@ -3834,7 +3835,7 @@ msgstr "" #: internet/groovesharkservice.cpp:549 msgid "Refresh" -msgstr "" +msgstr "Освежи" #: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 #: internet/subsonicservice.cpp:92 @@ -3847,11 +3848,11 @@ msgstr "Освежи канале" #: internet/lastfmservice.cpp:124 msgid "Refresh friends list" -msgstr "" +msgstr "Освежи списак пријатеља" #: internet/icecastservice.cpp:297 msgid "Refresh station list" -msgstr "Освежи листу станица" +msgstr "Освежи списак станица" #: internet/digitallyimportedservicebase.cpp:182 msgid "Refresh streams" @@ -3859,7 +3860,7 @@ msgstr "" #: ui/equalizer.cpp:130 msgid "Reggae" -msgstr "Реге" +msgstr "реге" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" @@ -3867,7 +3868,7 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:204 msgid "Remember from last time" -msgstr "" +msgstr "сети се од прошлог пута" #: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 #: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 @@ -3876,11 +3877,11 @@ msgstr "Уклони" #: ../bin/src/ui_wiimotesettingspage.h:194 msgid "Remove action" -msgstr "Ukloni radnju" +msgstr "Уклони радњу" #: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" -msgstr "" +msgstr "Уклони дупликате са листе" #: ../bin/src/ui_librarysettingspage.h:189 msgid "Remove folder" @@ -3900,11 +3901,11 @@ msgstr "Уклони са листе нумера" #: playlist/playlisttabbar.cpp:174 msgid "Remove playlist" -msgstr "" +msgstr "Уклони листу нумера" #: playlist/playlistlistcontainer.cpp:315 msgid "Remove playlists" -msgstr "" +msgstr "Уклони листе нумера" #: internet/groovesharkservice.cpp:1539 msgid "Removing songs from My Music" @@ -3917,7 +3918,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1337 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "" +msgstr "Преименуј „%1“ листу" #: internet/groovesharkservice.cpp:526 msgid "Rename Grooveshark playlist" @@ -3925,7 +3926,7 @@ msgstr "" #: playlist/playlisttabbar.cpp:137 msgid "Rename playlist" -msgstr "Преименуј листу нумера" +msgstr "Преименовање листе нумера" #: playlist/playlisttabbar.cpp:55 msgid "Rename playlist..." @@ -3937,7 +3938,7 @@ msgstr "" #: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" -msgstr "Понови" +msgstr "Понављање" #: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" @@ -3945,11 +3946,11 @@ msgstr "Понављај албум" #: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" -msgstr "Понови листу нумера" +msgstr "Понављај листу нумера" #: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" -msgstr "Понови нумеру" +msgstr "Понављај нумеру" #: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 #: internet/internetservice.cpp:66 library/libraryview.cpp:369 @@ -3959,19 +3960,19 @@ msgstr "Замени тренутну листу" #: ../bin/src/ui_behavioursettingspage.h:218 msgid "Replace the playlist" -msgstr "Zameni listu" +msgstr "замени листу нумера" #: ../bin/src/ui_organisedialog.h:205 msgid "Replaces spaces with underscores" -msgstr "Замени размаке са доњом цртом" +msgstr "Замени размаке подвлаком" #: ../bin/src/ui_playbacksettingspage.h:309 msgid "Replay Gain" -msgstr "" +msgstr "Нивелатор јачине" #: ../bin/src/ui_playbacksettingspage.h:311 msgid "Replay Gain mode" -msgstr "" +msgstr "Режим нивелатора јачине" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" @@ -3979,15 +3980,15 @@ msgstr "Попуни поново" #: ../bin/src/ui_networkremotesettingspage.h:191 msgid "Require authentication code" -msgstr "" +msgstr "Захтевај аутентификацијски кôд" #: widgets/lineedit.cpp:52 msgid "Reset" -msgstr "Resetuj" +msgstr "Ресетуј" #: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" -msgstr "Поништи збир пуштања" +msgstr "Поништи број пуштања" #: core/commandlineoptions.cpp:164 msgid "" @@ -3996,11 +3997,11 @@ msgstr "" #: ../bin/src/ui_organisedialog.h:206 msgid "Restrict to ASCII characters" -msgstr "Ограничи се на аски знакове" +msgstr "Ограничи се на АСКИ знакове" #: ../bin/src/ui_behavioursettingspage.h:205 msgid "Resume playback on start" -msgstr "" +msgstr "Настави пуштање по покретању" #: internet/groovesharkservice.cpp:758 msgid "Retrieving Grooveshark My Music songs" @@ -4016,27 +4017,27 @@ msgstr "" #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" -msgstr "" +msgstr "Вратите се на Клементину" #: ../bin/src/ui_equalizer.h:174 msgid "Right" -msgstr "" +msgstr "Десно" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "чупај" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Чупање ЦД-а" #: ../bin/src/ui_mainwindow.h:730 msgid "Rip audio CD..." -msgstr "" +msgstr "Чупај аудио ЦД..." #: ui/equalizer.cpp:131 msgid "Rock" -msgstr "Рок" +msgstr "рок" #: ../bin/src/ui_console.h:81 msgid "Run" @@ -4044,7 +4045,7 @@ msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:164 msgid "SOCKS proxy" -msgstr "SOCKS посредник" +msgstr "СОЦКС прокси" #: internet/subsonicsettingspage.cpp:122 msgid "" @@ -4058,27 +4059,27 @@ msgstr "Безбедно извади уређај" #: ../bin/src/ui_organisedialog.h:196 msgid "Safely remove the device after copying" -msgstr "Безбедно извади уређај после умножавања" +msgstr "Безбедно извади уређај после копирања" #: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "узорковање" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" -msgstr "Учестаност узорковања" +msgstr "узорковање" #: ../bin/src/ui_appearancesettingspage.h:295 msgid "Save .mood files in your music library" -msgstr "" +msgstr "Сачувај .mood фајлове у музичкој библиотеци" #: ui/albumcoverchoicecontroller.cpp:121 msgid "Save album cover" -msgstr "Сачувај омот албума" +msgstr "Уписивање омота албума" #: ui/albumcoverchoicecontroller.cpp:60 msgid "Save cover to disk..." -msgstr "Сачувај омот на диск" +msgstr "Сачувај омот на диск..." #: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 msgid "Save image" @@ -4094,15 +4095,15 @@ msgstr "Сачувај листу нумера..." #: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 msgid "Save preset" -msgstr "Сачувати претподешавање" +msgstr "Сачувај препоставку" #: ../bin/src/ui_librarysettingspage.h:193 msgid "Save ratings in file tags when possible" -msgstr "" +msgstr "Упиши оцену песме у ознаке кад је то могуће" #: ../bin/src/ui_librarysettingspage.h:197 msgid "Save statistics in file tags when possible" -msgstr "" +msgstr "Упиши статистику песме у ознаке кад је то могуће" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" @@ -4110,34 +4111,34 @@ msgstr "Сачувај овај ток у интернет картици" #: library/library.cpp:164 msgid "Saving songs statistics into songs files" -msgstr "" +msgstr "Уписујем статистике песама у фајлове песама" #: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 msgid "Saving tracks" -msgstr "Чувам нумере" +msgstr "Уписујем нумере" #: ../bin/src/ui_transcoderoptionsaac.h:136 msgid "Scalable sampling rate profile (SSR)" -msgstr "" +msgstr "скалабилно узорковање (SSR)" #: ../bin/src/ui_albumcoverexport.h:213 msgid "Scale size" -msgstr "" +msgstr "Промени величину" #: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" -msgstr "оцена" +msgstr "скор" #: ../bin/src/ui_lastfmsettingspage.h:156 msgid "Scrobble tracks that I listen to" -msgstr "" +msgstr "Скроблуј нумере које пуштам" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 #: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" -msgstr "Претрага" +msgstr "Тражи" #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" @@ -4153,31 +4154,31 @@ msgstr "Претражи Магнатјун" #: internet/subsonicservice.cpp:75 msgid "Search Subsonic" -msgstr "" +msgstr "Претражи Субсоник" #: ui/albumcoverchoicecontroller.cpp:66 msgid "Search automatically" -msgstr "" +msgstr "Тражи аутоматски" #: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." -msgstr "Тражи омоте албума" +msgstr "Тражи омоте албума..." #: ../bin/src/ui_globalsearchview.h:208 msgid "Search for anything" -msgstr "" +msgstr "Тражите било шта" #: ../bin/src/ui_gpoddersearchpage.h:76 msgid "Search gpodder.net" -msgstr "" +msgstr "Тражи на gpodder.net" #: ../bin/src/ui_itunessearchpage.h:76 msgid "Search iTunes" -msgstr "" +msgstr "Тражи на iTunes" #: ../bin/src/ui_querysearchpage.h:113 msgid "Search mode" -msgstr "Режим тражења" +msgstr "Режим претраге" #: smartplaylists/querywizardplugin.cpp:154 msgid "Search options" @@ -4186,7 +4187,7 @@ msgstr "Опције претраге" #: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 #: internet/spotifyservice.cpp:347 msgid "Search results" -msgstr "" +msgstr "Резултати претраге" #: smartplaylists/querywizardplugin.cpp:152 #: ../bin/src/ui_querysearchpage.h:120 @@ -4195,7 +4196,7 @@ msgstr "Термини претраге" #: internet/groovesharkservice.cpp:270 msgid "Searching on Grooveshark" -msgstr "" +msgstr "Тражим на Грувшарку" #: ../bin/src/ui_groupbydialog.h:139 msgid "Second level" @@ -4223,35 +4224,35 @@ msgstr "Изабери све" #: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" -msgstr "Означи ништа" +msgstr "Очисти избор" #: ../bin/src/ui_appearancesettingspage.h:277 msgid "Select background color:" -msgstr "" +msgstr "Боја позадине:" #: ui/appearancesettingspage.cpp:247 msgid "Select background image" -msgstr "" +msgstr "Слика позадине" #: ../bin/src/ui_trackselectiondialog.h:207 msgid "Select best possible match" -msgstr "Одабери најбоље поклапање" +msgstr "Изаберите најбоље поклапање" #: ../bin/src/ui_appearancesettingspage.h:275 msgid "Select foreground color:" -msgstr "" +msgstr "Главна боја:" #: ../bin/src/ui_visualisationselector.h:108 msgid "Select visualizations" -msgstr "Одабери визуелизације" +msgstr "Избор визуелизација" #: visualisations/visualisationcontainer.cpp:124 msgid "Select visualizations..." -msgstr "Одабери визуелизације..." +msgstr "Изабери визуелизације..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Изабери..." #: devices/devicekitlister.cpp:124 msgid "Serial number" @@ -4259,11 +4260,11 @@ msgstr "Серијски број" #: ../bin/src/ui_subsonicsettingspage.h:126 msgid "Server URL" -msgstr "" +msgstr "УРЛ сервера" #: ../bin/src/ui_subsonicsettingspage.h:125 msgid "Server details" -msgstr "" +msgstr "Детаљи сервера" #: internet/lastfmservice.cpp:434 msgid "Service offline" @@ -4272,19 +4273,19 @@ msgstr "Сервис ван мреже" #: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "Подешено %1 од \"%2\"..." +msgstr "Постављено %1 од „%2“..." #: core/commandlineoptions.cpp:157 msgid "Set the volume to percent" -msgstr "Намести јачини звука на процента" +msgstr "Постави јачину звука на <вредност> процената" #: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." -msgstr "Подеси вредност за све означене нумере" +msgstr "Подеси вредност за све означене нумере..." #: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Settings" -msgstr "" +msgstr "Подешавања" #: ../bin/src/ui_globalshortcutssettingspage.h:173 msgid "Shortcut" @@ -4307,7 +4308,7 @@ msgstr "Прикажи" #: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 msgid "Show OSD" -msgstr "Прикажи OSD" +msgstr "Прикажи ОСД" #: ../bin/src/ui_playbacksettingspage.h:298 msgid "Show a glowing animation on the current track" @@ -4315,35 +4316,35 @@ msgstr "Прикажи шљаштећу анимацију на пуштеној #: ../bin/src/ui_appearancesettingspage.h:293 msgid "Show a moodbar in the track progress bar" -msgstr "" +msgstr "Прикажи траку расположења у траци напретка нумере" #: ../bin/src/ui_notificationssettingspage.h:434 msgid "Show a native desktop notification" -msgstr "Прикажи основну декстоп обавештење" +msgstr "Изворна обавештења радне површи" #: ../bin/src/ui_notificationssettingspage.h:442 msgid "Show a notification when I change the repeat/shuffle mode" -msgstr "Прикажи обавештење кад променим понови/насумучни режим" +msgstr "Обавештење при промени режима понављања/насумичности" #: ../bin/src/ui_notificationssettingspage.h:441 msgid "Show a notification when I change the volume" -msgstr "Прикажи обавештење кад променим гласноћу" +msgstr "Обавештење про промени јачине звука" #: ../bin/src/ui_notificationssettingspage.h:436 msgid "Show a popup from the system tray" -msgstr "" +msgstr "Облачић са системске касете" #: ../bin/src/ui_notificationssettingspage.h:435 msgid "Show a pretty OSD" -msgstr "Прикажи лепи OSD" +msgstr "Лепи ОСД" #: widgets/nowplayingwidget.cpp:121 msgid "Show above status bar" -msgstr "Прикажи изнад статусне траке" +msgstr "Прикажи изнад траке стања" #: ui/mainwindow.cpp:471 msgid "Show all songs" -msgstr "Prikaži sve pesme" +msgstr "Прикажи све песме" #: ../bin/src/ui_querysortpage.h:141 msgid "Show all the songs" @@ -4351,7 +4352,7 @@ msgstr "Прикажи све песме" #: ../bin/src/ui_librarysettingspage.h:209 msgid "Show cover art in library" -msgstr "Прикажи омотницу у библиотеци" +msgstr "Прикажи омот у библиотеци" #: ../bin/src/ui_librarysettingspage.h:210 msgid "Show dividers" @@ -4359,16 +4360,16 @@ msgstr "Прикажи раздвајаче" #: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 msgid "Show fullsize..." -msgstr "Прикажи пуну величину..." +msgstr "Пуна величина..." #: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." -msgstr "Прикажи у фајл прегледачу..." +msgstr "Прикажи у менаџеру фајлова" #: ui/mainwindow.cpp:520 msgid "Show in library..." -msgstr "" +msgstr "Прикажи у библиотеци..." #: library/libraryview.cpp:403 msgid "Show in various artists" @@ -4376,7 +4377,7 @@ msgstr "Прикажи у разним извођачима" #: moodbar/moodbarproxystyle.cpp:337 msgid "Show moodbar" -msgstr "" +msgstr "Прикажи расположење" #: ui/mainwindow.cpp:472 msgid "Show only duplicates" @@ -4388,15 +4389,15 @@ msgstr "Прикажи само неозначене" #: ../bin/src/ui_globalsearchsettingspage.h:153 msgid "Show search suggestions" -msgstr "" +msgstr "прикажи предлоге претраге" #: ../bin/src/ui_lastfmsettingspage.h:157 msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Прикажи ''волим'' и ''мрзим'' дугмад" +msgstr "Прикажи „волим“ и „мрзим“ дугмад" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" -msgstr "" +msgstr "Прикажи дугме скробловања у главном прозору" #: ../bin/src/ui_behavioursettingspage.h:192 msgid "Show tray icon" @@ -4404,23 +4405,23 @@ msgstr "Прикажи икону системске касете" #: ../bin/src/ui_globalsearchsettingspage.h:152 msgid "Show which sources are enabled and disabled" -msgstr "" +msgstr "прикажи који су извори омогућени/онемогућени" #: core/globalshortcuts.cpp:58 msgid "Show/Hide" -msgstr "Prikaži/Sakrij" +msgstr "Прикажи/сакриј" #: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" -msgstr "Пуштај наизменично" +msgstr "Насумично" #: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" -msgstr "" +msgstr "Насумично албуми" #: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" -msgstr "Испретумбај све" +msgstr "Насумично све" #: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" @@ -4428,11 +4429,11 @@ msgstr "Претумбај листу" #: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" -msgstr "" +msgstr "Насумично нумере у овом албуму" #: ../bin/src/ui_podcastsettingspage.h:252 msgid "Sign in" -msgstr "" +msgstr "Пријави се" #: ../bin/src/ui_loginstatewidget.h:173 msgid "Sign out" @@ -4440,23 +4441,23 @@ msgstr "Одјави се" #: ../bin/src/ui_loginstatewidget.h:175 msgid "Signing in..." -msgstr "" +msgstr "Пријављујем се..." #: songinfo/echonestsimilarartists.cpp:57 msgid "Similar artists" -msgstr "Slični izvođači" +msgstr "Слични извођачи" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "Величина" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "Величина:" #: ui/equalizer.cpp:133 msgid "Ska" -msgstr "Ска" +msgstr "ска" #: core/commandlineoptions.cpp:155 msgid "Skip backwards in playlist" @@ -4464,7 +4465,7 @@ msgstr "Прескочи уназад у листи нумера" #: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" -msgstr "Прескочи збир" +msgstr "број прескакања" #: core/commandlineoptions.cpp:156 msgid "Skip forwards in playlist" @@ -4476,7 +4477,7 @@ msgstr "Мали омот" #: widgets/fancytabwidget.cpp:671 msgid "Small sidebar" -msgstr "" +msgstr "Уска трака" #: smartplaylists/wizard.cpp:68 msgid "Smart playlist" @@ -4488,11 +4489,11 @@ msgstr "Паметне листе" #: ui/equalizer.cpp:132 msgid "Soft" -msgstr "Лагана" +msgstr "лагана" #: ui/equalizer.cpp:134 msgid "Soft Rock" -msgstr "Лагани рок" +msgstr "лагани рок" #: ../bin/src/ui_songinfosettingspage.h:154 msgid "Song Information" @@ -4532,43 +4533,43 @@ msgstr "Ређање" #: playlist/playlist.cpp:1239 msgid "Source" -msgstr "" +msgstr "извор" #: ../bin/src/ui_globalsearchsettingspage.h:146 msgid "Sources" -msgstr "" +msgstr "Извори" #: ../bin/src/ui_transcodersettingspage.h:178 msgid "Speex" -msgstr "" +msgstr "Speex" #: ../bin/src/ui_spotifysettingspage.h:207 msgid "Spotify" -msgstr "Spotify" +msgstr "Спотифај" #: internet/spotifyservice.cpp:184 msgid "Spotify login error" -msgstr "Spotify грешка пријављивања" +msgstr "Грешка пријављивања на Спотифај" #: ../bin/src/ui_spotifysettingspage.h:212 msgid "Spotify plugin" -msgstr "Spotify додатак" +msgstr "Спотифај прикључак" #: internet/spotifyblobdownloader.cpp:59 msgid "Spotify plugin not installed" -msgstr "Spotify додатак није уграђен" +msgstr "Спотифај прикључак није инсталиран" #: ../bin/src/ui_transcoderoptionsmp3.h:201 msgid "Standard" -msgstr "Стандард" +msgstr "стандардан" #: internet/spotifyservice.cpp:354 msgid "Starred" -msgstr "Звездицом" +msgstr "Са звездицом" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Почни чупање" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4576,7 +4577,7 @@ msgstr "Почни листу тренутно пуштаним" #: transcoder/transcodedialog.cpp:90 msgid "Start transcoding" -msgstr "Започни транскодирање" +msgstr "Почни прекодирање" #: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 #: internet/spotifyservice.cpp:348 @@ -4588,7 +4589,7 @@ msgstr "" #: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" -msgstr "Покрећем %1" +msgstr "Почињем %1" #: internet/magnatunedownloaddialog.cpp:120 msgid "Starting..." @@ -4596,7 +4597,7 @@ msgstr "Почињем..." #: internet/groovesharkservice.cpp:598 msgid "Stations" -msgstr "" +msgstr "Станице" #: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 @@ -4605,11 +4606,11 @@ msgstr "Заустави" #: wiimotedev/wiimotesettingspage.cpp:110 msgid "Stop after" -msgstr "Стани после" +msgstr "Заустави после" #: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" -msgstr "Стани после ове нумере" +msgstr "Заустави после ове нумере" #: core/commandlineoptions.cpp:154 msgid "Stop playback" @@ -4617,12 +4618,12 @@ msgstr "Заустави пуштање" #: core/globalshortcuts.cpp:50 msgid "Stop playing after current track" -msgstr "Стани после тренутне нумере" +msgstr "Заустави после текуће нумере" #: widgets/osd.cpp:171 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "Заустави пуштање након нумере: %1" #: widgets/osd.cpp:166 msgid "Stopped" @@ -4640,7 +4641,7 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:160 msgid "Streaming membership" -msgstr "" +msgstr "стримовање садржаја" #: internet/groovesharkservice.cpp:629 msgid "Subscribed playlists" @@ -4648,15 +4649,15 @@ msgstr "" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" -msgstr "" +msgstr "Претплатници" #: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" -msgstr "" +msgstr "Субсоник" #: ../data/oauthsuccess.html:36 msgid "Success!" -msgstr "" +msgstr "Успех!" #: transcoder/transcoder.cpp:200 #, qt-format @@ -4670,17 +4671,17 @@ msgstr "Предложене ознаке" #: ../bin/src/ui_edittagdialog.h:681 #: ../bin/src/ui_notificationssettingspage.h:448 msgid "Summary" -msgstr "Сажетак" +msgstr "Резиме" #: analyzers/analyzercontainer.cpp:65 #: visualisations/visualisationcontainer.cpp:110 #, qt-format msgid "Super high (%1 fps)" -msgstr "Супер високо (%1 fps)" +msgstr "супер висок (%1 fps)" #: visualisations/visualisationcontainer.cpp:120 msgid "Super high (2048x2048)" -msgstr "" +msgstr "супер висок (2048x2048)" #: ../bin/src/ui_deviceproperties.h:374 msgid "Supported formats" @@ -4688,27 +4689,27 @@ msgstr "Подржани формати" #: ../bin/src/ui_librarysettingspage.h:201 msgid "Synchronize statistics to files now" -msgstr "" +msgstr "Синхронизуј статистике у фајлове" #: internet/spotifyservice.cpp:561 msgid "Syncing Spotify inbox" -msgstr "Усаглашавање Spotify сандучета" +msgstr "Синхронизовање Спотифај сандучета" #: internet/spotifyservice.cpp:556 msgid "Syncing Spotify playlist" -msgstr "Усаглашавање Spotify листе" +msgstr "Синхронизовање Спотифај листе нумера" #: internet/spotifyservice.cpp:565 msgid "Syncing Spotify starred tracks" -msgstr "Усаглашавање Spotify оцењених нумера" +msgstr "Синхронизовање Спотифај оцењених нумера" #: moodbar/moodbarrenderer.cpp:159 msgid "System colors" -msgstr "" +msgstr "системске боје" #: widgets/fancytabwidget.cpp:673 msgid "Tabs on top" -msgstr "Картице на врх" +msgstr "Језичци на врху" #: ../bin/src/ui_lastfmstationdialog.h:97 msgid "Tag" @@ -4716,7 +4717,7 @@ msgstr "Ознака" #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" -msgstr "Ознаке добављене" +msgstr "Добављач ознака" #: internet/lastfmservice.cpp:212 msgid "Tag radio" @@ -4724,11 +4725,11 @@ msgstr "Означи радио" #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" -msgstr "" +msgstr "Циљани битски проток" #: ui/equalizer.cpp:135 msgid "Techno" -msgstr "Техно" +msgstr "техно" #: ../bin/src/ui_notificationssettingspage.h:460 msgid "Text options" @@ -4741,21 +4742,21 @@ msgstr "Захвалнице" #: ui/globalshortcutssettingspage.cpp:177 #, qt-format msgid "The \"%1\" command could not be started." -msgstr "\"%1\" команди се не могу покренути." +msgstr "Наредбе „%1“ се не могу покренути." #: ../bin/src/ui_appearancesettingspage.h:282 msgid "The album cover of the currently playing song" -msgstr "" +msgstr "Омот албума текуће песме" #: internet/magnatunedownloaddialog.cpp:90 #, qt-format msgid "The directory %1 is not valid" -msgstr "\"%1\" директоријума није исправно" +msgstr "Директоријум „%1“ није исправан" #: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 #, qt-format msgid "The playlist '%1' was empty or could not be loaded." -msgstr "'%1' листе је празно и не може се учитати." +msgstr "Листа нумера „%1“ је празна и не може се учитати." #: smartplaylists/searchtermwidget.cpp:330 msgid "The second value must be greater than the first one!" @@ -4779,7 +4780,7 @@ msgstr "" msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" -msgstr "Верзија Клементине на коју сте надоградили захтева потпуну обнову библиотеке због нових могућности које су излистане испод:" +msgstr "Издање Клементине које сте управо надоградили захтева потпуно скенирање библиотеке због нових могућности које су излистане испод:" #: library/libraryview.cpp:529 msgid "There are other songs in this album" @@ -4788,49 +4789,49 @@ msgstr "" #: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 #: podcasts/gpoddertoptagspage.cpp:77 msgid "There was a problem communicating with gpodder.net" -msgstr "" +msgstr "Проблем приликом комуникације са gpodder.net" #: internet/magnatunedownloaddialog.cpp:158 msgid "There was a problem fetching the metadata from Magnatune" -msgstr "Искрсао проблем приликом добављања метаподатака са Magnatune" +msgstr "Проблем приликом добављања метаподатака са Магнатјуна" #: podcasts/itunessearchpage.cpp:76 msgid "There was a problem parsing the response from the iTunes Store" -msgstr "" +msgstr "Проблем приликом рашчлањивања одговора са iTunes продавнице." #: ui/organiseerrordialog.cpp:56 msgid "" "There were problems copying some songs. The following files could not be " "copied:" -msgstr "Искрсао проблем приликом умножавања истих песама. Следећи фајлови се нису умножили:" +msgstr "Било је проблема приликом копирања неких песама. Следећи фајлови нису копирани:" #: ui/organiseerrordialog.cpp:61 msgid "" "There were problems deleting some songs. The following files could not be " "deleted:" -msgstr "Искрсао је проблем приликом брисања неких песама. Следећи фајлови се нису избрисали:" +msgstr "Било је проблема при брисању неких песама. Следећи фајлови нису обрисани:" #: devices/deviceview.cpp:389 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" -msgstr "Ови фајлови ће се избрисати са уређаја, да ли сигурно желите да наставите?" +msgstr "Ови фајлови ће бити обрисани са уређаја, желите ли заиста да наставите?" #: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" -msgstr "" +msgstr "Ови фајлови ће бити трајно обрисани са диска, желите ли заиста да наставите?" #: ../bin/src/ui_librarysettingspage.h:187 msgid "These folders will be scanned for music to make up your library" -msgstr "Ови директоријуми ће бити скенирани због музике да би се направила библиотека" +msgstr "Ове фасцикле ће бити скениране да би се направила библиотека" #: ../bin/src/ui_transcodersettingspage.h:174 msgid "" "These settings are used in the \"Transcode Music\" dialog, and when " "converting music before copying it to a device." -msgstr "Ова подешавања се користе у \"Transcode Music\" дијалогу, и кад се претвара музика пре умножавања на уређај." +msgstr "Ове поставке се користе у дијалогу „Прекодирање музике“, и приликом кодирања музике пре копирања на уређај." #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" @@ -4840,11 +4841,11 @@ msgstr "Трећи ниво" msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" -msgstr "Овај избор ће направити базу података која може бити велика и до 150 мб.\nДа ли ипак желиш да наставиш?" +msgstr "Овај радња ће направити базу података која може бити велика и до 150 MB.\nЖелите ли ипак да наставите?" #: internet/magnatunedownloaddialog.cpp:175 msgid "This album is not available in the requested format" -msgstr "Ovaj album nije dostupan u traženom formatu" +msgstr "Овај албум није доступан у траженом формату" #: ../bin/src/ui_deviceproperties.h:381 msgid "" @@ -4858,26 +4859,26 @@ msgstr "Овај уређај подржава следеће формате ф #: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 msgid "This device will not work properly" -msgstr "Овај уређај неће радити исравно" +msgstr "Овај уређај неће радити исправно" #: devices/devicemanager.cpp:567 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." -msgstr "Ово је MTP уређај, али ви сте саставили Клементину без libmtp подршке." +msgstr "Ово је МТП уређај, али ви сте компиловали Клементину без libmtp подршке." #: devices/devicemanager.cpp:575 msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "Ово је иПод, али ви сте саставили Клементину без libgpod подршке." +msgstr "Ово је iPod, али ви сте компиловали Клементину без libgpod подршке." #: devices/devicemanager.cpp:324 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." -msgstr "Ово је први пут да сте повезали овај уређај. Клементина ће сад да скенира уређај да би нашла музику - може потрајати." +msgstr "Ово је први пут да сте повезали овај уређај. Клементина ће сад да скенира уређај да би нашла музику - то може да потраје." #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "" +msgstr "Ову опцију можете изменити у поставкама „Понашања“" #: internet/lastfmservice.cpp:435 msgid "This stream is for paid subscribers only" @@ -4888,12 +4889,12 @@ msgstr "Овај ток је само за претплатнике" msgid "This type of device is not supported: %1" msgstr "Овај тип уређаја није подржан: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" -msgstr "Наслов" +msgstr "наслов" #: internet/groovesharkservice.cpp:1018 msgid "" @@ -4903,15 +4904,15 @@ msgstr "" #: core/utilities.cpp:127 core/utilities.cpp:143 msgid "Today" -msgstr "Danas" +msgstr "Данас" #: core/globalshortcuts.cpp:60 msgid "Toggle Pretty OSD" -msgstr "" +msgstr "Мењај лепи ОСД" #: visualisations/visualisationcontainer.cpp:101 msgid "Toggle fullscreen" -msgstr "Преко читавог екрана" +msgstr "Цео екран" #: ui/mainwindow.cpp:1388 msgid "Toggle queue status" @@ -4919,27 +4920,27 @@ msgstr "" #: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" -msgstr "" +msgstr "Мењај скробловање" #: core/commandlineoptions.cpp:171 msgid "Toggle visibility for the pretty on-screen-display" -msgstr "" +msgstr "Мењај видљивост лепог ОСД-а" #: core/utilities.cpp:145 msgid "Tomorrow" -msgstr "" +msgstr "Сутра" #: podcasts/podcasturlloader.cpp:116 msgid "Too many redirects" -msgstr "" +msgstr "Превише преусмеравања" #: internet/spotifyservice.cpp:366 msgid "Top tracks" -msgstr "" +msgstr "Најбоље нумере" #: ../bin/src/ui_albumcovermanager.h:221 msgid "Total albums:" -msgstr "" +msgstr "Укупно албума:" #: covers/coversearchstatisticsdialog.cpp:71 msgid "Total bytes transferred" @@ -4947,34 +4948,34 @@ msgstr "Укупно бајтова пребачено" #: covers/coversearchstatisticsdialog.cpp:68 msgid "Total network requests made" -msgstr "" +msgstr "Укупно направљених мрежних захтева" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" -msgstr "Нумера" +msgstr "нумера" #: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" -msgstr "Транскодирај музику" +msgstr "Прекодирање музике" #: ../bin/src/ui_transcodelogdialog.h:63 msgid "Transcoder Log" -msgstr "Дневник транскодирања" +msgstr "Дневник прекодирања" #: ../bin/src/ui_transcodersettingspage.h:173 msgid "Transcoding" -msgstr "Транскодирање" +msgstr "Прекодирање" #: transcoder/transcoder.cpp:312 #, qt-format msgid "Transcoding %1 files using %2 threads" -msgstr "" +msgstr "Прекодирам %1 фајлова користећи %2 ниски" #: ../bin/src/ui_transcoderoptionsdialog.h:54 msgid "Transcoding options" -msgstr "" +msgstr "Опције прекодирања" #: core/song.cpp:350 msgid "TrueAudio" @@ -4982,7 +4983,7 @@ msgstr "" #: analyzers/turbine.cpp:15 msgid "Turbine" -msgstr "" +msgstr "Турбина" #: ../bin/src/ui_dynamicplaylistcontrols.h:113 msgid "Turn off" @@ -4990,7 +4991,7 @@ msgstr "" #: devices/giolister.cpp:161 msgid "URI" -msgstr "Адреса" +msgstr "УРИ" #: core/commandlineoptions.cpp:150 msgid "URL(s)" @@ -5010,7 +5011,7 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" -msgstr "Ултра широк опсег (UWB)" +msgstr "ултра широки опсег (UWB)" #: internet/magnatunedownloaddialog.cpp:144 #, qt-format @@ -5027,7 +5028,7 @@ msgstr "Непознато" #: podcasts/podcasturlloader.cpp:198 msgid "Unknown content-type" -msgstr "" +msgstr "Непознат тип садржаја" #: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 msgid "Unknown error" @@ -5035,39 +5036,39 @@ msgstr "Непозната грешка" #: ui/albumcoverchoicecontroller.cpp:63 msgid "Unset cover" -msgstr "Не изабери омот" +msgstr "Уклони омот" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" -msgstr "" +msgstr "Уклони претплату" #: songinfo/songkickconcerts.cpp:168 msgid "Upcoming Concerts" -msgstr "" +msgstr "Предстојећи концерти" #: internet/groovesharkservice.cpp:1200 msgid "Update Grooveshark playlist" -msgstr "" +msgstr "Ажурирај Грувшарк листу нумера" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" -msgstr "" +msgstr "Ажурирај све подкасте" #: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" -msgstr "Освежи промењене директоријуме библиотеке" +msgstr "Ажурирај измењене фасцикле библиотеке" #: ../bin/src/ui_librarysettingspage.h:191 msgid "Update the library when Clementine starts" msgstr "Ажурирај библиотеку при покретању Клементине" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" -msgstr "" +msgstr "Ажурирај овај подкаст" #: ../bin/src/ui_podcastsettingspage.h:227 msgid "Updating" -msgstr "" +msgstr "Ажурирање" #: library/librarywatcher.cpp:92 #, qt-format @@ -5089,7 +5090,7 @@ msgstr "Искоришћење" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" -msgstr "" +msgstr "Користи ознаку извођача албума ако је доступна" #: ../bin/src/ui_globalshortcutssettingspage.h:168 msgid "Use Gnome's shortcut keys" @@ -5097,11 +5098,11 @@ msgstr "Користи Гномове пречице" #: ../bin/src/ui_playbacksettingspage.h:310 msgid "Use Replay Gain metadata if it is available" -msgstr "" +msgstr "Користи метаподатке нивелисања ако су доступни" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" -msgstr "" +msgstr "Користи ССЛв3" #: ../bin/src/ui_wiimotesettingspage.h:189 msgid "Use Wii Remote" @@ -5109,15 +5110,15 @@ msgstr "Користи Wii даљински" #: ../bin/src/ui_appearancesettingspage.h:274 msgid "Use a custom color set" -msgstr "" +msgstr "Посебна палета боја" #: ../bin/src/ui_notificationssettingspage.h:445 msgid "Use a custom message for notifications" -msgstr "Користи сопствену поруку за обавештења" +msgstr "Користи посебну поруку за обавештења" #: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Use a network remote control" -msgstr "" +msgstr "Укључи даљинско управљање преко мреже" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" @@ -5125,11 +5126,11 @@ msgstr "Користи аутентификациjу" #: ../bin/src/ui_transcoderoptionsvorbis.h:203 msgid "Use bitrate management engine" -msgstr "" +msgstr "Мотор менаџмента за битски проток" #: ../bin/src/ui_wizardfinishpage.h:85 msgid "Use dynamic mode" -msgstr "Користи промењив режим" +msgstr "Динамички режим" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" @@ -5137,36 +5138,36 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" -msgstr "" +msgstr "Временско обликовање шума" #: ../bin/src/ui_behavioursettingspage.h:198 msgid "Use the system default" -msgstr "" +msgstr "системски подразумеван" #: ../bin/src/ui_appearancesettingspage.h:273 msgid "Use the system default color set" -msgstr "" +msgstr "Системски подразумевана палета боја" #: ../bin/src/ui_networkproxysettingspage.h:158 msgid "Use the system proxy settings" -msgstr "" +msgstr "Системске поставке проксија" #: ../bin/src/ui_spotifysettingspage.h:218 msgid "Use volume normalisation" -msgstr "" +msgstr "Нормализација јачине звука" #: widgets/freespacebar.cpp:47 msgid "Used" -msgstr "искоришћено" +msgstr "Искоришћено" #: internet/groovesharkservice.cpp:404 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "" +msgstr "Корисник %1 нема Грувшарк Билокуд налог" #: ui/settingsdialog.cpp:145 msgid "User interface" -msgstr "" +msgstr "Корисничко сучеље" #: ../bin/src/ui_groovesharksettingspage.h:114 #: ../bin/src/ui_magnatunesettingspage.h:163 @@ -5179,16 +5180,16 @@ msgstr "Корисничко име" #: ../bin/src/ui_behavioursettingspage.h:207 msgid "Using the menu to add a song will..." -msgstr "" +msgstr "Радња менија за додавање песме..." #: ../bin/src/ui_magnatunedownloaddialog.h:142 #: ../bin/src/ui_magnatunesettingspage.h:173 msgid "VBR MP3" -msgstr "ВБР МП#" +msgstr "ВБР МП3" #: ../bin/src/ui_transcoderoptionsspeex.h:232 msgid "Variable bit rate" -msgstr "" +msgstr "Променљив битски проток" #: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 #: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 @@ -5198,15 +5199,15 @@ msgstr "Разни извођачи" #: ui/about.cpp:34 #, qt-format msgid "Version %1" -msgstr "" +msgstr "Издање %1" #: ../bin/src/ui_albumcovermanager.h:220 msgid "View" -msgstr "" +msgstr "Приказ" #: ../bin/src/ui_visualisationselector.h:109 msgid "Visualization mode" -msgstr "" +msgstr "Режим визуелизација" #: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" @@ -5214,20 +5215,20 @@ msgstr "Визуелизације" #: ../bin/src/ui_visualisationoverlay.h:185 msgid "Visualizations Settings" -msgstr "Подешавања визуелизација" +msgstr "Подешавање визуелизација" #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" -msgstr "" +msgstr "Откривање гласовне активности" #: widgets/osd.cpp:185 #, qt-format msgid "Volume %1%" -msgstr "Гласноћа %1%" +msgstr "Јачина %1%" #: ../bin/src/ui_transcodersettingspage.h:176 msgid "Vorbis" -msgstr "Vorbis" +msgstr "Ворбис" #: ../bin/src/ui_magnatunedownloaddialog.h:141 #: ../bin/src/ui_magnatunesettingspage.h:172 @@ -5236,45 +5237,45 @@ msgstr "ВАВ" #: ../bin/src/ui_transcodersettingspage.h:180 msgid "WMA" -msgstr "WMA" +msgstr "ВМА" #: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "" +msgstr "Упозори ме приликом затварања језичка листе нумера" #: core/song.cpp:349 msgid "Wav" -msgstr "Wav" +msgstr "ВАВ" #: ../bin/src/ui_podcastinfowidget.h:193 msgid "Website" -msgstr "" +msgstr "Вебсајт" #: smartplaylists/searchterm.cpp:312 msgid "Weeks" -msgstr "Nedelje" +msgstr "седмица" #: ../bin/src/ui_behavioursettingspage.h:201 msgid "When Clementine starts" -msgstr "Када се Клементина упали" +msgstr "Када се Клементина покрене" #: ../bin/src/ui_librarysettingspage.h:204 msgid "" "When looking for album art Clementine will first look for picture files that contain one of these words.\n" "If there are no matches then it will use the largest image in the directory." -msgstr "Када тражи за омотницом Клементина ће прво да потражи слике које садрже једну од ових речи.\nУколико нема тражених појмова тад ће узети највећу слику у директоријуму." +msgstr "Приликом тражења омота албума Клементина ће најпре да тражи фајлове слика који садрже неке од ових речи.\nАко нема поклапања онда ће да користи највећу слику у директоријуму." #: ../bin/src/ui_globalsearchsettingspage.h:151 msgid "When the list is empty..." -msgstr "" +msgstr "Када је списак празан..." #: ../bin/src/ui_globalsearchview.h:212 msgid "Why not try..." -msgstr "" +msgstr "Зашто не бисте пробали..." #: ../bin/src/ui_transcoderoptionsspeex.h:229 msgid "Wide band (WB)" -msgstr "Широк опсег (WB)" +msgstr "широки опсег (WB)" #: widgets/osd.cpp:244 #, qt-format @@ -5312,71 +5313,71 @@ msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" -msgstr "" +msgstr "Виндоуз медија 128k" #: ../bin/src/ui_digitallyimportedsettingspage.h:172 msgid "Windows Media 40k" -msgstr "" +msgstr "Виндоуз медија 40k" #: ../bin/src/ui_digitallyimportedsettingspage.h:180 msgid "Windows Media 64k" -msgstr "" +msgstr "Виндоуз медија 64k" #: core/song.cpp:339 msgid "Windows Media audio" -msgstr "" +msgstr "Виндоуз медија аудио" #: ../bin/src/ui_albumcovermanager.h:222 msgid "Without cover:" -msgstr "" +msgstr "Без омота:" #: library/libraryview.cpp:530 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" -msgstr "" +msgstr "Желите ли да померите и остале песме из овог албума у разне извођаче такође?" #: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" -msgstr "" +msgstr "Желите ли сада да покренете потпуно скенирање?" #: library/librarysettingspage.cpp:151 msgid "Write all songs statistics into songs' files" -msgstr "" +msgstr "Уписивање статистика свих песама у фајлове песама" #: internet/subsonicsettingspage.cpp:86 msgid "Wrong username or password." -msgstr "" +msgstr "Погрешно корисничко име или лозинка." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" -msgstr "Година" +msgstr "година" #: ../bin/src/ui_groupbydialog.h:136 ../bin/src/ui_groupbydialog.h:150 #: ../bin/src/ui_groupbydialog.h:164 msgid "Year - Album" -msgstr "Година — Албум" +msgstr "година — албум" #: smartplaylists/searchterm.cpp:314 msgid "Years" -msgstr "Godine" +msgstr "година" #: core/utilities.cpp:129 msgid "Yesterday" -msgstr "Juče" +msgstr "Јуче" #: ../bin/src/ui_magnatunedownloaddialog.h:132 msgid "You are about to download the following albums" -msgstr "" +msgstr "Преузећете следеће албуме" #: playlist/playlistlistcontainer.cpp:316 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "" +msgstr "Желите ли заиста да уклоните %1 листи нумера из омиљених?" #: playlist/playlisttabbar.cpp:177 msgid "" @@ -5386,16 +5387,16 @@ msgstr "" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." -msgstr "" +msgstr "Нисте пријављени." #: widgets/loginstatewidget.cpp:75 #, qt-format msgid "You are signed in as %1." -msgstr "" +msgstr "Пријављени сте као %1" #: widgets/loginstatewidget.cpp:73 msgid "You are signed in." -msgstr "" +msgstr "Пријављени сте." #: ../bin/src/ui_groupbydialog.h:123 msgid "You can change the way the songs in the library are organised." @@ -5411,11 +5412,11 @@ msgstr "" msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." -msgstr "Можете бесплатно слушати песеме на Магнатјуну без регистровања налога. Куповином чланства ослободићете се порука на крају сваке нумере." +msgstr "Можете бесплатно слушати песме на Магнатјуну без налога. Куповином чланства ослободићете се порука на крају сваке нумере." #: ../bin/src/ui_backgroundstreamssettingspage.h:57 msgid "You can listen to background streams at the same time as other music." -msgstr "" +msgstr "Можете да слушате позадинске токове истовремено са другом музиком." #: internet/lastfmsettingspage.cpp:148 msgid "" @@ -5433,11 +5434,11 @@ msgstr "" #: internet/groovesharksettingspage.cpp:103 msgid "You do not have a Grooveshark Anywhere account." -msgstr "" +msgstr "Немате Грувшарк Билокуд налог." #: internet/spotifysettingspage.cpp:149 msgid "You do not have a Spotify Premium account." -msgstr "" +msgstr "Немате Спотифај Премијум налог." #: internet/digitallyimportedclient.cpp:89 msgid "You do not have an active subscription" @@ -5455,7 +5456,7 @@ msgstr "" #: songinfo/lastfmtrackinfoprovider.cpp:87 msgid "You love this track" -msgstr "" +msgstr "Волите ову нумеру" #: ../bin/src/ui_globalshortcutssettingspage.h:170 msgid "" @@ -5466,7 +5467,7 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "" +msgstr "Морате да поново покренете Клементину да бисте променили језик." #: internet/lastfmsettingspage.cpp:114 msgid "" @@ -5476,15 +5477,15 @@ msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:200 msgid "Your IP address:" -msgstr "" +msgstr "Ваша ИП адреса:" #: internet/lastfmsettingspage.cpp:80 msgid "Your Last.fm credentials were incorrect" -msgstr "Акредитиви за ЛастФМ које сте унели су нетачни" +msgstr "Ваши акредитиви за Ласт.фм су нетачни" #: internet/magnatunesettingspage.cpp:113 msgid "Your Magnatune credentials were incorrect" -msgstr "" +msgstr "Ваши акредитиви за Магнатјун су нетачни" #: library/libraryview.cpp:343 msgid "Your library is empty!" @@ -5497,11 +5498,11 @@ msgstr "Ваши радио токови" #: songinfo/lastfmtrackinfoprovider.cpp:88 #, qt-format msgid "Your scrobbles: %1" -msgstr "" +msgstr "Ваша скробловања: %1" #: visualisations/visualisationcontainer.cpp:152 msgid "Your system is missing OpenGL support, visualizations are unavailable." -msgstr "" +msgstr "Ваш систем не подржава ОпенГЛ, визуелизације нису доступне." #: internet/groovesharksettingspage.cpp:107 #: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 @@ -5510,11 +5511,11 @@ msgstr "" #: smartplaylists/searchterm.cpp:297 msgid "Z-A" -msgstr "" +msgstr "Ш-А" #: ui/equalizer.cpp:136 msgid "Zero" -msgstr "Нулто" +msgstr "ништа" #: playlist/playlistundocommands.cpp:37 #, c-format, qt-plural-format @@ -5523,27 +5524,27 @@ msgstr "додај %n песама" #: smartplaylists/searchterm.cpp:205 msgid "after" -msgstr "" +msgstr "након" #: ../bin/src/ui_searchtermwidget.h:270 msgid "ago" -msgstr "Pre" +msgstr " " #: ../bin/src/ui_searchtermwidget.h:269 msgid "and" -msgstr "i" +msgstr "и" #: ../bin/src/ui_transcoderoptionsspeex.h:219 msgid "automatic" -msgstr "" +msgstr "аутоматски" #: smartplaylists/searchterm.cpp:206 msgid "before" -msgstr "pre" +msgstr "пре" #: smartplaylists/searchterm.cpp:211 msgid "between" -msgstr "" +msgstr "између" #: smartplaylists/searchterm.cpp:301 msgid "biggest first" @@ -5551,17 +5552,17 @@ msgstr "" #: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 msgid "bpm" -msgstr "опм" +msgstr "темпо" #: smartplaylists/searchterm.cpp:217 msgid "contains" -msgstr "sadrži" +msgstr "садржи" #: ../bin/src/ui_transcoderoptionsspeex.h:222 #: ../bin/src/ui_transcoderoptionsvorbis.h:207 #: ../bin/src/ui_transcoderoptionsvorbis.h:210 msgid "disabled" -msgstr "" +msgstr "онемогућено" #: widgets/osd.cpp:114 #, qt-format @@ -5570,15 +5571,15 @@ msgstr "диск %1" #: smartplaylists/searchterm.cpp:218 msgid "does not contain" -msgstr "ne sadrži" +msgstr "не садржи" #: smartplaylists/searchterm.cpp:220 msgid "ends with" -msgstr "" +msgstr "завршава са" #: smartplaylists/searchterm.cpp:223 msgid "equals" -msgstr "" +msgstr "једнак" #: ../bin/src/ui_podcastsettingspage.h:249 msgid "gpodder.net" @@ -5590,7 +5591,7 @@ msgstr "" #: smartplaylists/searchterm.cpp:221 msgid "greater than" -msgstr "" +msgstr "већи од" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" @@ -5598,7 +5599,7 @@ msgstr "" #: smartplaylists/searchterm.cpp:209 msgid "in the last" -msgstr "" +msgstr "последњих" #: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 #: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 @@ -5608,7 +5609,7 @@ msgstr "kb/s" #: smartplaylists/searchterm.cpp:222 msgid "less than" -msgstr "" +msgstr "мањи од" #: smartplaylists/searchterm.cpp:299 msgid "longest first" @@ -5625,15 +5626,15 @@ msgstr "" #: smartplaylists/searchterm.cpp:224 msgid "not equals" -msgstr "" +msgstr "није једнак" #: smartplaylists/searchterm.cpp:210 msgid "not in the last" -msgstr "" +msgstr "не у последњих" #: smartplaylists/searchterm.cpp:208 msgid "not on" -msgstr "" +msgstr "не на дан" #: smartplaylists/searchterm.cpp:298 msgid "oldest first" @@ -5641,7 +5642,7 @@ msgstr "" #: smartplaylists/searchterm.cpp:207 msgid "on" -msgstr "" +msgstr "на дан" #: core/commandlineoptions.cpp:150 msgid "options" @@ -5649,7 +5650,7 @@ msgstr "Опције" #: ../bin/src/ui_networkremotesettingspage.h:203 msgid "or scan the QR code!" -msgstr "" +msgstr "или скенирајте кôд испод!" #: widgets/didyoumean.cpp:56 msgid "press enter" @@ -5658,7 +5659,7 @@ msgstr "pritisni enter" #: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 #, c-format, qt-plural-format msgid "remove %n songs" -msgstr "remove %n песама" +msgstr "уклони %n песама" #: smartplaylists/searchterm.cpp:299 msgid "shortest first" @@ -5678,7 +5679,7 @@ msgstr "" #: smartplaylists/searchterm.cpp:219 msgid "starts with" -msgstr "" +msgstr "почиње са" #: playlist/playlistdelegates.cpp:185 msgid "stop" diff --git a/src/translations/sr@latin.po b/src/translations/sr@latin.po index 9f2ddf1a6..5ba47c2d6 100644 --- a/src/translations/sr@latin.po +++ b/src/translations/sr@latin.po @@ -4,11 +4,12 @@ # # Translators: # FIRST AUTHOR , 2011 +# daimonion , 2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-02-02 00:13+0000\n" +"Last-Translator: daimonion \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/clementine/language/sr@latin/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,11 +23,11 @@ msgid "" "You can favorite playlists by clicking the star icon next to a playlist name\n" "\n" "Favorited playlists will be saved here" -msgstr "" +msgstr "\n\nMožete staviti liste numera u omiljene klikom na zvezdicu pored imena liste\n\nOmiljene liste numera biće sačuvane ovde" #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" -msgstr "" +msgstr " dana" #: ../bin/src/ui_transcoderoptionsaac.h:130 #: ../bin/src/ui_transcoderoptionsmp3.h:195 @@ -44,11 +45,11 @@ msgstr " kb/s" #: ../bin/src/ui_playbacksettingspage.h:308 #: ../bin/src/ui_playbacksettingspage.h:328 msgid " ms" -msgstr "" +msgstr " ms" #: ../bin/src/ui_songinfosettingspage.h:157 msgid " pt" -msgstr "" +msgstr " pt" #: ../bin/src/ui_notificationssettingspage.h:439 #: ../bin/src/ui_visualisationselector.h:116 @@ -57,12 +58,12 @@ msgstr " sekundi" #: ../bin/src/ui_querysortpage.h:143 msgid " songs" -msgstr "" +msgstr " pesama" #: widgets/osd.cpp:193 #, qt-format msgid "%1 albums" -msgstr "" +msgstr "%1 albuma" #: core/utilities.cpp:110 #, qt-format @@ -72,211 +73,211 @@ msgstr "%1 dana" #: core/utilities.cpp:131 #, qt-format msgid "%1 days ago" -msgstr "" +msgstr "pre %1 dana" #: podcasts/gpoddersync.cpp:79 #, qt-format msgid "%1 on %2" -msgstr "" +msgstr "%1 na %2" #: playlistparsers/playlistparser.cpp:76 #, qt-format msgid "%1 playlists (%2)" -msgstr "" +msgstr "%1 listi numera (%2)" #: playlist/playlistmanager.cpp:413 #, qt-format msgid "%1 selected of" -msgstr "" +msgstr "%1 izabrano od" #: devices/deviceview.cpp:123 #, qt-format msgid "%1 song" -msgstr "" +msgstr "%1 pesma" #: devices/deviceview.cpp:125 #, qt-format msgid "%1 songs" -msgstr "" +msgstr "%1 pesama" #: smartplaylists/searchpreview.cpp:133 #, qt-format msgid "%1 songs found" -msgstr "" +msgstr "%1 pesama pronađeno" #: smartplaylists/searchpreview.cpp:130 #, qt-format msgid "%1 songs found (showing %2)" -msgstr "" +msgstr "%1 pesama pronađeno (prikazujem %2)" #: playlist/playlistmanager.cpp:419 #, qt-format msgid "%1 tracks" -msgstr "" +msgstr "%1 numera" #: ui/albumcovermanager.cpp:459 #, qt-format msgid "%1 transferred" -msgstr "" +msgstr "%1 prebačeno" #: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 #: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" -msgstr "" +msgstr "%1: Wiimotedev modul" #: songinfo/lastfmtrackinfoprovider.cpp:94 #, qt-format msgid "%L1 other listeners" -msgstr "" +msgstr "%L1 drugih slušalaca" #: songinfo/lastfmtrackinfoprovider.cpp:92 #, qt-format msgid "%L1 total plays" -msgstr "" +msgstr "%L1 ukupnih slušanja" #: ../bin/src/ui_notificationssettingspage.h:427 msgid "%filename%" -msgstr "" +msgstr "%filename%" #: transcoder/transcodedialog.cpp:207 #, c-format, qt-plural-format msgid "%n failed" -msgstr "" +msgstr "%n neuspešno" #: transcoder/transcodedialog.cpp:202 #, c-format, qt-plural-format msgid "%n finished" -msgstr "" +msgstr "%n završeno" #: transcoder/transcodedialog.cpp:197 #, c-format, qt-plural-format msgid "%n remaining" -msgstr "" +msgstr "%n preostalo" #: playlist/playlistheader.cpp:37 msgid "&Align text" -msgstr "" +msgstr "&Poravnaj tekst" #: playlist/playlistheader.cpp:40 msgid "&Center" -msgstr "" +msgstr "¢riraj" #: ../bin/src/ui_globalshortcutssettingspage.h:178 msgid "&Custom" -msgstr "" +msgstr "&Posebna" #: ../bin/src/ui_mainwindow.h:735 msgid "&Extras" -msgstr "" +msgstr "&Dodaci" #: ../bin/src/ui_mainwindow.h:734 msgid "&Help" -msgstr "" +msgstr "&Pomoć" #: playlist/playlistheader.cpp:70 #, qt-format msgid "&Hide %1" -msgstr "" +msgstr "&Sakrij %1" #: playlist/playlistheader.cpp:33 msgid "&Hide..." -msgstr "" +msgstr "&Sakrij..." #: playlist/playlistheader.cpp:39 msgid "&Left" -msgstr "" +msgstr "&levo" #: ../bin/src/ui_mainwindow.h:732 msgid "&Music" -msgstr "" +msgstr "&Muzika" #: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "&None" -msgstr "" +msgstr "&Nijedna" #: ../bin/src/ui_mainwindow.h:733 msgid "&Playlist" -msgstr "" +msgstr "&Lista numera" #: ../bin/src/ui_mainwindow.h:660 msgid "&Quit" -msgstr "" +msgstr "&Napusti" #: ../bin/src/ui_mainwindow.h:698 msgid "&Repeat mode" -msgstr "" +msgstr "&Režim ponavljanja" #: playlist/playlistheader.cpp:41 msgid "&Right" -msgstr "" +msgstr "&desno" #: ../bin/src/ui_mainwindow.h:697 msgid "&Shuffle mode" -msgstr "" +msgstr "&Nasumični režim" #: playlist/playlistheader.cpp:34 msgid "&Stretch columns to fit window" -msgstr "" +msgstr "&Uklopi kolone u prozor" #: ../bin/src/ui_mainwindow.h:736 msgid "&Tools" -msgstr "" +msgstr "&Alatke" #: ui/edittagdialog.cpp:48 msgid "(different across multiple songs)" -msgstr "" +msgstr "(drugačije kroz razne pesme)" #: ui/about.cpp:77 msgid "...and all the Amarok contributors" -msgstr "" +msgstr "i svima koji su doprineli Amaroku" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" -msgstr "" +msgstr "0" #: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 msgid "0:00:00" -msgstr "" +msgstr "0:00:00" #: ../bin/src/ui_appearancesettingspage.h:289 msgid "0px" -msgstr "" +msgstr "0px" #: core/utilities.cpp:110 msgid "1 day" -msgstr "" +msgstr "1 dan" #: playlist/playlistmanager.cpp:419 msgid "1 track" -msgstr "" +msgstr "1 numera" #: ../bin/src/ui_networkremotesettingspage.h:201 msgid "127.0.0.1" -msgstr "" +msgstr "127.0.0.1" #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" -msgstr "" +msgstr "128k MP3" #: ../bin/src/ui_appearancesettingspage.h:291 msgid "40%" -msgstr "" +msgstr "40%" #: library/library.cpp:60 msgid "50 random tracks" -msgstr "" +msgstr "50 nasumičnih pesama" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "" +msgstr "Nadogradi na Premijum nalog" #: ../bin/src/ui_ubuntuonesettingspage.h:133 msgid "" "Create a new account or reset " "your password" -msgstr "" +msgstr "Napravite novi nalog ili resetujte vašu lozinku" #: ../bin/src/ui_librarysettingspage.h:195 msgid "" @@ -286,7 +287,7 @@ msgid "" "directly into the file each time they changed.

Please note it might " "not work for every format and, as there is no standard for doing so, other " "music players might not be able to read them.

" -msgstr "" +msgstr "

Ako nije štiklirano Klementina će upisivati vaše ocene i i ostalu statistiku samo u odvojenoj bazi podataka i neće menjati vaše fajlove.

Ako je štiklirano, upisivaće statistiku i u bazi podataka i direktno u fajl pri svakoj izmeni.

Imajte na umu da ovo možda neće raditi za svaki format fajla i, kako nema standarda za to, ostali muzički plejeri možda neće umeti da to pročitaju.

" #: ../bin/src/ui_librarysettingspage.h:199 msgid "" @@ -294,83 +295,83 @@ msgid "" "files tags for all your library's songs.

This is not needed if the " ""Save ratings and statistics in file tags" option has always been " "activated.

" -msgstr "" +msgstr "

Upis statistike i ocena pesama u oznake fajlova za sve pesme vaše biblioteke.

Nije potrebno ako je postavka „Upiši ocenu/statistiku pesme u oznake kad je to moguće“ uvek bila aktivirana.

" #: ../bin/src/ui_organisedialog.h:199 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -msgstr "" +msgstr "

Tokens start with %, for example: %artist %album %title

\n\n

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" #: internet/groovesharksettingspage.cpp:111 msgid "A Grooveshark Anywhere account is required." -msgstr "" +msgstr "Potreban je Gruvšark Bilokud nalog" #: internet/spotifysettingspage.cpp:162 msgid "A Spotify Premium account is required." -msgstr "" +msgstr "Potreban je Spotifaj Premijum nalog" #: ../bin/src/ui_networkremotesettingspage.h:189 msgid "A client can connect only, if the correct code was entered." -msgstr "" +msgstr "Klijent može da se poveže samo ako je unesen ispravan kôd." #: smartplaylists/wizard.cpp:78 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." -msgstr "" +msgstr "Pametna lista numera je dinamička lista pesama iz vaše biblioteke. Postoje različiti tipovi pametnih lista koji nude različite načine izbora pesama." #: smartplaylists/querywizardplugin.cpp:153 msgid "" "A song will be included in the playlist if it matches these conditions." -msgstr "" +msgstr "Pesma će biti uključena u listu ako zadovoljava ove uslove." #: smartplaylists/searchterm.cpp:297 msgid "A-Z" -msgstr "" +msgstr "A-Ž" #: ../bin/src/ui_transcodersettingspage.h:179 msgid "AAC" -msgstr "" +msgstr "AAC" #: ../bin/src/ui_digitallyimportedsettingspage.h:179 msgid "AAC 128k" -msgstr "" +msgstr "AAC 128k" #: ../bin/src/ui_digitallyimportedsettingspage.h:171 msgid "AAC 32k" -msgstr "" +msgstr "AAC 32k" #: ../bin/src/ui_digitallyimportedsettingspage.h:178 msgid "AAC 64k" -msgstr "" +msgstr "AAC 64k" #: core/song.cpp:348 msgid "AIFF" -msgstr "" +msgstr "AIFF" #: widgets/nowplayingwidget.cpp:127 msgid "ALL GLORY TO THE HYPNOTOAD" -msgstr "" +msgstr "SLAVA HIPNOŽAPCU" #: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 msgid "Abort" -msgstr "" +msgstr "Prekini" #: ui/about.cpp:32 #, qt-format msgid "About %1" -msgstr "" +msgstr "O %1" #: ../bin/src/ui_mainwindow.h:681 msgid "About Clementine..." -msgstr "" +msgstr "O Klementini..." #: ../bin/src/ui_mainwindow.h:716 msgid "About Qt..." -msgstr "" +msgstr "Više o Kutu..." #: ../bin/src/ui_groovesharksettingspage.h:113 #: ../bin/src/ui_magnatunesettingspage.h:155 @@ -378,208 +379,208 @@ msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:151 #: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" -msgstr "" +msgstr "Detalji o nalogu" #: ../bin/src/ui_digitallyimportedsettingspage.h:161 msgid "Account details (Premium)" -msgstr "" +msgstr "Detalji o nalogu (Premijum)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" -msgstr "" +msgstr "Radnja" #: wiimotedev/wiimotesettingspage.cpp:98 msgid "Active/deactive Wiiremote" -msgstr "" +msgstr "Uključi/isključi Wii daljinski" #: podcasts/addpodcastdialog.cpp:56 msgid "Add Podcast" -msgstr "" +msgstr "Dodaj podkast" #: ../bin/src/ui_addstreamdialog.h:113 msgid "Add Stream" -msgstr "" +msgstr "Dodaj tok" #: ../bin/src/ui_notificationssettingspage.h:425 msgid "Add a new line if supported by the notification type" -msgstr "" +msgstr "Dodaj novu liniju ako je podržano tipom obaveštenja" #: ../bin/src/ui_wiimotesettingspage.h:193 msgid "Add action" -msgstr "" +msgstr "Dodaj radnju" #: internet/savedradio.cpp:103 msgid "Add another stream..." -msgstr "" +msgstr "Dodaj drugi tok..." #: library/librarysettingspage.cpp:68 msgid "Add directory..." -msgstr "" +msgstr "Dodaj fasciklu..." #: ui/mainwindow.cpp:1623 msgid "Add file" -msgstr "" +msgstr "Dodavanje fajla" #: ../bin/src/ui_mainwindow.h:727 msgid "Add file to transcoder" -msgstr "" +msgstr "Dodaj fajl u prekoder" #: ../bin/src/ui_mainwindow.h:725 msgid "Add file(s) to transcoder" -msgstr "" +msgstr "Dodaj fajlo(ove) u prekoder" #: ../bin/src/ui_mainwindow.h:685 msgid "Add file..." -msgstr "" +msgstr "Dodaj fajl..." #: transcoder/transcodedialog.cpp:219 msgid "Add files to transcode" -msgstr "" +msgstr "Dodavanje fajlova za prekodiranje" #: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 msgid "Add folder" -msgstr "" +msgstr "Dodavanje fascikle" #: ../bin/src/ui_mainwindow.h:702 msgid "Add folder..." -msgstr "" +msgstr "Dodaj fasciklu..." #: ../bin/src/ui_librarysettingspage.h:188 msgid "Add new folder..." -msgstr "" +msgstr "Dodaj novu fasciklu..." #: ../bin/src/ui_addpodcastdialog.h:179 msgid "Add podcast" -msgstr "" +msgstr "Dodavanje podkasta" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." -msgstr "" +msgstr "Dodaj podkast..." #: smartplaylists/searchtermwidget.cpp:341 msgid "Add search term" -msgstr "" +msgstr "Dodaj pojam za pretragu" #: ../bin/src/ui_notificationssettingspage.h:380 msgid "Add song album tag" -msgstr "" +msgstr "Umetni album pesme" #: ../bin/src/ui_notificationssettingspage.h:386 msgid "Add song albumartist tag" -msgstr "" +msgstr "Umetni izvođača albuma pesme" #: ../bin/src/ui_notificationssettingspage.h:377 msgid "Add song artist tag" -msgstr "" +msgstr "Umetni izvođača pesme" #: ../bin/src/ui_notificationssettingspage.h:422 msgid "Add song auto score" -msgstr "" +msgstr "Umetni skor pesme" #: ../bin/src/ui_notificationssettingspage.h:392 msgid "Add song composer tag" -msgstr "" +msgstr "Umetni kompozitora pesme" #: ../bin/src/ui_notificationssettingspage.h:401 msgid "Add song disc tag" -msgstr "" +msgstr "Umetni disk pesme" #: ../bin/src/ui_notificationssettingspage.h:429 msgid "Add song filename" -msgstr "" +msgstr "Umetni ime fajla pesme" #: ../bin/src/ui_notificationssettingspage.h:407 msgid "Add song genre tag" -msgstr "" +msgstr "Umetni žanr pesme" #: ../bin/src/ui_notificationssettingspage.h:398 msgid "Add song grouping tag" -msgstr "" +msgstr "Umetni grupisanje pesme" #: ../bin/src/ui_notificationssettingspage.h:410 msgid "Add song length tag" -msgstr "" +msgstr "Umetni dužinu pesme" #: ../bin/src/ui_notificationssettingspage.h:395 msgid "Add song performer tag" -msgstr "" +msgstr "Umetni izvođača pesme" #: ../bin/src/ui_notificationssettingspage.h:413 msgid "Add song play count" -msgstr "" +msgstr "Umetni broj puštanja pesme" #: ../bin/src/ui_notificationssettingspage.h:419 msgid "Add song rating" -msgstr "" +msgstr "Umetni ocenu pesme" #: ../bin/src/ui_notificationssettingspage.h:416 msgid "Add song skip count" -msgstr "" +msgstr "Umetni broj preskoka pesme" #: ../bin/src/ui_notificationssettingspage.h:383 msgid "Add song title tag" -msgstr "" +msgstr "Umetni naslov pesme" #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" -msgstr "" +msgstr "Umetni numeru pesme" #: ../bin/src/ui_notificationssettingspage.h:389 msgid "Add song year tag" -msgstr "" +msgstr "Umetni godinu pesme" #: ../bin/src/ui_mainwindow.h:687 msgid "Add stream..." -msgstr "" +msgstr "Dodaj tok..." #: internet/groovesharkservice.cpp:1087 msgid "Add to Grooveshark favorites" -msgstr "" +msgstr "Dodaj u Gruvšark omiljene" #: internet/groovesharkservice.cpp:1099 msgid "Add to Grooveshark playlists" -msgstr "" +msgstr "Dodaj u Gruvšark plejliste" #: ui/mainwindow.cpp:1448 msgid "Add to another playlist" -msgstr "" +msgstr "Dodaj u drugu listu" #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" -msgstr "" +msgstr "Dodaj u listu numera" #: ../bin/src/ui_behavioursettingspage.h:220 msgid "Add to the queue" -msgstr "" +msgstr "stavi u red" #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" -msgstr "" +msgstr "Dodaj wiimotedev radnju" #: ../bin/src/ui_transcodedialog.h:209 msgid "Add..." -msgstr "" +msgstr "Dodaj..." #: ../bin/src/ui_libraryfilterwidget.h:95 msgid "Added this month" -msgstr "" +msgstr "dodato ovog meseca" #: ../bin/src/ui_libraryfilterwidget.h:89 msgid "Added this week" -msgstr "" +msgstr "dodato ove nedelje" #: ../bin/src/ui_libraryfilterwidget.h:94 msgid "Added this year" -msgstr "" +msgstr "dodato ove godine" #: ../bin/src/ui_libraryfilterwidget.h:88 msgid "Added today" -msgstr "" +msgstr "dodato danas" #: ../bin/src/ui_libraryfilterwidget.h:90 #: ../bin/src/ui_libraryfilterwidget.h:92 msgid "Added within three months" -msgstr "" +msgstr "dodato u poslednja tri meseca" #: internet/groovesharkservice.cpp:1394 msgid "Adding song to My Music" @@ -591,127 +592,127 @@ msgstr "" #: library/libraryfilterwidget.cpp:116 msgid "Advanced grouping..." -msgstr "" +msgstr "Napredno grupisanje..." #: ../bin/src/ui_podcastsettingspage.h:247 msgid "After " -msgstr "" +msgstr "nakon " #: ../bin/src/ui_organisedialog.h:190 msgid "After copying..." -msgstr "" +msgstr "Nakon kopiranja:" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 #: ../bin/src/ui_trackselectiondialog.h:209 ../bin/src/ui_ripcd.h:315 msgid "Album" -msgstr "" +msgstr "album" #: ../bin/src/ui_playbacksettingspage.h:315 msgid "Album (ideal loudness for all tracks)" -msgstr "" +msgstr "album (idealna jačina za sve pesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" -msgstr "" +msgstr "izvođač albuma" #: ../bin/src/ui_appearancesettingspage.h:284 msgid "Album cover" -msgstr "" +msgstr "Omot albuma" #: internet/jamendoservice.cpp:415 msgid "Album info on jamendo.com..." -msgstr "" +msgstr "Podaci albuma sa jamendo.com..." #: ui/albumcovermanager.cpp:134 msgid "Albums with covers" -msgstr "" +msgstr "Albumi sa omotima" #: ui/albumcovermanager.cpp:135 msgid "Albums without covers" -msgstr "" +msgstr "Albumi bez omota" #: ui/mainwindow.cpp:160 msgid "All Files (*)" -msgstr "" +msgstr "Svi fajlovi (*)" #: ../bin/src/ui_mainwindow.h:693 msgid "All Glory to the Hypnotoad!" -msgstr "" +msgstr "Slava Hipnožapcu!" #: ui/albumcovermanager.cpp:133 msgid "All albums" -msgstr "" +msgstr "Svi albumi" #: ui/albumcovermanager.cpp:265 msgid "All artists" -msgstr "" +msgstr "Svi izvođači" #: ui/albumcoverchoicecontroller.cpp:47 msgid "All files (*)" -msgstr "" +msgstr "Svi fajlovi" #: playlistparsers/playlistparser.cpp:63 #, qt-format msgid "All playlists (%1)" -msgstr "" +msgstr "Sve liste numera (%1)" #: ui/about.cpp:74 msgid "All the translators" -msgstr "" +msgstr "svim prevodiocima" #: library/library.cpp:84 msgid "All tracks" -msgstr "" +msgstr "Sve numere" #: ../bin/src/ui_networkremotesettingspage.h:194 msgid "Allow a client to download music from this computer." -msgstr "" +msgstr "Dozvoli klijentu da preuzima muziku sa ovog računara." #: ../bin/src/ui_networkremotesettingspage.h:196 msgid "Allow downloads" -msgstr "" +msgstr "Dozvoli preuzimanja" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" -msgstr "" +msgstr "Dozvoli „mid/side“ kodiranje" #: ../bin/src/ui_transcodedialog.h:217 msgid "Alongside the originals" -msgstr "" +msgstr "pored originala" #: ../bin/src/ui_behavioursettingspage.h:203 msgid "Always hide the main window" -msgstr "" +msgstr "uvek sakrij glavni prozor" #: ../bin/src/ui_behavioursettingspage.h:202 msgid "Always show the main window" -msgstr "" +msgstr "uvek prikaži glavni prozor" #: ../bin/src/ui_behavioursettingspage.h:212 #: ../bin/src/ui_behavioursettingspage.h:226 msgid "Always start playing" -msgstr "" +msgstr "uvek će početi puštanje" #: internet/spotifyblobdownloader.cpp:60 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" -msgstr "" +msgstr "Potreban je dodatni priključak za korišćenje Spotifaja u Klementini. Želite li da ga preuzmete i instalirate sada?" #: devices/gpodloader.cpp:61 msgid "An error occurred loading the iTunes database" -msgstr "" +msgstr "Došlo je do greške usled učitavanja baze podataka iTunes" #: ui/edittagdialog.cpp:663 #, qt-format msgid "An error occurred writing metadata to '%1'" -msgstr "" +msgstr "Došlo je do greške usled pisanja metapodataka na '%1'" #: internet/subsonicsettingspage.cpp:103 msgid "An unspecified error occurred." @@ -719,55 +720,55 @@ msgstr "" #: ui/about.cpp:78 msgid "And:" -msgstr "" +msgstr "I:" #: moodbar/moodbarrenderer.cpp:156 msgid "Angry" -msgstr "" +msgstr "ljutit" #: ../bin/src/ui_songinfosettingspage.h:155 #: ../bin/src/ui_appearancesettingspage.h:271 msgid "Appearance" -msgstr "" +msgstr "Izgled" #: core/commandlineoptions.cpp:166 msgid "Append files/URLs to the playlist" -msgstr "" +msgstr "Dodaj numere/URL tokove u listu numera" #: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 #: internet/internetservice.cpp:56 library/libraryview.cpp:367 #: widgets/fileviewlist.cpp:32 msgid "Append to current playlist" -msgstr "" +msgstr "Dodaj u trenutnu listu numera" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" -msgstr "" +msgstr "doda u listu numera" #: ../bin/src/ui_playbacksettingspage.h:318 msgid "Apply compression to prevent clipping" -msgstr "" +msgstr "Primeni kompresiju kako bi se sprečilo odsecanje" #: ui/equalizer.cpp:201 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" -msgstr "" +msgstr "Želite li zaista da obrišete prepostavku „%1“?" #: internet/groovesharkservice.cpp:1292 msgid "Are you sure you want to delete this playlist?" -msgstr "" +msgstr "Želite li zaista da obrišete ovu listu numera?" #: ui/edittagdialog.cpp:769 msgid "Are you sure you want to reset this song's statistics?" -msgstr "" +msgstr "Želite li zaista da poništite statistiku ove pesme?" #: library/librarysettingspage.cpp:152 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" -msgstr "" +msgstr "Želite li zaista da upišete statistiku pesme u fajl pesme za sve pesme iz vaše biblioteke?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -775,133 +776,133 @@ msgstr "" #: ../bin/src/ui_trackselectiondialog.h:210 #: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 msgid "Artist" -msgstr "" +msgstr "izvođač" #: ui/mainwindow.cpp:248 msgid "Artist info" -msgstr "" +msgstr "Podaci o izvođaču" #: internet/lastfmservice.cpp:208 msgid "Artist radio" -msgstr "" +msgstr "Radio izvođača" #: songinfo/echonesttags.cpp:59 msgid "Artist tags" -msgstr "" +msgstr "Oznake izvođača" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" -msgstr "" +msgstr "inicijali izvođača" #: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" -msgstr "" +msgstr "Format zvuka" #: internet/digitallyimportedsettingspage.cpp:82 #: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 #: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 msgid "Authentication failed" -msgstr "" +msgstr "Autentifikacija nije uspela" #: ../bin/src/ui_podcastinfowidget.h:192 msgid "Author" -msgstr "" +msgstr "Autor" #: ui/about.cpp:65 msgid "Authors" -msgstr "" +msgstr "Autori" #: ../bin/src/ui_transcoderoptionsspeex.h:227 msgid "Auto" -msgstr "" +msgstr "automatski" #: ../bin/src/ui_librarysettingspage.h:190 msgid "Automatic updating" -msgstr "" +msgstr "Automatsko ažuriranje" #: ../bin/src/ui_librarysettingspage.h:208 msgid "Automatically open single categories in the library tree" -msgstr "" +msgstr "Automatski otvori pojedinačne kategorije u stablu biblioteke" #: widgets/freespacebar.cpp:45 msgid "Available" -msgstr "" +msgstr "Dostupno" #: ../bin/src/ui_transcoderoptionsspeex.h:221 msgid "Average bitrate" -msgstr "" +msgstr "Prosečni bitski protok" #: covers/coversearchstatisticsdialog.cpp:70 msgid "Average image size" -msgstr "" +msgstr "Prosečna veličina slike" #: podcasts/addpodcastdialog.cpp:80 msgid "BBC Podcasts" -msgstr "" +msgstr "BBC-ijevi podkasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" -msgstr "" +msgstr "tempo" #: ../bin/src/ui_backgroundstreamssettingspage.h:56 msgid "Background Streams" -msgstr "" +msgstr "Pozadinski tokovi" #: ../bin/src/ui_notificationssettingspage.h:453 msgid "Background color" -msgstr "" +msgstr "Boja pozadine" #: ../bin/src/ui_appearancesettingspage.h:279 msgid "Background image" -msgstr "" +msgstr "Slika pozadine" #: ../bin/src/ui_notificationssettingspage.h:452 msgid "Background opacity" -msgstr "" +msgstr "Neprozirnost pozadine" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" -msgstr "" +msgstr "Bekapujem bazu podataka" #: ../bin/src/ui_equalizer.h:173 msgid "Balance" -msgstr "" +msgstr "Ravnoteža" #: ../bin/src/ui_mainwindow.h:666 msgid "Ban" -msgstr "" +msgstr "Zabrani" #: analyzers/baranalyzer.cpp:19 msgid "Bar analyzer" -msgstr "" +msgstr "Trakasti analizator" #: ../bin/src/ui_notificationssettingspage.h:456 msgid "Basic Blue" -msgstr "" +msgstr "osnovna plava" #: ../bin/src/ui_digitallyimportedsettingspage.h:167 msgid "Basic audio type" -msgstr "" +msgstr "Tip zvuka (osnovno)" #: ../bin/src/ui_behavioursettingspage.h:191 msgid "Behavior" -msgstr "" +msgstr "Ponašanje" #: ../bin/src/ui_transcoderoptionsflac.h:83 msgid "Best" -msgstr "" +msgstr "najbolji" #: songinfo/echonestbiographies.cpp:83 #, qt-format msgid "Biography from %1" -msgstr "" +msgstr "Biografija sa %1" #: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" -msgstr "" +msgstr "bitski protok" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -909,89 +910,89 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsspeex.h:218 #: ../bin/src/ui_transcoderoptionswma.h:79 msgid "Bitrate" -msgstr "" +msgstr "Bitski protok" #: analyzers/blockanalyzer.cpp:22 msgid "Block analyzer" -msgstr "" +msgstr "Blok analizator" #: ../bin/src/ui_transcoderoptionsaac.h:141 msgid "Block type" -msgstr "" +msgstr "Tip bloka" #: ../bin/src/ui_appearancesettingspage.h:288 msgid "Blur amount" -msgstr "" +msgstr "Zamućenje" #: ../bin/src/ui_notificationssettingspage.h:449 msgid "Body" -msgstr "" +msgstr "Telo" #: analyzers/boomanalyzer.cpp:8 msgid "Boom analyzer" -msgstr "" +msgstr "Bum analizator" #: ../bin/src/ui_boxsettingspage.h:103 msgid "Box" -msgstr "" +msgstr "Boks" #: ../bin/src/ui_magnatunedownloaddialog.h:146 #: ../bin/src/ui_podcastsettingspage.h:242 #: ../bin/src/ui_appearancesettingspage.h:287 msgid "Browse..." -msgstr "" +msgstr "Pregledaj..." #: ../bin/src/ui_playbacksettingspage.h:327 msgid "Buffer duration" -msgstr "" +msgstr "Veličina bafera" #: engines/gstengine.cpp:784 msgid "Buffering" -msgstr "" +msgstr "Baferujem" #: ../bin/src/ui_globalsearchview.h:211 msgid "But these sources are disabled:" -msgstr "" +msgstr "ali ovi izvori su onemogućeni:" #: ../bin/src/ui_wiimotesettingspage.h:192 msgid "Buttons" -msgstr "" +msgstr "Dugmad" #: core/song.cpp:351 msgid "CDDA" -msgstr "" +msgstr "CDDA" #: library/library.cpp:100 msgid "CUE sheet support" -msgstr "" +msgstr "Podrška za CUE list" #: internet/spotifyblobdownloader.cpp:44 msgid "Cancel" -msgstr "" +msgstr "Odustani" #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" -msgstr "" +msgstr "Promeni sliku omota" #: songinfo/songinfotextview.cpp:83 msgid "Change font size..." -msgstr "" +msgstr "Promeni veličinu fonta..." #: core/globalshortcuts.cpp:62 msgid "Change repeat mode" -msgstr "" +msgstr "Promeni ponavljanje" #: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "Change shortcut..." -msgstr "" +msgstr "Izmeni prečicu..." #: core/globalshortcuts.cpp:61 msgid "Change shuffle mode" -msgstr "" +msgstr "Promeni nasumičnost" #: core/commandlineoptions.cpp:172 msgid "Change the language" -msgstr "" +msgstr "Promeni jezik" #: ../bin/src/ui_playbacksettingspage.h:330 msgid "" @@ -1001,106 +1002,106 @@ msgstr "" #: ../bin/src/ui_podcastsettingspage.h:228 msgid "Check for new episodes" -msgstr "" +msgstr "Traži nove epizode" #: ui/mainwindow.cpp:602 msgid "Check for updates..." -msgstr "" +msgstr "Potraži nadogradnje..." #: smartplaylists/wizard.cpp:86 msgid "Choose a name for your smart playlist" -msgstr "" +msgstr "Izaberite ime za vašu pametnu listu" #: ../bin/src/ui_playbacksettingspage.h:323 msgid "Choose automatically" -msgstr "" +msgstr "Izaberi automatski" #: ../bin/src/ui_notificationssettingspage.h:461 msgid "Choose color..." -msgstr "" +msgstr "Izaberi boju..." #: ../bin/src/ui_notificationssettingspage.h:462 msgid "Choose font..." -msgstr "" +msgstr "Izaberi font..." #: ../bin/src/ui_visualisationselector.h:113 msgid "Choose from the list" -msgstr "" +msgstr "izbor sa spiska" #: smartplaylists/querywizardplugin.cpp:155 msgid "Choose how the playlist is sorted and how many songs it will contain." -msgstr "" +msgstr "Odredite sortiranje liste numera i koliko pesama će da sadrži." #: podcasts/podcastsettingspage.cpp:132 msgid "Choose podcast download directory" -msgstr "" +msgstr "Izbor fascikle preuzimanja za podkast" #: ../bin/src/ui_songinfosettingspage.h:160 msgid "" "Choose the websites you want Clementine to use when searching for lyrics." -msgstr "" +msgstr "Izaberite sajtove koje želite da Klementina koristi pri traženju stihova." #: ui/equalizer.cpp:115 msgid "Classical" -msgstr "" +msgstr "klasična" #: ../bin/src/ui_podcastsettingspage.h:243 msgid "Cleaning up" -msgstr "" +msgstr "Čišćenje" #: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" -msgstr "" +msgstr "Očisti" #: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 msgid "Clear playlist" -msgstr "" +msgstr "Očisti listu numera" #: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 #: visualisations/visualisationcontainer.cpp:211 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" -msgstr "" +msgstr "Klementina" #: ../bin/src/ui_errordialog.h:93 msgid "Clementine Error" -msgstr "" +msgstr "Greška Klementine" #: ../bin/src/ui_notificationssettingspage.h:457 msgid "Clementine Orange" -msgstr "" +msgstr "Klementina narandžasta" #: visualisations/visualisationcontainer.cpp:77 #: visualisations/visualisationcontainer.cpp:151 msgid "Clementine Visualization" -msgstr "" +msgstr "Vizuelizacija Klementine" #: ../bin/src/ui_deviceproperties.h:376 msgid "" "Clementine can automatically convert the music you copy to this device into " "a format that it can play." -msgstr "" +msgstr "Klementina može automatski da pretvori muziku koju kopirate na ovaj uređaj u format koji taj uređaj može da pusti." #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "" +msgstr "Klementina može da pušta muziku koju ste učitali na Boks" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "" +msgstr "Klementina može da pušta muziku koju ste učitali na Dropboks" #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "" +msgstr "Klementina može da pušta muziku koju ste učitali na Gugl Drajv" #: ../bin/src/ui_ubuntuonesettingspage.h:128 msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "" +msgstr "Klementina može da pušta muziku koju ste učitali na Ubuntu 1" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." -msgstr "" +msgstr "Klementina može prikazivati poruke prilikom izmena numera." #: ../bin/src/ui_podcastsettingspage.h:250 msgid "" @@ -1113,40 +1114,40 @@ msgstr "" msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." -msgstr "" +msgstr "Klementina ne može da učita nijednu projektM vizuelizaciju. Proverite da li ste ispravno instalirali Klementinu." #: internet/lastfmsettingspage.cpp:110 msgid "" "Clementine couldn't fetch your subscription status since there are problems " "with your connection. Played tracks will be cached and sent later to " "Last.fm." -msgstr "" +msgstr "Klementina nije mogla da dobavi vaš pretplatnički status zbog problema sa vezom. Puštene numere će biti keširane i kasnije poslate na Last.fm." #: widgets/prettyimage.cpp:201 msgid "Clementine image viewer" -msgstr "" +msgstr "Klemetinin pregledač slika" #: ../bin/src/ui_trackselectiondialog.h:206 msgid "Clementine was unable to find results for this file" -msgstr "" +msgstr "Klementina nije mogla da nađe rezultate za ovaj fajl" #: ../bin/src/ui_globalsearchview.h:210 msgid "Clementine will find music in:" -msgstr "" +msgstr "Klementina će tražiti muziku u:" #: library/libraryview.cpp:349 msgid "Click here to add some music" -msgstr "" +msgstr "Kliknite ovde da dodate muziku" #: playlist/playlisttabbar.cpp:293 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "" +msgstr "Kliknite ovde da stavite ovu listu numera u omiljene da bi bila sačuvana i pristupačna preko „Liste numera“ panela na bočnoj traci s leva" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" -msgstr "" +msgstr "Kliknite da promenite prikaz preostalog/ukupnog vremena" #: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 @@ -1157,113 +1158,113 @@ msgstr "" #: widgets/didyoumean.cpp:37 msgid "Close" -msgstr "" +msgstr "Zatvori" #: playlist/playlisttabbar.cpp:54 msgid "Close playlist" -msgstr "" +msgstr "Zatvori listu numera" #: visualisations/visualisationcontainer.cpp:127 msgid "Close visualization" -msgstr "" +msgstr "Zatvori vizuelizaciju" #: internet/magnatunedownloaddialog.cpp:280 msgid "Closing this window will cancel the download." -msgstr "" +msgstr "Zatvaranje ovog prozora prekinuće preuzimanje." #: ui/albumcovermanager.cpp:216 msgid "Closing this window will stop searching for album covers." -msgstr "" +msgstr "Zatvaranje ovog prozora prekinuće potragu za omotima albuma." #: ui/equalizer.cpp:116 msgid "Club" -msgstr "" +msgstr "klub" #: ../bin/src/ui_appearancesettingspage.h:272 msgid "Colors" -msgstr "" +msgstr "Boje" #: core/commandlineoptions.cpp:175 msgid "Comma separated list of class:level, level is 0-3" -msgstr "" +msgstr "Zarez razdvaja listu od klasa:nivo, nivo je 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" -msgstr "" +msgstr "komentar" #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" -msgstr "" +msgstr "Popuni oznake automatski" #: ../bin/src/ui_mainwindow.h:720 msgid "Complete tags automatically..." -msgstr "" +msgstr "Popuni oznake automatski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" -msgstr "" +msgstr "kompozitor" #: internet/searchboxwidget.cpp:42 #, qt-format msgid "Configure %1..." -msgstr "" +msgstr "Podesi %1..." #: internet/groovesharkservice.cpp:552 msgid "Configure Grooveshark..." -msgstr "" +msgstr "Podesi Gruvšark..." #: internet/lastfmservice.cpp:126 msgid "Configure Last.fm..." -msgstr "" +msgstr "Podesi Last.fm..." #: internet/magnatuneservice.cpp:280 msgid "Configure Magnatune..." -msgstr "" +msgstr "Podesi Magnatjun..." #: ../bin/src/ui_globalshortcutssettingspage.h:167 msgid "Configure Shortcuts" -msgstr "" +msgstr "Postavke prečica" #: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 msgid "Configure Spotify..." -msgstr "" +msgstr "Podesi Spotifaj..." #: internet/subsonicservice.cpp:96 msgid "Configure Subsonic..." -msgstr "" +msgstr "Podesi Subsonik..." #: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 msgid "Configure global search..." -msgstr "" +msgstr "Podesi globalnu pretragu..." #: ui/mainwindow.cpp:483 msgid "Configure library..." -msgstr "" +msgstr "Podesi biblioteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." -msgstr "" +msgstr "Podesi podkaste..." #: internet/digitallyimportedservicebase.cpp:186 #: ../bin/src/ui_globalsearchsettingspage.h:150 #: internet/googledriveservice.cpp:193 msgid "Configure..." -msgstr "" +msgstr "Podesi..." #: ../bin/src/ui_wiimotesettingspage.h:186 msgid "Connect Wii Remotes using active/deactive action" -msgstr "" +msgstr "Poveži Wii daljinske koristeći radnje uključeno/isključeno" #: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 msgid "Connect device" -msgstr "" +msgstr "Poveži uređaj" #: internet/spotifyservice.cpp:253 msgid "Connecting to Spotify" -msgstr "" +msgstr "Poveži se na Spotifaj" #: internet/subsonicsettingspage.cpp:107 msgid "" @@ -1278,33 +1279,33 @@ msgstr "" #: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 msgid "Console" -msgstr "" +msgstr "Konzola" #: ../bin/src/ui_transcoderoptionsmp3.h:196 msgid "Constant bitrate" -msgstr "" +msgstr "Konstantan bitski protok" #: ../bin/src/ui_deviceproperties.h:379 msgid "Convert all music" -msgstr "" +msgstr "Pretvori svu muziku" #: ../bin/src/ui_deviceproperties.h:378 msgid "Convert any music that the device can't play" -msgstr "" +msgstr "Pretvori svu muziku koju uređaj ne može da pusti." #: internet/groovesharkservice.cpp:1172 msgid "Copy to clipboard" -msgstr "" +msgstr "Kopiraj na klipbord" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." -msgstr "" +msgstr "Kopiraj na uređaj...." #: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 #: widgets/fileviewlist.cpp:39 msgid "Copy to library..." -msgstr "" +msgstr "Kopiraj u biblioteku..." #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" @@ -1321,75 +1322,75 @@ msgstr "" msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" -msgstr "" +msgstr "Ne mogu da napravim Gstrimer element „%1“ - proverite da li su instalirani svi potrebni Gstrimer priključci" #: transcoder/transcoder.cpp:434 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" -msgstr "" +msgstr "Ne mogu da nađem mukser za %1, proverite da li imate instalirane potrebne priključke za Gstrimer" #: transcoder/transcoder.cpp:428 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" -msgstr "" +msgstr "Ne mogu da nađem koder za %1, proverite da li imate instalirane potrebne priključke za Gstrimer" #: internet/lastfmservice.cpp:875 msgid "Couldn't load the last.fm radio station" -msgstr "" +msgstr "Ne mogu da učitam last.fm radio stanicu" #: internet/magnatunedownloaddialog.cpp:203 #, qt-format msgid "Couldn't open output file %1" -msgstr "" +msgstr "Ne mogu da otvorim izlazni fajl %1" #: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 #: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 #: internet/googledriveservice.cpp:189 msgid "Cover Manager" -msgstr "" +msgstr "Menadžer omota" #: ui/edittagdialog.cpp:443 msgid "Cover art from embedded image" -msgstr "" +msgstr "Omot iz ugrađene slike" #: ui/edittagdialog.cpp:445 #, qt-format msgid "Cover art loaded automatically from %1" -msgstr "" +msgstr "Omot automatski učitan iz %1" #: ui/edittagdialog.cpp:438 msgid "Cover art manually unset" -msgstr "" +msgstr "Omot ručno uklonjen" #: ui/edittagdialog.cpp:447 msgid "Cover art not set" -msgstr "" +msgstr "Omot nije postavljen" #: ui/edittagdialog.cpp:441 #, qt-format msgid "Cover art set from %1" -msgstr "" +msgstr "Omot postavljen iz %1" #: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 #, qt-format msgid "Covers from %1" -msgstr "" +msgstr "Omoti sa %1" #: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 msgid "Create a new Grooveshark playlist" -msgstr "" +msgstr "Napravi novu Gruvšark listu numera" #: ../bin/src/ui_playbacksettingspage.h:302 msgid "Cross-fade when changing tracks automatically" -msgstr "" +msgstr "Pretapanje pri automatskoj izmeni numera" #: ../bin/src/ui_playbacksettingspage.h:301 msgid "Cross-fade when changing tracks manually" -msgstr "" +msgstr "Pretapanje pri ručnoj izmeni numera" #: ../bin/src/ui_mainwindow.h:663 msgid "Ctrl+Alt+V" @@ -1457,7 +1458,7 @@ msgstr "Ctrl+Shift+O" #: ../bin/src/ui_mainwindow.h:729 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Shift+T" #: ../bin/src/ui_mainwindow.h:721 msgid "Ctrl+T" @@ -1469,33 +1470,33 @@ msgstr "Ctrl+Up" #: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 msgid "Custom" -msgstr "" +msgstr "posebno" #: ../bin/src/ui_appearancesettingspage.h:286 msgid "Custom image:" -msgstr "" +msgstr "Posebna slika:" #: ../bin/src/ui_notificationssettingspage.h:444 msgid "Custom message settings" -msgstr "" +msgstr "Postavke posebne poruke" #: internet/lastfmservice.cpp:216 msgid "Custom radio" -msgstr "" +msgstr "Posebni radio" #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." -msgstr "" +msgstr "posebna..." #: devices/devicekitlister.cpp:123 msgid "DBus path" -msgstr "" +msgstr "Dbus putanja" #: ui/equalizer.cpp:117 msgid "Dance" -msgstr "" +msgstr "dens" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1504,367 +1505,367 @@ msgstr "" #: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" -msgstr "" +msgstr "napravljen" #: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" -msgstr "" +msgstr "izmenjen" #: smartplaylists/searchterm.cpp:311 msgid "Days" -msgstr "" +msgstr "dana" #: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "De&fault" -msgstr "" +msgstr "Pod&razumevana" #: core/commandlineoptions.cpp:159 msgid "Decrease the volume by 4%" -msgstr "" +msgstr "Utišaj zvuk za 4%" #: core/commandlineoptions.cpp:161 msgid "Decrease the volume by percent" -msgstr "" +msgstr "Utišaj zvuk za procenata" #: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 msgid "Decrease volume" -msgstr "" +msgstr "Utišaj zvuk" #: ../bin/src/ui_appearancesettingspage.h:280 msgid "Default background image" -msgstr "" +msgstr "Podrazumevana" #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" -msgstr "" +msgstr "Podrazumevano" #: ../bin/src/ui_visualisationselector.h:115 msgid "Delay between visualizations" -msgstr "" +msgstr "Zastoj između vizuelizacija" #: playlist/playlistlistcontainer.cpp:73 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" -msgstr "" +msgstr "Obriši" #: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 msgid "Delete Grooveshark playlist" -msgstr "" +msgstr "Obriši Gruvšark listu numera" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" -msgstr "" +msgstr "Obriši preuzete podatke" #: devices/deviceview.cpp:388 library/libraryview.cpp:608 #: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 msgid "Delete files" -msgstr "" +msgstr "Brisanje fajlova" #: devices/deviceview.cpp:220 msgid "Delete from device..." -msgstr "" +msgstr "Obriši sa uređaja..." #: library/libraryview.cpp:391 ui/mainwindow.cpp:518 #: widgets/fileviewlist.cpp:45 msgid "Delete from disk..." -msgstr "" +msgstr "Obriši sa diska..." #: ../bin/src/ui_podcastsettingspage.h:244 msgid "Delete played episodes" -msgstr "" +msgstr "Obriši puštene epizode" #: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" -msgstr "" +msgstr "Obriši prepostavku" #: library/libraryview.cpp:383 msgid "Delete smart playlist" -msgstr "" +msgstr "Obriši pametnu listu" #: ../bin/src/ui_organisedialog.h:194 msgid "Delete the original files" -msgstr "" +msgstr "obriši originalne fajlove" #: core/deletefiles.cpp:50 msgid "Deleting files" -msgstr "" +msgstr "Brišem fajlove" #: ui/mainwindow.cpp:1382 msgid "Dequeue selected tracks" -msgstr "" +msgstr "Izbaci označene numere iz reda" #: ui/mainwindow.cpp:1380 msgid "Dequeue track" -msgstr "" +msgstr "Izbaci numeru iz reda" #: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" -msgstr "" +msgstr "Odredište" #: ../bin/src/ui_transcodedialog.h:221 msgid "Details..." -msgstr "" +msgstr "Detalji..." #: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 msgid "Device" -msgstr "" +msgstr "Uređaj" #: ../bin/src/ui_deviceproperties.h:368 msgid "Device Properties" -msgstr "" +msgstr "Svojstva uređaja" #: ../bin/src/ui_podcastsettingspage.h:254 msgid "Device name" -msgstr "" +msgstr "Ime uređaja" #: devices/deviceview.cpp:207 msgid "Device properties..." -msgstr "" +msgstr "Svojstva uređaja..." #: ui/mainwindow.cpp:245 msgid "Devices" -msgstr "" +msgstr "Uređaji" #: ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Dijalog" #: widgets/didyoumean.cpp:55 msgid "Did you mean" -msgstr "" +msgstr "Da li ste mislili" #: ../bin/src/ui_digitallyimportedsettingspage.h:160 msgid "Digitally Imported" -msgstr "" +msgstr "Didžitali Imported" #: ../bin/src/ui_digitallyimportedsettingspage.h:164 msgid "Digitally Imported password" -msgstr "" +msgstr "Lozinka" #: ../bin/src/ui_digitallyimportedsettingspage.h:162 msgid "Digitally Imported username" -msgstr "" +msgstr "Korisničko ime" #: ../bin/src/ui_networkproxysettingspage.h:159 msgid "Direct internet connection" -msgstr "" +msgstr "Direktna internet veza" #: ../bin/src/ui_magnatunedownloaddialog.h:145 #: ../bin/src/ui_transcodedialog.h:207 msgid "Directory" -msgstr "" +msgstr "fascikla" #: ../bin/src/ui_notificationssettingspage.h:440 msgid "Disable duration" -msgstr "" +msgstr "Onemogući trajanje" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" -msgstr "" +msgstr "Isključi stvaranje raspoloženja" #: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 msgid "Disabled" -msgstr "" +msgstr "Onemogućeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" -msgstr "" +msgstr "disk" #: ../bin/src/ui_transcoderoptionsspeex.h:234 msgid "Discontinuous transmission" -msgstr "" +msgstr "Isprekidan prenos" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 #: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" -msgstr "" +msgstr "Opcije prikaza" #: core/commandlineoptions.cpp:170 msgid "Display the on-screen-display" -msgstr "" +msgstr "Prikaži ekranski pregled" #: ../bin/src/ui_mainwindow.h:719 msgid "Do a full library rescan" -msgstr "" +msgstr "Ponovo skeniraj biblioteku" #: ../bin/src/ui_deviceproperties.h:377 msgid "Do not convert any music" -msgstr "" +msgstr "Ne pretvaraj muziku" #: ../bin/src/ui_albumcoverexport.h:209 msgid "Do not overwrite" -msgstr "" +msgstr "Ne prebrisuj" #: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" -msgstr "" +msgstr "Ne ponavljaj" #: library/libraryview.cpp:405 msgid "Don't show in various artists" -msgstr "" +msgstr "Ne prikazuj u raznim izvođačima" #: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" -msgstr "" +msgstr "Ne puštaj nasumično" #: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 msgid "Don't stop!" -msgstr "" +msgstr "Ne zaustavljaj!" #: internet/somafmservice.cpp:103 msgid "Donate" -msgstr "" +msgstr "Doniraj" #: devices/deviceview.cpp:115 msgid "Double click to open" -msgstr "" +msgstr "Kliknite dvaput da otvorite" #: ../bin/src/ui_behavioursettingspage.h:214 msgid "Double clicking a song will..." -msgstr "" +msgstr "Dvoklik na pesmu će da je..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" -msgstr "" +msgstr "Preuzmi %n epizoda" #: internet/magnatunedownloaddialog.cpp:252 msgid "Download directory" -msgstr "" +msgstr "Fascikla za preuzimanje" #: ../bin/src/ui_podcastsettingspage.h:240 msgid "Download episodes to" -msgstr "" +msgstr "Preuzimaj epizode u" #: ../bin/src/ui_magnatunesettingspage.h:161 msgid "Download membership" -msgstr "" +msgstr "preuzimanja sadržaja" #: ../bin/src/ui_podcastsettingspage.h:241 msgid "Download new episodes automatically" -msgstr "" +msgstr "Preuzimaj nove epizode automatski" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" -msgstr "" +msgstr "Preuzmite aplikaciju za Android" #: internet/magnatuneservice.cpp:276 msgid "Download this album" -msgstr "" +msgstr "Preuzmi ovaj album" #: internet/jamendoservice.cpp:417 msgid "Download this album..." -msgstr "" +msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" -msgstr "" +msgstr "Preuzmi ovu epizodu" #: ../bin/src/ui_spotifysettingspage.h:215 msgid "Download..." -msgstr "" +msgstr "Preuzmi..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." -msgstr "" +msgstr "Preuzimam (%1%)..." #: internet/icecastservice.cpp:101 msgid "Downloading Icecast directory" -msgstr "" +msgstr "Preuzimam Ajskast direktorijum" #: internet/jamendoservice.cpp:187 msgid "Downloading Jamendo catalogue" -msgstr "" +msgstr "Preuzimam Džamendov katalog" #: internet/magnatuneservice.cpp:158 msgid "Downloading Magnatune catalogue" -msgstr "" +msgstr "Preuzimam Magnatjunov katalog" #: internet/spotifyblobdownloader.cpp:44 msgid "Downloading Spotify plugin" -msgstr "" +msgstr "Preuzimam Spotifaj priključak" #: musicbrainz/tagfetcher.cpp:102 msgid "Downloading metadata" -msgstr "" +msgstr "Preuzimam metapodatke" #: ui/notificationssettingspage.cpp:37 msgid "Drag to reposition" -msgstr "" +msgstr "Odvucite ga gde želite" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" -msgstr "" +msgstr "Dropboks" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "dabstep" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Trajanje" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" -msgstr "" +msgstr "Dinamički režim je uključen" #: internet/jamendoservice.cpp:113 library/library.cpp:93 msgid "Dynamic random mix" -msgstr "" +msgstr "Dinamički nasumični miks" #: library/libraryview.cpp:381 msgid "Edit smart playlist..." -msgstr "" +msgstr "Uredi pametnu listu..." #: ui/mainwindow.cpp:1415 #, qt-format msgid "Edit tag \"%1\"..." -msgstr "" +msgstr "Uredi oznaku „%1“..." #: ../bin/src/ui_mainwindow.h:677 msgid "Edit tag..." -msgstr "" +msgstr "Uredi oznaku..." #: ../bin/src/ui_edittagdialog.h:695 msgid "Edit tags" -msgstr "" +msgstr "Uredi oznake" #: ../bin/src/ui_edittagdialog.h:662 msgid "Edit track information" -msgstr "" +msgstr "Uređivanje podataka numere" #: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 #: ../bin/src/ui_mainwindow.h:673 msgid "Edit track information..." -msgstr "" +msgstr "Uredi podatke numere..." #: library/libraryview.cpp:397 msgid "Edit tracks information..." -msgstr "" +msgstr "Uredi podatke numera.." #: internet/savedradio.cpp:101 msgid "Edit..." -msgstr "" +msgstr "Uredi..." #: ../bin/src/ui_wiimotesettingspage.h:183 msgid "Enable Wii Remote support" -msgstr "" +msgstr "Omogući Wii Remote podršku" #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" -msgstr "" +msgstr "Uključi ekvilajzer" #: ../bin/src/ui_wiimotesettingspage.h:187 msgid "Enable shortcuts only when Clementine is focused" -msgstr "" +msgstr "Omogući prečice samo kad je Klementina u fokusu" #: ../bin/src/ui_globalsearchsettingspage.h:147 msgid "" @@ -1878,23 +1879,23 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" -msgstr "" +msgstr "Kompleksnost kodiranja" #: ../bin/src/ui_transcoderoptionsmp3.h:197 msgid "Encoding engine quality" -msgstr "" +msgstr "Kvalitet motora kodiranja" #: ../bin/src/ui_transcoderoptionsspeex.h:224 msgid "Encoding mode" -msgstr "" +msgstr "Režim kodiranja" #: ../bin/src/ui_addpodcastbyurl.h:76 msgid "Enter a URL" -msgstr "" +msgstr "Unos URL-a" #: ../bin/src/ui_coverfromurldialog.h:103 msgid "Enter a URL to download a cover from the Internet:" -msgstr "" +msgstr "Unesite URL za preuzimanje omota sa interneta:" #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" @@ -1902,17 +1903,17 @@ msgstr "" #: playlist/playlisttabbar.cpp:137 msgid "Enter a new name for this playlist" -msgstr "" +msgstr "Unesite novo ime za ovu listu numera" #: ../bin/src/ui_lastfmstationdialog.h:93 msgid "" "Enter an artist or tag to start listening to Last.fm radio." -msgstr "" +msgstr "Unesite izvođača ili oznaku da počnete da slušate Last.fm radio." #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" -msgstr "" +msgstr "Unesite pojmove za traženje iznad da biste pronašli muziku na vašem računaru ili na internetu" #: ../bin/src/ui_itunessearchpage.h:77 msgid "Enter search terms below to find podcasts in the iTunes Store" @@ -1925,15 +1926,15 @@ msgstr "" #: ../bin/src/ui_libraryfilterwidget.h:96 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" -msgstr "" +msgstr "Unesite izraz za pretragu" #: ../bin/src/ui_addstreamdialog.h:114 msgid "Enter the URL of an internet radio stream:" -msgstr "" +msgstr "Unesi URL internet radio tok" #: playlist/playlistlistcontainer.cpp:172 msgid "Enter the name of the folder" -msgstr "" +msgstr "Unesite ime fascikle" #: ../bin/src/ui_networkremotesettingspage.h:198 msgid "Enter this IP in the App to connect to Clementine." @@ -1941,11 +1942,11 @@ msgstr "" #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" -msgstr "" +msgstr "čitavu kolekciju" #: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 msgid "Equalizer" -msgstr "" +msgstr "Ekvilajzer" #: core/commandlineoptions.cpp:173 msgid "Equivalent to --log-levels *:1" @@ -1959,303 +1960,303 @@ msgstr "" #: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 #: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 msgid "Error" -msgstr "" +msgstr "Greška" #: devices/mtploader.cpp:56 msgid "Error connecting MTP device" -msgstr "" +msgstr "Greška povezivanja MTP uređaja" #: ui/organiseerrordialog.cpp:55 msgid "Error copying songs" -msgstr "" +msgstr "Greška kopiranja pesama" #: ui/organiseerrordialog.cpp:60 msgid "Error deleting songs" -msgstr "" +msgstr "Greška brisanja pesama" #: internet/spotifyblobdownloader.cpp:215 msgid "Error downloading Spotify plugin" -msgstr "" +msgstr "Greška preuzimanja Spotifaj priključka" #: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 #, qt-format msgid "Error loading %1" -msgstr "" +msgstr "Greška učitavanja %1" #: internet/digitallyimportedservicebase.cpp:203 #: internet/digitallyimportedurlhandler.cpp:89 msgid "Error loading di.fm playlist" -msgstr "" +msgstr "Greška učitavanja di.fm liste numera" #: transcoder/transcoder.cpp:401 #, qt-format msgid "Error processing %1: %2" -msgstr "" +msgstr "Greška obrade %1: %2" #: playlist/songloaderinserter.cpp:102 msgid "Error while loading audio CD" -msgstr "" +msgstr "Greška prilikom učitavanja audio CD-a" #: library/library.cpp:63 msgid "Ever played" -msgstr "" +msgstr "Već puštano" #: ../bin/src/ui_podcastsettingspage.h:232 msgid "Every 10 minutes" -msgstr "" +msgstr "svakih 10 minuta" #: ../bin/src/ui_podcastsettingspage.h:238 msgid "Every 12 hours" -msgstr "" +msgstr "svakih 12 sati" #: ../bin/src/ui_podcastsettingspage.h:236 msgid "Every 2 hours" -msgstr "" +msgstr "svaka 2 sata" #: ../bin/src/ui_podcastsettingspage.h:233 msgid "Every 20 minutes" -msgstr "" +msgstr "svakih 20 minuta" #: ../bin/src/ui_podcastsettingspage.h:234 msgid "Every 30 minutes" -msgstr "" +msgstr "svakih 30 minuta" #: ../bin/src/ui_podcastsettingspage.h:237 msgid "Every 6 hours" -msgstr "" +msgstr "svakih 6 sati" #: ../bin/src/ui_podcastsettingspage.h:235 msgid "Every hour" -msgstr "" +msgstr "svakog sata" #: ../bin/src/ui_playbacksettingspage.h:303 msgid "Except between tracks on the same album or in the same CUE sheet" -msgstr "" +msgstr "Osim između numera na istom albumu ili na istom CUE listu" #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "Postojeći omoti" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" -msgstr "" +msgstr "Raširi" #: widgets/loginstatewidget.cpp:142 #, qt-format msgid "Expires on %1" -msgstr "" +msgstr "Ističe %1" #: ../bin/src/ui_albumcovermanager.h:226 msgid "Export Covers" -msgstr "" +msgstr "Izvezi omote" #: ../bin/src/ui_albumcoverexport.h:203 msgid "Export covers" -msgstr "" +msgstr "Izvoz omota" #: ../bin/src/ui_albumcoverexport.h:206 msgid "Export downloaded covers" -msgstr "" +msgstr "Izvezi preuzete omote" #: ../bin/src/ui_albumcoverexport.h:207 msgid "Export embedded covers" -msgstr "" +msgstr "Izvezi ugrađene omote" #: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 msgid "Export finished" -msgstr "" +msgstr "Izvoz završen" #: ui/albumcovermanager.cpp:786 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "" +msgstr "Izvezeno %1 omota od %2 (%3 preskočeno)" #: ../bin/src/ui_mainwindow.h:682 msgid "F1" -msgstr "" +msgstr "F1" #: ../bin/src/ui_mainwindow.h:678 msgid "F2" -msgstr "" +msgstr "F2" #: ../bin/src/ui_mainwindow.h:653 msgid "F5" -msgstr "" +msgstr "F5" #: ../bin/src/ui_mainwindow.h:655 msgid "F6" -msgstr "" +msgstr "F6" #: ../bin/src/ui_mainwindow.h:657 msgid "F7" -msgstr "" +msgstr "F7" #: ../bin/src/ui_mainwindow.h:659 msgid "F8" -msgstr "" +msgstr "F8" #: ../bin/src/ui_magnatunedownloaddialog.h:140 #: ../bin/src/ui_magnatunesettingspage.h:171 #: ../bin/src/ui_transcodersettingspage.h:177 msgid "FLAC" -msgstr "" +msgstr "FLAC" #: ../bin/src/ui_playbacksettingspage.h:306 msgid "Fade out on pause / fade in on resume" -msgstr "" +msgstr "Utapaj pri pauzi/nastavljanju" #: ../bin/src/ui_playbacksettingspage.h:300 msgid "Fade out when stopping a track" -msgstr "" +msgstr "Utapaj numeru pri zaustavljanju" #: ../bin/src/ui_playbacksettingspage.h:299 msgid "Fading" -msgstr "" +msgstr "Utapanje" #: ../bin/src/ui_playbacksettingspage.h:304 #: ../bin/src/ui_playbacksettingspage.h:307 msgid "Fading duration" -msgstr "" +msgstr "Trajanje pretapanja" #: ui/mainwindow.cpp:1690 msgid "Failed reading CD drive" -msgstr "" +msgstr "Neuspeh čitanja CD uređaja" #: podcasts/gpoddertoptagspage.cpp:76 msgid "Failed to fetch directory" -msgstr "" +msgstr "Neuspeh dobavljanja direktorijuma" #: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 #: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 #: podcasts/itunessearchpage.cpp:82 msgid "Failed to fetch podcasts" -msgstr "" +msgstr "Neuspeh dobavljanja podkasta" #: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 msgid "Failed to load podcast" -msgstr "" +msgstr "Neuspeh učitavanja podkasta" #: podcasts/podcasturlloader.cpp:167 msgid "Failed to parse the XML for this RSS feed" -msgstr "" +msgstr "Neuspeh raščlanjivanja IksML-a za ovaj RSS dovod" #: ../bin/src/ui_transcoderoptionsflac.h:82 #: ../bin/src/ui_transcoderoptionsmp3.h:200 msgid "Fast" -msgstr "" +msgstr "brz" #: internet/groovesharkservice.cpp:617 msgid "Favorites" -msgstr "" +msgstr "Omiljene" #: library/library.cpp:77 msgid "Favourite tracks" -msgstr "" +msgstr "Omiljene numere" #: ../bin/src/ui_albumcovermanager.h:225 msgid "Fetch Missing Covers" -msgstr "" +msgstr "Dobavi nedostajuće omote" #: ../bin/src/ui_albumcovermanager.h:216 msgid "Fetch automatically" -msgstr "" +msgstr "Dobavi automatski" #: ../bin/src/ui_coversearchstatisticsdialog.h:75 msgid "Fetch completed" -msgstr "" +msgstr "Dobavljanje završeno" #: internet/subsonicservice.cpp:241 msgid "Fetching Subsonic library" -msgstr "" +msgstr "Dobavljam Subsonikovu biblioteku" #: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" -msgstr "" +msgstr "Greška dobavljanja omota" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Format fajla" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" -msgstr "" +msgstr "nastavak fajla" #: ../bin/src/ui_deviceproperties.h:384 msgid "File formats" -msgstr "" +msgstr "Formati fajlova" #: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 msgid "File name" -msgstr "" +msgstr "ime fajla" #: playlist/playlist.cpp:1232 msgid "File name (without path)" -msgstr "" +msgstr "ime fajla (bez putanje)" #: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 msgid "File size" -msgstr "" +msgstr "veličina fajla" #: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" -msgstr "" +msgstr "tip fajla" #: ../bin/src/ui_transcodedialog.h:208 msgid "Filename" -msgstr "" +msgstr "ime fajla" #: ui/mainwindow.cpp:242 msgid "Files" -msgstr "" +msgstr "Fajlovi" #: ../bin/src/ui_transcodedialog.h:205 msgid "Files to transcode" -msgstr "" +msgstr "Fajlovi za prekodiranje" #: smartplaylists/querywizardplugin.cpp:90 msgid "Find songs in your library that match the criteria you specify." -msgstr "" +msgstr "Pronađite pesme u biblioteci koje odgovaraju određenom kriterijumu." #: musicbrainz/tagfetcher.cpp:55 msgid "Fingerprinting song" -msgstr "" +msgstr "Identifikujem pesmu" #: smartplaylists/wizard.cpp:85 msgid "Finish" -msgstr "" +msgstr "Završi" #: ../bin/src/ui_groupbydialog.h:125 msgid "First level" -msgstr "" +msgstr "Prvi nivo" #: core/song.cpp:340 msgid "Flac" -msgstr "" +msgstr "FLAC" #: ../bin/src/ui_songinfosettingspage.h:156 msgid "Font size" -msgstr "" +msgstr "Veličina fonta" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "" +msgstr "Zbog licenciranig razloga Spotify podrška je na posebnom dodatku." #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" -msgstr "" +msgstr "Prisili mono kodiranje" #: devices/deviceview.cpp:204 devices/deviceview.cpp:310 #: devices/deviceview.cpp:314 msgid "Forget device" -msgstr "" +msgstr "Zaboravi uređaj" #: devices/deviceview.cpp:311 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." -msgstr "" +msgstr "Zaboravljanjem uređaja uklonićete ga sa spiska i Klementina će morati ponovo da skenira sve pesme sledeći put kada ga povežete." #: ../bin/src/ui_deviceviewcontainer.h:98 #: ../bin/src/ui_searchproviderstatuswidget.h:94 @@ -2279,59 +2280,59 @@ msgstr "" #: ../bin/src/ui_fileview.h:107 ../bin/src/ui_loginstatewidget.h:171 #: ../bin/src/ui_trackslider.h:69 ../bin/src/ui_visualisationoverlay.h:182 msgid "Form" -msgstr "" +msgstr "Obrazac" #: ../bin/src/ui_magnatunedownloaddialog.h:136 msgid "Format" -msgstr "" +msgstr "Format" #: analyzers/analyzercontainer.cpp:46 #: visualisations/visualisationcontainer.cpp:104 msgid "Framerate" -msgstr "" +msgstr "Broj kadrova" #: ../bin/src/ui_transcoderoptionsspeex.h:236 msgid "Frames per buffer" -msgstr "" +msgstr "Sličica po baferu" #: internet/lastfmservice.cpp:224 msgid "Friends" -msgstr "" +msgstr "Prijatelji" #: moodbar/moodbarrenderer.cpp:157 msgid "Frozen" -msgstr "" +msgstr "zaleđen" #: ui/equalizer.cpp:120 msgid "Full Bass" -msgstr "" +msgstr "puni bas" #: ui/equalizer.cpp:122 msgid "Full Bass + Treble" -msgstr "" +msgstr "puni bas + sopran" #: ui/equalizer.cpp:121 msgid "Full Treble" -msgstr "" +msgstr "puni sopran" #: ../bin/src/ui_playbacksettingspage.h:319 msgid "GStreamer audio engine" -msgstr "" +msgstr "Gstrimer zvučni motor" #: ui/settingsdialog.cpp:131 msgid "General" -msgstr "" +msgstr "Opšte" #: ../bin/src/ui_notificationssettingspage.h:437 msgid "General settings" -msgstr "" +msgstr "Opšte postavke" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" -msgstr "" +msgstr "žanr" #: internet/groovesharkservice.cpp:542 msgid "Get a URL to share this Grooveshark playlist" @@ -2347,102 +2348,102 @@ msgstr "" #: internet/somafmservice.cpp:114 msgid "Getting channels" -msgstr "" +msgstr "Dobavljam kanale" #: internet/digitallyimportedservicebase.cpp:108 msgid "Getting streams" -msgstr "" +msgstr "Dobavljam tokove" #: ../bin/src/ui_addstreamdialog.h:116 msgid "Give it a name:" -msgstr "" +msgstr "Dajte joj ime:" #: ../bin/src/ui_addpodcastbyurl.h:78 msgid "Go" -msgstr "" +msgstr "Idi" #: ../bin/src/ui_mainwindow.h:711 msgid "Go to next playlist tab" -msgstr "" +msgstr "Idi na sledeći jezičak liste" #: ../bin/src/ui_mainwindow.h:712 msgid "Go to previous playlist tab" -msgstr "" +msgstr "Idi na prethodni jezičak liste" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" -msgstr "" +msgstr "Gugl Drajv" #: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" -msgstr "" +msgstr "Dobavljeno %1 omota od %2 (%3 neuspešno)" #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" -msgstr "" +msgstr "Posivi nepostojeće pesme u listi numera" #: ../bin/src/ui_groovesharksettingspage.h:112 msgid "Grooveshark" -msgstr "" +msgstr "Gruvšark" #: internet/groovesharkservice.cpp:408 msgid "Grooveshark login error" -msgstr "" +msgstr "Greška prijave na Gruvšark" #: internet/groovesharkservice.cpp:1162 msgid "Grooveshark playlist's URL" -msgstr "" +msgstr "URL liste numera Gruvšarka" #: internet/groovesharkservice.cpp:603 msgid "Grooveshark radio" -msgstr "" +msgstr "Gruvšark radio" #: internet/groovesharkservice.cpp:1140 msgid "Grooveshark song's URL" -msgstr "" +msgstr "URL pesme Gruvšarka" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." -msgstr "" +msgstr "Grupisanje biblioteke" #: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 msgid "Group by" -msgstr "" +msgstr "Grupisanje" #: library/libraryfilterwidget.cpp:110 msgid "Group by Album" -msgstr "" +msgstr "album" #: library/libraryfilterwidget.cpp:104 msgid "Group by Artist" -msgstr "" +msgstr "izvođač" #: library/libraryfilterwidget.cpp:106 msgid "Group by Artist/Album" -msgstr "" +msgstr "izvođač/album" #: library/libraryfilterwidget.cpp:108 msgid "Group by Artist/Year - Album" -msgstr "" +msgstr "izvođač/godina — album" #: library/libraryfilterwidget.cpp:112 msgid "Group by Genre/Album" -msgstr "" +msgstr "žanr/album" #: library/libraryfilterwidget.cpp:114 msgid "Group by Genre/Artist/Album" -msgstr "" +msgstr "žanr/izvođač/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" -msgstr "" +msgstr "grupisanje" #: podcasts/podcasturlloader.cpp:196 msgid "HTML page did not contain any RSS feeds" -msgstr "" +msgstr "HTML stranica ne sadrži nijedan RSS dovod" #: internet/subsonicsettingspage.cpp:135 msgid "" @@ -2451,83 +2452,83 @@ msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" -msgstr "" +msgstr "HTTP proksi" #: moodbar/moodbarrenderer.cpp:158 msgid "Happy" -msgstr "" +msgstr "srećan" #: ../bin/src/ui_deviceproperties.h:371 msgid "Hardware information" -msgstr "" +msgstr "Podaci o hardveru" #: ../bin/src/ui_deviceproperties.h:372 msgid "Hardware information is only available while the device is connected." -msgstr "" +msgstr "Podaci o hardveru su dostupni samo dok je uređaj povezan" #: ../bin/src/ui_transcoderoptionsmp3.h:202 msgid "High" -msgstr "" +msgstr "visok" #: analyzers/analyzercontainer.cpp:64 #: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "High (%1 fps)" -msgstr "" +msgstr "visok (%1 fps)" #: visualisations/visualisationcontainer.cpp:119 msgid "High (1024x1024)" -msgstr "" +msgstr "visok (1024x1024)" #: internet/subsonicsettingspage.cpp:112 msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "Domaćin nije nađen, proverite URL servera. Primer: http://localhost:4040/" #: smartplaylists/searchterm.cpp:310 msgid "Hours" -msgstr "" +msgstr "sati" #: core/backgroundstreams.cpp:30 msgid "Hypnotoad" -msgstr "" +msgstr "Hipnožabac" #: ../bin/src/ui_magnatunesettingspage.h:159 msgid "I don't have a Magnatune account" -msgstr "" +msgstr "nemam nalog na Magnatjunu" #: ../bin/src/ui_deviceproperties.h:370 msgid "Icon" -msgstr "" +msgstr "Ikona" #: widgets/fancytabwidget.cpp:674 msgid "Icons on top" -msgstr "" +msgstr "Ikone na vrhu" #: musicbrainz/tagfetcher.cpp:86 msgid "Identifying song" -msgstr "" +msgstr "Identifikujem pesmu" #: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." -msgstr "" +msgstr "Ako nastavite, ovaj uređaj će raditi sporo a pesme kopirane na njega možda neće raditi." #: ../bin/src/ui_addpodcastbyurl.h:77 msgid "If you know the URL of a podcast, enter it below and press Go." -msgstr "" +msgstr "Ako znate URL podkasta, unesite ga ispod i kliknite na „Idi“." #: ../bin/src/ui_organisedialog.h:204 msgid "Ignore \"The\" in artist names" -msgstr "" +msgstr "Igonoriši „The“ u imenu izvođača" #: ui/albumcoverchoicecontroller.cpp:43 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -msgstr "" +msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" #: ui/albumcoverchoicecontroller.cpp:45 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -msgstr "" +msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" #: core/utilities.cpp:147 #, qt-format @@ -2543,19 +2544,19 @@ msgstr "" msgid "" "In dynamic mode new tracks will be chosen and added to the playlist every " "time a song finishes." -msgstr "" +msgstr "U dinamičkom režimu nove numere će biti izabrane i dodate na listu svaki put kad se pesma završi." #: internet/spotifyservice.cpp:360 msgid "Inbox" -msgstr "" +msgstr "Sanduče" #: ../bin/src/ui_notificationssettingspage.h:443 msgid "Include album art in the notification" -msgstr "" +msgstr "Uključi omote albuma u obaveštenja" #: ../bin/src/ui_querysearchpage.h:118 msgid "Include all songs" -msgstr "" +msgstr "Uključi sve pesme" #: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." @@ -2571,112 +2572,112 @@ msgstr "" #: core/commandlineoptions.cpp:158 msgid "Increase the volume by 4%" -msgstr "" +msgstr "Pojačaj zvuk za 4%" #: core/commandlineoptions.cpp:160 msgid "Increase the volume by percent" -msgstr "" +msgstr "Pojačaj zvuk za procenata" #: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" -msgstr "" +msgstr "Pojačaj zvuk" #: internet/cloudfileservice.cpp:136 #, qt-format msgid "Indexing %1" -msgstr "" +msgstr "Indeksiram %1" #: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 msgid "Information" -msgstr "" +msgstr "Podaci" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opcije ulaza" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." -msgstr "" +msgstr "Umetni..." #: internet/spotifysettingspage.cpp:75 msgid "Installed" -msgstr "" +msgstr "Instaliran" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" -msgstr "" +msgstr "Provera integriteta" #: ui/mainwindow.cpp:244 msgid "Internet" -msgstr "" +msgstr "Internet" #: ui/settingsdialog.cpp:153 msgid "Internet providers" -msgstr "" +msgstr "Internet servisi" #: internet/lastfmservice.cpp:433 msgid "Invalid API key" -msgstr "" +msgstr "Neispravan API ključ" #: internet/lastfmservice.cpp:428 msgid "Invalid format" -msgstr "" +msgstr "Neispravan format" #: internet/lastfmservice.cpp:426 msgid "Invalid method" -msgstr "" +msgstr "Neispravan način" #: internet/lastfmservice.cpp:429 msgid "Invalid parameters" -msgstr "" +msgstr "Neispravni parametri" #: internet/lastfmservice.cpp:430 msgid "Invalid resource specified" -msgstr "" +msgstr "Naveden neispravan resurs" #: internet/lastfmservice.cpp:425 msgid "Invalid service" -msgstr "" +msgstr "Nevažeći servis" #: internet/lastfmservice.cpp:432 msgid "Invalid session key" -msgstr "" +msgstr "Nevažeći ključ sesije" #: internet/groovesharkservice.cpp:401 msgid "Invalid username and/or password" -msgstr "" +msgstr "Neispravno korisničko ime i/ili lozinka" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Obrni izbor" #: internet/jamendoservice.cpp:127 msgid "Jamendo" -msgstr "" +msgstr "Džamendo" #: internet/jamendoservice.cpp:109 msgid "Jamendo Most Listened Tracks" -msgstr "" +msgstr "Džamendo najslušanije numere" #: internet/jamendoservice.cpp:107 msgid "Jamendo Top Tracks" -msgstr "" +msgstr "Džamendo najbolje numere" #: internet/jamendoservice.cpp:103 msgid "Jamendo Top Tracks of the Month" -msgstr "" +msgstr "Džamendo najbolje numere ovog meseca" #: internet/jamendoservice.cpp:105 msgid "Jamendo Top Tracks of the Week" -msgstr "" +msgstr "Džamendo najbolje numere ove sedmice" #: internet/jamendoservice.cpp:171 msgid "Jamendo database" -msgstr "" +msgstr "Džamendo baza podataka" #: ../bin/src/ui_mainwindow.h:703 msgid "Jump to the currently playing track" -msgstr "" +msgstr "Skoči na trenutno puštenu numeru" #: wiimotedev/wiimoteshortcutgrabber.cpp:72 #, qt-format @@ -2692,44 +2693,44 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:193 msgid "Keep running in the background when the window is closed" -msgstr "" +msgstr "Nastavi rad u pozadini kad se prozor zatvori" #: ../bin/src/ui_organisedialog.h:193 msgid "Keep the original files" -msgstr "" +msgstr "zadrži originalne fajlove" #: ../bin/src/ui_mainwindow.h:695 msgid "Kittens" -msgstr "" +msgstr "Mačići" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" -msgstr "" +msgstr "Jezik" #: ui/equalizer.cpp:123 msgid "Laptop/Headphones" -msgstr "" +msgstr "laptop/slušalice" #: ui/equalizer.cpp:124 msgid "Large Hall" -msgstr "" +msgstr "velika dvorana" #: widgets/nowplayingwidget.cpp:94 msgid "Large album cover" -msgstr "" +msgstr "Veliki omot" #: widgets/fancytabwidget.cpp:670 msgid "Large sidebar" -msgstr "" +msgstr "Široka traka" #: library/library.cpp:71 playlist/playlist.cpp:1225 #: ../bin/src/ui_edittagdialog.h:671 msgid "Last played" -msgstr "" +msgstr "poslednji put puštana" #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" -msgstr "" +msgstr "Last.fm" #: internet/lastfmservice.cpp:85 #, qt-format @@ -2740,7 +2741,7 @@ msgstr "" #: internet/lastfmservice.cpp:722 #, qt-format msgid "Last.fm Library - %1" -msgstr "" +msgstr "Last.fm biblioteka - %1" #: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 #: internet/lastfmservice.cpp:260 @@ -2752,17 +2753,17 @@ msgstr "" #: internet/lastfmservice.cpp:265 #, qt-format msgid "Last.fm Neighbor Radio - %1" -msgstr "" +msgstr "Last.fm komšijski radio - %1" #: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 #, qt-format msgid "Last.fm Radio Station - %1" -msgstr "" +msgstr "Last.fm radio stanica - %1" #: internet/lastfmservice.cpp:83 #, qt-format msgid "Last.fm Similar Artists to %1" -msgstr "" +msgstr "Last.fm slični Izvođači sa %1" #: internet/lastfmservice.cpp:84 #, qt-format @@ -2771,64 +2772,64 @@ msgstr "" #: internet/lastfmservice.cpp:437 msgid "Last.fm is currently busy, please try again in a few minutes" -msgstr "" +msgstr "Last.fm je trenutno zauzet, pokušajte ponovo za nekoliko minuta" #: ../bin/src/ui_lastfmsettingspage.h:154 msgid "Last.fm password" -msgstr "" +msgstr "Lozinka" #: songinfo/lastfmtrackinfoprovider.cpp:78 msgid "Last.fm play counts" -msgstr "" +msgstr "Last.fm broj puštanja" #: songinfo/lastfmtrackinfoprovider.cpp:131 msgid "Last.fm tags" -msgstr "" +msgstr "Last.fm oznake" #: ../bin/src/ui_lastfmsettingspage.h:152 msgid "Last.fm username" -msgstr "" +msgstr "Korisničko ime" #: songinfo/lastfmtrackinfoprovider.cpp:111 msgid "Last.fm wiki" -msgstr "" +msgstr "Last.fm viki" #: library/library.cpp:87 msgid "Least favourite tracks" -msgstr "" +msgstr "Najmanje omiljene numere" #: ../bin/src/ui_playbacksettingspage.h:326 msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" +msgstr "Ostavite prazno za podrazmevano. Primeri: „/dev/dsp“, „front“, itd." #: ../bin/src/ui_equalizer.h:172 msgid "Left" -msgstr "" +msgstr "Levo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" -msgstr "" +msgstr "dužina" #: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 msgid "Library" -msgstr "" +msgstr "Biblioteka" #: ../bin/src/ui_groupbydialog.h:122 msgid "Library advanced grouping" -msgstr "" +msgstr "Napredno grupisanje biblioteke" #: ui/mainwindow.cpp:2145 msgid "Library rescan notice" -msgstr "" +msgstr "Obaveštenje o ponovnom skeniranju biblioteke" #: smartplaylists/querywizardplugin.cpp:86 msgid "Library search" -msgstr "" +msgstr "Pretraživanje biblioteke" #: ../bin/src/ui_querysortpage.h:140 msgid "Limits" -msgstr "" +msgstr "Ograničenja" #: internet/groovesharkservice.cpp:604 msgid "" @@ -2837,78 +2838,78 @@ msgstr "" #: ui/equalizer.cpp:125 msgid "Live" -msgstr "" +msgstr "uživo" #: ../bin/src/ui_albumcovermanager.h:217 msgid "Load" -msgstr "" +msgstr "Učitaj" #: ../bin/src/ui_coverfromurldialog.h:102 msgid "Load cover from URL" -msgstr "" +msgstr "Učitavanje omot sa URL-a" #: ui/albumcoverchoicecontroller.cpp:61 msgid "Load cover from URL..." -msgstr "" +msgstr "Učitaj omot sa URL-a..." #: ui/albumcoverchoicecontroller.cpp:98 msgid "Load cover from disk" -msgstr "" +msgstr "Učitavanje omota sa diska" #: ui/albumcoverchoicecontroller.cpp:59 msgid "Load cover from disk..." -msgstr "" +msgstr "Učitaj omot sa diska..." #: playlist/playlistcontainer.cpp:286 msgid "Load playlist" -msgstr "" +msgstr "Učitavanje liste numera" #: ../bin/src/ui_mainwindow.h:709 msgid "Load playlist..." -msgstr "" +msgstr "Učitaj listu numera..." #: internet/lastfmservice.cpp:884 msgid "Loading Last.fm radio" -msgstr "" +msgstr "Učitavam Last.fm radio" #: devices/mtploader.cpp:42 msgid "Loading MTP device" -msgstr "" +msgstr "Učitavam MTP uređaj" #: devices/gpodloader.cpp:46 msgid "Loading iPod database" -msgstr "" +msgstr "Učitavam Ajpodovu bazu podataka" #: smartplaylists/generatorinserter.cpp:52 msgid "Loading smart playlist" -msgstr "" +msgstr "Učitavam pametnu listu" #: library/librarymodel.cpp:139 msgid "Loading songs" -msgstr "" +msgstr "Učitavam pesme" #: internet/digitallyimportedurlhandler.cpp:67 #: internet/somafmurlhandler.cpp:58 msgid "Loading stream" -msgstr "" +msgstr "Učitavam tok" #: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 msgid "Loading tracks" -msgstr "" +msgstr "Učitavam numere" #: playlist/songloaderinserter.cpp:141 msgid "Loading tracks info" -msgstr "" +msgstr "Učitavam podatke numera" #: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 #: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 msgid "Loading..." -msgstr "" +msgstr "Učitavam..." #: core/commandlineoptions.cpp:167 msgid "Loads files/URLs, replacing current playlist" -msgstr "" +msgstr "Učitava datoteke/URL-ove, zamenjujući trenutnu listu" #: ../bin/src/ui_digitallyimportedsettingspage.h:163 #: ../bin/src/ui_groovesharksettingspage.h:116 @@ -2920,217 +2921,217 @@ msgstr "" #: ../bin/src/ui_googledrivesettingspage.h:105 #: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" -msgstr "" +msgstr "Prijava" #: podcasts/podcastsettingspage.cpp:119 msgid "Login failed" -msgstr "" +msgstr "Prijava nije uspela" #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" -msgstr "" +msgstr "dugoročno predviđanje (LTP)" #: ../bin/src/ui_mainwindow.h:664 msgid "Love" -msgstr "" +msgstr "Voli" #: analyzers/analyzercontainer.cpp:62 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" -msgstr "" +msgstr "nizak (%1 fps)" #: visualisations/visualisationcontainer.cpp:117 msgid "Low (256x256)" -msgstr "" +msgstr "nizak (256X256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" -msgstr "" +msgstr "niska kompleksnost (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" -msgstr "" +msgstr "Stihovi" #: songinfo/ultimatelyricsprovider.cpp:156 #, qt-format msgid "Lyrics from %1" -msgstr "" +msgstr "Stihovi sa %1" #: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" -msgstr "" +msgstr "MP3" #: ../bin/src/ui_digitallyimportedsettingspage.h:177 msgid "MP3 256k" -msgstr "" +msgstr "MP3 256k" #: ../bin/src/ui_digitallyimportedsettingspage.h:170 msgid "MP3 96k" -msgstr "" +msgstr "MP3 96k" #: core/song.cpp:341 msgid "MP4 AAC" -msgstr "" +msgstr "MP4 AAC" #: core/song.cpp:342 msgid "MPC" -msgstr "" +msgstr "MPC" #: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" -msgstr "" +msgstr "Magnatjun" #: ../bin/src/ui_magnatunedownloaddialog.h:131 msgid "Magnatune Download" -msgstr "" +msgstr "Preuzimanje sa Magnatjuna" #: widgets/osd.cpp:195 msgid "Magnatune download finished" -msgstr "" +msgstr "Završeno preuzimanje sa Magnatjuna" #: ../bin/src/ui_transcoderoptionsaac.h:134 msgid "Main profile (MAIN)" -msgstr "" +msgstr "glavni profil (MAIN)" #: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 msgid "Make it so!" -msgstr "" +msgstr "Enterprajz!" #: internet/spotifyservice.cpp:533 msgid "Make playlist available offline" -msgstr "" +msgstr "Napravi listu dostupnu van mreže" #: internet/lastfmservice.cpp:444 msgid "Malformed response" -msgstr "" +msgstr "Loš odgovor" #: ../bin/src/ui_networkproxysettingspage.h:160 msgid "Manual proxy configuration" -msgstr "" +msgstr "Ručno podešavanje proksija" #: ../bin/src/ui_podcastsettingspage.h:231 #: ../bin/src/ui_podcastsettingspage.h:245 msgid "Manually" -msgstr "" +msgstr "ručno" #: devices/deviceproperties.cpp:153 msgid "Manufacturer" -msgstr "" +msgstr "Proizvođač" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" -msgstr "" +msgstr "Označi kao preslušano" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" -msgstr "" +msgstr "Označi kao novo" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" -msgstr "" +msgstr "Uporedi svaki traženi termin (AND)" #: ../bin/src/ui_querysearchpage.h:117 msgid "Match one or more search terms (OR)" -msgstr "" +msgstr "Uporedi jedan ili više traženih termina (OR)" #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" -msgstr "" +msgstr "Najveći bitski protok" #: analyzers/analyzercontainer.cpp:63 #: visualisations/visualisationcontainer.cpp:108 #, qt-format msgid "Medium (%1 fps)" -msgstr "" +msgstr "srednji (%1 fps)" #: visualisations/visualisationcontainer.cpp:118 msgid "Medium (512x512)" -msgstr "" +msgstr "srednji (512X512)" #: ../bin/src/ui_magnatunesettingspage.h:156 msgid "Membership type" -msgstr "" +msgstr "Tip članstva" #: ../bin/src/ui_transcoderoptionsvorbis.h:206 msgid "Minimum bitrate" -msgstr "" +msgstr "Najmanji bitski protok" #: visualisations/projectmvisualisation.cpp:132 msgid "Missing projectM presets" -msgstr "" +msgstr "Nedostaju prepostavke za projektM" #: devices/deviceproperties.cpp:152 msgid "Model" -msgstr "" +msgstr "Model" #: ../bin/src/ui_librarysettingspage.h:192 msgid "Monitor the library for changes" -msgstr "" +msgstr "Nadgledaj izmene u biblioteci" #: ../bin/src/ui_playbacksettingspage.h:332 msgid "Mono playback" -msgstr "" +msgstr "Mono reprodukcija" #: smartplaylists/searchterm.cpp:313 msgid "Months" -msgstr "" +msgstr "meseci" #: playlist/playlist.cpp:1240 msgid "Mood" -msgstr "" +msgstr "raspoloženje" #: ../bin/src/ui_appearancesettingspage.h:294 #: moodbar/moodbarproxystyle.cpp:342 msgid "Moodbar style" -msgstr "" +msgstr "Stil raspoloženja" #: ../bin/src/ui_appearancesettingspage.h:292 msgid "Moodbars" -msgstr "" +msgstr "Raspoloženja" #: library/library.cpp:74 msgid "Most played" -msgstr "" +msgstr "Najčešće puštano" #: devices/giolister.cpp:159 msgid "Mount point" -msgstr "" +msgstr "Tačka povezivanja" #: devices/devicekitlister.cpp:125 msgid "Mount points" -msgstr "" +msgstr "Tačke montiranja" #: ../bin/src/ui_globalsearchsettingspage.h:149 #: ../bin/src/ui_queuemanager.h:131 ../bin/src/ui_songinfosettingspage.h:162 msgid "Move down" -msgstr "" +msgstr "Pomeri dole" #: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 msgid "Move to library..." -msgstr "" +msgstr "Premesti u biblioteku" #: ../bin/src/ui_globalsearchsettingspage.h:148 #: ../bin/src/ui_queuemanager.h:127 ../bin/src/ui_songinfosettingspage.h:161 msgid "Move up" -msgstr "" +msgstr "Pomeri gore" #: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 msgid "Music" -msgstr "" +msgstr "Muzika" #: ../bin/src/ui_librarysettingspage.h:186 msgid "Music Library" -msgstr "" +msgstr "Muzička biblioteka" #: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 #: wiimotedev/wiimotesettingspage.cpp:105 msgid "Mute" -msgstr "" +msgstr "Utišaj" #: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 msgid "My Last.fm Library" -msgstr "" +msgstr "Moja Last.fm biblioteka" #: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 msgid "My Last.fm Mix Radio" @@ -3146,23 +3147,23 @@ msgstr "" #: internet/lastfmservice.cpp:197 msgid "My Mix Radio" -msgstr "" +msgstr "Moj birani radio" #: internet/groovesharkservice.cpp:608 msgid "My Music" -msgstr "" +msgstr "Moja muzika" #: internet/lastfmservice.cpp:202 msgid "My Neighborhood" -msgstr "" +msgstr "Moj komšiluk" #: internet/lastfmservice.cpp:192 msgid "My Radio Station" -msgstr "" +msgstr "Moja radio stanica" #: internet/lastfmservice.cpp:187 msgid "My Recommendations" -msgstr "" +msgstr "Moje preporuke" #: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 #: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 @@ -3170,75 +3171,75 @@ msgstr "" #: ../bin/src/ui_wizardfinishpage.h:84 #: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" -msgstr "" +msgstr "Ime" #: ../bin/src/ui_organisedialog.h:197 msgid "Naming options" -msgstr "" +msgstr "Opcije imenovanja" #: ../bin/src/ui_transcoderoptionsspeex.h:230 msgid "Narrow band (NB)" -msgstr "" +msgstr "uski opseg (NB)" #: internet/lastfmservice.cpp:229 msgid "Neighbors" -msgstr "" +msgstr "Komšije" #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" -msgstr "" +msgstr "Mrežni proksi" #: ../bin/src/ui_networkremotesettingspage.h:177 msgid "Network Remote" -msgstr "" +msgstr "Mrežni daljinski" #: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 msgid "Never" -msgstr "" +msgstr "Nikad" #: library/library.cpp:67 msgid "Never played" -msgstr "" +msgstr "Nikad puštano" #: ../bin/src/ui_behavioursettingspage.h:210 #: ../bin/src/ui_behavioursettingspage.h:224 msgid "Never start playing" -msgstr "" +msgstr "neće početi puštanje" #: playlist/playlistlistcontainer.cpp:72 #: playlist/playlistlistcontainer.cpp:171 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" -msgstr "" +msgstr "Nova fascikla" #: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 msgid "New playlist" -msgstr "" +msgstr "Nova lista numera" #: library/libraryview.cpp:379 msgid "New smart playlist..." -msgstr "" +msgstr "Nova pametna lista" #: widgets/freespacebar.cpp:46 msgid "New songs" -msgstr "" +msgstr "Nove pesme" #: ../bin/src/ui_dynamicplaylistcontrols.h:110 msgid "New tracks will be added automatically." -msgstr "" +msgstr "Nove numere će biti automatski dodate" #: library/library.cpp:80 msgid "Newest tracks" -msgstr "" +msgstr "Najnovije numere" #: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 msgid "Next" -msgstr "" +msgstr "Sledeća" #: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 #: wiimotedev/wiimotesettingspage.cpp:99 msgid "Next track" -msgstr "" +msgstr "Sledeća numera" #: core/utilities.cpp:149 msgid "Next week" @@ -3246,98 +3247,98 @@ msgstr "" #: analyzers/analyzercontainer.cpp:80 msgid "No analyzer" -msgstr "" +msgstr "Bez analizatora" #: ../bin/src/ui_appearancesettingspage.h:285 msgid "No background image" -msgstr "" +msgstr "Bez slike pozadine" #: ui/albumcovermanager.cpp:778 msgid "No covers to export." -msgstr "" +msgstr "Nema omota za izvoz." #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" -msgstr "" +msgstr "bez dugih blokova" #: playlist/playlistcontainer.cpp:366 msgid "" "No matches found. Clear the search box to show the whole playlist again." -msgstr "" +msgstr "Nema poklapanja. Očistite polje pretrage da biste prikazali celu listu ponovo." #: ../bin/src/ui_transcoderoptionsaac.h:145 msgid "No short blocks" -msgstr "" +msgstr "bez kratkih blokova" #: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 #: ../bin/src/ui_groupbydialog.h:156 msgid "None" -msgstr "" +msgstr "ništa" #: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 msgid "None of the selected songs were suitable for copying to a device" -msgstr "" +msgstr "Nijedna od izabranih pesama nije pogodna za kopiranje na uređaj" #: moodbar/moodbarrenderer.cpp:155 msgid "Normal" -msgstr "" +msgstr "normalan" #: ../bin/src/ui_transcoderoptionsaac.h:144 msgid "Normal block type" -msgstr "" +msgstr "normalni tip bloka" #: playlist/playlistsequence.cpp:170 msgid "Not available while using a dynamic playlist" -msgstr "" +msgstr "Nije dostupno dok se koristi promenjiva lista" #: devices/deviceview.cpp:107 msgid "Not connected" -msgstr "" +msgstr "Nepovezan" #: internet/lastfmservice.cpp:439 msgid "Not enough content" -msgstr "" +msgstr "Nema dovoljno sadržaja" #: internet/lastfmservice.cpp:441 msgid "Not enough fans" -msgstr "" +msgstr "Nema dovoljno fanova" #: internet/lastfmservice.cpp:440 msgid "Not enough members" -msgstr "" +msgstr "Nema dovoljno članova" #: internet/lastfmservice.cpp:442 msgid "Not enough neighbors" -msgstr "" +msgstr "Nema dovoljno komšija" #: internet/spotifysettingspage.cpp:75 msgid "Not installed" -msgstr "" +msgstr "Nije ugrađen" #: globalsearch/globalsearchsettingspage.cpp:120 #: globalsearch/searchproviderstatuswidget.cpp:48 msgid "Not logged in" -msgstr "" +msgstr "Niste prijavljeni" #: devices/deviceview.cpp:111 msgid "Not mounted - double click to mount" -msgstr "" +msgstr "Nije" #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" -msgstr "" +msgstr "Vrsta obaveštenja" #: ../bin/src/ui_notificationssettingspage.h:375 msgid "Notifications" -msgstr "" +msgstr "Obaveštenja" #: ui/macsystemtrayicon.mm:64 msgid "Now Playing" -msgstr "" +msgstr "Trenutno pušta" #: ui/notificationssettingspage.cpp:37 msgid "OSD Preview" -msgstr "" +msgstr "OSD pregled" #: widgets/osd.cpp:171 msgid "Off" @@ -3345,20 +3346,20 @@ msgstr "" #: core/song.cpp:344 msgid "Ogg Flac" -msgstr "" +msgstr "OGG FLAC" #: core/song.cpp:347 msgid "Ogg Opus" -msgstr "" +msgstr "OGG Opus" #: core/song.cpp:345 msgid "Ogg Speex" -msgstr "" +msgstr "OGG Spiks" #: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" -msgstr "" +msgstr "OGG Vorbis" #: widgets/osd.cpp:171 msgid "On" @@ -3370,19 +3371,19 @@ msgid "" "10.x.x.x\n" "172.16.0.0 - 172.31.255.255\n" "192.168.x.x" -msgstr "" +msgstr "Prihvataj veze samo od klijenata unutar ovog raspona ip adresa:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" #: ../bin/src/ui_networkremotesettingspage.h:187 msgid "Only allow connections from the local network" -msgstr "" +msgstr "Dozvoli samo veze sa lokalne mreže" #: ../bin/src/ui_querysortpage.h:142 msgid "Only show the first" -msgstr "" +msgstr "Prikaži samo početnih" #: ../bin/src/ui_appearancesettingspage.h:290 msgid "Opacity" -msgstr "" +msgstr "Prozirnost" #: internet/digitallyimportedservicebase.cpp:179 #: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 @@ -3390,126 +3391,126 @@ msgstr "" #: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 #, qt-format msgid "Open %1 in browser" -msgstr "" +msgstr "Otvori %1 u pregledaču" #: ../bin/src/ui_mainwindow.h:690 msgid "Open &audio CD..." -msgstr "" +msgstr "Otvori &audio CD..." #: podcasts/addpodcastdialog.cpp:230 msgid "Open OPML file" -msgstr "" +msgstr "Otvori OPML fajl" #: podcasts/addpodcastdialog.cpp:73 msgid "Open OPML file..." -msgstr "" +msgstr "Otvori OPML fajl..." #: ../bin/src/ui_deviceproperties.h:382 msgid "Open device" -msgstr "" +msgstr "Otvori uređaj" #: ../bin/src/ui_mainwindow.h:689 msgid "Open file..." -msgstr "" +msgstr "Otvori fajl..." #: internet/googledriveservice.cpp:184 msgid "Open in Google Drive" -msgstr "" +msgstr "Otvori u Gugl Drajvu" #: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 #: internet/internetservice.cpp:76 library/libraryview.cpp:371 #: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 msgid "Open in new playlist" -msgstr "" +msgstr "Otvori u novoj listi" #: songinfo/echonestbiographies.cpp:96 msgid "Open in your browser" -msgstr "" +msgstr "Otvori u pregledaču" #: ../bin/src/ui_globalshortcutssettingspage.h:169 #: ../bin/src/ui_globalshortcutssettingspage.h:171 msgid "Open..." -msgstr "" +msgstr "Otvori..." #: internet/lastfmservice.cpp:431 msgid "Operation failed" -msgstr "" +msgstr "Radnja nije uspela" #: ../bin/src/ui_transcoderoptionsmp3.h:193 msgid "Optimize for bitrate" -msgstr "" +msgstr "Optimizuj bitski protok" #: ../bin/src/ui_transcoderoptionsmp3.h:191 msgid "Optimize for quality" -msgstr "" +msgstr "Optimizuj kvalitet" #: ../bin/src/ui_transcodedialog.h:213 ../bin/src/ui_ripcd.h:322 msgid "Options..." -msgstr "" +msgstr "Opcije..." #: ../bin/src/ui_transcodersettingspage.h:181 msgid "Opus" -msgstr "" +msgstr "Opus" #: ../bin/src/ui_organisedialog.h:188 msgid "Organise Files" -msgstr "" +msgstr "Organizovanje fajlova" #: library/libraryview.cpp:387 ui/mainwindow.cpp:516 msgid "Organise files..." -msgstr "" +msgstr "Organizuj fajlove..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" -msgstr "" +msgstr "Organizujem fajlove" #: ui/trackselectiondialog.cpp:167 msgid "Original tags" -msgstr "" +msgstr "Početne oznake" #: core/commandlineoptions.cpp:169 msgid "Other options" -msgstr "" +msgstr "Ostale opcije" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "Izlaz" #: ../bin/src/ui_playbacksettingspage.h:325 msgid "Output device" -msgstr "" +msgstr "Uređaj izlaza" #: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" -msgstr "" +msgstr "Opcije izlaza" #: ../bin/src/ui_playbacksettingspage.h:320 msgid "Output plugin" -msgstr "" +msgstr "Priključak izlaza" #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" -msgstr "" +msgstr "Prebriši sve" #: ../bin/src/ui_organisedialog.h:207 msgid "Overwrite existing files" -msgstr "" +msgstr "Prebriši postojeće fajlove" #: ../bin/src/ui_albumcoverexport.h:211 msgid "Overwrite smaller ones only" -msgstr "" +msgstr "Prebriši samo manje fajlove" #: ../bin/src/ui_podcastinfowidget.h:195 msgid "Owner" -msgstr "" +msgstr "Vlasnik" #: internet/jamendoservice.cpp:214 msgid "Parsing Jamendo catalogue" -msgstr "" +msgstr "Raščlanjujem Džamendov katalog" #: ui/equalizer.cpp:126 msgid "Party" -msgstr "" +msgstr "žurka" #: ../bin/src/ui_groovesharksettingspage.h:115 #: ../bin/src/ui_magnatunesettingspage.h:165 @@ -3518,123 +3519,123 @@ msgstr "" #: ../bin/src/ui_podcastsettingspage.h:253 #: ../bin/src/ui_networkproxysettingspage.h:169 msgid "Password" -msgstr "" +msgstr "Lozinka" #: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 #: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 msgid "Pause" -msgstr "" +msgstr "Pauziraj" #: core/commandlineoptions.cpp:153 msgid "Pause playback" -msgstr "" +msgstr "Pauziraj puštanje" #: widgets/osd.cpp:156 msgid "Paused" -msgstr "" +msgstr "Pauzirano" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" -msgstr "" +msgstr "izvođač" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" -msgstr "" +msgstr "piksela" #: widgets/fancytabwidget.cpp:672 msgid "Plain sidebar" -msgstr "" +msgstr "Obična traka" #: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 #: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 #: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 #: wiimotedev/wiimotesettingspage.cpp:101 msgid "Play" -msgstr "" +msgstr "Pusti" #: ../bin/src/ui_lastfmstationdialog.h:92 msgid "Play Artist or Tag" -msgstr "" +msgstr "Pusti izvođača ili oznaku" #: internet/lastfmservice.cpp:118 msgid "Play artist radio..." -msgstr "" +msgstr "Pusti radio izvođača..." #: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" -msgstr "" +msgstr "broj puštanja" #: internet/lastfmservice.cpp:122 msgid "Play custom radio..." -msgstr "" +msgstr "Pusti posebni radio..." #: core/commandlineoptions.cpp:152 msgid "Play if stopped, pause if playing" -msgstr "" +msgstr "Pusti ako je zaustavljeno, zaustavi ako se pušta" #: ../bin/src/ui_behavioursettingspage.h:211 #: ../bin/src/ui_behavioursettingspage.h:225 msgid "Play if there is nothing already playing" -msgstr "" +msgstr "počeće puštanje ako trenutno ništa nije pušteno" #: internet/lastfmservice.cpp:120 msgid "Play tag radio..." -msgstr "" +msgstr "Pusti radio oznake..." #: core/commandlineoptions.cpp:168 msgid "Play the th track in the playlist" -msgstr "" +msgstr "Pusti u numeru ss liste" #: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 msgid "Play/Pause" -msgstr "" +msgstr "Pusti/pauziraj" #: ../bin/src/ui_playbacksettingspage.h:297 msgid "Playback" -msgstr "" +msgstr "Puštanje" #: core/commandlineoptions.cpp:150 msgid "Player options" -msgstr "" +msgstr "Opcije plejera" #: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 #: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 #: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 msgid "Playlist" -msgstr "" +msgstr "Lista numera" #: widgets/osd.cpp:178 msgid "Playlist finished" -msgstr "" +msgstr "Lista numera je završena" #: core/commandlineoptions.cpp:165 msgid "Playlist options" -msgstr "" +msgstr "Opcije liste numera" #: smartplaylists/wizard.cpp:77 msgid "Playlist type" -msgstr "" +msgstr "Tip liste" #: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 msgid "Playlists" -msgstr "" +msgstr "Liste numera" #: ../data/oauthsuccess.html:38 msgid "Please close your browser and return to Clementine." -msgstr "" +msgstr "Zatvorite vaš pregledač i vratite se na Klementinu." #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" -msgstr "" +msgstr "Status dodatka:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" -msgstr "" +msgstr "Podkasti" #: ui/equalizer.cpp:127 msgid "Pop" -msgstr "" +msgstr "pop" #: internet/groovesharkservice.cpp:577 msgid "Popular songs" @@ -3650,51 +3651,51 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" -msgstr "" +msgstr "Trajanje" #: ../bin/src/ui_networkproxysettingspage.h:166 #: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Port" -msgstr "" +msgstr "Port" #: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 msgid "Pre-amp" -msgstr "" +msgstr "Pretpojačanje" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 #: ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" -msgstr "" +msgstr "Postavke" #: ../bin/src/ui_mainwindow.h:679 msgid "Preferences..." -msgstr "" +msgstr "Podešavanje..." #: ../bin/src/ui_librarysettingspage.h:202 msgid "Preferred album art filenames (comma separated)" -msgstr "" +msgstr "Imena fajlova omota (odvojena zarezom)" #: ../bin/src/ui_magnatunesettingspage.h:167 msgid "Preferred audio format" -msgstr "" +msgstr "Poželjni format zvuka" #: ../bin/src/ui_spotifysettingspage.h:217 msgid "Preferred bitrate" -msgstr "" +msgstr "Poželjni bitski protok" #: ../bin/src/ui_deviceproperties.h:380 msgid "Preferred format" -msgstr "" +msgstr "Poželjni format" #: ../bin/src/ui_digitallyimportedsettingspage.h:174 msgid "Premium audio type" -msgstr "" +msgstr "Tip zvuka (premijum)" #: ../bin/src/ui_equalizer.h:164 msgid "Preset:" -msgstr "" +msgstr "Prepostavka:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" @@ -3702,7 +3703,7 @@ msgstr "" #: ../bin/src/ui_globalshortcutgrabber.h:73 msgid "Press a key" -msgstr "" +msgstr "Pritisnite taster" #: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format @@ -3711,39 +3712,39 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" -msgstr "" +msgstr "Opcije lepog OSD-a" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 #: ../bin/src/ui_organisedialog.h:208 msgid "Preview" -msgstr "" +msgstr "Pregled" #: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 msgid "Previous" -msgstr "" +msgstr "Prethodna" #: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 #: wiimotedev/wiimotesettingspage.cpp:100 msgid "Previous track" -msgstr "" +msgstr "Prethodna numera" #: core/commandlineoptions.cpp:176 msgid "Print out version information" -msgstr "" +msgstr "Prikaži podatke o izdanju" #: ../bin/src/ui_transcoderoptionsaac.h:131 msgid "Profile" -msgstr "" +msgstr "Profil" #: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" -msgstr "" +msgstr "Napredak" #: ui/equalizer.cpp:129 msgid "Psychedelic" -msgstr "" +msgstr "psihodelično" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 #: wiimotedev/wiimotesettingspage.cpp:227 @@ -3752,7 +3753,7 @@ msgstr "" #: ../bin/src/ui_querysortpage.h:138 msgid "Put songs in a random order" -msgstr "" +msgstr "Postavi nasumično" #: ../bin/src/ui_transcoderoptionsflac.h:81 #: ../bin/src/ui_transcoderoptionsmp3.h:192 @@ -3760,72 +3761,72 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsvorbis.h:202 #: visualisations/visualisationcontainer.cpp:114 msgid "Quality" -msgstr "" +msgstr "Kvalitet" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." -msgstr "" +msgstr "Ispitujem uređaj..." #: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 msgid "Queue Manager" -msgstr "" +msgstr "Menadžer redosleda" #: ui/mainwindow.cpp:1386 msgid "Queue selected tracks" -msgstr "" +msgstr "Stavi u red izabrane numere" #: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 #: ui/mainwindow.cpp:1384 msgid "Queue track" -msgstr "" +msgstr "Stavi numeru u red" #: ../bin/src/ui_playbacksettingspage.h:314 msgid "Radio (equal loudness for all tracks)" -msgstr "" +msgstr "radio (jednaka jačina za sve pesme)" #: internet/groovesharkservice.cpp:595 msgid "Radios" -msgstr "" +msgstr "Radio" #: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 msgid "Rain" -msgstr "" +msgstr "Kiša" #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" -msgstr "" +msgstr "nasumično" #: core/globalshortcuts.cpp:65 msgid "Rate the current song 0 stars" -msgstr "" +msgstr "Oceni tekuću pesmu sa 0 zvezda" #: core/globalshortcuts.cpp:66 msgid "Rate the current song 1 star" -msgstr "" +msgstr "Oceni tekuću pesmu sa 1 zvezdom" #: core/globalshortcuts.cpp:67 msgid "Rate the current song 2 stars" -msgstr "" +msgstr "Oceni tekuću pesmu sa 2 zvezde" #: core/globalshortcuts.cpp:68 msgid "Rate the current song 3 stars" -msgstr "" +msgstr "Oceni tekuću pesmu sa 3 zvezde" #: core/globalshortcuts.cpp:69 msgid "Rate the current song 4 stars" -msgstr "" +msgstr "Oceni tekuću pesmu sa 4 zvezde" #: core/globalshortcuts.cpp:70 msgid "Rate the current song 5 stars" -msgstr "" +msgstr "Oceni tekuću pesmu sa 5 zvezda" #: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" -msgstr "" +msgstr "ocena" #: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 msgid "Really cancel?" -msgstr "" +msgstr "Zaista odustajete?" #: internet/subsonicsettingspage.cpp:131 msgid "Redirect limit exceeded, verify server configuration." @@ -3833,24 +3834,24 @@ msgstr "" #: internet/groovesharkservice.cpp:549 msgid "Refresh" -msgstr "" +msgstr "Osveži" #: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 #: internet/subsonicservice.cpp:92 msgid "Refresh catalogue" -msgstr "" +msgstr "Osveži katalog" #: internet/somafmservice.cpp:106 msgid "Refresh channels" -msgstr "" +msgstr "Osveži kanale" #: internet/lastfmservice.cpp:124 msgid "Refresh friends list" -msgstr "" +msgstr "Osveži spisak prijatelja" #: internet/icecastservice.cpp:297 msgid "Refresh station list" -msgstr "" +msgstr "Osveži spisak stanica" #: internet/digitallyimportedservicebase.cpp:182 msgid "Refresh streams" @@ -3858,7 +3859,7 @@ msgstr "" #: ui/equalizer.cpp:130 msgid "Reggae" -msgstr "" +msgstr "rege" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" @@ -3866,24 +3867,24 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:204 msgid "Remember from last time" -msgstr "" +msgstr "seti se od prošlog puta" #: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 #: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 msgid "Remove" -msgstr "" +msgstr "Ukloni" #: ../bin/src/ui_wiimotesettingspage.h:194 msgid "Remove action" -msgstr "" +msgstr "Ukloni radnju" #: ../bin/src/ui_mainwindow.h:724 msgid "Remove duplicates from playlist" -msgstr "" +msgstr "Ukloni duplikate sa liste" #: ../bin/src/ui_librarysettingspage.h:189 msgid "Remove folder" -msgstr "" +msgstr "Ukloni fasciklu" #: internet/groovesharkservice.cpp:536 msgid "Remove from My Music" @@ -3895,15 +3896,15 @@ msgstr "" #: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 msgid "Remove from playlist" -msgstr "" +msgstr "Ukloni sa liste numera" #: playlist/playlisttabbar.cpp:174 msgid "Remove playlist" -msgstr "" +msgstr "Ukloni listu numera" #: playlist/playlistlistcontainer.cpp:315 msgid "Remove playlists" -msgstr "" +msgstr "Ukloni liste numera" #: internet/groovesharkservice.cpp:1539 msgid "Removing songs from My Music" @@ -3916,7 +3917,7 @@ msgstr "" #: internet/groovesharkservice.cpp:1337 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "" +msgstr "Preimenuj „%1“ listu" #: internet/groovesharkservice.cpp:526 msgid "Rename Grooveshark playlist" @@ -3924,11 +3925,11 @@ msgstr "" #: playlist/playlisttabbar.cpp:137 msgid "Rename playlist" -msgstr "" +msgstr "Preimenovanje liste numera" #: playlist/playlisttabbar.cpp:55 msgid "Rename playlist..." -msgstr "" +msgstr "Preimenuj listu numera..." #: ../bin/src/ui_mainwindow.h:675 msgid "Renumber tracks in this order..." @@ -3936,57 +3937,57 @@ msgstr "" #: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" -msgstr "" +msgstr "Ponavljanje" #: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" -msgstr "" +msgstr "Ponavljaj album" #: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" -msgstr "" +msgstr "Ponavljaj listu numera" #: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" -msgstr "" +msgstr "Ponavljaj numeru" #: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 #: internet/internetservice.cpp:66 library/libraryview.cpp:369 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" -msgstr "" +msgstr "Zameni trenutnu listu" #: ../bin/src/ui_behavioursettingspage.h:218 msgid "Replace the playlist" -msgstr "" +msgstr "zameni listu numera" #: ../bin/src/ui_organisedialog.h:205 msgid "Replaces spaces with underscores" -msgstr "" +msgstr "Zameni razmake podvlakom" #: ../bin/src/ui_playbacksettingspage.h:309 msgid "Replay Gain" -msgstr "" +msgstr "Nivelator jačine" #: ../bin/src/ui_playbacksettingspage.h:311 msgid "Replay Gain mode" -msgstr "" +msgstr "Režim nivelatora jačine" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" -msgstr "" +msgstr "Popuni ponovo" #: ../bin/src/ui_networkremotesettingspage.h:191 msgid "Require authentication code" -msgstr "" +msgstr "Zahtevaj autentifikacijski kôd" #: widgets/lineedit.cpp:52 msgid "Reset" -msgstr "" +msgstr "Resetuj" #: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" -msgstr "" +msgstr "Poništi broj puštanja" #: core/commandlineoptions.cpp:164 msgid "" @@ -3995,11 +3996,11 @@ msgstr "" #: ../bin/src/ui_organisedialog.h:206 msgid "Restrict to ASCII characters" -msgstr "" +msgstr "Ograniči se na ASKI znakove" #: ../bin/src/ui_behavioursettingspage.h:205 msgid "Resume playback on start" -msgstr "" +msgstr "Nastavi puštanje po pokretanju" #: internet/groovesharkservice.cpp:758 msgid "Retrieving Grooveshark My Music songs" @@ -4015,27 +4016,27 @@ msgstr "" #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" -msgstr "" +msgstr "Vratite se na Klementinu" #: ../bin/src/ui_equalizer.h:174 msgid "Right" -msgstr "" +msgstr "Desno" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "čupaj" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Čupanje CD-a" #: ../bin/src/ui_mainwindow.h:730 msgid "Rip audio CD..." -msgstr "" +msgstr "Čupaj audio CD..." #: ui/equalizer.cpp:131 msgid "Rock" -msgstr "" +msgstr "rok" #: ../bin/src/ui_console.h:81 msgid "Run" @@ -4043,7 +4044,7 @@ msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:164 msgid "SOCKS proxy" -msgstr "" +msgstr "SOCKS proksi" #: internet/subsonicsettingspage.cpp:122 msgid "" @@ -4053,529 +4054,529 @@ msgstr "" #: devices/deviceview.cpp:202 msgid "Safely remove device" -msgstr "" +msgstr "Bezbedno izvadi uređaj" #: ../bin/src/ui_organisedialog.h:196 msgid "Safely remove the device after copying" -msgstr "" +msgstr "Bezbedno izvadi uređaj posle kopiranja" #: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" -msgstr "" +msgstr "uzorkovanje" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" -msgstr "" +msgstr "uzorkovanje" #: ../bin/src/ui_appearancesettingspage.h:295 msgid "Save .mood files in your music library" -msgstr "" +msgstr "Sačuvaj .mood fajlove u muzičkoj biblioteci" #: ui/albumcoverchoicecontroller.cpp:121 msgid "Save album cover" -msgstr "" +msgstr "Upisivanje omota albuma" #: ui/albumcoverchoicecontroller.cpp:60 msgid "Save cover to disk..." -msgstr "" +msgstr "Sačuvaj omot na disk..." #: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 msgid "Save image" -msgstr "" +msgstr "Sačuvaj sliku" #: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 msgid "Save playlist" -msgstr "" +msgstr "Sačuvaj listu numera" #: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 msgid "Save playlist..." -msgstr "" +msgstr "Sačuvaj listu numera..." #: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 msgid "Save preset" -msgstr "" +msgstr "Sačuvaj prepostavku" #: ../bin/src/ui_librarysettingspage.h:193 msgid "Save ratings in file tags when possible" -msgstr "" +msgstr "Upiši ocenu pesme u oznake kad je to moguće" #: ../bin/src/ui_librarysettingspage.h:197 msgid "Save statistics in file tags when possible" -msgstr "" +msgstr "Upiši statistiku pesme u oznake kad je to moguće" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" -msgstr "" +msgstr "Sačuvaj ovaj tok u internet kartici" #: library/library.cpp:164 msgid "Saving songs statistics into songs files" -msgstr "" +msgstr "Upisujem statistike pesama u fajlove pesama" #: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 msgid "Saving tracks" -msgstr "" +msgstr "Upisujem numere" #: ../bin/src/ui_transcoderoptionsaac.h:136 msgid "Scalable sampling rate profile (SSR)" -msgstr "" +msgstr "skalabilno uzorkovanje (SSR)" #: ../bin/src/ui_albumcoverexport.h:213 msgid "Scale size" -msgstr "" +msgstr "Promeni veličinu" #: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 msgid "Score" -msgstr "" +msgstr "skor" #: ../bin/src/ui_lastfmsettingspage.h:156 msgid "Scrobble tracks that I listen to" -msgstr "" +msgstr "Skrobluj numere koje puštam" #: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 #: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 #: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 #: ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" -msgstr "" +msgstr "Traži" #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" -msgstr "" +msgstr "Potraži Icecast stanice" #: internet/jamendoservice.cpp:426 msgid "Search Jamendo" -msgstr "" +msgstr "Potraži Jamendo" #: internet/magnatuneservice.cpp:285 msgid "Search Magnatune" -msgstr "" +msgstr "Pretraži Magnatjun" #: internet/subsonicservice.cpp:75 msgid "Search Subsonic" -msgstr "" +msgstr "Pretraži Subsonik" #: ui/albumcoverchoicecontroller.cpp:66 msgid "Search automatically" -msgstr "" +msgstr "Traži automatski" #: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." -msgstr "" +msgstr "Traži omote albuma..." #: ../bin/src/ui_globalsearchview.h:208 msgid "Search for anything" -msgstr "" +msgstr "Tražite bilo šta" #: ../bin/src/ui_gpoddersearchpage.h:76 msgid "Search gpodder.net" -msgstr "" +msgstr "Traži na gpodder.net" #: ../bin/src/ui_itunessearchpage.h:76 msgid "Search iTunes" -msgstr "" +msgstr "Traži na iTunes" #: ../bin/src/ui_querysearchpage.h:113 msgid "Search mode" -msgstr "" +msgstr "Režim pretrage" #: smartplaylists/querywizardplugin.cpp:154 msgid "Search options" -msgstr "" +msgstr "Opcije pretrage" #: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 #: internet/spotifyservice.cpp:347 msgid "Search results" -msgstr "" +msgstr "Rezultati pretrage" #: smartplaylists/querywizardplugin.cpp:152 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" -msgstr "" +msgstr "Termini pretrage" #: internet/groovesharkservice.cpp:270 msgid "Searching on Grooveshark" -msgstr "" +msgstr "Tražim na Gruvšarku" #: ../bin/src/ui_groupbydialog.h:139 msgid "Second level" -msgstr "" +msgstr "Drugi nivo" #: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 msgid "Seek backward" -msgstr "" +msgstr "Traži unazad" #: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 msgid "Seek forward" -msgstr "" +msgstr "Traži unapred" #: core/commandlineoptions.cpp:163 msgid "Seek the currently playing track by a relative amount" -msgstr "" +msgstr "Nađi trenutnu numeru po relativnom iznosu" #: core/commandlineoptions.cpp:162 msgid "Seek the currently playing track to an absolute position" -msgstr "" +msgstr "Nađi trenutnu numeru na tačnoj poziciji" #: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 msgid "Select All" -msgstr "" +msgstr "Izaberi sve" #: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 msgid "Select None" -msgstr "" +msgstr "Očisti izbor" #: ../bin/src/ui_appearancesettingspage.h:277 msgid "Select background color:" -msgstr "" +msgstr "Boja pozadine:" #: ui/appearancesettingspage.cpp:247 msgid "Select background image" -msgstr "" +msgstr "Slika pozadine" #: ../bin/src/ui_trackselectiondialog.h:207 msgid "Select best possible match" -msgstr "" +msgstr "Izaberite najbolje poklapanje" #: ../bin/src/ui_appearancesettingspage.h:275 msgid "Select foreground color:" -msgstr "" +msgstr "Glavna boja:" #: ../bin/src/ui_visualisationselector.h:108 msgid "Select visualizations" -msgstr "" +msgstr "Izbor vizuelizacija" #: visualisations/visualisationcontainer.cpp:124 msgid "Select visualizations..." -msgstr "" +msgstr "Izaberi vizuelizacije..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Izaberi..." #: devices/devicekitlister.cpp:124 msgid "Serial number" -msgstr "" +msgstr "Serijski broj" #: ../bin/src/ui_subsonicsettingspage.h:126 msgid "Server URL" -msgstr "" +msgstr "URL servera" #: ../bin/src/ui_subsonicsettingspage.h:125 msgid "Server details" -msgstr "" +msgstr "Detalji servera" #: internet/lastfmservice.cpp:434 msgid "Service offline" -msgstr "" +msgstr "Servis van mreže" #: ui/mainwindow.cpp:1413 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "" +msgstr "Postavljeno %1 od „%2“..." #: core/commandlineoptions.cpp:157 msgid "Set the volume to percent" -msgstr "" +msgstr "Postavi jačinu zvuka na procenata" #: ../bin/src/ui_mainwindow.h:676 msgid "Set value for all selected tracks..." -msgstr "" +msgstr "Podesi vrednost za sve označene numere..." #: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Settings" -msgstr "" +msgstr "Podešavanja" #: ../bin/src/ui_globalshortcutssettingspage.h:173 msgid "Shortcut" -msgstr "" +msgstr "Prečica" #: ui/globalshortcutssettingspage.cpp:135 #: ../bin/src/ui_globalshortcutssettingspage.h:175 #, qt-format msgid "Shortcut for %1" -msgstr "" +msgstr "Prečica za %1" #: wiimotedev/wiimotesettingspage.cpp:124 #, qt-format msgid "Shortcut for %1 already exists" -msgstr "" +msgstr "Prečica za %1 već postoji" #: library/libraryfilterwidget.cpp:61 msgid "Show" -msgstr "" +msgstr "Prikaži" #: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 msgid "Show OSD" -msgstr "" +msgstr "Prikaži OSD" #: ../bin/src/ui_playbacksettingspage.h:298 msgid "Show a glowing animation on the current track" -msgstr "" +msgstr "Prikaži šljašteću animaciju na puštenoj numeri" #: ../bin/src/ui_appearancesettingspage.h:293 msgid "Show a moodbar in the track progress bar" -msgstr "" +msgstr "Prikaži traku raspoloženja u traci napretka numere" #: ../bin/src/ui_notificationssettingspage.h:434 msgid "Show a native desktop notification" -msgstr "" +msgstr "Izvorna obaveštenja radne površi" #: ../bin/src/ui_notificationssettingspage.h:442 msgid "Show a notification when I change the repeat/shuffle mode" -msgstr "" +msgstr "Obaveštenje pri promeni režima ponavljanja/nasumičnosti" #: ../bin/src/ui_notificationssettingspage.h:441 msgid "Show a notification when I change the volume" -msgstr "" +msgstr "Obaveštenje pro promeni jačine zvuka" #: ../bin/src/ui_notificationssettingspage.h:436 msgid "Show a popup from the system tray" -msgstr "" +msgstr "Oblačić sa sistemske kasete" #: ../bin/src/ui_notificationssettingspage.h:435 msgid "Show a pretty OSD" -msgstr "" +msgstr "Lepi OSD" #: widgets/nowplayingwidget.cpp:121 msgid "Show above status bar" -msgstr "" +msgstr "Prikaži iznad trake stanja" #: ui/mainwindow.cpp:471 msgid "Show all songs" -msgstr "" +msgstr "Prikaži sve pesme" #: ../bin/src/ui_querysortpage.h:141 msgid "Show all the songs" -msgstr "" +msgstr "Prikaži sve pesme" #: ../bin/src/ui_librarysettingspage.h:209 msgid "Show cover art in library" -msgstr "" +msgstr "Prikaži omot u biblioteci" #: ../bin/src/ui_librarysettingspage.h:210 msgid "Show dividers" -msgstr "" +msgstr "Prikaži razdvajače" #: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 msgid "Show fullsize..." -msgstr "" +msgstr "Puna veličina..." #: library/libraryview.cpp:399 ui/mainwindow.cpp:519 #: widgets/fileviewlist.cpp:52 msgid "Show in file browser..." -msgstr "" +msgstr "Prikaži u menadžeru fajlova" #: ui/mainwindow.cpp:520 msgid "Show in library..." -msgstr "" +msgstr "Prikaži u biblioteci..." #: library/libraryview.cpp:403 msgid "Show in various artists" -msgstr "" +msgstr "Prikaži u raznim izvođačima" #: moodbar/moodbarproxystyle.cpp:337 msgid "Show moodbar" -msgstr "" +msgstr "Prikaži raspoloženje" #: ui/mainwindow.cpp:472 msgid "Show only duplicates" -msgstr "" +msgstr "Prikaži samo duplikate" #: ui/mainwindow.cpp:473 msgid "Show only untagged" -msgstr "" +msgstr "Prikaži samo neoznačene" #: ../bin/src/ui_globalsearchsettingspage.h:153 msgid "Show search suggestions" -msgstr "" +msgstr "prikaži predloge pretrage" #: ../bin/src/ui_lastfmsettingspage.h:157 msgid "Show the \"love\" and \"ban\" buttons" -msgstr "" +msgstr "Prikaži „volim“ i „mrzim“ dugmad" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" -msgstr "" +msgstr "Prikaži dugme skroblovanja u glavnom prozoru" #: ../bin/src/ui_behavioursettingspage.h:192 msgid "Show tray icon" -msgstr "" +msgstr "Prikaži ikonu sistemske kasete" #: ../bin/src/ui_globalsearchsettingspage.h:152 msgid "Show which sources are enabled and disabled" -msgstr "" +msgstr "prikaži koji su izvori omogućeni/onemogućeni" #: core/globalshortcuts.cpp:58 msgid "Show/Hide" -msgstr "" +msgstr "Prikaži/sakrij" #: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" -msgstr "" +msgstr "Nasumično" #: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" -msgstr "" +msgstr "Nasumično albumi" #: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" -msgstr "" +msgstr "Nasumično sve" #: ../bin/src/ui_mainwindow.h:683 msgid "Shuffle playlist" -msgstr "" +msgstr "Pretumbaj listu" #: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" -msgstr "" +msgstr "Nasumično numere u ovom albumu" #: ../bin/src/ui_podcastsettingspage.h:252 msgid "Sign in" -msgstr "" +msgstr "Prijavi se" #: ../bin/src/ui_loginstatewidget.h:173 msgid "Sign out" -msgstr "" +msgstr "Odjavi se" #: ../bin/src/ui_loginstatewidget.h:175 msgid "Signing in..." -msgstr "" +msgstr "Prijavljujem se..." #: songinfo/echonestsimilarartists.cpp:57 msgid "Similar artists" -msgstr "" +msgstr "Slični izvođači" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "Veličina" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "Veličina:" #: ui/equalizer.cpp:133 msgid "Ska" -msgstr "" +msgstr "ska" #: core/commandlineoptions.cpp:155 msgid "Skip backwards in playlist" -msgstr "" +msgstr "Preskoči unazad u listi numera" #: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" -msgstr "" +msgstr "broj preskakanja" #: core/commandlineoptions.cpp:156 msgid "Skip forwards in playlist" -msgstr "" +msgstr "Preskoči unapred u listi numera" #: widgets/nowplayingwidget.cpp:93 msgid "Small album cover" -msgstr "" +msgstr "Mali omot" #: widgets/fancytabwidget.cpp:671 msgid "Small sidebar" -msgstr "" +msgstr "Uska traka" #: smartplaylists/wizard.cpp:68 msgid "Smart playlist" -msgstr "" +msgstr "Pametna lista" #: library/librarymodel.cpp:1207 msgid "Smart playlists" -msgstr "" +msgstr "Pametne liste" #: ui/equalizer.cpp:132 msgid "Soft" -msgstr "" +msgstr "lagana" #: ui/equalizer.cpp:134 msgid "Soft Rock" -msgstr "" +msgstr "lagani rok" #: ../bin/src/ui_songinfosettingspage.h:154 msgid "Song Information" -msgstr "" +msgstr "Podaci o pesmi" #: ui/mainwindow.cpp:247 msgid "Song info" -msgstr "" +msgstr "Podaci o pesmi" #: analyzers/sonogram.cpp:18 msgid "Sonogram" -msgstr "" +msgstr "Sonogram" #: ../bin/src/ui_trackselectiondialog.h:205 msgid "Sorry" -msgstr "" +msgstr "Izvinite" #: ../bin/src/ui_icecastfilterwidget.h:75 msgid "Sort by genre (alphabetically)" -msgstr "" +msgstr "Poređaj po žanru (abecedno)" #: ../bin/src/ui_icecastfilterwidget.h:76 msgid "Sort by genre (by popularity)" -msgstr "" +msgstr "Poređaj po žanru (po popularnosti)" #: ../bin/src/ui_icecastfilterwidget.h:77 msgid "Sort by station name" -msgstr "" +msgstr "Poređaj po imenu stanice" #: ../bin/src/ui_querysortpage.h:139 msgid "Sort songs by" -msgstr "" +msgstr "Poređaj pesme po" #: ../bin/src/ui_querysortpage.h:137 msgid "Sorting" -msgstr "" +msgstr "Ređanje" #: playlist/playlist.cpp:1239 msgid "Source" -msgstr "" +msgstr "izvor" #: ../bin/src/ui_globalsearchsettingspage.h:146 msgid "Sources" -msgstr "" +msgstr "Izvori" #: ../bin/src/ui_transcodersettingspage.h:178 msgid "Speex" -msgstr "" +msgstr "Speex" #: ../bin/src/ui_spotifysettingspage.h:207 msgid "Spotify" -msgstr "" +msgstr "Spotifaj" #: internet/spotifyservice.cpp:184 msgid "Spotify login error" -msgstr "" +msgstr "Greška prijavljivanja na Spotifaj" #: ../bin/src/ui_spotifysettingspage.h:212 msgid "Spotify plugin" -msgstr "" +msgstr "Spotifaj priključak" #: internet/spotifyblobdownloader.cpp:59 msgid "Spotify plugin not installed" -msgstr "" +msgstr "Spotifaj priključak nije instaliran" #: ../bin/src/ui_transcoderoptionsmp3.h:201 msgid "Standard" -msgstr "" +msgstr "standardan" #: internet/spotifyservice.cpp:354 msgid "Starred" -msgstr "" +msgstr "Sa zvezdicom" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Počni čupanje" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" -msgstr "" +msgstr "Počni listu trenutno puštanim" #: transcoder/transcodedialog.cpp:90 msgid "Start transcoding" -msgstr "" +msgstr "Počni prekodiranje" #: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 #: internet/spotifyservice.cpp:348 @@ -4587,49 +4588,49 @@ msgstr "" #: transcoder/transcoder.cpp:407 #, qt-format msgid "Starting %1" -msgstr "" +msgstr "Počinjem %1" #: internet/magnatunedownloaddialog.cpp:120 msgid "Starting..." -msgstr "" +msgstr "Počinjem..." #: internet/groovesharkservice.cpp:598 msgid "Stations" -msgstr "" +msgstr "Stanice" #: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 #: wiimotedev/wiimotesettingspage.cpp:102 msgid "Stop" -msgstr "" +msgstr "Zaustavi" #: wiimotedev/wiimotesettingspage.cpp:110 msgid "Stop after" -msgstr "" +msgstr "Zaustavi posle" #: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 msgid "Stop after this track" -msgstr "" +msgstr "Zaustavi posle ove numere" #: core/commandlineoptions.cpp:154 msgid "Stop playback" -msgstr "" +msgstr "Zaustavi puštanje" #: core/globalshortcuts.cpp:50 msgid "Stop playing after current track" -msgstr "" +msgstr "Zaustavi posle tekuće numere" #: widgets/osd.cpp:171 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "Zaustavi puštanje nakon numere: %1" #: widgets/osd.cpp:166 msgid "Stopped" -msgstr "" +msgstr "Zaustavljeno" #: core/song.cpp:353 msgid "Stream" -msgstr "" +msgstr "Tok" #: internet/subsonicsettingspage.cpp:30 msgid "" @@ -4639,7 +4640,7 @@ msgstr "" #: ../bin/src/ui_magnatunesettingspage.h:160 msgid "Streaming membership" -msgstr "" +msgstr "strimovanje sadržaja" #: internet/groovesharkservice.cpp:629 msgid "Subscribed playlists" @@ -4647,126 +4648,126 @@ msgstr "" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" -msgstr "" +msgstr "Pretplatnici" #: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" -msgstr "" +msgstr "Subsonik" #: ../data/oauthsuccess.html:36 msgid "Success!" -msgstr "" +msgstr "Uspeh!" #: transcoder/transcoder.cpp:200 #, qt-format msgid "Successfully written %1" -msgstr "" +msgstr "Uspešno upisano %1" #: ui/trackselectiondialog.cpp:171 msgid "Suggested tags" -msgstr "" +msgstr "Predložene oznake" #: ../bin/src/ui_edittagdialog.h:681 #: ../bin/src/ui_notificationssettingspage.h:448 msgid "Summary" -msgstr "" +msgstr "Rezime" #: analyzers/analyzercontainer.cpp:65 #: visualisations/visualisationcontainer.cpp:110 #, qt-format msgid "Super high (%1 fps)" -msgstr "" +msgstr "super visok (%1 fps)" #: visualisations/visualisationcontainer.cpp:120 msgid "Super high (2048x2048)" -msgstr "" +msgstr "super visok (2048x2048)" #: ../bin/src/ui_deviceproperties.h:374 msgid "Supported formats" -msgstr "" +msgstr "Podržani formati" #: ../bin/src/ui_librarysettingspage.h:201 msgid "Synchronize statistics to files now" -msgstr "" +msgstr "Sinhronizuj statistike u fajlove" #: internet/spotifyservice.cpp:561 msgid "Syncing Spotify inbox" -msgstr "" +msgstr "Sinhronizovanje Spotifaj sandučeta" #: internet/spotifyservice.cpp:556 msgid "Syncing Spotify playlist" -msgstr "" +msgstr "Sinhronizovanje Spotifaj liste numera" #: internet/spotifyservice.cpp:565 msgid "Syncing Spotify starred tracks" -msgstr "" +msgstr "Sinhronizovanje Spotifaj ocenjenih numera" #: moodbar/moodbarrenderer.cpp:159 msgid "System colors" -msgstr "" +msgstr "sistemske boje" #: widgets/fancytabwidget.cpp:673 msgid "Tabs on top" -msgstr "" +msgstr "Jezičci na vrhu" #: ../bin/src/ui_lastfmstationdialog.h:97 msgid "Tag" -msgstr "" +msgstr "Oznaka" #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" -msgstr "" +msgstr "Dobavljač oznaka" #: internet/lastfmservice.cpp:212 msgid "Tag radio" -msgstr "" +msgstr "Označi radio" #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" -msgstr "" +msgstr "Ciljani bitski protok" #: ui/equalizer.cpp:135 msgid "Techno" -msgstr "" +msgstr "tehno" #: ../bin/src/ui_notificationssettingspage.h:460 msgid "Text options" -msgstr "" +msgstr "Opcije teksta" #: ui/about.cpp:70 msgid "Thanks to" -msgstr "" +msgstr "Zahvalnice" #: ui/globalshortcutssettingspage.cpp:177 #, qt-format msgid "The \"%1\" command could not be started." -msgstr "" +msgstr "Naredbe „%1“ se ne mogu pokrenuti." #: ../bin/src/ui_appearancesettingspage.h:282 msgid "The album cover of the currently playing song" -msgstr "" +msgstr "Omot albuma tekuće pesme" #: internet/magnatunedownloaddialog.cpp:90 #, qt-format msgid "The directory %1 is not valid" -msgstr "" +msgstr "Direktorijum „%1“ nije ispravan" #: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 #, qt-format msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" +msgstr "Lista numera „%1“ je prazna i ne može se učitati." #: smartplaylists/searchtermwidget.cpp:330 msgid "The second value must be greater than the first one!" -msgstr "" +msgstr "Druga vrednost mora biti veća od prve!" #: ui/coverfromurldialog.cpp:71 msgid "The site you requested does not exist!" -msgstr "" +msgstr "Sajt koji ste zatražili ne postoji!" #: ui/coverfromurldialog.cpp:82 msgid "The site you requested is not an image!" -msgstr "" +msgstr "Sajt koji ste zatražili nije slika!" #: internet/subsonicsettingspage.cpp:98 msgid "" @@ -4778,7 +4779,7 @@ msgstr "" msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" -msgstr "" +msgstr "Izdanje Klementine koje ste upravo nadogradili zahteva potpuno skeniranje biblioteke zbog novih mogućnosti koje su izlistane ispod:" #: library/libraryview.cpp:529 msgid "There are other songs in this album" @@ -4787,112 +4788,112 @@ msgstr "" #: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 #: podcasts/gpoddertoptagspage.cpp:77 msgid "There was a problem communicating with gpodder.net" -msgstr "" +msgstr "Problem prilikom komunikacije sa gpodder.net" #: internet/magnatunedownloaddialog.cpp:158 msgid "There was a problem fetching the metadata from Magnatune" -msgstr "" +msgstr "Problem prilikom dobavljanja metapodataka sa Magnatjuna" #: podcasts/itunessearchpage.cpp:76 msgid "There was a problem parsing the response from the iTunes Store" -msgstr "" +msgstr "Problem prilikom raščlanjivanja odgovora sa iTunes prodavnice." #: ui/organiseerrordialog.cpp:56 msgid "" "There were problems copying some songs. The following files could not be " "copied:" -msgstr "" +msgstr "Bilo je problema prilikom kopiranja nekih pesama. Sledeći fajlovi nisu kopirani:" #: ui/organiseerrordialog.cpp:61 msgid "" "There were problems deleting some songs. The following files could not be " "deleted:" -msgstr "" +msgstr "Bilo je problema pri brisanju nekih pesama. Sledeći fajlovi nisu obrisani:" #: devices/deviceview.cpp:389 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" -msgstr "" +msgstr "Ovi fajlovi će biti obrisani sa uređaja, želite li zaista da nastavite?" #: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" -msgstr "" +msgstr "Ovi fajlovi će biti trajno obrisani sa diska, želite li zaista da nastavite?" #: ../bin/src/ui_librarysettingspage.h:187 msgid "These folders will be scanned for music to make up your library" -msgstr "" +msgstr "Ove fascikle će biti skenirane da bi se napravila biblioteka" #: ../bin/src/ui_transcodersettingspage.h:174 msgid "" "These settings are used in the \"Transcode Music\" dialog, and when " "converting music before copying it to a device." -msgstr "" +msgstr "Ove postavke se koriste u dijalogu „Prekodiranje muzike“, i prilikom kodiranja muzike pre kopiranja na uređaj." #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" -msgstr "" +msgstr "Treći nivo" #: internet/jamendoservice.cpp:171 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" -msgstr "" +msgstr "Ovaj radnja će napraviti bazu podataka koja može biti velika i do 150 MB.\nŽelite li ipak da nastavite?" #: internet/magnatunedownloaddialog.cpp:175 msgid "This album is not available in the requested format" -msgstr "" +msgstr "Ovaj album nije dostupan u traženom formatu" #: ../bin/src/ui_deviceproperties.h:381 msgid "" "This device must be connected and opened before Clementine can see what file" " formats it supports." -msgstr "" +msgstr "Ovaj uređaj mora biti povezan i otvoren pre nego što Klementina može da vidi koje formate fajlova podržava." #: ../bin/src/ui_deviceproperties.h:375 msgid "This device supports the following file formats:" -msgstr "" +msgstr "Ovaj uređaj podržava sledeće formate fajlova:" #: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 msgid "This device will not work properly" -msgstr "" +msgstr "Ovaj uređaj neće raditi ispravno" #: devices/devicemanager.cpp:567 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." -msgstr "" +msgstr "Ovo je MTP uređaj, ali vi ste kompilovali Klementinu bez libmtp podrške." #: devices/devicemanager.cpp:575 msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "" +msgstr "Ovo je iPod, ali vi ste kompilovali Klementinu bez libgpod podrške." #: devices/devicemanager.cpp:324 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." -msgstr "" +msgstr "Ovo je prvi put da ste povezali ovaj uređaj. Klementina će sad da skenira uređaj da bi našla muziku - to može da potraje." #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "" +msgstr "Ovu opciju možete izmeniti u postavkama „Ponašanja“" #: internet/lastfmservice.cpp:435 msgid "This stream is for paid subscribers only" -msgstr "" +msgstr "Ovaj tok je samo za pretplatnike" #: devices/devicemanager.cpp:587 #, qt-format msgid "This type of device is not supported: %1" -msgstr "" +msgstr "Ovaj tip uređaja nije podržan: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" -msgstr "" +msgstr "naslov" #: internet/groovesharkservice.cpp:1018 msgid "" @@ -4902,15 +4903,15 @@ msgstr "" #: core/utilities.cpp:127 core/utilities.cpp:143 msgid "Today" -msgstr "" +msgstr "Danas" #: core/globalshortcuts.cpp:60 msgid "Toggle Pretty OSD" -msgstr "" +msgstr "Menjaj lepi OSD" #: visualisations/visualisationcontainer.cpp:101 msgid "Toggle fullscreen" -msgstr "" +msgstr "Ceo ekran" #: ui/mainwindow.cpp:1388 msgid "Toggle queue status" @@ -4918,62 +4919,62 @@ msgstr "" #: ../bin/src/ui_mainwindow.h:722 msgid "Toggle scrobbling" -msgstr "" +msgstr "Menjaj skroblovanje" #: core/commandlineoptions.cpp:171 msgid "Toggle visibility for the pretty on-screen-display" -msgstr "" +msgstr "Menjaj vidljivost lepog OSD-a" #: core/utilities.cpp:145 msgid "Tomorrow" -msgstr "" +msgstr "Sutra" #: podcasts/podcasturlloader.cpp:116 msgid "Too many redirects" -msgstr "" +msgstr "Previše preusmeravanja" #: internet/spotifyservice.cpp:366 msgid "Top tracks" -msgstr "" +msgstr "Najbolje numere" #: ../bin/src/ui_albumcovermanager.h:221 msgid "Total albums:" -msgstr "" +msgstr "Ukupno albuma:" #: covers/coversearchstatisticsdialog.cpp:71 msgid "Total bytes transferred" -msgstr "" +msgstr "Ukupno bajtova prebačeno" #: covers/coversearchstatisticsdialog.cpp:68 msgid "Total network requests made" -msgstr "" +msgstr "Ukupno napravljenih mrežnih zahteva" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" -msgstr "" +msgstr "numera" #: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 msgid "Transcode Music" -msgstr "" +msgstr "Prekodiranje muzike" #: ../bin/src/ui_transcodelogdialog.h:63 msgid "Transcoder Log" -msgstr "" +msgstr "Dnevnik prekodiranja" #: ../bin/src/ui_transcodersettingspage.h:173 msgid "Transcoding" -msgstr "" +msgstr "Prekodiranje" #: transcoder/transcoder.cpp:312 #, qt-format msgid "Transcoding %1 files using %2 threads" -msgstr "" +msgstr "Prekodiram %1 fajlova koristeći %2 niski" #: ../bin/src/ui_transcoderoptionsdialog.h:54 msgid "Transcoding options" -msgstr "" +msgstr "Opcije prekodiranja" #: core/song.cpp:350 msgid "TrueAudio" @@ -4981,7 +4982,7 @@ msgstr "" #: analyzers/turbine.cpp:15 msgid "Turbine" -msgstr "" +msgstr "Turbina" #: ../bin/src/ui_dynamicplaylistcontrols.h:113 msgid "Turn off" @@ -4989,11 +4990,11 @@ msgstr "" #: devices/giolister.cpp:161 msgid "URI" -msgstr "" +msgstr "URI" #: core/commandlineoptions.cpp:150 msgid "URL(s)" -msgstr "" +msgstr "Adrese" #: ../bin/src/ui_ubuntuonesettingspage.h:127 msgid "Ubuntu One" @@ -5009,12 +5010,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" -msgstr "" +msgstr "ultra široki opseg (UWB)" #: internet/magnatunedownloaddialog.cpp:144 #, qt-format msgid "Unable to download %1 (%2)" -msgstr "" +msgstr "Ne mogu da preuzmem %1 (%2)" #: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 #: library/librarymodel.cpp:322 library/librarymodel.cpp:999 @@ -5022,113 +5023,113 @@ msgstr "" #: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 #: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 msgid "Unknown" -msgstr "" +msgstr "Nepoznato" #: podcasts/podcasturlloader.cpp:198 msgid "Unknown content-type" -msgstr "" +msgstr "Nepoznat tip sadržaja" #: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 msgid "Unknown error" -msgstr "" +msgstr "Nepoznata greška" #: ui/albumcoverchoicecontroller.cpp:63 msgid "Unset cover" -msgstr "" +msgstr "Ukloni omot" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" -msgstr "" +msgstr "Ukloni pretplatu" #: songinfo/songkickconcerts.cpp:168 msgid "Upcoming Concerts" -msgstr "" +msgstr "Predstojeći koncerti" #: internet/groovesharkservice.cpp:1200 msgid "Update Grooveshark playlist" -msgstr "" +msgstr "Ažuriraj Gruvšark listu numera" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" -msgstr "" +msgstr "Ažuriraj sve podkaste" #: ../bin/src/ui_mainwindow.h:713 msgid "Update changed library folders" -msgstr "" +msgstr "Ažuriraj izmenjene fascikle biblioteke" #: ../bin/src/ui_librarysettingspage.h:191 msgid "Update the library when Clementine starts" -msgstr "" +msgstr "Ažuriraj biblioteku pri pokretanju Klementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" -msgstr "" +msgstr "Ažuriraj ovaj podkast" #: ../bin/src/ui_podcastsettingspage.h:227 msgid "Updating" -msgstr "" +msgstr "Ažuriranje" #: library/librarywatcher.cpp:92 #, qt-format msgid "Updating %1" -msgstr "" +msgstr "Ažuriram %1" #: devices/deviceview.cpp:103 #, qt-format msgid "Updating %1%..." -msgstr "" +msgstr "Ažuriram %1%..." #: library/librarywatcher.cpp:90 msgid "Updating library" -msgstr "" +msgstr "Ažuriranje biblioteke" #: core/commandlineoptions.cpp:150 msgid "Usage" -msgstr "" +msgstr "Iskorišćenje" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" -msgstr "" +msgstr "Koristi oznaku izvođača albuma ako je dostupna" #: ../bin/src/ui_globalshortcutssettingspage.h:168 msgid "Use Gnome's shortcut keys" -msgstr "" +msgstr "Koristi Gnomove prečice" #: ../bin/src/ui_playbacksettingspage.h:310 msgid "Use Replay Gain metadata if it is available" -msgstr "" +msgstr "Koristi metapodatke nivelisanja ako su dostupni" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" -msgstr "" +msgstr "Koristi SSLv3" #: ../bin/src/ui_wiimotesettingspage.h:189 msgid "Use Wii Remote" -msgstr "" +msgstr "Koristi Wii daljinski" #: ../bin/src/ui_appearancesettingspage.h:274 msgid "Use a custom color set" -msgstr "" +msgstr "Posebna paleta boja" #: ../bin/src/ui_notificationssettingspage.h:445 msgid "Use a custom message for notifications" -msgstr "" +msgstr "Koristi posebnu poruku za obaveštenja" #: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Use a network remote control" -msgstr "" +msgstr "Uključi daljinsko upravljanje preko mreže" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" -msgstr "" +msgstr "Koristi autentifikaciju" #: ../bin/src/ui_transcoderoptionsvorbis.h:203 msgid "Use bitrate management engine" -msgstr "" +msgstr "Motor menadžmenta za bitski protok" #: ../bin/src/ui_wizardfinishpage.h:85 msgid "Use dynamic mode" -msgstr "" +msgstr "Dinamički režim" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" @@ -5136,36 +5137,36 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" -msgstr "" +msgstr "Vremensko oblikovanje šuma" #: ../bin/src/ui_behavioursettingspage.h:198 msgid "Use the system default" -msgstr "" +msgstr "sistemski podrazumevan" #: ../bin/src/ui_appearancesettingspage.h:273 msgid "Use the system default color set" -msgstr "" +msgstr "Sistemski podrazumevana paleta boja" #: ../bin/src/ui_networkproxysettingspage.h:158 msgid "Use the system proxy settings" -msgstr "" +msgstr "Sistemske postavke proksija" #: ../bin/src/ui_spotifysettingspage.h:218 msgid "Use volume normalisation" -msgstr "" +msgstr "Normalizacija jačine zvuka" #: widgets/freespacebar.cpp:47 msgid "Used" -msgstr "" +msgstr "Iskorišćeno" #: internet/groovesharkservice.cpp:404 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "" +msgstr "Korisnik %1 nema Gruvšark Bilokud nalog" #: ui/settingsdialog.cpp:145 msgid "User interface" -msgstr "" +msgstr "Korisničko sučelje" #: ../bin/src/ui_groovesharksettingspage.h:114 #: ../bin/src/ui_magnatunesettingspage.h:163 @@ -5174,106 +5175,106 @@ msgstr "" #: ../bin/src/ui_podcastsettingspage.h:251 #: ../bin/src/ui_networkproxysettingspage.h:168 msgid "Username" -msgstr "" +msgstr "Korisničko ime" #: ../bin/src/ui_behavioursettingspage.h:207 msgid "Using the menu to add a song will..." -msgstr "" +msgstr "Radnja menija za dodavanje pesme..." #: ../bin/src/ui_magnatunedownloaddialog.h:142 #: ../bin/src/ui_magnatunesettingspage.h:173 msgid "VBR MP3" -msgstr "" +msgstr "VBR MP3" #: ../bin/src/ui_transcoderoptionsspeex.h:232 msgid "Variable bit rate" -msgstr "" +msgstr "Promenljiv bitski protok" #: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 #: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 msgid "Various artists" -msgstr "" +msgstr "Razni izvođači" #: ui/about.cpp:34 #, qt-format msgid "Version %1" -msgstr "" +msgstr "Izdanje %1" #: ../bin/src/ui_albumcovermanager.h:220 msgid "View" -msgstr "" +msgstr "Prikaz" #: ../bin/src/ui_visualisationselector.h:109 msgid "Visualization mode" -msgstr "" +msgstr "Režim vizuelizacija" #: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 msgid "Visualizations" -msgstr "" +msgstr "Vizuelizacije" #: ../bin/src/ui_visualisationoverlay.h:185 msgid "Visualizations Settings" -msgstr "" +msgstr "Podešavanje vizuelizacija" #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" -msgstr "" +msgstr "Otkrivanje glasovne aktivnosti" #: widgets/osd.cpp:185 #, qt-format msgid "Volume %1%" -msgstr "" +msgstr "Jačina %1%" #: ../bin/src/ui_transcodersettingspage.h:176 msgid "Vorbis" -msgstr "" +msgstr "Vorbis" #: ../bin/src/ui_magnatunedownloaddialog.h:141 #: ../bin/src/ui_magnatunesettingspage.h:172 msgid "WAV" -msgstr "" +msgstr "VAV" #: ../bin/src/ui_transcodersettingspage.h:180 msgid "WMA" -msgstr "" +msgstr "VMA" #: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "" +msgstr "Upozori me prilikom zatvaranja jezička liste numera" #: core/song.cpp:349 msgid "Wav" -msgstr "" +msgstr "VAV" #: ../bin/src/ui_podcastinfowidget.h:193 msgid "Website" -msgstr "" +msgstr "Vebsajt" #: smartplaylists/searchterm.cpp:312 msgid "Weeks" -msgstr "" +msgstr "sedmica" #: ../bin/src/ui_behavioursettingspage.h:201 msgid "When Clementine starts" -msgstr "" +msgstr "Kada se Klementina pokrene" #: ../bin/src/ui_librarysettingspage.h:204 msgid "" "When looking for album art Clementine will first look for picture files that contain one of these words.\n" "If there are no matches then it will use the largest image in the directory." -msgstr "" +msgstr "Prilikom traženja omota albuma Klementina će najpre da traži fajlove slika koji sadrže neke od ovih reči.\nAko nema poklapanja onda će da koristi najveću sliku u direktorijumu." #: ../bin/src/ui_globalsearchsettingspage.h:151 msgid "When the list is empty..." -msgstr "" +msgstr "Kada je spisak prazan..." #: ../bin/src/ui_globalsearchview.h:212 msgid "Why not try..." -msgstr "" +msgstr "Zašto ne biste probali..." #: ../bin/src/ui_transcoderoptionsspeex.h:229 msgid "Wide band (WB)" -msgstr "" +msgstr "široki opseg (WB)" #: widgets/osd.cpp:244 #, qt-format @@ -5311,71 +5312,71 @@ msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" -msgstr "" +msgstr "Vindouz medija 128k" #: ../bin/src/ui_digitallyimportedsettingspage.h:172 msgid "Windows Media 40k" -msgstr "" +msgstr "Vindouz medija 40k" #: ../bin/src/ui_digitallyimportedsettingspage.h:180 msgid "Windows Media 64k" -msgstr "" +msgstr "Vindouz medija 64k" #: core/song.cpp:339 msgid "Windows Media audio" -msgstr "" +msgstr "Vindouz medija audio" #: ../bin/src/ui_albumcovermanager.h:222 msgid "Without cover:" -msgstr "" +msgstr "Bez omota:" #: library/libraryview.cpp:530 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" -msgstr "" +msgstr "Želite li da pomerite i ostale pesme iz ovog albuma u razne izvođače takođe?" #: ui/mainwindow.cpp:2143 msgid "Would you like to run a full rescan right now?" -msgstr "" +msgstr "Želite li sada da pokrenete potpuno skeniranje?" #: library/librarysettingspage.cpp:151 msgid "Write all songs statistics into songs' files" -msgstr "" +msgstr "Upisivanje statistika svih pesama u fajlove pesama" #: internet/subsonicsettingspage.cpp:86 msgid "Wrong username or password." -msgstr "" +msgstr "Pogrešno korisničko ime ili lozinka." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" -msgstr "" +msgstr "godina" #: ../bin/src/ui_groupbydialog.h:136 ../bin/src/ui_groupbydialog.h:150 #: ../bin/src/ui_groupbydialog.h:164 msgid "Year - Album" -msgstr "" +msgstr "godina — album" #: smartplaylists/searchterm.cpp:314 msgid "Years" -msgstr "" +msgstr "godina" #: core/utilities.cpp:129 msgid "Yesterday" -msgstr "" +msgstr "Juče" #: ../bin/src/ui_magnatunedownloaddialog.h:132 msgid "You are about to download the following albums" -msgstr "" +msgstr "Preuzećete sledeće albume" #: playlist/playlistlistcontainer.cpp:316 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "" +msgstr "Želite li zaista da uklonite %1 listi numera iz omiljenih?" #: playlist/playlisttabbar.cpp:177 msgid "" @@ -5385,20 +5386,20 @@ msgstr "" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." -msgstr "" +msgstr "Niste prijavljeni." #: widgets/loginstatewidget.cpp:75 #, qt-format msgid "You are signed in as %1." -msgstr "" +msgstr "Prijavljeni ste kao %1" #: widgets/loginstatewidget.cpp:73 msgid "You are signed in." -msgstr "" +msgstr "Prijavljeni ste." #: ../bin/src/ui_groupbydialog.h:123 msgid "You can change the way the songs in the library are organised." -msgstr "" +msgstr "Možete izmeniti način organizivanja pesama u biblioteci" #: internet/digitallyimportedsettingspage.cpp:46 msgid "" @@ -5410,11 +5411,11 @@ msgstr "" msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." -msgstr "" +msgstr "Možete besplatno slušati pesme na Magnatjunu bez naloga. Kupovinom članstva oslobodićete se poruka na kraju svake numere." #: ../bin/src/ui_backgroundstreamssettingspage.h:57 msgid "You can listen to background streams at the same time as other music." -msgstr "" +msgstr "Možete da slušate pozadinske tokove istovremeno sa drugom muzikom." #: internet/lastfmsettingspage.cpp:148 msgid "" @@ -5432,11 +5433,11 @@ msgstr "" #: internet/groovesharksettingspage.cpp:103 msgid "You do not have a Grooveshark Anywhere account." -msgstr "" +msgstr "Nemate Gruvšark Bilokud nalog." #: internet/spotifysettingspage.cpp:149 msgid "You do not have a Spotify Premium account." -msgstr "" +msgstr "Nemate Spotifaj Premijum nalog." #: internet/digitallyimportedclient.cpp:89 msgid "You do not have an active subscription" @@ -5454,7 +5455,7 @@ msgstr "" #: songinfo/lastfmtrackinfoprovider.cpp:87 msgid "You love this track" -msgstr "" +msgstr "Volite ovu numeru" #: ../bin/src/ui_globalshortcutssettingspage.h:170 msgid "" @@ -5465,7 +5466,7 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "" +msgstr "Morate da ponovo pokrenete Klementinu da biste promenili jezik." #: internet/lastfmsettingspage.cpp:114 msgid "" @@ -5475,32 +5476,32 @@ msgstr "" #: ../bin/src/ui_networkremotesettingspage.h:200 msgid "Your IP address:" -msgstr "" +msgstr "Vaša IP adresa:" #: internet/lastfmsettingspage.cpp:80 msgid "Your Last.fm credentials were incorrect" -msgstr "" +msgstr "Vaši akreditivi za Last.fm su netačni" #: internet/magnatunesettingspage.cpp:113 msgid "Your Magnatune credentials were incorrect" -msgstr "" +msgstr "Vaši akreditivi za Magnatjun su netačni" #: library/libraryview.cpp:343 msgid "Your library is empty!" -msgstr "" +msgstr "Vaša biblioteka je prazna" #: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 msgid "Your radio streams" -msgstr "" +msgstr "Vaši radio tokovi" #: songinfo/lastfmtrackinfoprovider.cpp:88 #, qt-format msgid "Your scrobbles: %1" -msgstr "" +msgstr "Vaša skroblovanja: %1" #: visualisations/visualisationcontainer.cpp:152 msgid "Your system is missing OpenGL support, visualizations are unavailable." -msgstr "" +msgstr "Vaš sistem ne podržava OpenGL, vizuelizacije nisu dostupne." #: internet/groovesharksettingspage.cpp:107 #: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 @@ -5509,40 +5510,40 @@ msgstr "" #: smartplaylists/searchterm.cpp:297 msgid "Z-A" -msgstr "" +msgstr "Ž-A" #: ui/equalizer.cpp:136 msgid "Zero" -msgstr "" +msgstr "ništa" #: playlist/playlistundocommands.cpp:37 #, c-format, qt-plural-format msgid "add %n songs" -msgstr "" +msgstr "dodaj %n pesama" #: smartplaylists/searchterm.cpp:205 msgid "after" -msgstr "" +msgstr "nakon" #: ../bin/src/ui_searchtermwidget.h:270 msgid "ago" -msgstr "" +msgstr " " #: ../bin/src/ui_searchtermwidget.h:269 msgid "and" -msgstr "" +msgstr "i" #: ../bin/src/ui_transcoderoptionsspeex.h:219 msgid "automatic" -msgstr "" +msgstr "automatski" #: smartplaylists/searchterm.cpp:206 msgid "before" -msgstr "" +msgstr "pre" #: smartplaylists/searchterm.cpp:211 msgid "between" -msgstr "" +msgstr "između" #: smartplaylists/searchterm.cpp:301 msgid "biggest first" @@ -5550,34 +5551,34 @@ msgstr "" #: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 msgid "bpm" -msgstr "" +msgstr "tempo" #: smartplaylists/searchterm.cpp:217 msgid "contains" -msgstr "" +msgstr "sadrži" #: ../bin/src/ui_transcoderoptionsspeex.h:222 #: ../bin/src/ui_transcoderoptionsvorbis.h:207 #: ../bin/src/ui_transcoderoptionsvorbis.h:210 msgid "disabled" -msgstr "" +msgstr "onemogućeno" #: widgets/osd.cpp:114 #, qt-format msgid "disc %1" -msgstr "" +msgstr "disk %1" #: smartplaylists/searchterm.cpp:218 msgid "does not contain" -msgstr "" +msgstr "ne sadrži" #: smartplaylists/searchterm.cpp:220 msgid "ends with" -msgstr "" +msgstr "završava sa" #: smartplaylists/searchterm.cpp:223 msgid "equals" -msgstr "" +msgstr "jednak" #: ../bin/src/ui_podcastsettingspage.h:249 msgid "gpodder.net" @@ -5589,7 +5590,7 @@ msgstr "" #: smartplaylists/searchterm.cpp:221 msgid "greater than" -msgstr "" +msgstr "veći od" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" @@ -5597,17 +5598,17 @@ msgstr "" #: smartplaylists/searchterm.cpp:209 msgid "in the last" -msgstr "" +msgstr "poslednjih" #: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 #: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 #: ui/edittagdialog.cpp:460 msgid "kbps" -msgstr "" +msgstr "kb/s" #: smartplaylists/searchterm.cpp:222 msgid "less than" -msgstr "" +msgstr "manji od" #: smartplaylists/searchterm.cpp:299 msgid "longest first" @@ -5624,15 +5625,15 @@ msgstr "" #: smartplaylists/searchterm.cpp:224 msgid "not equals" -msgstr "" +msgstr "nije jednak" #: smartplaylists/searchterm.cpp:210 msgid "not in the last" -msgstr "" +msgstr "ne u poslednjih" #: smartplaylists/searchterm.cpp:208 msgid "not on" -msgstr "" +msgstr "ne na dan" #: smartplaylists/searchterm.cpp:298 msgid "oldest first" @@ -5640,24 +5641,24 @@ msgstr "" #: smartplaylists/searchterm.cpp:207 msgid "on" -msgstr "" +msgstr "na dan" #: core/commandlineoptions.cpp:150 msgid "options" -msgstr "" +msgstr "Opcije" #: ../bin/src/ui_networkremotesettingspage.h:203 msgid "or scan the QR code!" -msgstr "" +msgstr "ili skenirajte kôd ispod!" #: widgets/didyoumean.cpp:56 msgid "press enter" -msgstr "" +msgstr "pritisni enter" #: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 #, c-format, qt-plural-format msgid "remove %n songs" -msgstr "" +msgstr "ukloni %n pesama" #: smartplaylists/searchterm.cpp:299 msgid "shortest first" @@ -5677,13 +5678,13 @@ msgstr "" #: smartplaylists/searchterm.cpp:219 msgid "starts with" -msgstr "" +msgstr "počinje sa" #: playlist/playlistdelegates.cpp:185 msgid "stop" -msgstr "" +msgstr "Zaustavi" #: widgets/osd.cpp:116 #, qt-format msgid "track %1" -msgstr "" +msgstr "numera %1" diff --git a/src/translations/sv.po b/src/translations/sv.po index 8753cee99..87b9db106 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -461,7 +461,7 @@ msgstr "Lägg till mapp..." msgid "Add podcast" msgstr "Lägg till podsändning" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Lägg till podsändning..." @@ -610,7 +610,7 @@ msgstr "Efter " msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -623,7 +623,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (lämplig ljudstyrka för alla spår)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -776,7 +776,7 @@ msgid "" "the songs of your library?" msgstr "Är du säker på att du vill skriva låtstatistik till låtfilerna på alla låtar i ditt musikbibliotek?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -798,7 +798,7 @@ msgstr "Artistradio" msgid "Artist tags" msgstr "Artist-taggar" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artistens initialer" @@ -848,7 +848,7 @@ msgstr "Genomsnittlig bildstorlek" msgid "BBC Podcasts" msgstr "BBC podsändningar" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "Bakgrundsbild" msgid "Background opacity" msgstr "Bakgrundsopacitet" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Säkerhetskopiera databasen" @@ -910,7 +910,7 @@ msgstr "Biografi från %1" msgid "Bit rate" msgstr "Bithastighet" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1197,7 +1197,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista, separerad med komma, över class:level; level är 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" @@ -1209,7 +1209,7 @@ msgstr "Fyll i etiketter automatiskt" msgid "Complete tags automatically..." msgstr "Fyll i etiketter automatiskt..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1252,7 +1252,7 @@ msgstr "Ställ in Global sökning..." msgid "Configure library..." msgstr "Konfigurera biblioteket..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Konfigurera podcasts..." @@ -1305,8 +1305,8 @@ msgstr "Konvertera all musik som enheten inte kan spela upp" msgid "Copy to clipboard" msgstr "Kopiera till klippbordet" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Kopiera till enhet..." @@ -1504,7 +1504,7 @@ msgstr "Dbus-sökväg" msgid "Dance" msgstr "Dans" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1560,7 +1560,7 @@ msgstr "Ta bort" msgid "Delete Grooveshark playlist" msgstr "Ta bort Grooveshark spellista" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Ta bort nedladdad data" @@ -1677,7 +1677,7 @@ msgstr "Inaktivera moodbar-generering" msgid "Disabled" msgstr "Inaktiverat" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skiva" @@ -1735,7 +1735,7 @@ msgstr "Dubbelklicka för att öppna" msgid "Double clicking a song will..." msgstr "Dubbelklicka på en låt kommer ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Ladda ner %n avsnitt" @@ -1756,7 +1756,7 @@ msgstr "Hämta medlemskap" msgid "Download new episodes automatically" msgstr "Ladda ner nya avsnitt automatiskt" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Nedladdning köad" @@ -1772,7 +1772,7 @@ msgstr "Hämta detta album" msgid "Download this album..." msgstr "Ladda ner det här albumet ..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Ladda ner detta avsnitt" @@ -1780,7 +1780,7 @@ msgstr "Ladda ner detta avsnitt" msgid "Download..." msgstr "Ladda ner..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Laddar ner (%1%)..." @@ -2185,7 +2185,7 @@ msgstr "Fel vid hämtning av omslag" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Filändelse" @@ -2335,7 +2335,7 @@ msgstr "Allmänt" msgid "General settings" msgstr "Allmänna inställningar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2444,7 +2444,7 @@ msgstr "Gruppera efter genre/album" msgid "Group by Genre/Artist/Album" msgstr "Gruppera efter genre/artist/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppera" @@ -2611,7 +2611,7 @@ msgstr "Infoga..." msgid "Installed" msgstr "Installerad" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Integritetskontroll" @@ -2814,7 +2814,7 @@ msgstr "Lämna tomt för standardvärdet. Exempel: \"/dev/dsp\", \"front\", etc. msgid "Left" msgstr "Vänster" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Speltid" @@ -3027,11 +3027,11 @@ msgstr "Manuellt" msgid "Manufacturer" msgstr "Tillverkare" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Markera som lyssnad" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Markera som ny" @@ -3468,7 +3468,7 @@ msgstr "Organisera filer" msgid "Organise files..." msgstr "Organisera filer..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Organiserar filer..." @@ -3542,7 +3542,7 @@ msgstr "Gör paus i uppspelning" msgid "Paused" msgstr "Pausad" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Artist" @@ -3637,7 +3637,7 @@ msgstr "Var god och stäng din webbläsare och återgå till Clementine." msgid "Plugin status:" msgstr "Instickstatus:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podsändning" @@ -4072,7 +4072,7 @@ msgstr "Säker borttagning av enheten efter kopiering" msgid "Sample rate" msgstr "Samplingsfrekvens" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Samplingsfrekvens" @@ -4896,7 +4896,7 @@ msgstr "Denna ström är endast för betalkunder" msgid "This type of device is not supported: %1" msgstr "Denna typ av enhet är inte stödd: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4957,7 +4957,7 @@ msgstr "Totalt antal byte överfört" msgid "Total network requests made" msgstr "Totalt antal nätverksbegäran" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5045,7 +5045,7 @@ msgstr "Okänt fel" msgid "Unset cover" msgstr "Ta bort omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Avprenumerera" @@ -5057,7 +5057,7 @@ msgstr "Kommande konserter" msgid "Update Grooveshark playlist" msgstr "Uppdatera Groovesharkspellista " -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Uppdatera alla podsändningar" @@ -5069,7 +5069,7 @@ msgstr "Uppdatera ändrade bibliotekskataloger" msgid "Update the library when Clementine starts" msgstr "Uppdatera biblioteket när Clementine startar" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Uppdatera denna podsändning" @@ -5356,7 +5356,7 @@ msgstr "Skriv all låtstatistik till låtfilerna" msgid "Wrong username or password." msgstr "Fel användarnamn eller lösenord." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/te.po b/src/translations/te.po index f2c2aee52..cf4a9bf96 100644 --- a/src/translations/te.po +++ b/src/translations/te.po @@ -452,7 +452,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -601,7 +601,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -614,7 +614,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -767,7 +767,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -789,7 +789,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -839,7 +839,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +860,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -901,7 +901,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1188,7 +1188,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1200,7 +1200,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1243,7 +1243,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1296,8 +1296,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1495,7 +1495,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1551,7 +1551,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1668,7 +1668,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1726,7 +1726,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1747,7 +1747,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1763,7 +1763,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1771,7 +1771,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2176,7 +2176,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2326,7 +2326,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2435,7 +2435,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2602,7 +2602,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2805,7 +2805,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3018,11 +3018,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3459,7 +3459,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3533,7 +3533,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3628,7 +3628,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4063,7 +4063,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4887,7 +4887,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4948,7 +4948,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5036,7 +5036,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5048,7 +5048,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5060,7 +5060,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5347,7 +5347,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/tr.po b/src/translations/tr.po index 6d2ae3048..15470da22 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-01-27 15:04+0000\n" +"Last-Translator: volkangezer \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/clementine/language/tr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -469,7 +469,7 @@ msgstr "Yeni klasör ekle..." msgid "Add podcast" msgstr "Podcast ekle" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast ekle..." @@ -618,7 +618,7 @@ msgstr "Sonra " msgid "After copying..." msgstr "Kopyalandıktan sonra..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -631,7 +631,7 @@ msgstr "Albüm" msgid "Album (ideal loudness for all tracks)" msgstr "Albüm (tüm parçalar için ideal ses yüksekliği)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -784,7 +784,7 @@ msgid "" "the songs of your library?" msgstr "Şarkıların istatistiklerini, kütüphanenizdeki tüm şarkıların kendi dosyalarına yazmak istediğinizden emin misiniz?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -806,7 +806,7 @@ msgstr "Sanatçı radyosu" msgid "Artist tags" msgstr "Sanatçı etiketleri" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Sanatçının kısaltması" @@ -856,7 +856,7 @@ msgstr "Ortalama resim boyutu" msgid "BBC Podcasts" msgstr "BBC Podcastları" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -877,7 +877,7 @@ msgstr "Arkaplan resmi" msgid "Background opacity" msgstr "Artalan saydamlığı" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Veritabanını yedekliyor" @@ -918,7 +918,7 @@ msgstr "%1 sitesinden biyografi" msgid "Bit rate" msgstr "Bit oranı" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1205,7 +1205,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Virgülle ayrılmış sınıf:seviye listesi, sınıf 0-3 arasında olabilir " #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Yorum" @@ -1217,7 +1217,7 @@ msgstr "Etiketleri otomatik tamamla" msgid "Complete tags automatically..." msgstr "Etiketleri otomatik tamamla..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1260,7 +1260,7 @@ msgstr "Genel aramayı düzenle..." msgid "Configure library..." msgstr "Kütüphaneyi düzenle..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podcastları ayarla..." @@ -1313,8 +1313,8 @@ msgstr "Aygıtın çalamadığı müzikleri dönüştür" msgid "Copy to clipboard" msgstr "Panoya kopyala" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Aygıta kopyala..." @@ -1512,7 +1512,7 @@ msgstr "DBus yolu" msgid "Dance" msgstr "Dans" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1568,7 +1568,7 @@ msgstr "Sil" msgid "Delete Grooveshark playlist" msgstr "Grooveshark müzik listesini sil" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "İndirilmiş veriyi sil" @@ -1685,7 +1685,7 @@ msgstr "Moodbar oluşturmayı kapat" msgid "Disabled" msgstr "Devre Dışı" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1743,7 +1743,7 @@ msgstr "Açmak için çift tıkla" msgid "Double clicking a song will..." msgstr "Bir şarkıyı çift tıklamak..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n bölüm indir" @@ -1764,7 +1764,7 @@ msgstr "İndirme üyeliği" msgid "Download new episodes automatically" msgstr "Yeni bölümleri otomatik olarak indir" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Sıradakileri indir" @@ -1780,7 +1780,7 @@ msgstr "Bu albümü indir" msgid "Download this album..." msgstr "Bu albümü indirin..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Bu bölümü indir" @@ -1788,7 +1788,7 @@ msgstr "Bu bölümü indir" msgid "Download..." msgstr "İndir..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "İndiriyor (%1%)..." @@ -2193,7 +2193,7 @@ msgstr "Kapak alınırken bir hata oluştu" msgid "File Format" msgstr "Dosya Biçimi" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Dosya uzantısı" @@ -2343,7 +2343,7 @@ msgstr "Genel" msgid "General settings" msgstr "Genel ayarlar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2452,7 +2452,7 @@ msgstr "Tür/Albüme göre grupla" msgid "Group by Genre/Artist/Album" msgstr "Tür/Sanatçı/Albüme göre grupla" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruplandırma" @@ -2609,7 +2609,7 @@ msgstr "Bilgi" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Girdi seçenekleri" #: ../bin/src/ui_organisedialog.h:203 msgid "Insert..." @@ -2619,7 +2619,7 @@ msgstr "Ekle..." msgid "Installed" msgstr "Kuruldu" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Bütünlük doğrulaması" @@ -2665,7 +2665,7 @@ msgstr "Geçersiz kullanici adi yada şifre" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Seçimi Tersine Çevir" #: internet/jamendoservice.cpp:127 msgid "Jamendo" @@ -2822,7 +2822,7 @@ msgstr "Öntanımlıların kullanılması için boş bırakın. Örnekler: \"/de msgid "Left" msgstr "So" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Süre" @@ -3035,11 +3035,11 @@ msgstr "El ile" msgid "Manufacturer" msgstr "Üretici" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Dinlenmiş olarak işaretle" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Yeni olarak işaretle" @@ -3476,7 +3476,7 @@ msgstr "Dosyaları Düzenle" msgid "Organise files..." msgstr "Dosyaları düzenle..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Dosyalar düzenleniyor" @@ -3550,7 +3550,7 @@ msgstr "Beklet" msgid "Paused" msgstr "Duraklatıldı" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Sanatçı" @@ -3645,7 +3645,7 @@ msgstr "Lütfen tarayıcınızı kapatıp Clementine'e geri dönün." msgid "Plugin status:" msgstr "Eklenti durumu:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastlar" @@ -4040,7 +4040,7 @@ msgstr "Sağ" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Dönüştür" #: ui/ripcd.cpp:116 msgid "Rip CD" @@ -4080,7 +4080,7 @@ msgstr "Kopyalama işleminden sonra aygıtı güvenli kaldır" msgid "Sample rate" msgstr "Örnekleme oranı" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Örneklemeoranı" @@ -4584,7 +4584,7 @@ msgstr "Yıldızlı" #: ui/ripcd.cpp:90 msgid "Start ripping" -msgstr "" +msgstr "Dönüştürmeyi başlat" #: core/commandlineoptions.cpp:151 msgid "Start the playlist currently playing" @@ -4904,7 +4904,7 @@ msgstr "Bu yayın sadece abone olan kullanıcılar içindir" msgid "This type of device is not supported: %1" msgstr "Bu tür bir aygıt desteklenmiyor: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4965,7 +4965,7 @@ msgstr "Aktarılan toplam bayt" msgid "Total network requests made" msgstr "Yapılmış toplam ağ istemi" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5053,7 +5053,7 @@ msgstr "Bilinmeyen hata" msgid "Unset cover" msgstr "Albüm kapağını çıkar" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Abonelikten çık" @@ -5065,7 +5065,7 @@ msgstr "Yaklaşan Konserler" msgid "Update Grooveshark playlist" msgstr "Grooveshark çalma listesini güncelle" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Bütün podcastları güncelle" @@ -5077,7 +5077,7 @@ msgstr "Değişen kütüphane klasörlerini güncelle" msgid "Update the library when Clementine starts" msgstr "Clementine başladığında kütüphaneyi güncelle" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Bu podcast'ı güncelle" @@ -5364,7 +5364,7 @@ msgstr "Tüm şarkı istatistiklerini şarkı dosyalarına yaz" msgid "Wrong username or password." msgstr "Yanlış kullanıcı adı veya parola." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/tr_TR.po b/src/translations/tr_TR.po index e1fcce684..fa20f733a 100644 --- a/src/translations/tr_TR.po +++ b/src/translations/tr_TR.po @@ -474,7 +474,7 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "" @@ -623,7 +623,7 @@ msgstr "" msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -636,7 +636,7 @@ msgstr "" msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -789,7 +789,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -811,7 +811,7 @@ msgstr "" msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "" @@ -861,7 +861,7 @@ msgstr "" msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -882,7 +882,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -923,7 +923,7 @@ msgstr "" msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1210,7 +1210,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" @@ -1222,7 +1222,7 @@ msgstr "" msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1265,7 +1265,7 @@ msgstr "" msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "" @@ -1318,8 +1318,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "" @@ -1517,7 +1517,7 @@ msgstr "" msgid "Dance" msgstr "" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1573,7 +1573,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "" @@ -1690,7 +1690,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1748,7 +1748,7 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "" @@ -1769,7 +1769,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1785,7 +1785,7 @@ msgstr "" msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "" @@ -1793,7 +1793,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2198,7 +2198,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2348,7 +2348,7 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2457,7 +2457,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2624,7 +2624,7 @@ msgstr "" msgid "Installed" msgstr "" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2827,7 +2827,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" @@ -3040,11 +3040,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3481,7 +3481,7 @@ msgstr "" msgid "Organise files..." msgstr "" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "" @@ -3555,7 +3555,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3650,7 +3650,7 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" @@ -4085,7 +4085,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4909,7 +4909,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4970,7 +4970,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5058,7 +5058,7 @@ msgstr "" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5070,7 +5070,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5082,7 +5082,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5369,7 +5369,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/uk.po b/src/translations/uk.po index b3a686ba1..1a5bbd0ad 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -454,7 +454,7 @@ msgstr "Додати нову теку…" msgid "Add podcast" msgstr "Додати подкаст" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Додати подкаст..." @@ -603,7 +603,7 @@ msgstr "Після " msgid "After copying..." msgstr "Після копіювання…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -616,7 +616,7 @@ msgstr "Альбом" msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідеальна гучність для всіх композицій)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -769,7 +769,7 @@ msgid "" "the songs of your library?" msgstr "Ви справді хочете записати статистичні дані до всіх файлів композицій у вашій бібліотеці?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -791,7 +791,7 @@ msgstr "Радіо виконавця" msgid "Artist tags" msgstr "Мітки виконавця" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Ініціали виконавця" @@ -841,7 +841,7 @@ msgstr "Середній розмір малюнку" msgid "BBC Podcasts" msgstr "Подкасти BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Бітів за хвилину" @@ -862,7 +862,7 @@ msgstr "Зображення тла" msgid "Background opacity" msgstr "Прозорість фону" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Створення резервної копії бази даних" @@ -903,7 +903,7 @@ msgstr "Біографія з %1" msgid "Bit rate" msgstr "Бітова швидкість" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1190,7 +1190,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Список, розділений комами, виду клас:рівень, рівень може бути від 0 до 3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" @@ -1202,7 +1202,7 @@ msgstr "Заповнити мітки автоматично" msgid "Complete tags automatically..." msgstr "Заповнити мітки автоматично…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1245,7 +1245,7 @@ msgstr "Налаштувати загальні правила пошуку…" msgid "Configure library..." msgstr "Налаштувати фонотеку" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Налаштувати подкасти..." @@ -1298,8 +1298,8 @@ msgstr "Конвертувати всю музику, яку не може ві msgid "Copy to clipboard" msgstr "Копіювати до буфера" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Копіювати до пристрою…" @@ -1497,7 +1497,7 @@ msgstr "Шлях DBus" msgid "Dance" msgstr "Танцювальна" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1553,7 +1553,7 @@ msgstr "Вилучити" msgid "Delete Grooveshark playlist" msgstr "Вилучити список відтворення Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Видалити завантажені дані" @@ -1670,7 +1670,7 @@ msgstr "Вимкнути створення смужок настрою" msgid "Disabled" msgstr "Вимкнено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1728,7 +1728,7 @@ msgstr "Подвійне клацання, щоб відкрити" msgid "Double clicking a song will..." msgstr "Подвійне клацання на пісні:" -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Завантажити %n випусків" @@ -1749,7 +1749,7 @@ msgstr "Завантажити членство" msgid "Download new episodes automatically" msgstr "Завантажувати нові епізоди автоматично" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Завантаження поставлено в чергу" @@ -1765,7 +1765,7 @@ msgstr "Завантажити цей альбом" msgid "Download this album..." msgstr "Завантажити цей альбом…" -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Завантажити цей випуск" @@ -1773,7 +1773,7 @@ msgstr "Завантажити цей випуск" msgid "Download..." msgstr "Звантажити…" -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Завантажую (%1%)..." @@ -2178,7 +2178,7 @@ msgstr "Не вдалося отримати обкладинку" msgid "File Format" msgstr "Формат файлів" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Розширення файлу" @@ -2328,7 +2328,7 @@ msgstr "Загальне" msgid "General settings" msgstr "Загальні налаштування" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2437,7 +2437,7 @@ msgstr "Групувати за жанром/альбомом" msgid "Group by Genre/Artist/Album" msgstr "Групувати за жанром/Виконавцем/альбомом" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групування" @@ -2604,7 +2604,7 @@ msgstr "Вставити…" msgid "Installed" msgstr "Встановлено" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Перевірка цілісності даних" @@ -2807,7 +2807,7 @@ msgstr "Типово, залишити порожнім. Наприклад: \" msgid "Left" msgstr "Ліворуч" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Тривалість" @@ -3020,11 +3020,11 @@ msgstr "Вручну" msgid "Manufacturer" msgstr "Виробник" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Позначити як прослуханий" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Позначити як новий" @@ -3461,7 +3461,7 @@ msgstr "Упорядкування файлів" msgid "Organise files..." msgstr "Упорядкування файлів…" -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Упорядкування файлів" @@ -3535,7 +3535,7 @@ msgstr "Призупинити відтворення" msgid "Paused" msgstr "Призупинено" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Виконавець" @@ -3630,7 +3630,7 @@ msgstr "Будь ласка, закрийте вікно програми для msgid "Plugin status:" msgstr "Статус модуля:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасти" @@ -4065,7 +4065,7 @@ msgstr "Безпечне вилучення пристрою після копі msgid "Sample rate" msgstr "Частота вибірки" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Частота вибірки" @@ -4889,7 +4889,7 @@ msgstr "Цей потік лише для платних передплатни msgid "This type of device is not supported: %1" msgstr "Цей тип пристрою не підтримується: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4950,7 +4950,7 @@ msgstr "Всього передано байтів" msgid "Total network requests made" msgstr "Всього зроблено запитів до мережі" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5038,7 +5038,7 @@ msgstr "Невідома помилка" msgid "Unset cover" msgstr "Вилучити обкладинку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Відписатися" @@ -5050,7 +5050,7 @@ msgstr "Найближчі виступи" msgid "Update Grooveshark playlist" msgstr "Оновити список відтворення на Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Оновити всі подкасти" @@ -5062,7 +5062,7 @@ msgstr "Оновити змінені теки у фонотеці" msgid "Update the library when Clementine starts" msgstr "Оновлювати фонотеку під час запуску Clementine" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Оновити цей подкаст" @@ -5349,7 +5349,7 @@ msgstr "Записати статичні дані щодо всіх компо msgid "Wrong username or password." msgstr "Помилкове ім’я користувача або пароль." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/uz.po b/src/translations/uz.po index 33c08351a..76fee5b8e 100644 --- a/src/translations/uz.po +++ b/src/translations/uz.po @@ -453,7 +453,7 @@ msgstr "Yangi jild qo'shish..." msgid "Add podcast" msgstr "Podcast qo'shish" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Podcast qo'shish..." @@ -602,7 +602,7 @@ msgstr "Keyin" msgid "After copying..." msgstr "Nusxa olgandan keyin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -615,7 +615,7 @@ msgstr "Albom" msgid "Album (ideal loudness for all tracks)" msgstr "Albom (hamma treklar uchun ideal ovoz balandligi)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -768,7 +768,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -790,7 +790,7 @@ msgstr "Artist radio" msgid "Artist tags" msgstr "Artist teglari" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Artistning ismi-sharifi" @@ -840,7 +840,7 @@ msgstr "O'rtacha rasm o'lchami" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +861,7 @@ msgstr "Orqa fon rasmi" msgid "Background opacity" msgstr "Orqa fon tiniqligi" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "" @@ -902,7 +902,7 @@ msgstr "%1'dan tarjimai holi" msgid "Bit rate" msgstr "Bitreyt" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1189,7 +1189,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Izoh" @@ -1201,7 +1201,7 @@ msgstr "Teglarni avtomatik ravishda yakunlash" msgid "Complete tags automatically..." msgstr "Teglarni avtomatik ravishda yakunlash..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1244,7 +1244,7 @@ msgstr "" msgid "Configure library..." msgstr "Kutubxonani sozlash..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Podkastlarni moslash..." @@ -1297,8 +1297,8 @@ msgstr "" msgid "Copy to clipboard" msgstr "Klipbordga nusxa olish" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Uskunaga nusxa olish..." @@ -1496,7 +1496,7 @@ msgstr "DBus yo'li" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1552,7 +1552,7 @@ msgstr "O'chirish" msgid "Delete Grooveshark playlist" msgstr "Grooveshark pleylistini o'chirish" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Yuklab olingan ma'lumotni o'chirish" @@ -1669,7 +1669,7 @@ msgstr "" msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1727,7 +1727,7 @@ msgstr "Ochish uchun ikki marta bosish" msgid "Double clicking a song will..." msgstr "Qo'shiqni ikki marta bosganda..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "%n epizodlarni yuklab olish" @@ -1748,7 +1748,7 @@ msgstr "A'zolikni yuklab olish" msgid "Download new episodes automatically" msgstr "Yangi epizodlarni avtomatik ravishda yuklab olish" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Yuklab olish navbatga qo'yildi" @@ -1764,7 +1764,7 @@ msgstr "Ushbu albomni yuklab olish" msgid "Download this album..." msgstr "Ushbu albomni yuklab olish..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Ushbu epizodni yuklab olish" @@ -1772,7 +1772,7 @@ msgstr "Ushbu epizodni yuklab olish" msgid "Download..." msgstr "Yuklab olish..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "(%1%) yuklab olinmoqda..." @@ -2177,7 +2177,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "" @@ -2327,7 +2327,7 @@ msgstr "Umumiy" msgid "General settings" msgstr "Umumiy moslamalar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2436,7 +2436,7 @@ msgstr "" msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2603,7 +2603,7 @@ msgstr "" msgid "Installed" msgstr "O'rnatilgan" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2806,7 +2806,7 @@ msgstr "" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Uzunligi" @@ -3019,11 +3019,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3460,7 +3460,7 @@ msgstr "Fayllarni boshqarish" msgid "Organise files..." msgstr "Fayllarni boshqarish..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Fayllarni tashkillashtirish" @@ -3534,7 +3534,7 @@ msgstr "" msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3629,7 +3629,7 @@ msgstr "Brauzerni yopib Clementinega qayting" msgid "Plugin status:" msgstr "Plagin holati:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podkastlar" @@ -4064,7 +4064,7 @@ msgstr "" msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "" @@ -4888,7 +4888,7 @@ msgstr "" msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4949,7 +4949,7 @@ msgstr "" msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5037,7 +5037,7 @@ msgstr "Noma'lum xato" msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5049,7 +5049,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "Grooveshark pleylistini yangilash" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "" @@ -5061,7 +5061,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "" @@ -5348,7 +5348,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/vi.po b/src/translations/vi.po index eddd565f7..0efdbeef3 100644 --- a/src/translations/vi.po +++ b/src/translations/vi.po @@ -456,7 +456,7 @@ msgstr "Thêm thư mục mới..." msgid "Add podcast" msgstr "Thêm podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "Thêm podcast..." @@ -605,7 +605,7 @@ msgstr "Sau " msgid "After copying..." msgstr "Sau khi sao chép..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -618,7 +618,7 @@ msgstr "Album" msgid "Album (ideal loudness for all tracks)" msgstr "Album (âm lượng lớn cho mọi bài hát)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -771,7 +771,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -793,7 +793,7 @@ msgstr "Kênh phát thanh nghệ sĩ" msgid "Artist tags" msgstr "Thẻ nghệ sĩ" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "Tên viết tắt của nghệ sĩ" @@ -843,7 +843,7 @@ msgstr "Kích thước ảnh trung bình" msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +864,7 @@ msgstr "Ảnh nền" msgid "Background opacity" msgstr "Độ mờ của khung nền" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "Đang sao lưu cơ sở dữ liệu" @@ -905,7 +905,7 @@ msgstr "Thông tin từ %1" msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1192,7 +1192,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "Dấu phẩy phân cách danh sách lớp:mức độ, mức độ từ 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Lời bình" @@ -1204,7 +1204,7 @@ msgstr "Điền thông tin bài hát" msgid "Complete tags automatically..." msgstr "Điền thông tin bài hát..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1247,7 +1247,7 @@ msgstr "Cấu hình tìm kiếm chung..." msgid "Configure library..." msgstr "Cấu hình thư viện..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "Cấu hình podcast..." @@ -1300,8 +1300,8 @@ msgstr "Chuyển đổi bất kì bản nhạc nào mà thiết bị không th msgid "Copy to clipboard" msgstr "Chép vào bộ đệm" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "Chép vào thiết bị..." @@ -1499,7 +1499,7 @@ msgstr "Đường dẫn Dbus" msgid "Dance" msgstr "Dance" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1555,7 +1555,7 @@ msgstr "Xóa" msgid "Delete Grooveshark playlist" msgstr "Xoá danh sách Grooveshark" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "Xóa dữ liệu đã tải về" @@ -1672,7 +1672,7 @@ msgstr "Tắt khởi tạo thanh trạng thái" msgid "Disabled" msgstr "Tắt" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Đĩa" @@ -1730,7 +1730,7 @@ msgstr "Nhấn đúp chuột để mở" msgid "Double clicking a song will..." msgstr "Nhấn đúp chuột vào một bài hát sẽ..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "Tải về %n tập" @@ -1751,7 +1751,7 @@ msgstr "Tải với tư cách thành viên" msgid "Download new episodes automatically" msgstr "Tự động tải về các tập mới" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "Đợi tải về" @@ -1767,7 +1767,7 @@ msgstr "Tải album này" msgid "Download this album..." msgstr "Tải album này..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "Tải tập này" @@ -1775,7 +1775,7 @@ msgstr "Tải tập này" msgid "Download..." msgstr "Tải về..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "Đang tải (%1%)..." @@ -2180,7 +2180,7 @@ msgstr "Lỗi khi tải ảnh bìa" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "Phần mở rộng tập tin" @@ -2330,7 +2330,7 @@ msgstr "Tổng quát" msgid "General settings" msgstr "Thiết lập chung" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2439,7 +2439,7 @@ msgstr "Nhóm theo Thể loại/Album" msgid "Group by Genre/Artist/Album" msgstr "Nhóm theo Thể loại/Nghệ sĩ/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Nhóm" @@ -2606,7 +2606,7 @@ msgstr "Nhập..." msgid "Installed" msgstr "Đã cài đặt" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "Kiểm tra tính toàn vẹn" @@ -2809,7 +2809,7 @@ msgstr "Để trống cho mặc định. Ví dụ: \"/dev/dsp\", \"front\", ..." msgid "Left" msgstr "Trái" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Thời lượng" @@ -3022,11 +3022,11 @@ msgstr "Thủ công" msgid "Manufacturer" msgstr "Nhà sản xuất" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "Đánh dấu là đã nghe" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "Đánh dấu mới" @@ -3463,7 +3463,7 @@ msgstr "Sao chép tập tin" msgid "Organise files..." msgstr "Sao chép tập tin..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "Tổ chức tập tin" @@ -3537,7 +3537,7 @@ msgstr "Tạm dừng phát" msgid "Paused" msgstr "Đã tạm dừng" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3632,7 +3632,7 @@ msgstr "Hãy đóng trình duyệt và trở lại Clementine." msgid "Plugin status:" msgstr "Trạng thái phần mở rộng:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" @@ -4067,7 +4067,7 @@ msgstr "Tháo gỡ thiết bị an toàn sau khi sao chép" msgid "Sample rate" msgstr "Tần số âm" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "Tần số âm thanh" @@ -4891,7 +4891,7 @@ msgstr "Luồng này chỉ dành cho người trả phí" msgid "This type of device is not supported: %1" msgstr "Loại thiết bị này không được hỗ trợ: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4952,7 +4952,7 @@ msgstr "Số byte đã truyền tải" msgid "Total network requests made" msgstr "Số lần gửi yêu cầu" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5040,7 +5040,7 @@ msgstr "Lỗi không xác định" msgid "Unset cover" msgstr "Bỏ thiết đặt ảnh bìa" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "Hủy đăng kí" @@ -5052,7 +5052,7 @@ msgstr "Các buổi hòa nhạc sắp diễn ra" msgid "Update Grooveshark playlist" msgstr "Cập nhật danh sách Grooveshark" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "Cập nhật tất cả podcast" @@ -5064,7 +5064,7 @@ msgstr "Cập nhập thư mục thư viện đã thay đổi" msgid "Update the library when Clementine starts" msgstr "Cập nhật thư viện khi Clementine khởi động" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "Cập nhật podcast này" @@ -5351,7 +5351,7 @@ msgstr "Ghi tất cả thống kê của các bài hát vào các tập tin" msgid "Wrong username or password." msgstr "Sai tên người dùng hoặc mật khẩu." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po index a8bf6d39f..51131eb5f 100644 --- a/src/translations/zh_CN.po +++ b/src/translations/zh_CN.po @@ -461,7 +461,7 @@ msgstr "添加新文件夹..." msgid "Add podcast" msgstr "添加播客" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "添加播客..." @@ -610,7 +610,7 @@ msgstr "之后 " msgid "After copying..." msgstr "复制后..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -623,7 +623,7 @@ msgstr "专辑" msgid "Album (ideal loudness for all tracks)" msgstr "专辑(所有曲目采用合适音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -776,7 +776,7 @@ msgid "" "the songs of your library?" msgstr "您确定要将媒体库中所有歌曲的统计信息写入相应的歌曲文件?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -798,7 +798,7 @@ msgstr "艺人电台" msgid "Artist tags" msgstr "艺人标签" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "艺术家名字的首字母" @@ -848,7 +848,7 @@ msgstr "图片平均大小" msgid "BBC Podcasts" msgstr "BBC 播客" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +869,7 @@ msgstr "背景图片" msgid "Background opacity" msgstr "背景透明度" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "备份数据库" @@ -910,7 +910,7 @@ msgstr "%1 上的个人档案" msgid "Bit rate" msgstr "位速率" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1197,7 +1197,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "class:level 列表用逗号分隔,level 范围 0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "备注" @@ -1209,7 +1209,7 @@ msgstr "自动补全标签" msgid "Complete tags automatically..." msgstr "自动补全标签..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1252,7 +1252,7 @@ msgstr "配置全局搜索…" msgid "Configure library..." msgstr "配置媒体库..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "正在设置播客..." @@ -1305,8 +1305,8 @@ msgstr "转换设备不能播放的音乐" msgid "Copy to clipboard" msgstr "复制到剪切板" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "复制到设备..." @@ -1504,7 +1504,7 @@ msgstr "DBus 路径" msgid "Dance" msgstr "舞曲" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1560,7 +1560,7 @@ msgstr "删除" msgid "Delete Grooveshark playlist" msgstr "删除 Grooveshark 播放列表" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "删除已下载的数据" @@ -1677,7 +1677,7 @@ msgstr "禁止生成心情指示条" msgid "Disabled" msgstr "禁用" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "盘片" @@ -1735,7 +1735,7 @@ msgstr "双击打开" msgid "Double clicking a song will..." msgstr "双击歌曲将..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "已经下载了 %n 个节目" @@ -1756,7 +1756,7 @@ msgstr "下载会员" msgid "Download new episodes automatically" msgstr "自动下载新的节目" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "下载队列" @@ -1772,7 +1772,7 @@ msgstr "下载此专辑" msgid "Download this album..." msgstr "下载此专辑..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "下载此节目" @@ -1780,7 +1780,7 @@ msgstr "下载此节目" msgid "Download..." msgstr "下载..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "下载中 (%1%)..." @@ -2185,7 +2185,7 @@ msgstr "获取封面出错" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "文件扩展名" @@ -2335,7 +2335,7 @@ msgstr "一般" msgid "General settings" msgstr "常规设置" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2444,7 +2444,7 @@ msgstr "按流派/专辑分组" msgid "Group by Genre/Artist/Album" msgstr "按流派/艺人/专辑分组" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "分组" @@ -2611,7 +2611,7 @@ msgstr "插入..." msgid "Installed" msgstr "已安装" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "完整性检验" @@ -2814,7 +2814,7 @@ msgstr "空白为默认,例如: \"/dev/dsp\",\"front\" 等。" msgid "Left" msgstr "左" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "长度" @@ -3027,11 +3027,11 @@ msgstr "手动" msgid "Manufacturer" msgstr "生产商" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "标记为已听" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "标记为新的" @@ -3468,7 +3468,7 @@ msgstr "组织文件" msgid "Organise files..." msgstr "组织文件..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "组织文件" @@ -3542,7 +3542,7 @@ msgstr "暂停播放" msgid "Paused" msgstr "已暂停" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "表演者" @@ -3637,7 +3637,7 @@ msgstr "请关闭你的浏览器,回到 Clementine。" msgid "Plugin status:" msgstr "插件状态:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "播客" @@ -4072,7 +4072,7 @@ msgstr "复制后安全移除设备" msgid "Sample rate" msgstr "采样率" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "采样率" @@ -4896,7 +4896,7 @@ msgstr "该流媒体只有付费用户才能收听" msgid "This type of device is not supported: %1" msgstr "这种设备不被支持: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4957,7 +4957,7 @@ msgstr "已传输字节总数" msgid "Total network requests made" msgstr "已发出网络连接总数" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5045,7 +5045,7 @@ msgstr "未知错误" msgid "Unset cover" msgstr "撤销封面" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "取消订阅" @@ -5057,7 +5057,7 @@ msgstr "近期音乐会" msgid "Update Grooveshark playlist" msgstr "更新 Grooveshark 播放列表" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "更新所有播客" @@ -5069,7 +5069,7 @@ msgstr "更新改变的媒体库文件夹" msgid "Update the library when Clementine starts" msgstr "Clementine 启动时更新媒体库" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "更新此播客" @@ -5356,7 +5356,7 @@ msgstr "所有统计信息写入至歌曲文件" msgid "Wrong username or password." msgstr "用户名密码错误。" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index d2d0a0c79..6180902e9 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -455,7 +455,7 @@ msgstr "新增資料夾..." msgid "Add podcast" msgstr "加入 Podcast" -#: podcasts/podcastservice.cpp:257 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 msgid "Add podcast..." msgstr "加入 Podcast..." @@ -604,7 +604,7 @@ msgstr "" msgid "After copying..." msgstr "複製後 ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:55 +#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 #: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 @@ -617,7 +617,7 @@ msgstr "專輯" msgid "Album (ideal loudness for all tracks)" msgstr "專輯 (為所有歌曲取得理想音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:58 +#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -770,7 +770,7 @@ msgid "" "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:56 +#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 #: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 @@ -792,7 +792,7 @@ msgstr "藝術家電台" msgid "Artist tags" msgstr "演出者標籤" -#: ui/organisedialog.cpp:57 +#: ui/organisedialog.cpp:58 msgid "Artist's initial" msgstr "演唱者簽署" @@ -842,7 +842,7 @@ msgstr "平均圖片大小" msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +863,7 @@ msgstr "背景圖片" msgid "Background opacity" msgstr "背景不透明" -#: core/database.cpp:648 +#: core/database.cpp:644 msgid "Backing up database" msgstr "備份資料庫" @@ -904,7 +904,7 @@ msgstr "%1的傳記" msgid "Bit rate" msgstr "位元率" -#: ui/organisedialog.cpp:69 ../bin/src/ui_groupbydialog.h:137 +#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 #: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 #: ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 @@ -1191,7 +1191,7 @@ msgid "Comma separated list of class:level, level is 0-3" msgstr "用逗號化分類別清單:等級為0-3" #: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:67 ../bin/src/ui_edittagdialog.h:694 +#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "評論" @@ -1203,7 +1203,7 @@ msgstr "標籤完全自動分類" msgid "Complete tags automatically..." msgstr "標籤完全自動分類..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" @@ -1246,7 +1246,7 @@ msgstr "" msgid "Configure library..." msgstr "設定音樂庫" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:288 +#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 msgid "Configure podcasts..." msgstr "設定 podcasts..." @@ -1299,8 +1299,8 @@ msgstr "轉換任何裝置無法播放的音樂" msgid "Copy to clipboard" msgstr "複製到剪貼簿" -#: library/libraryview.cpp:389 ui/mainwindow.cpp:517 -#: widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 +#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 msgid "Copy to device..." msgstr "複製到裝置..." @@ -1498,7 +1498,7 @@ msgstr "DBus 路徑" msgid "Dance" msgstr "舞蹈" -#: core/database.cpp:602 +#: core/database.cpp:598 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " @@ -1554,7 +1554,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "刪除 Grooveshark 播放清單" -#: podcasts/podcastservice.cpp:274 +#: podcasts/podcastservice.cpp:333 msgid "Delete downloaded data" msgstr "刪除下載的資料" @@ -1671,7 +1671,7 @@ msgstr "" msgid "Disabled" msgstr "停用" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "唱片" @@ -1729,7 +1729,7 @@ msgstr "雙擊打開" msgid "Double clicking a song will..." msgstr "雙擊一首歌曲將..." -#: podcasts/podcastservice.cpp:350 +#: podcasts/podcastservice.cpp:421 #, c-format, qt-plural-format msgid "Download %n episodes" msgstr "下載 %n 片斷內容" @@ -1750,7 +1750,7 @@ msgstr "下載會員" msgid "Download new episodes automatically" msgstr "自動下載新的片斷內容" -#: podcasts/podcastservice.cpp:187 +#: podcasts/podcastservice.cpp:246 msgid "Download queued" msgstr "" @@ -1766,7 +1766,7 @@ msgstr "下載此專輯" msgid "Download this album..." msgstr "下載此專輯..." -#: podcasts/podcastservice.cpp:352 +#: podcasts/podcastservice.cpp:423 msgid "Download this episode" msgstr "下載這個片斷內容" @@ -1774,7 +1774,7 @@ msgstr "下載這個片斷內容" msgid "Download..." msgstr "下載..." -#: podcasts/podcastservice.cpp:195 +#: podcasts/podcastservice.cpp:254 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -2179,7 +2179,7 @@ msgstr "取得封面出錯" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:72 msgid "File extension" msgstr "副檔名" @@ -2329,7 +2329,7 @@ msgstr "一般" msgid "General settings" msgstr "一般設定" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 @@ -2438,7 +2438,7 @@ msgstr "依風格/專輯歸類" msgid "Group by Genre/Artist/Album" msgstr "依風格/演出者/專輯歸類" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "插入..." msgid "Installed" msgstr "已安裝" -#: core/database.cpp:587 +#: core/database.cpp:583 msgid "Integrity check" msgstr "" @@ -2808,7 +2808,7 @@ msgstr "如果送出空白將使用預設值。\n範例: \"/dev/dsp\",\"front\" msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:68 +#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 #: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長度" @@ -3021,11 +3021,11 @@ msgstr "手動" msgid "Manufacturer" msgstr "製造商" -#: podcasts/podcastservice.cpp:284 +#: podcasts/podcastservice.cpp:346 msgid "Mark as listened" msgstr "標記為聽過的" -#: podcasts/podcastservice.cpp:282 +#: podcasts/podcastservice.cpp:344 msgid "Mark as new" msgstr "" @@ -3462,7 +3462,7 @@ msgstr "組織檔案" msgid "Organise files..." msgstr "組織檔案..." -#: core/organise.cpp:65 +#: core/organise.cpp:66 msgid "Organising files" msgstr "組織檔案中" @@ -3536,7 +3536,7 @@ msgstr "暫停播放" msgid "Paused" msgstr "已暫停" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3631,7 +3631,7 @@ msgstr "" msgid "Plugin status:" msgstr "插件狀態:" -#: podcasts/podcastservice.cpp:110 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" @@ -4066,7 +4066,7 @@ msgstr "在複製之後,安全的移除裝置" msgid "Sample rate" msgstr "取樣頻率" -#: ui/organisedialog.cpp:70 +#: ui/organisedialog.cpp:71 msgid "Samplerate" msgstr "取樣頻率" @@ -4890,7 +4890,7 @@ msgstr "此串流音樂是只針對付費用戶" msgid "This type of device is not supported: %1" msgstr "這種裝置不被支援: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:54 +#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 #: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 @@ -4951,7 +4951,7 @@ msgstr "總傳輸位元組" msgid "Total network requests made" msgstr "總發送網路請求" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" @@ -5039,7 +5039,7 @@ msgstr "不明的錯誤" msgid "Unset cover" msgstr "未設置封面" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:277 +#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 msgid "Unsubscribe" msgstr "" @@ -5051,7 +5051,7 @@ msgstr "" msgid "Update Grooveshark playlist" msgstr "更新 Grooveshark 播放清單" -#: podcasts/podcastservice.cpp:260 +#: podcasts/podcastservice.cpp:319 msgid "Update all podcasts" msgstr "更新全部的 podcasts" @@ -5063,7 +5063,7 @@ msgstr "更新改變的音樂庫資料夾" msgid "Update the library when Clementine starts" msgstr "當啟動 Clementine 時,更新音樂庫" -#: podcasts/podcastservice.cpp:268 +#: podcasts/podcastservice.cpp:327 msgid "Update this podcast" msgstr "更新這個 podcast" @@ -5350,7 +5350,7 @@ msgstr "" msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 From 4676e2839dad27dcb6165f28634d99a59bb83924 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Mon, 3 Feb 2014 13:22:02 +0100 Subject: [PATCH 057/362] Make the CD ripper clean up after itself. --- src/ui/ripcd.cpp | 13 +++++++++++-- src/ui/ripcd.h | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index e6d8c93f7..5d93a6320 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -22,6 +22,7 @@ #include "transcoder/transcoderoptionsdialog.h" #include "ui/iconloader.h" #include "core/logging.h" +#include "core/utilities.h" #include #include @@ -225,7 +226,7 @@ int RipCD::NumTracksToRip() { void RipCD::ThreadClickedRipButton() { - QString source_directory = QDir::tempPath() + "/"; + temporary_directory_ = Utilities::MakeTempDir() + "/"; finished_success_ = 0; finished_failed_ = 0; @@ -241,7 +242,7 @@ void RipCD::ThreadClickedRipButton() { } tracks_to_rip_.append(i); - QString filename = source_directory + QString filename = temporary_directory_ + ParseFileFormatString(ui_->format_filename->text(), i) + ".wav"; QFile *destination_file = new QFile(filename); destination_file->open(QIODevice::WriteOnly); @@ -336,6 +337,8 @@ void RipCD::JobComplete(const QString& filename, bool success) { } void RipCD::AllJobsComplete() { + RemoveTemporaryDirectory(); + // having a little trouble on wav files, works fine on ogg-vorbis qSort(generated_files_); @@ -411,6 +414,7 @@ void RipCD::AddDestinationDirectory(QString dir) { void RipCD::Cancel() { transcoder_->Cancel(); + RemoveTemporaryDirectory(); SetWorking(false); } @@ -448,3 +452,8 @@ void RipCD::InvertSelection() { } } } + +void RipCD::RemoveTemporaryDirectory() { + Utilities::RemoveRecursive(temporary_directory_); + temporary_directory_.clear(); +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index dd98d479b..6f134639f 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -57,6 +57,7 @@ class RipCD: public QDialog { QPushButton* cancel_button_; QPushButton* close_button_; QPushButton* rip_button_; + QString temporary_directory_; void WriteWAVHeader(QFile *stream, int32_t i_bytecount); int NumTracksToRip(); @@ -67,6 +68,7 @@ class RipCD: public QDialog { QString ParseFileFormatString(const QString& file_format, int track_no) const; void SetWorking(bool working); void AddDestinationDirectory(QString dir); + void RemoveTemporaryDirectory(); signals: void RippingComplete(); From 3bf44c78d42d4da05a376c5c431ca12f760a2b31 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Mon, 3 Feb 2014 15:14:08 +0100 Subject: [PATCH 058/362] Only remove the temporary directory if it has a non-empty name. --- src/ui/ripcd.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 5d93a6320..60f0f665e 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -454,6 +454,7 @@ void RipCD::InvertSelection() { } void RipCD::RemoveTemporaryDirectory() { - Utilities::RemoveRecursive(temporary_directory_); + if (!temporary_directory_.isEmpty()) + Utilities::RemoveRecursive(temporary_directory_); temporary_directory_.clear(); } From bdced17a577b11f4dbcd937397864afb416f31bf Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 2 Feb 2014 09:21:31 +0000 Subject: [PATCH 059/362] Namespace clementine's 3rdparty implementation of sha2 to prevent its symbols conflicting with the system's openssl symbols with the same names. This was causing SSL connections to fail in weird ways on Debian. Fixes #4130. (cherry picked from commit 96075faf88bf65ed7b94985f98228a2d0974a437) --- 3rdparty/sha2/CMakeLists.txt | 2 +- 3rdparty/sha2/{sha2.c => sha2.cpp} | 3 + 3rdparty/sha2/sha2.h | 121 ++++------------------------- src/core/utilities.cpp | 14 ++-- 4 files changed, 26 insertions(+), 114 deletions(-) rename 3rdparty/sha2/{sha2.c => sha2.cpp} (99%) diff --git a/3rdparty/sha2/CMakeLists.txt b/3rdparty/sha2/CMakeLists.txt index 9befb1ecd..3a5da0a2f 100644 --- a/3rdparty/sha2/CMakeLists.txt +++ b/3rdparty/sha2/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 2.6) -add_library(sha2 STATIC sha2.c) +add_library(sha2 STATIC sha2.cpp) diff --git a/3rdparty/sha2/sha2.c b/3rdparty/sha2/sha2.cpp similarity index 99% rename from 3rdparty/sha2/sha2.c rename to 3rdparty/sha2/sha2.cpp index 7ad5ea666..36be426a9 100644 --- a/3rdparty/sha2/sha2.c +++ b/3rdparty/sha2/sha2.cpp @@ -92,6 +92,8 @@ #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN #endif +namespace clementine_sha2 { + /* * Define the followingsha2_* types to types of the correct length on * the native archtecture. Most BSD systems and Linux define u_intXX_t @@ -1066,3 +1068,4 @@ char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_S return SHA384_End(&context, digest); } +} // namespace clementine_sha2 diff --git a/3rdparty/sha2/sha2.h b/3rdparty/sha2/sha2.h index e8413e549..6f2335511 100644 --- a/3rdparty/sha2/sha2.h +++ b/3rdparty/sha2/sha2.h @@ -32,13 +32,8 @@ * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ */ -#ifndef __SHA2_H__ -#define __SHA2_H__ - -#ifdef __cplusplus -extern "C" { -#endif - +#ifndef __CLEMENTINE_SHA2_H__ +#define __CLEMENTINE_SHA2_H__ /* * Import u_intXX_t size_t type definitions from system headers. You @@ -47,23 +42,18 @@ extern "C" { */ #include -#ifdef SHA2_USE_INTTYPES_H - -#include - -#endif /* SHA2_USE_INTTYPES_H */ - +namespace clementine_sha2 { /*** SHA-256/384/512 Various Length Definitions ***********************/ -#define SHA256_BLOCK_LENGTH 64 -#define SHA256_DIGEST_LENGTH 32 -#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) -#define SHA384_BLOCK_LENGTH 128 -#define SHA384_DIGEST_LENGTH 48 -#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) -#define SHA512_BLOCK_LENGTH 128 -#define SHA512_DIGEST_LENGTH 64 -#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) +static const int SHA256_BLOCK_LENGTH = 64; +static const int SHA256_DIGEST_LENGTH = 32; +static const int SHA256_DIGEST_STRING_LENGTH = (SHA256_DIGEST_LENGTH * 2 + 1); +static const int SHA384_BLOCK_LENGTH = 128; +static const int SHA384_DIGEST_LENGTH = 48; +static const int SHA384_DIGEST_STRING_LENGTH = (SHA384_DIGEST_LENGTH * 2 + 1); +static const int SHA512_BLOCK_LENGTH = 128; +static const int SHA512_DIGEST_LENGTH = 64; +static const int SHA512_DIGEST_STRING_LENGTH = (SHA512_DIGEST_LENGTH * 2 + 1); /*** SHA-256/384/512 Context Structures *******************************/ @@ -76,36 +66,6 @@ typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ #endif -/* - * Most BSD systems already define u_intXX_t types, as does Linux. - * Some systems, however, like Compaq's Tru64 Unix instead can use - * uintXX_t types defined by very recent ANSI C standards and included - * in the file: - * - * #include - * - * If you choose to use then please define: - * - * #define SHA2_USE_INTTYPES_H - * - * Or on the command line during compile: - * - * cc -DSHA2_USE_INTTYPES_H ... - */ -#ifdef SHA2_USE_INTTYPES_H - -typedef struct _SHA256_CTX { - uint32_t state[8]; - uint64_t bitcount; - uint8_t buffer[SHA256_BLOCK_LENGTH]; -} SHA256_CTX; -typedef struct _SHA512_CTX { - uint64_t state[8]; - uint64_t bitcount[2]; - uint8_t buffer[SHA512_BLOCK_LENGTH]; -} SHA512_CTX; - -#else /* SHA2_USE_INTTYPES_H */ typedef struct _SHA256_CTX { u_int32_t state[8]; @@ -118,35 +78,9 @@ typedef struct _SHA512_CTX { u_int8_t buffer[SHA512_BLOCK_LENGTH]; } SHA512_CTX; -#endif /* SHA2_USE_INTTYPES_H */ - typedef SHA512_CTX SHA384_CTX; -/*** SHA-256/384/512 Function Prototypes ******************************/ -#ifndef NOPROTO -#ifdef SHA2_USE_INTTYPES_H - -void SHA256_Init(SHA256_CTX *); -void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); -void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); -char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); -char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); - -void SHA384_Init(SHA384_CTX*); -void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); -void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); -char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); -char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); - -void SHA512_Init(SHA512_CTX*); -void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); -void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); -char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); -char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); - -#else /* SHA2_USE_INTTYPES_H */ - void SHA256_Init(SHA256_CTX *); void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); @@ -165,33 +99,6 @@ void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); -#endif /* SHA2_USE_INTTYPES_H */ - -#else /* NOPROTO */ - -void SHA256_Init(); -void SHA256_Update(); -void SHA256_Final(); -char* SHA256_End(); -char* SHA256_Data(); - -void SHA384_Init(); -void SHA384_Update(); -void SHA384_Final(); -char* SHA384_End(); -char* SHA384_Data(); - -void SHA512_Init(); -void SHA512_Update(); -void SHA512_Final(); -char* SHA512_End(); -char* SHA512_Data(); - -#endif /* NOPROTO */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SHA2_H__ */ +} // namespace clementine_sha2 +#endif /* __CLEMENTINE_SHA2_H__ */ diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 3fdc6be48..5d60baeb7 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -437,13 +437,15 @@ QByteArray HmacSha1(const QByteArray& key, const QByteArray& data) { } QByteArray Sha256(const QByteArray& data) { - SHA256_CTX context; - SHA256_Init(&context); - SHA256_Update(&context, reinterpret_cast(data.constData()), - data.length()); + clementine_sha2::SHA256_CTX context; + clementine_sha2::SHA256_Init(&context); + clementine_sha2::SHA256_Update( + &context, reinterpret_cast(data.constData()), + data.length()); - QByteArray ret(SHA256_DIGEST_LENGTH, '\0'); - SHA256_Final(reinterpret_cast(ret.data()), &context); + QByteArray ret(clementine_sha2::SHA256_DIGEST_LENGTH, '\0'); + clementine_sha2::SHA256_Final( + reinterpret_cast(ret.data()), &context); return ret; } From 033d266fe9ce602347124ef4c47e162d7cf42d97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Mon, 3 Feb 2014 21:54:02 +0100 Subject: [PATCH 060/362] Add contexts to some translation strings --- src/globalsearch/searchproviderstatuswidget.cpp | 2 +- src/playlist/playlistlistcontainer.cpp | 2 +- src/playlist/playlistmanager.cpp | 2 +- src/ui/behavioursettingspage.ui | 2 +- src/ui/edittagdialog.ui | 2 +- src/ui/notificationssettingspage.ui | 2 +- src/ui/organisedialog.cpp | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/globalsearch/searchproviderstatuswidget.cpp b/src/globalsearch/searchproviderstatuswidget.cpp index 59e921aea..d4f2d069c 100644 --- a/src/globalsearch/searchproviderstatuswidget.cpp +++ b/src/globalsearch/searchproviderstatuswidget.cpp @@ -44,7 +44,7 @@ SearchProviderStatusWidget::SearchProviderStatusWidget( if (enabled && logged_in) { ui_->disabled_group->hide(); } else { - const QString disabled_text = tr("Disabled"); + const QString disabled_text = tr("Disabled", "Refers to search provider's status."); const QString not_logged_in_text = tr("Not logged in"); const int disabled_width = fontMetrics().width(" ") + qMax( fontMetrics().width(disabled_text), diff --git a/src/playlist/playlistlistcontainer.cpp b/src/playlist/playlistlistcontainer.cpp index 2f42c69f2..267afdec0 100644 --- a/src/playlist/playlistlistcontainer.cpp +++ b/src/playlist/playlistlistcontainer.cpp @@ -71,7 +71,7 @@ PlaylistListContainer::PlaylistListContainer(QWidget* parent) action_new_folder_->setText(tr("New folder")); action_remove_->setText(tr("Delete")); - action_save_playlist_->setText(tr("Save playlist")); + action_save_playlist_->setText(tr("Save playlist", "Save playlist menu action.")); ui_->new_folder->setDefaultAction(action_new_folder_); ui_->remove->setDefaultAction(action_remove_); diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 454b35add..1dcb35983 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -237,7 +237,7 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { QString default_filter = parser()->default_filter(); filename = QFileDialog::getSaveFileName( - NULL, tr("Save playlist"), filename, + NULL, tr("Save playlist", "Title of the playlist save dialog."), filename, parser()->filters(), &default_filter); if (filename.isNull()) diff --git a/src/ui/behavioursettingspage.ui b/src/ui/behavioursettingspage.ui index 5505b5449..14a9804ee 100644 --- a/src/ui/behavioursettingspage.ui +++ b/src/ui/behavioursettingspage.ui @@ -190,7 +190,7 @@
- Open in new playlist + Open in new playlist diff --git a/src/ui/edittagdialog.ui b/src/ui/edittagdialog.ui index 5b5d8ee9a..dc8e05bf2 100644 --- a/src/ui/edittagdialog.ui +++ b/src/ui/edittagdialog.ui @@ -336,7 +336,7 @@ - Last played + Last played true diff --git a/src/ui/notificationssettingspage.ui b/src/ui/notificationssettingspage.ui index 7cc4e52df..d61ff0d47 100644 --- a/src/ui/notificationssettingspage.ui +++ b/src/ui/notificationssettingspage.ui @@ -30,7 +30,7 @@ - Disabled + Disabled diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 27eaf4e7d..45bea8f6e 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -67,7 +67,7 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) tags[tr("Genre")] = "genre"; tags[tr("Comment")] = "comment"; tags[tr("Length")] = "length"; - tags[tr("Bitrate")] = "bitrate"; + tags[tr("Bitrate", "Refers to bitrate in file organise dialog.")] = "bitrate"; tags[tr("Samplerate")] = "samplerate"; tags[tr("File extension")] = "extension"; From 4251fd43315c176223764ed568e0a77cffae7571 Mon Sep 17 00:00:00 2001 From: asiviero Date: Mon, 3 Feb 2014 22:40:56 -0200 Subject: [PATCH 061/362] Checks for CD before opening window (addresses #4165) --- src/ui/mainwindow.cpp | 3 ++- src/ui/ripcd.cpp | 45 +++++++++++++++++++++---------------------- src/ui/ripcd.h | 3 ++- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 327471255..142fb1e3d 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1684,7 +1684,8 @@ void MainWindow::OpenRipCD() { if (!rip_cd_) { rip_cd_.reset(new RipCD); } - if(rip_cd_->CDIOIsValid()) { + if(rip_cd_->CheckCDIOIsValid()) { + rip_cd_->BuildTrackListTable(); rip_cd_->show(); } else { QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive")); diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 60f0f665e..ff9813758 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -117,28 +117,6 @@ RipCD::RipCD(QWidget* parent) : setWindowTitle(tr("Rip CD")); AddDestinationDirectory(QDir::homePath()); - cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); - if(!cdio_) { - qLog(Error) << "Failed to read CD drive"; - return; - } else { - i_tracks_ = cdio_get_num_tracks(cdio_); - ui_->tableWidget->setRowCount(i_tracks_); - for (int i = 1; i <= i_tracks_; i++) { - QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); - checkbox_i->setCheckState(Qt::Checked); - checkboxes_.append(checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, - new QLabel(QString::number(i))); - QString track_title = QString("Track %1").arg(i); - QLineEdit *line_edit_track_title_i = new QLineEdit(track_title, - ui_->tableWidget); - track_names_.append(line_edit_track_title_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, - line_edit_track_title_i); - } - } // Get presets QList presets = Transcoder::GetAllPresets(); qSort(presets.begin(), presets.end(), ComparePresetsByName); @@ -418,7 +396,8 @@ void RipCD::Cancel() { SetWorking(false); } -bool RipCD::CDIOIsValid() const { +bool RipCD::CheckCDIOIsValid() { + cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); return (cdio_); } @@ -458,3 +437,23 @@ void RipCD::RemoveTemporaryDirectory() { Utilities::RemoveRecursive(temporary_directory_); temporary_directory_.clear(); } + +void RipCD::BuildTrackListTable() { + ui_->tableWidget->clear(); + i_tracks_ = cdio_get_num_tracks(cdio_); + ui_->tableWidget->setRowCount(i_tracks_); + for (int i = 1; i <= i_tracks_; i++) { + QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); + checkbox_i->setCheckState(Qt::Checked); + checkboxes_.append(checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, + new QLabel(QString::number(i))); + QString track_title = QString("Track %1").arg(i); + QLineEdit *line_edit_track_title_i = new QLineEdit(track_title, + ui_->tableWidget); + track_names_.append(line_edit_track_title_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, + line_edit_track_title_i); + } +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 6f134639f..e46e1aaa8 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -36,7 +36,8 @@ class RipCD: public QDialog { public: explicit RipCD(QWidget* parent = 0); ~RipCD(); - bool CDIOIsValid() const; + bool CheckCDIOIsValid(); + void BuildTrackListTable(); private: static const char* kSettingsGroup; From d88c1fad04ef1021f9ee38074e7cae2d0c309891 Mon Sep 17 00:00:00 2001 From: asiviero Date: Mon, 3 Feb 2014 23:51:25 -0200 Subject: [PATCH 062/362] Reset progress bar after cancel is pressed --- src/ui/ripcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index ff9813758..db5849e93 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -213,7 +213,6 @@ void RipCD::ThreadClickedRipButton() { // Set up progress bar emit(SignalUpdateProgress()); - for (int i = 1; i <= i_tracks_; i++) { if (!checkboxes_.value(i - 1)->isChecked()) { continue; @@ -391,6 +390,7 @@ void RipCD::AddDestinationDirectory(QString dir) { } void RipCD::Cancel() { + ui_->progress_bar->setValue(0); transcoder_->Cancel(); RemoveTemporaryDirectory(); SetWorking(false); From 29da0351398765fd71aa3cc8dd409a06415a30a0 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 4 Feb 2014 11:48:07 +0100 Subject: [PATCH 063/362] Set version number for 1.2.2 --- cmake/Version.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Version.cmake b/cmake/Version.cmake index 69347e238..0fbf47e49 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -3,11 +3,11 @@ # Version numbers. set(CLEMENTINE_VERSION_MAJOR 1) set(CLEMENTINE_VERSION_MINOR 2) -set(CLEMENTINE_VERSION_PATCH 1) +set(CLEMENTINE_VERSION_PATCH 2) # set(CLEMENTINE_VERSION_PRERELEASE rc4) # This should be set to OFF in a release branch -# set(INCLUDE_GIT_REVISION ON) +set(INCLUDE_GIT_REVISION OFF) # Rules about version number comparison on different platforms: # Debian: From b40d834c8c81178421ae3e1253b032e124fddc51 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 27 Jan 2014 15:38:37 +0100 Subject: [PATCH 064/362] Rename SkyDrive to OneDrive. http://blog.onedrive.com/onedrive-for-everything-your-life/ (cherry picked from commit 977a6769b27895d4b296aa79151624fa7b863c80) --- src/internet/skydriveservice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index 8b9fd29a9..55d067865 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -13,7 +13,7 @@ using boost::scoped_ptr; namespace { -static const char* kServiceName = "Skydrive"; +static const char* kServiceName = "OneDrive"; static const char* kServiceId = "skydrive"; static const char* kSettingsGroup = "Skydrive"; From ce0eb1b50fb72a1ec287f5f483aff2cda00c607f Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 28 Oct 2013 17:39:18 +0100 Subject: [PATCH 065/362] D'oh (cherry picked from commit 981bbdce72debfe986587f6bf1044a764ac43e1d) --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 40b825ed2..8c0e9542d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -239,7 +239,7 @@ int main(int argc, char *argv[]) { // This must go before QApplication initialisation. mac::MacMain(); - if (!QSysInfo::MacintoshVersion > QSysInfo::MV_10_8) { + if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_8) { // Work around 10.9 issue. // https://bugreports.qt-project.org/browse/QTBUG-32789 QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande"); From 7983343e50f17a95e69712ce920e3d10cd548917 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 19 Dec 2013 14:31:23 +0100 Subject: [PATCH 066/362] Update Skydrive client id & secret for redirect url change. Fixes #4013 (cherry picked from commit f583c40ffa3498dc36bf750012b6ae2aa310d6f4) --- src/internet/skydriveservice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index 55d067865..0de877394 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -17,8 +17,8 @@ static const char* kServiceName = "OneDrive"; static const char* kServiceId = "skydrive"; static const char* kSettingsGroup = "Skydrive"; -static const char* kClientId = "00000000400E7C78"; -static const char* kClientSecret = "B0KLZjEgC5SpW0KknrsBFwlaKmGThaAk"; +static const char* kClientId = "0000000040111F16"; +static const char* kClientSecret = "w2ClguSX0jG56cBl1CeUniypTBRjXt2Z"; static const char* kOAuthEndpoint = "https://login.live.com/oauth20_authorize.srf"; From d88d0d420e041a5a520902493e60b443cbec451b Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 22 Dec 2013 15:16:42 +0100 Subject: [PATCH 067/362] Androids like kittens, too (cherry picked from commit 00fd9b4724c0a35937a89b4c14d8c1fbeb549615) --- src/networkremote/networkremote.cpp | 10 ++++++ src/networkremote/networkremote.h | 2 ++ src/networkremote/outgoingdatacreator.cpp | 44 ++++++++++++++++------- src/networkremote/outgoingdatacreator.h | 4 +++ src/ui/mainwindow.cpp | 2 ++ src/widgets/nowplayingwidget.cpp | 2 ++ 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/networkremote/networkremote.cpp b/src/networkremote/networkremote.cpp index 4728ff3f1..38aa955fd 100644 --- a/src/networkremote/networkremote.cpp +++ b/src/networkremote/networkremote.cpp @@ -217,3 +217,13 @@ void NetworkRemote::CreateRemoteClient(QTcpSocket* client_socket) { incoming_data_parser_.get(), SLOT(Parse(pb::remote::Message))); } } + +void NetworkRemote::EnableKittens(bool aww) { + if (outgoing_data_creator_.get()) + outgoing_data_creator_->EnableKittens(aww); +} + +void NetworkRemote::SendKitten(quint64 id, const QImage &kitten) { + if (outgoing_data_creator_.get()) + outgoing_data_creator_->SendKitten(kitten); +} diff --git a/src/networkremote/networkremote.h b/src/networkremote/networkremote.h index 60b85e8d1..5de164eb3 100644 --- a/src/networkremote/networkremote.h +++ b/src/networkremote/networkremote.h @@ -26,6 +26,8 @@ public slots: void StartServer(); void ReloadSettings(); void AcceptConnection(); + void EnableKittens(bool aww); + void SendKitten(quint64 id, const QImage& kitten); private: boost::scoped_ptr server_; diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index ce28beb4a..0c1fab7e6 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -33,6 +33,7 @@ const quint32 OutgoingDataCreator::kFileChunkSize = 100000; // in Bytes OutgoingDataCreator::OutgoingDataCreator(Application* app) : app_(app), + aww_(false), ultimate_reader_(new UltimateLyricsReader(this)), fetcher_(new SongInfoFetcher(this)) { @@ -314,21 +315,26 @@ void OutgoingDataCreator::SendFirstData(bool send_playlist_songs) { void OutgoingDataCreator::CurrentSongChanged(const Song& song, const QString& uri, const QImage& img) { current_song_ = song; current_uri_ = uri; - current_image_ = img; - if (!clients_->empty()) { - // Create the message - pb::remote::Message msg; - msg.set_type(pb::remote::CURRENT_METAINFO); - - // If there is no song, create an empty node, otherwise fill it with data - int i = app_->playlist_manager()->active()->current_row(); - CreateSong( - current_song_, img, i, - msg.mutable_response_current_metadata()->mutable_song_metadata()); - - SendDataToClients(&msg); + if (!aww_) { + current_image_ = img; } + + SendSongMetadata(); +} + +void OutgoingDataCreator::SendSongMetadata() { + // Create the message + pb::remote::Message msg; + msg.set_type(pb::remote::CURRENT_METAINFO); + + // If there is no song, create an empty node, otherwise fill it with data + int i = app_->playlist_manager()->active()->current_row(); + CreateSong( + current_song_, current_image_, i, + msg.mutable_response_current_metadata()->mutable_song_metadata()); + + SendDataToClients(&msg); } void OutgoingDataCreator::CreateSong( @@ -774,3 +780,15 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { // Remove temporary file file.remove(); } + +void OutgoingDataCreator::EnableKittens(bool aww) { + aww_ = aww; +} + +void OutgoingDataCreator::SendKitten(const QImage& kitten) { + if (aww_) { + current_image_ = kitten; + SendSongMetadata(); + } +} + diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index 270835a0e..264da2add 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -62,6 +62,7 @@ public slots: void PlaylistRenamed(int id, const QString& new_name); void ActiveChanged(Playlist*); void CurrentSongChanged(const Song& song, const QString& uri, const QImage& img); + void SendSongMetadata(); void StateChanged(Engine::State); void SendKeepAlive(); void SendRepeatMode(PlaylistSequence::RepeatMode mode); @@ -73,6 +74,8 @@ public slots: void SendSongs(const pb::remote::RequestDownloadSongs& request, RemoteClient* client); void ResponseSongOffer(RemoteClient* client, bool accepted); void SendLibrary(RemoteClient* client); + void EnableKittens(bool aww); + void SendKitten(const QImage& kitten); private: Application* app_; @@ -86,6 +89,7 @@ private: int keep_alive_timeout_; QMap > download_queue_; int last_track_position_; + bool aww_; boost::scoped_ptr ultimate_reader_; ProviderList provider_list_; diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index b4edfb485..1aa3bc0a9 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -58,6 +58,7 @@ #include "library/libraryfilterwidget.h" #include "library/libraryviewcontainer.h" #include "musicbrainz/tagfetcher.h" +#include "networkremote/networkremote.h" #include "playlist/playlistbackend.h" #include "playlist/playlist.h" #include "playlist/playlistlistcontainer.h" @@ -670,6 +671,7 @@ MainWindow::MainWindow(Application* app, SLOT(NowPlayingWidgetPositionChanged(bool))); connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(AllHail(bool))); connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(EnableKittens(bool))); + connect(ui_->action_kittens, SIGNAL(toggled(bool)), app_->network_remote(), SLOT(EnableKittens(bool))); // Hide the console //connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole())); NowPlayingWidgetPositionChanged(ui_->now_playing->show_above_status_bar()); diff --git a/src/widgets/nowplayingwidget.cpp b/src/widgets/nowplayingwidget.cpp index 5b06a8563..29d81eb6f 100644 --- a/src/widgets/nowplayingwidget.cpp +++ b/src/widgets/nowplayingwidget.cpp @@ -23,6 +23,7 @@ #include "covers/currentartloader.h" #include "covers/kittenloader.h" #include "library/librarybackend.h" +#include "networkremote/networkremote.h" #include "ui/albumcoverchoicecontroller.h" #include "ui/iconloader.h" @@ -423,6 +424,7 @@ void NowPlayingWidget::EnableKittens(bool aww) { kittens_ = new KittenLoader(this); app_->MoveToNewThread(kittens_); connect(kittens_, SIGNAL(ImageLoaded(quint64,QImage)), SLOT(KittenLoaded(quint64,QImage))); + connect(kittens_, SIGNAL(ImageLoaded(quint64,QImage)), app_->network_remote(), SLOT(SendKitten(quint64,QImage))); } aww_ = aww; From 9acd2e59c2a3c4c6daab6e65fe0cbedfa0fdae9a Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 30 Jan 2014 11:50:52 +0100 Subject: [PATCH 068/362] Do not log IP address from network remote settings. (cherry picked from commit 0a778e2901f933836dbf9b9d3ea75879de9826fa) --- src/ui/networkremotesettingspage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/networkremotesettingspage.cpp b/src/ui/networkremotesettingspage.cpp index f08729ffb..09221becf 100644 --- a/src/ui/networkremotesettingspage.cpp +++ b/src/ui/networkremotesettingspage.cpp @@ -79,7 +79,6 @@ void NetworkRemoteSettingsPage::Load() { // TODO: Add ipv6 support to tinysvcmdns. if (address.protocol() == QAbstractSocket::IPv4Protocol && !address.isInSubnet(QHostAddress::parseSubnet("127.0.0.1/8"))) { - qLog(Debug) << "IP:" << address.toString(); if (!ip_addresses.isEmpty()) { ip_addresses.append(", "); } From 73ac5bc1ee5d205db575ae8f05b3cdf00b2dda25 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 28 Jan 2014 14:54:52 +0100 Subject: [PATCH 069/362] Print out the Clementine display version in the cmake summary. (cherry picked from commit 9858a9d5068216bc8a42f4f69a92cb44c3bd0c15) --- cmake/Summary.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 55e511e98..4202741aa 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -25,6 +25,8 @@ endmacro(summary_show_part) macro(summary_show) list(SORT summary_willbuild) list(SORT summary_willnotbuild) + message("") + message("Building Clementine version: ${CLEMENTINE_VERSION_DISPLAY}") summary_show_part(summary_willbuild "The following components will be built:") summary_show_part(summary_willnotbuild "The following components WILL NOT be built:") message("") From 6a7a3a7f5bc67fae4e801794fc7c2a3521c1f236 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Tue, 4 Feb 2014 22:14:13 +1100 Subject: [PATCH 070/362] Update the changelog for 1.2.2 --- Changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Changelog b/Changelog index 9b52e8999..d53d8d933 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,18 @@ +Version 1.2.2: + Major features: + * (Android Remote) Add kittens support. + + Bugfixes: + * Rename SkyDrive to OneDrive. + * Don't include the user's IP address in the log (from the network remote + settings dialog). + * (Debian) Fix a bug with HTTPS logins to all cloud storage providers. + * (Mac OS X) Fix a bug in the workaround for a weird font issue on 10.9. + * (Android Remote) Don't advertise songs that aren't available. + * (Android Remote) Fix playing songs with special characters in filenames. + + + Version 1.2.1: Bugfixes: * Fix library download in the network remote. From bf887305103421c5e508ec400211daf5b693c40d Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 27 Jan 2014 16:32:02 +0100 Subject: [PATCH 071/362] Try building on OS X with libc++ (cherry picked from commit 327181ef18fee22e2c05f2e8303efeffdc63cae0) (cherry picked from commit 3e46b6134eb9788b9431f4bb5e4cff570bb79a6c) --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47f1693d8..2122d7413 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,10 @@ if (CMAKE_CXX_COMPILER MATCHES ".*clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized") endif () +if (APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") +endif () + set(CMAKE_REQUIRED_FLAGS "-std=c++0x") check_cxx_source_compiles( "#include From b87cd1641b07323dd7b4cdd69d4e309e96e2f297 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Mon, 28 Oct 2013 17:30:52 +0100 Subject: [PATCH 072/362] Compile fixes for 10.9 (cherry picked from commit b17b075361ceb9cf31da36db32731881f9fb186e) --- 3rdparty/chromaprint/src/utils.h | 1 + ext/libclementine-common/core/closure.cpp | 4 ++-- ext/libclementine-common/core/closure.h | 10 +++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/3rdparty/chromaprint/src/utils.h b/3rdparty/chromaprint/src/utils.h index 47c6b9827..76fb2402b 100644 --- a/3rdparty/chromaprint/src/utils.h +++ b/3rdparty/chromaprint/src/utils.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include diff --git a/ext/libclementine-common/core/closure.cpp b/ext/libclementine-common/core/closure.cpp index ccca3bae1..e2c27c13f 100644 --- a/ext/libclementine-common/core/closure.cpp +++ b/ext/libclementine-common/core/closure.cpp @@ -33,7 +33,7 @@ ClosureBase::~ClosureBase() { CallbackClosure::CallbackClosure( QObject* sender, const char* signal, - std::tr1::function callback) + std::function callback) : ClosureBase(new ObjectHelper(sender, signal, this)), callback_(callback) { } @@ -67,7 +67,7 @@ void Unpack(QList*) {} _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - std::tr1::function callback) { + std::function callback) { return new _detail::CallbackClosure( sender, signal, callback); } diff --git a/ext/libclementine-common/core/closure.h b/ext/libclementine-common/core/closure.h index 63ed9936b..2244a4a69 100644 --- a/ext/libclementine-common/core/closure.h +++ b/ext/libclementine-common/core/closure.h @@ -18,7 +18,7 @@ #ifndef CLOSURE_H #define CLOSURE_H -#include +#include #include #include @@ -158,12 +158,12 @@ class CallbackClosure : public ClosureBase { CallbackClosure( QObject* sender, const char* signal, - std::tr1::function callback); + std::function callback); virtual void Invoke(); private: - std::tr1::function callback_; + std::function callback_; }; } // namespace _detail @@ -194,13 +194,13 @@ _detail::ClosureBase* NewClosure( _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - std::tr1::function callback); + std::function callback); template _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - std::tr1::function callback, + std::function callback, const Args&... args) { return NewClosure(sender, signal, boost::bind(callback, args...)); } From d36f0536e8202212719b419a8093a2511e16b0f8 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 12 Dec 2013 15:41:55 +0100 Subject: [PATCH 073/362] Fix tautological comparison. (cherry picked from commit 09eeeaab4e5b80628d19ede0586be9ad00be2328) --- src/playlistparsers/plsparser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/playlistparsers/plsparser.cpp b/src/playlistparsers/plsparser.cpp index e45f4165e..0c105a89e 100644 --- a/src/playlistparsers/plsparser.cpp +++ b/src/playlistparsers/plsparser.cpp @@ -46,7 +46,7 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const // Use the title and length we've already loaded if any if (!songs[n].title().isEmpty()) song.set_title(songs[n].title()); - if (!songs[n].length_nanosec() != -1) + if (songs[n].length_nanosec() != -1) song.set_length_nanosec(songs[n].length_nanosec()); songs[n] = song; From 46565bdf8c56129733a8e440367ff872eeeda24a Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 26 Nov 2013 14:27:30 +0100 Subject: [PATCH 074/362] Remove TIFF plugin support from Mac at least for now. (cherry picked from commit 03e2fc428282bfb02e541f197ffe72921a9819d5) --- dist/macdeploy.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dist/macdeploy.py b/dist/macdeploy.py index e054619ea..beceded11 100755 --- a/dist/macdeploy.py +++ b/dist/macdeploy.py @@ -108,7 +108,6 @@ QT_PLUGINS = [ 'imageformats/libqjpeg.dylib', 'imageformats/libqmng.dylib', 'imageformats/libqsvg.dylib', - 'imageformats/libqtiff.dylib', ] QT_PLUGINS_SEARCH_PATH=[ '/target/plugins', From ddda13ceb7db10c170a8993f7f7ee965d8520e34 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 4 Feb 2014 14:10:59 +0100 Subject: [PATCH 075/362] u_int8_t is missing on mingw --- src/core/utilities.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 0f7dc6373..6ebfe849b 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -448,12 +448,12 @@ QByteArray Sha256(const QByteArray& data) { clementine_sha2::SHA256_CTX context; clementine_sha2::SHA256_Init(&context); clementine_sha2::SHA256_Update( - &context, reinterpret_cast(data.constData()), + &context, reinterpret_cast(data.constData()), data.length()); QByteArray ret(clementine_sha2::SHA256_DIGEST_LENGTH, '\0'); clementine_sha2::SHA256_Final( - reinterpret_cast(ret.data()), &context); + reinterpret_cast(ret.data()), &context); return ret; } From f246eda5a87d11df83c1dc4f9b0a219951a349ff Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 4 Feb 2014 14:10:59 +0100 Subject: [PATCH 076/362] u_int8_t is missing on mingw (cherry picked from commit ddda13ceb7db10c170a8993f7f7ee965d8520e34) --- src/core/utilities.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 5d60baeb7..6c07faa18 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -440,12 +440,12 @@ QByteArray Sha256(const QByteArray& data) { clementine_sha2::SHA256_CTX context; clementine_sha2::SHA256_Init(&context); clementine_sha2::SHA256_Update( - &context, reinterpret_cast(data.constData()), + &context, reinterpret_cast(data.constData()), data.length()); QByteArray ret(clementine_sha2::SHA256_DIGEST_LENGTH, '\0'); clementine_sha2::SHA256_Final( - reinterpret_cast(ret.data()), &context); + reinterpret_cast(ret.data()), &context); return ret; } From 69809d356bfb14723fd909e593445ec658c13cf0 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Tue, 26 Nov 2013 18:52:08 +0100 Subject: [PATCH 077/362] Update DLL list for new version of protobuf (cherry picked from commit 054686226e0e8cbcc1603f4b10f12c6669fc36e4) --- dist/windows/clementine.nsi.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in index 750b33201..77314c5fc 100644 --- a/dist/windows/clementine.nsi.in +++ b/dist/windows/clementine.nsi.in @@ -107,6 +107,9 @@ Section "Delete old files" oldfiles ; 1.1 Delete "$INSTDIR\libprotobuf-lite-7.dll" + ; 1.2 + Delete "$INSTDIR\libprotobuf-7.dll" + ; mingw-w64 Delete "$INSTDIR\avcodec-52.dll" Delete "$INSTDIR\avformat-52.dll" @@ -177,7 +180,7 @@ Section "Clementine" Clementine File "liborc-test-0.4-0.dll" File "libplist.dll" File "libpng14-14.dll" - File "libprotobuf-7.dll" + File "libprotobuf-8.dll" File "libqjson.dll" File "libsoup-2.4-1.dll" File "libspeex-1.dll" From 657bbcf00f75996fdfbfbf14753e558512d4e472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Tue, 4 Feb 2014 15:04:19 +0100 Subject: [PATCH 078/362] Fix for pull request #4170 --- src/playlist/playlist.cpp | 2 +- src/ui/edittagdialog.ui | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 45c6673f8..ed2cd6938 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -1222,7 +1222,7 @@ QString Playlist::column_name(Column column) { case Column_Rating: return tr("Rating"); case Column_PlayCount: return tr("Play count"); case Column_SkipCount: return tr("Skip count"); - case Column_LastPlayed: return tr("Last played"); + case Column_LastPlayed: return tr("Last played", "A playlist's tag."); case Column_Score: return tr("Score"); case Column_BPM: return tr("BPM"); diff --git a/src/ui/edittagdialog.ui b/src/ui/edittagdialog.ui index dc8e05bf2..9acaf9a8f 100644 --- a/src/ui/edittagdialog.ui +++ b/src/ui/edittagdialog.ui @@ -336,7 +336,7 @@ - Last played + Last played true From 1b00e91fdfa3b7a712da0bdd7da57e326e77d776 Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Sun, 2 Feb 2014 18:17:33 +0100 Subject: [PATCH 079/362] Add the ability to cancel a running CD rip. --- src/ui/ripcd.cpp | 6 ++++++ src/ui/ripcd.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 60f0f665e..82e1d887a 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -254,6 +254,10 @@ void RipCD::ThreadClickedRipButton() { QByteArray buffered_input_bytes(CDIO_CD_FRAMESIZE_RAW,'\0'); for (lsn_t i_cursor = i_first_lsn; i_cursor <= i_last_lsn; i_cursor++) { + if (cancel_requested_) { + qLog(Debug) << "CD ripping canceled."; + return; + } if(cdio_read_audio_sector(cdio_, buffered_input_bytes.data(), i_cursor) == DRIVER_OP_SUCCESS) { destination_file->write(buffered_input_bytes.data(), buffered_input_bytes.size()); } else { @@ -328,6 +332,7 @@ void RipCD::ThreadedTranscoding() { void RipCD::ClickedRipButton() { SetWorking(true); + cancel_requested_ = false; QtConcurrent::run(this, &RipCD::ThreadClickedRipButton); } @@ -413,6 +418,7 @@ void RipCD::AddDestinationDirectory(QString dir) { } void RipCD::Cancel() { + cancel_requested_ = true; transcoder_->Cancel(); RemoveTemporaryDirectory(); SetWorking(false); diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 6f134639f..0de1d7111 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -58,6 +58,7 @@ class RipCD: public QDialog { QPushButton* close_button_; QPushButton* rip_button_; QString temporary_directory_; + bool cancel_requested_; void WriteWAVHeader(QFile *stream, int32_t i_bytecount); int NumTracksToRip(); From 7084697aa368adaa92d490e82f0d979adba06bc5 Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Tue, 4 Feb 2014 22:08:32 +0100 Subject: [PATCH 080/362] Prevent Clementine to loop forever when trying to play a song with repeat enabled in a playlist which contains only unavailable songs --- src/core/player.cpp | 31 +++++++++++++++++++++-- src/core/player.h | 1 + src/engines/engine_fwd.h | 5 ++-- src/engines/gstengine.cpp | 3 +-- src/networkremote/outgoingdatacreator.cpp | 1 + 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/core/player.cpp b/src/core/player.cpp index b8695eb3b..994ebd3f1 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -31,7 +31,7 @@ # include "internet/lastfmservice.h" #endif -#include +#include #include #include @@ -46,6 +46,7 @@ Player::Player(Application* app, QObject* parent) engine_(new GstEngine(app_->task_manager())), stream_change_type_(Engine::First), last_state_(Engine::Empty), + nb_errors_received_(0), volume_before_mute_(50) { settings_.beginGroup("Player"); @@ -159,10 +160,28 @@ void Player::NextInternal(Engine::TrackChangeFlags change) { } void Player::NextItem(Engine::TrackChangeFlags change) { + Playlist* active_playlist = app_->playlist_manager()->active(); + + // If we received too many errors in auto change, with repeat enabled, we stop + if (change == Engine::Auto) { + const PlaylistSequence::RepeatMode repeat_mode = + active_playlist->sequence()->repeat_mode(); + if (repeat_mode != PlaylistSequence::Repeat_Off) { + if ((repeat_mode == PlaylistSequence::Repeat_Track && nb_errors_received_ >= 3) || + (nb_errors_received_ >= app_->playlist_manager()->active()->proxy()->rowCount())) { + // We received too many "Error" state changes: probably looping over a + // playlist which contains only unavailable elements: stop now. + nb_errors_received_ = 0; + Stop(); + return; + } + } + } + // Manual track changes override "Repeat track" const bool ignore_repeat_track = change & Engine::Manual; - int i = app_->playlist_manager()->active()->next_row(ignore_repeat_track); + int i = active_playlist->next_row(ignore_repeat_track); if (i == -1) { app_->playlist_manager()->active()->set_current_row(i); emit PlaylistFinished(); @@ -226,6 +245,7 @@ void Player::PlayPause() { } case Engine::Empty: + case Engine::Error: case Engine::Idle: { app_->playlist_manager()->SetActivePlaylist(app_->playlist_manager()->current_id()); if (app_->playlist_manager()->active()->rowCount() == 0) @@ -276,9 +296,16 @@ void Player::PreviousItem(Engine::TrackChangeFlags change) { } void Player::EngineStateChanged(Engine::State state) { + if (Engine::Error == state) { + nb_errors_received_++; + } else { + nb_errors_received_ = 0; + } + switch (state) { case Engine::Paused: emit Paused(); break; case Engine::Playing: emit Playing(); break; + case Engine::Error: case Engine::Empty: case Engine::Idle: emit Stopped(); break; } diff --git a/src/core/player.h b/src/core/player.h index c8b7b7854..20a02d4dc 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -179,6 +179,7 @@ public slots: boost::scoped_ptr engine_; Engine::TrackChangeFlags stream_change_type_; Engine::State last_state_; + int nb_errors_received_; QMap url_handlers_; diff --git a/src/engines/engine_fwd.h b/src/engines/engine_fwd.h index 2f318d364..5c70ff613 100644 --- a/src/engines/engine_fwd.h +++ b/src/engines/engine_fwd.h @@ -15,11 +15,12 @@ namespace Engine * Playing when playing, * Paused when paused * Idle when you still have a URL loaded (ie you have not been told to stop()) - * Empty when you have been told to stop(), or an error occurred and you stopped yourself + * Empty when you have been told to stop(), + * Error when an error occurred and you stopped yourself * * It is vital to be Idle just after the track has ended! */ - enum State { Empty, Idle, Playing, Paused }; + enum State { Empty, Idle, Playing, Paused, Error }; enum TrackChangeType { // One of: diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index 7131c8ce9..0f1add714 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -574,7 +573,7 @@ void GstEngine::HandlePipelineError(int pipeline_id, const QString& message, current_pipeline_.reset(); BufferingFinished(); - emit StateChanged(Engine::Empty); + emit StateChanged(Engine::Error); // unable to play media stream with this url emit InvalidSongRequested(url_); diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index c99fe0c2c..d816d0992 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -178,6 +178,7 @@ void OutgoingDataCreator::SetEngineState(pb::remote::ResponseClementineInfo* msg switch(app_->player()->GetState()) { case Engine::Idle: msg->set_state(pb::remote::Idle); break; + case Engine::Error: case Engine::Empty: msg->set_state(pb::remote::Empty); break; case Engine::Playing: msg->set_state(pb::remote::Playing); From 62d919c1b5c296a4bbd177c3b38f31ab87f4274a Mon Sep 17 00:00:00 2001 From: asiviero Date: Tue, 4 Feb 2014 23:29:39 -0200 Subject: [PATCH 081/362] Fixing segfaults, checking for cd change on the fly --- src/ui/mainwindow.cpp | 1 - src/ui/ripcd.cpp | 27 +++++++++++++++++++++++---- src/ui/ripcd.h | 2 ++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 142fb1e3d..098380384 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1685,7 +1685,6 @@ void MainWindow::OpenRipCD() { rip_cd_.reset(new RipCD); } if(rip_cd_->CheckCDIOIsValid()) { - rip_cd_->BuildTrackListTable(); rip_cd_->show(); } else { QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive")); diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index db5849e93..e5383c650 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -75,6 +76,7 @@ RipCD::RipCD(QWidget* parent) : ui_(new Ui_RipCD) { + cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); // Init ui_->setupUi(this); @@ -146,6 +148,7 @@ RipCD::RipCD(QWidget* parent) : RipCD::~RipCD() { delete ui_; + cdio_destroy(cdio_); } @@ -203,22 +206,19 @@ int RipCD::NumTracksToRip() { } void RipCD::ThreadClickedRipButton() { - temporary_directory_ = Utilities::MakeTempDir() + "/"; - finished_success_ = 0; finished_failed_ = 0; ui_->progress_bar->setMaximum(NumTracksToRip() * 2 * 100); // Set up progress bar emit(SignalUpdateProgress()); - + tracks_to_rip_.clear(); for (int i = 1; i <= i_tracks_; i++) { if (!checkboxes_.value(i - 1)->isChecked()) { continue; } tracks_to_rip_.append(i); - QString filename = temporary_directory_ + ParseFileFormatString(ui_->format_filename->text(), i) + ".wav"; QFile *destination_file = new QFile(filename); @@ -304,6 +304,16 @@ void RipCD::ThreadedTranscoding() { } void RipCD::ClickedRipButton() { + if((cdio_) && cdio_get_media_changed(cdio_)) { + QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Media has changed. Reloading")); + cdio_fail.exec(); + if(CheckCDIOIsValid()) { + BuildTrackListTable(); + } else { + ui_->tableWidget->clear(); + } + return; + } SetWorking(true); QtConcurrent::run(this, &RipCD::ThreadClickedRipButton); } @@ -397,6 +407,9 @@ void RipCD::Cancel() { } bool RipCD::CheckCDIOIsValid() { + if((cdio_)) { + cdio_destroy(cdio_); + } cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); return (cdio_); } @@ -440,6 +453,8 @@ void RipCD::RemoveTemporaryDirectory() { void RipCD::BuildTrackListTable() { ui_->tableWidget->clear(); + checkboxes_.clear(); + track_names_.clear(); i_tracks_ = cdio_get_num_tracks(cdio_); ui_->tableWidget->setRowCount(i_tracks_); for (int i = 1; i <= i_tracks_; i++) { @@ -457,3 +472,7 @@ void RipCD::BuildTrackListTable() { line_edit_track_title_i); } } + +void RipCD::showEvent(QShowEvent *event) { + BuildTrackListTable(); +} diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index e46e1aaa8..976311041 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -38,6 +38,8 @@ class RipCD: public QDialog { ~RipCD(); bool CheckCDIOIsValid(); void BuildTrackListTable(); + protected: + void showEvent(QShowEvent *event); private: static const char* kSettingsGroup; From 9a0b149877c6bad2599b55ebe334da6903b382c5 Mon Sep 17 00:00:00 2001 From: asiviero Date: Wed, 5 Feb 2014 10:25:47 -0200 Subject: [PATCH 082/362] Removed unnecessary clear and switched to clearContents on cdio not available --- src/ui/ripcd.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index e5383c650..bdaa0da54 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -310,7 +310,7 @@ void RipCD::ClickedRipButton() { if(CheckCDIOIsValid()) { BuildTrackListTable(); } else { - ui_->tableWidget->clear(); + ui_->tableWidget->clearContents(); } return; } @@ -452,7 +452,6 @@ void RipCD::RemoveTemporaryDirectory() { } void RipCD::BuildTrackListTable() { - ui_->tableWidget->clear(); checkboxes_.clear(); track_names_.clear(); i_tracks_ = cdio_get_num_tracks(cdio_); From e50ef0dd429422b7763a49af38341dd27ca56bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Wed, 5 Feb 2014 14:17:24 +0100 Subject: [PATCH 083/362] [Transcoder] Translate transcoder presets as well --- src/transcoder/transcoder.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 06aba280b..9ce4c46ec 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -240,23 +240,23 @@ QList Transcoder::GetAllPresets() { TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { switch (type) { case Song::Type_Flac: - return TranscoderPreset(type, "Flac", "flac", "audio/x-flac"); + return TranscoderPreset(type, tr("Flac"), "flac", "audio/x-flac"); case Song::Type_Mp4: - return TranscoderPreset(type, "M4A AAC", "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); + return TranscoderPreset(type, tr("M4A AAC"), "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); case Song::Type_Mpeg: - return TranscoderPreset(type, "MP3", "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); + return TranscoderPreset(type, tr("MP3"), "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); case Song::Type_OggVorbis: - return TranscoderPreset(type, "Ogg Vorbis", "ogg", "audio/x-vorbis", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Vorbis"), "ogg", "audio/x-vorbis", "application/ogg"); case Song::Type_OggFlac: - return TranscoderPreset(type, "Ogg Flac", "ogg", "audio/x-flac", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Flac"), "ogg", "audio/x-flac", "application/ogg"); case Song::Type_OggSpeex: - return TranscoderPreset(type, "Ogg Speex", "spx", "audio/x-speex", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Speex"), "spx", "audio/x-speex", "application/ogg"); case Song::Type_OggOpus: - return TranscoderPreset(type, "Ogg Opus", "opus", "audio/x-opus", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Opus"), "opus", "audio/x-opus", "application/ogg"); case Song::Type_Asf: - return TranscoderPreset(type, "Windows Media audio", "wma", "audio/x-wma", "video/x-ms-asf"); + return TranscoderPreset(type, tr("Windows Media audio"), "wma", "audio/x-wma", "video/x-ms-asf"); case Song::Type_Wav: - return TranscoderPreset(type, "Wav", "wav", QString(), "audio/x-wav"); + return TranscoderPreset(type, tr("Wav"), "wav", QString(), "audio/x-wav"); default: qLog(Warning) << "Unsupported format in PresetForFileType:" << type; return TranscoderPreset(); From cfe6b268bb1d6cbab638cca8c0dcb92ecca08b90 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Fri, 10 Jan 2014 16:57:32 +0100 Subject: [PATCH 084/362] Fix rendering of source icons in playlist view on retina OS X 10.9 (cherry picked from commit 1a972e0f3639df3cb1a6a64b65d7a9d3e972f912) --- src/core/mac_startup.mm | 8 ++++++++ src/core/mac_utilities.h | 1 + src/playlist/playlistdelegates.cpp | 27 +++++++++++++++++++-------- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/core/mac_startup.mm b/src/core/mac_startup.mm index d9836377f..4a89677e7 100644 --- a/src/core/mac_startup.mm +++ b/src/core/mac_startup.mm @@ -451,4 +451,12 @@ void EnableFullScreen(const QWidget& main_window) { [window setCollectionBehavior: kFullScreenPrimary]; } +float GetDevicePixelRatio(QWidget* widget) { + NSView* view = reinterpret_cast(widget->winId()); + if ([[view window] respondsToSelector: @selector(backingScaleFactor)]) { + return [[view window] backingScaleFactor]; + } + return 1.0f; +} + } // namespace mac diff --git a/src/core/mac_utilities.h b/src/core/mac_utilities.h index 9ad84e1fb..fadaab0fd 100644 --- a/src/core/mac_utilities.h +++ b/src/core/mac_utilities.h @@ -29,5 +29,6 @@ namespace mac { QKeySequence KeySequenceFromNSEvent(NSEvent* event); void DumpDictionary(CFDictionaryRef dict); +float GetDevicePixelRatio(QWidget* widget); } diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index 752b556eb..b49b46ee3 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -16,13 +16,6 @@ */ #include "playlistdelegates.h" -#include "queue.h" -#include "core/logging.h" -#include "core/player.h" -#include "core/utilities.h" -#include "library/librarybackend.h" -#include "widgets/trackslider.h" -#include "ui/iconloader.h" #include #include @@ -39,6 +32,18 @@ #include #include +#include "queue.h" +#include "core/logging.h" +#include "core/player.h" +#include "core/utilities.h" +#include "library/librarybackend.h" +#include "widgets/trackslider.h" +#include "ui/iconloader.h" + +#ifdef Q_OS_DARWIN +#include "core/mac_utilities.h" +#endif // Q_OS_DARWIN + const int QueuedItemDelegate::kQueueBoxBorder = 1; const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; const int QueuedItemDelegate::kQueueBoxLength = 30; @@ -492,8 +497,14 @@ void SongSourceDelegate::paint( const QUrl& url = index.data().toUrl(); QPixmap pixmap = LookupPixmap(url, option_copy.decorationSize); + float device_pixel_ratio = 1.0f; +#ifdef Q_OS_DARWIN + QWidget* parent_widget = reinterpret_cast(parent()); + device_pixel_ratio = mac::GetDevicePixelRatio(parent_widget); +#endif + // Draw the pixmap in the middle of the rectangle - QRect draw_rect(QPoint(0, 0), option_copy.decorationSize); + QRect draw_rect(QPoint(0, 0), option_copy.decorationSize / device_pixel_ratio); draw_rect.moveCenter(option_copy.rect.center()); painter->drawPixmap(draw_rect, pixmap); From 2649a452decbd799e0f6de5e48fdf2aea68074e3 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 12:07:58 +0100 Subject: [PATCH 085/362] Update changelog for 1.2.2 --- Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog b/Changelog index d53d8d933..188201e22 100644 --- a/Changelog +++ b/Changelog @@ -8,6 +8,7 @@ Version 1.2.2: settings dialog). * (Debian) Fix a bug with HTTPS logins to all cloud storage providers. * (Mac OS X) Fix a bug in the workaround for a weird font issue on 10.9. + * (Mac OS X) Fix rendering of source icons on retina displays. * (Android Remote) Don't advertise songs that aren't available. * (Android Remote) Fix playing songs with special characters in filenames. From 8424c18516d7036facaa42db3b0f50adc4710cf6 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 14:48:00 +0100 Subject: [PATCH 086/362] Use c++11 instead of boost where possible. --- CMakeLists.txt | 18 ------ ext/libclementine-common/core/closure.h | 25 ++++---- ext/libclementine-common/core/concurrentrun.h | 21 ++++--- ext/libclementine-tagreader/fmpsparser.cpp | 11 +++- ext/libclementine-tagreader/tagreader.cpp | 18 +++--- src/CMakeLists.txt | 1 + src/config.h.in | 1 - src/core/deletefiles.cpp | 7 ++- src/core/deletefiles.h | 8 +-- src/core/mergedproxymodel.h | 3 + src/core/musicstorage.h | 10 ++-- src/core/organise.cpp | 19 ++++--- src/core/organise.h | 8 +-- src/core/player.cpp | 16 +++--- src/core/songloader.cpp | 12 ++-- src/core/songloader.h | 10 ++-- src/devices/devicemanager.cpp | 16 +++--- src/devices/devicemanager.h | 11 ++-- src/devices/deviceproperties.cpp | 22 +++---- src/devices/deviceview.cpp | 35 ++++++------ src/devices/giolister.cpp | 16 ++++-- src/engines/gstengine.cpp | 26 ++++----- src/engines/gstengine.h | 18 +++--- src/globalsearch/globalsearchview.cpp | 46 ++++++++------- src/library/groupbydialog.h | 5 ++ src/library/librarydirectorymodel.cpp | 2 +- src/library/librarydirectorymodel.h | 6 +- src/library/librarymodel.cpp | 26 +++++---- src/library/libraryview.cpp | 29 +++++----- src/main.cpp | 33 ++++++----- src/playlist/playlist.cpp | 54 +++++++++--------- src/playlist/playlistbackend.cpp | 42 ++++++++------ src/playlist/playlistbackend.h | 6 +- src/playlist/playlistitem.h | 8 +-- src/transcoder/transcoder.cpp | 8 +-- src/transcoder/transcoder.h | 7 +-- src/ui/mainwindow.cpp | 57 +++++++++---------- src/ui/organisedialog.cpp | 21 ++++--- src/widgets/fileview.h | 6 +- 39 files changed, 356 insertions(+), 332 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2122d7413..38c4cc1f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,24 +20,6 @@ if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") endif () -set(CMAKE_REQUIRED_FLAGS "-std=c++0x") -check_cxx_source_compiles( - "#include - int main() { - std::unordered_map m; - return 0; - } - " - USE_STD_UNORDERED_MAP) -check_cxx_source_compiles( - "int main() { - [](){}(); - } - " - HAVE_LAMBDAS) -unset(CMAKE_REQUIRED_FLAGS) - - if (UNIX AND NOT APPLE) set(LINUX 1) endif (UNIX AND NOT APPLE) diff --git a/ext/libclementine-common/core/closure.h b/ext/libclementine-common/core/closure.h index 2244a4a69..bb874d05f 100644 --- a/ext/libclementine-common/core/closure.h +++ b/ext/libclementine-common/core/closure.h @@ -19,22 +19,18 @@ #define CLOSURE_H #include +#include #include #include #include -#include -#include -#include -#include - namespace _detail { class ObjectHelper; // Interface for ObjectHelper to call on signal emission. -class ClosureBase : boost::noncopyable { +class ClosureBase { public: virtual ~ClosureBase(); virtual void Invoke() = 0; @@ -45,6 +41,9 @@ class ClosureBase : boost::noncopyable { protected: explicit ClosureBase(ObjectHelper*); ObjectHelper* helper_; + + private: + Q_DISABLE_COPY(ClosureBase); }; // QObject helper as templated QObjects do not work. @@ -62,7 +61,7 @@ class ObjectHelper : public QObject { void Invoked(); private: - boost::scoped_ptr closure_; + std::unique_ptr closure_; Q_DISABLE_COPY(ObjectHelper); }; @@ -92,8 +91,8 @@ class Closure : public ClosureBase { const char* slot, const Args&... args) : ClosureBase(new ObjectHelper(sender, signal, this)), - // boost::bind is the easiest way to store an argument list. - function_(boost::bind(&Closure::Call, this, args...)), + // std::bind is the easiest way to store an argument list. + function_(std::bind(&Closure::Call, this, args...)), receiver_(receiver) { const QMetaObject* meta_receiver = receiver->metaObject(); QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1); @@ -126,7 +125,7 @@ class Closure : public ClosureBase { arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); } - boost::function function_; + std::function function_; QObject* receiver_; QMetaMethod slot_; }; @@ -202,7 +201,7 @@ _detail::ClosureBase* NewClosure( const char* signal, std::function callback, const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); + return NewClosure(sender, signal, std::bind(callback, args...)); } template @@ -211,7 +210,7 @@ _detail::ClosureBase* NewClosure( const char* signal, void (*callback)(Args...), const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); + return NewClosure(sender, signal, std::bind(callback, args...)); } template @@ -220,7 +219,7 @@ _detail::ClosureBase* NewClosure( const char* signal, T* receiver, Unused (T::*callback)(Args...), const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, receiver, args...)); + return NewClosure(sender, signal, std::bind(callback, receiver, args...)); } diff --git a/ext/libclementine-common/core/concurrentrun.h b/ext/libclementine-common/core/concurrentrun.h index 119ee083a..58fc05577 100644 --- a/ext/libclementine-common/core/concurrentrun.h +++ b/ext/libclementine-common/core/concurrentrun.h @@ -18,8 +18,7 @@ #ifndef CONCURRENTRUN_H #define CONCURRENTRUN_H -#include -#include +#include #include #include @@ -69,9 +68,9 @@ class ThreadFunctorBase : public QFutureInterface, public QRunnable template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, + ThreadFunctor(std::function function, Args... args) - : function_(boost::bind(function, args...)) { + : function_(std::bind(function, args...)) { } virtual void run() { @@ -80,16 +79,16 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; // Partial specialisation for void return type. template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, + ThreadFunctor(std::function function, Args... args) - : function_(boost::bind(function, args...)) { + : function_(std::bind(function, args...)) { } virtual void run() { @@ -98,7 +97,7 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; @@ -111,7 +110,7 @@ namespace ConcurrentRun { template QFuture Run( QThreadPool* threadpool, - boost::function function) { + std::function function) { return (new ThreadFunctor(function))->Start(threadpool); } @@ -119,7 +118,7 @@ namespace ConcurrentRun { template QFuture Run( QThreadPool* threadpool, - boost::function function, + std::function function, const Args&... args) { return (new ThreadFunctor( function, args...))->Start(threadpool); @@ -132,7 +131,7 @@ namespace ConcurrentRun { ReturnType (*function) (Args...), const Args&... args) { return Run( - threadpool, boost::function(function), args...); + threadpool, std::function(function), args...); } } diff --git a/ext/libclementine-tagreader/fmpsparser.cpp b/ext/libclementine-tagreader/fmpsparser.cpp index 113f9f316..5eca59207 100644 --- a/ext/libclementine-tagreader/fmpsparser.cpp +++ b/ext/libclementine-tagreader/fmpsparser.cpp @@ -17,10 +17,13 @@ #include "fmpsparser.h" +#include + #include #include -#include +using std::placeholders::_1; +using std::placeholders::_2; FMPSParser::FMPSParser() : // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the way @@ -105,12 +108,14 @@ int FMPSParser::ParseValueRef(const QStringRef& data, QVariant* ret) const { // Parses an inner list - a list of values int FMPSParser::ParseListRef(const QStringRef& data, QVariantList* ret) const { - return ParseContainer<':'>(data, boost::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); + return ParseContainer<':'>( + data, std::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); } // Parses an outer list - a list of lists int FMPSParser::ParseListListRef(const QStringRef& data, Result* ret) const { - return ParseContainer<';'>(data, boost::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); + return ParseContainer<';'>( + data, std::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); } // Convenience functions that take QStrings instead of QStringRefs. Use the diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp index 89ff08d3e..8e3009281 100644 --- a/ext/libclementine-tagreader/tagreader.cpp +++ b/ext/libclementine-tagreader/tagreader.cpp @@ -17,6 +17,8 @@ #include "tagreader.h" +#include + #include #include #include @@ -51,15 +53,11 @@ #include -#include - #include "fmpsparser.h" #include "core/logging.h" #include "core/messagehandler.h" #include "core/timeconstants.h" -using boost::scoped_ptr; - // Taglib added support for FLAC pictures in 1.7.0 #if (TAGLIB_MAJOR_VERSION > 1) || (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) # define TAGLIB_HAS_FLAC_PICTURELIST @@ -123,7 +121,7 @@ void TagReader::ReadFile(const QString& filename, song->set_mtime(info.lastModified().toTime_t()); song->set_ctime(info.created().toTime_t()); - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if(fileref->isNull()) { qLog(Info) << "TagLib hasn't been able to read " << filename << " file"; return; @@ -528,7 +526,7 @@ bool TagReader::SaveFile(const QString& filename, qLog(Debug) << "Saving tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -589,7 +587,7 @@ bool TagReader::SaveSongStatisticsToFile(const QString& filename, qLog(Debug) << "Saving song statistics tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -645,7 +643,7 @@ bool TagReader::SaveSongRatingToFile(const QString& filename, qLog(Debug) << "Saving song rating tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -747,7 +745,7 @@ void TagReader::SetTextFrame(const char* id, const std::string& value, bool TagReader::IsMediaFile(const QString& filename) const { qLog(Debug) << "Checking for valid file" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); return !fileref->isNull() && fileref->tag(); } @@ -844,7 +842,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, CloudStream* stream = new CloudStream( download_url, title, size, authorisation_header, network_); stream->Precache(); - scoped_ptr tag; + std::unique_ptr tag; if (mime_type == "audio/mpeg" && title.endsWith(".mp3")) { tag.reset(new TagLib::MPEG::File( stream, // Takes ownership. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1104542b7..93f825f81 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,6 +25,7 @@ if (QT_VERSION_MINOR GREATER 5) endif(QT_VERSION_MINOR GREATER 7) endif(QT_VERSION_MINOR GREATER 5) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +add_definitions(-DBOOST_BIND_NO_PLACEHOLDERS) include_directories(${CMAKE_BINARY_DIR}) include_directories(${GLIB_INCLUDE_DIRS}) diff --git a/src/config.h.in b/src/config.h.in index 6cac97ec7..218dafe80 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -47,7 +47,6 @@ #cmakedefine TAGLIB_HAS_OPUS #cmakedefine USE_INSTALL_PREFIX #cmakedefine USE_SYSTEM_PROJECTM -#cmakedefine USE_STD_UNORDERED_MAP #cmakedefine HAVE_LAMBDAS #endif // CONFIG_H_IN diff --git a/src/core/deletefiles.cpp b/src/core/deletefiles.cpp index e881dc947..8a65e34ac 100644 --- a/src/core/deletefiles.cpp +++ b/src/core/deletefiles.cpp @@ -16,18 +16,19 @@ */ #include "deletefiles.h" -#include "musicstorage.h" -#include "taskmanager.h" #include #include #include #include +#include "musicstorage.h" +#include "taskmanager.h" + const int DeleteFiles::kBatchSize = 50; DeleteFiles::DeleteFiles(TaskManager* task_manager, - boost::shared_ptr storage) + std::shared_ptr storage) : thread_(NULL), task_manager_(task_manager), storage_(storage), diff --git a/src/core/deletefiles.h b/src/core/deletefiles.h index 38c995b67..142c5a7b5 100644 --- a/src/core/deletefiles.h +++ b/src/core/deletefiles.h @@ -18,9 +18,9 @@ #ifndef DELETEFILES_H #define DELETEFILES_H -#include +#include -#include +#include #include "song.h" @@ -31,7 +31,7 @@ class DeleteFiles : public QObject { Q_OBJECT public: - DeleteFiles(TaskManager* task_manager, boost::shared_ptr storage); + DeleteFiles(TaskManager* task_manager, std::shared_ptr storage); ~DeleteFiles(); static const int kBatchSize; @@ -49,7 +49,7 @@ private: QThread* thread_; QThread* original_thread_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; SongList songs_; diff --git a/src/core/mergedproxymodel.h b/src/core/mergedproxymodel.h index c8b04ec7c..92b4ee3f1 100644 --- a/src/core/mergedproxymodel.h +++ b/src/core/mergedproxymodel.h @@ -20,6 +20,9 @@ #include +using std::placeholders::_1; +using std::placeholders::_2; + #include #include #include diff --git a/src/core/musicstorage.h b/src/core/musicstorage.h index 4f7d0556f..4127c9304 100644 --- a/src/core/musicstorage.h +++ b/src/core/musicstorage.h @@ -20,10 +20,10 @@ #include "song.h" -#include +#include +#include -#include -#include +#include class MusicStorage { public: @@ -44,7 +44,7 @@ public: Transcode_Unsupported = 3, }; - typedef boost::function ProgressFunction; + typedef std::function ProgressFunction; struct CopyJob { QString source_; @@ -77,6 +77,6 @@ public: }; Q_DECLARE_METATYPE(MusicStorage*); -Q_DECLARE_METATYPE(boost::shared_ptr); +Q_DECLARE_METATYPE(std::shared_ptr); #endif // MUSICSTORAGE_H diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 39de12916..dc87c1807 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -15,11 +15,9 @@ along with Clementine. If not, see . */ -#include "musicstorage.h" #include "organise.h" -#include "taskmanager.h" -#include "core/logging.h" -#include "core/tagreaderclient.h" + +#include #include #include @@ -27,13 +25,18 @@ #include #include -#include +#include "musicstorage.h" +#include "taskmanager.h" +#include "core/logging.h" +#include "core/tagreaderclient.h" + +using std::placeholders::_1; const int Organise::kBatchSize = 10; const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, - boost::shared_ptr destination, + std::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, const QStringList& files, bool eject_after) : thread_(NULL), @@ -188,8 +191,8 @@ void Organise::ProcessSomeFiles() { job.metadata_ = song; job.overwrite_ = overwrite_; job.remove_original_ = !copy_; - job.progress_ = boost::bind(&Organise::SetSongProgress, - this, _1, !task.transcoded_filename_.isEmpty()); + job.progress_ = std::bind(&Organise::SetSongProgress, + this, _1, !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { files_with_errors_ << task.filename_; diff --git a/src/core/organise.h b/src/core/organise.h index a45374c42..3f1639a1c 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -18,12 +18,12 @@ #ifndef ORGANISE_H #define ORGANISE_H +#include + #include #include #include -#include - #include "organiseformat.h" #include "transcoder/transcoder.h" @@ -35,7 +35,7 @@ class Organise : public QObject { public: Organise(TaskManager* task_manager, - boost::shared_ptr destination, + std::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, const QStringList& files, bool eject_after); @@ -78,7 +78,7 @@ private: QThread* original_thread_; TaskManager* task_manager_; Transcoder* transcoder_; - boost::shared_ptr destination_; + std::shared_ptr destination_; QList supported_filetypes_; const OrganiseFormat format_; diff --git a/src/core/player.cpp b/src/core/player.cpp index 4cdf33f18..2814ba18b 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -15,8 +15,14 @@ along with Clementine. If not, see . */ -#include "config.h" #include "player.h" + +#include + +#include +#include + +#include "config.h" #include "core/application.h" #include "core/logging.h" #include "core/urlhandler.h" @@ -31,13 +37,7 @@ # include "internet/lastfmservice.h" #endif -#include -#include - -#include - -using boost::shared_ptr; - +using std::shared_ptr; Player::Player(Application* app, QObject* parent) : PlayerInterface(parent), diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 77ddd227d..c5a732dd5 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -17,7 +17,8 @@ #include "songloader.h" -#include +#include +#include #include #include @@ -48,6 +49,7 @@ #include "podcasts/podcastservice.h" #include "podcasts/podcasturlloader.h" +using std::placeholders::_1; QSet SongLoader::sRawUriSchemes; const int SongLoader::kDefaultTimeout = 5000; @@ -229,7 +231,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // inside right away. if (QFileInfo(filename).isDir()) { ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); + std::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); return WillLoadAsync; } @@ -252,7 +254,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // It's a playlist! ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); + std::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); return WillLoadAsync; } @@ -455,8 +457,8 @@ SongLoader::Result SongLoader::LoadRemote() { // rest of the file, parse the playlist and return success. // Create the pipeline - it gets unreffed if it goes out of scope - boost::shared_ptr pipeline( - gst_pipeline_new(NULL), boost::bind(&gst_object_unref, _1)); + std::shared_ptr pipeline( + gst_pipeline_new(NULL), std::bind(&gst_object_unref, _1)); // Create the source element automatically based on the URL GstElement* source = gst_element_make_from_uri( diff --git a/src/core/songloader.h b/src/core/songloader.h index 806e0378a..7e003f094 100644 --- a/src/core/songloader.h +++ b/src/core/songloader.h @@ -18,6 +18,10 @@ #ifndef SONGLOADER_H #define SONGLOADER_H +#include + +#include + #include #include #include @@ -26,10 +30,6 @@ #include "core/tagreaderclient.h" #include "musicbrainz/musicbrainzclient.h" -#include - -#include - class CueParser; class LibraryBackendInterface; class ParserBase; @@ -131,7 +131,7 @@ private: QByteArray buffer_; LibraryBackendInterface* library_; - boost::shared_ptr pipeline_; + std::shared_ptr pipeline_; QThreadPool thread_pool_; }; diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index eb2a1d351..e4e041755 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -17,7 +17,7 @@ #include "devicemanager.h" -#include +#include #include #include @@ -60,7 +60,7 @@ # include "mtpdevice.h" #endif -using boost::bind; +using std::bind; const int DeviceManager::kDeviceIconSize = 32; const int DeviceManager::kDeviceIconOverlaySize = 16; @@ -311,7 +311,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { const_cast(this)->Connect(index.row()); if (!info.device_) return QVariant(); - return QVariant::fromValue >(info.device_); + return QVariant::fromValue>(info.device_); case MusicStorage::Role_StorageForceConnect: if (!info.device_) { @@ -319,7 +319,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { if (info.BestBackend()->lister_->AskForScan(info.BestBackend()->unique_id_)) { - boost::scoped_ptr dialog(new QMessageBox( + std::unique_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."), QMessageBox::Cancel)); @@ -336,7 +336,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { } if (!info.device_) return QVariant(); - return QVariant::fromValue >(info.device_); + return QVariant::fromValue>(info.device_); case Role_MountPath: { if (!info.device_) @@ -520,12 +520,12 @@ void DeviceManager::PhysicalDeviceChanged(const QString &id) { // TODO } -boost::shared_ptr DeviceManager::Connect(int row) { +std::shared_ptr DeviceManager::Connect(int row) { DeviceInfo& info = devices_[row]; if (info.device_) // Already connected return info.device_; - boost::shared_ptr ret; + std::shared_ptr ret; if (!info.BestBackend()->lister_) // Not physically connected return ret; @@ -612,7 +612,7 @@ boost::shared_ptr DeviceManager::Connect(int row) { return ret; } -boost::shared_ptr DeviceManager::GetConnectedDevice(int row) const { +std::shared_ptr DeviceManager::GetConnectedDevice(int row) const { return devices_[row].device_; } diff --git a/src/devices/devicemanager.h b/src/devices/devicemanager.h index d165d17db..6f20b0159 100644 --- a/src/devices/devicemanager.h +++ b/src/devices/devicemanager.h @@ -19,13 +19,14 @@ #define DEVICEMANAGER_H #include "devicedatabasebackend.h" -#include "library/librarymodel.h" + +#include #include #include #include -#include +#include "library/librarymodel.h" class Application; class ConnectedDevice; @@ -72,13 +73,13 @@ public: // Get info about devices int GetDatabaseId(int row) const; DeviceLister* GetLister(int row) const; - boost::shared_ptr GetConnectedDevice(int row) const; + std::shared_ptr GetConnectedDevice(int row) const; int FindDeviceById(const QString& id) const; int FindDeviceByUrl(const QList& url) const; // Actions on devices - boost::shared_ptr Connect(int row); + std::shared_ptr Connect(int row); void Disconnect(int row); void Forget(int row); void UnmountAsync(int row); @@ -143,7 +144,7 @@ private: int database_id_; // -1 if not remembered in the database - boost::shared_ptr device_; // NULL if not connected to clementine + std::shared_ptr device_; // NULL if not connected to clementine QList backends_; QString friendly_name_; diff --git a/src/devices/deviceproperties.cpp b/src/devices/deviceproperties.cpp index 0f59f3c85..80bca6e9c 100644 --- a/src/devices/deviceproperties.cpp +++ b/src/devices/deviceproperties.cpp @@ -15,20 +15,22 @@ along with Clementine. If not, see . */ -#include "connecteddevice.h" -#include "devicelister.h" -#include "devicemanager.h" #include "deviceproperties.h" -#include "ui_deviceproperties.h" -#include "core/utilities.h" -#include "transcoder/transcoder.h" -#include "ui/iconloader.h" + +#include +#include #include #include #include -#include +#include "connecteddevice.h" +#include "devicelister.h" +#include "devicemanager.h" +#include "ui_deviceproperties.h" +#include "core/utilities.h" +#include "transcoder/transcoder.h" +#include "ui/iconloader.h" DeviceProperties::DeviceProperties(QWidget *parent) : QDialog(parent), @@ -178,7 +180,7 @@ void DeviceProperties::UpdateHardwareInfo() { void DeviceProperties::UpdateFormats() { QString id = index_.data(DeviceManager::Role_UniqueId).toString(); DeviceLister* lister = manager_->GetLister(index_.row()); - boost::shared_ptr device = + std::shared_ptr device = manager_->GetConnectedDevice(index_.row()); // Transcode mode @@ -219,7 +221,7 @@ void DeviceProperties::UpdateFormats() { // blocks, so do it in the background. supported_formats_.clear(); - QFuture future = QtConcurrent::run(boost::bind( + QFuture future = QtConcurrent::run(std::bind( &ConnectedDevice::GetSupportedFiletypes, device, &supported_formats_)); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 2d561bb41..342ce936a 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -15,11 +15,22 @@ along with Clementine. If not, see . */ +#include "deviceview.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + #include "connecteddevice.h" #include "devicelister.h" #include "devicemanager.h" #include "deviceproperties.h" -#include "deviceview.h" #include "core/application.h" #include "core/deletefiles.h" #include "core/mergedproxymodel.h" @@ -31,16 +42,6 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include - -#include - const int DeviceItemDelegate::kIconPadding = 6; DeviceItemDelegate::DeviceItemDelegate(QObject *parent) @@ -238,7 +239,8 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { bool is_filesystem_device = false; if (parent_device_index.isValid()) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(parent_device_index.row()); + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(parent_device_index.row()); if (device && !device->LocalPath().isEmpty()) is_filesystem_device = true; } @@ -281,7 +283,8 @@ void DeviceView::Connect() { } void DeviceView::DeviceConnected(int row) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(row); + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(row); if (!device) return; @@ -306,7 +309,7 @@ void DeviceView::Forget() { QString unique_id = app_->device_manager()->data(device_idx, DeviceManager::Role_UniqueId).toString(); if (app_->device_manager()->GetLister(device_idx.row()) && app_->device_manager()->GetLister(device_idx.row())->AskForScan(unique_id)) { - boost::scoped_ptr dialog(new QMessageBox( + std::unique_ptr dialog(new QMessageBox( QMessageBox::Question, tr("Forget device"), tr("Forgetting a device will remove it from this list and Clementine will have to rescan all the songs again next time you connect it."), QMessageBox::Cancel, this)); @@ -390,8 +393,8 @@ void DeviceView::Delete() { QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage = - device_index.data(MusicStorage::Role_Storage).value >(); + std::shared_ptr storage = + device_index.data(MusicStorage::Role_Storage).value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp index 625f05d66..504bbbc7c 100644 --- a/src/devices/giolister.cpp +++ b/src/devices/giolister.cpp @@ -17,16 +17,20 @@ #include "config.h" +#include + #include #include #include -#include - #include "giolister.h" #include "core/logging.h" #include "core/signalchecker.h" +using std::placeholders::_1; +using std::placeholders::_2; +using std::placeholders::_3; + QString GioLister::DeviceInfo::unique_id() const { if (mount) return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); @@ -65,7 +69,7 @@ void OperationFinished(F f, GObject *object, GAsyncResult *result) { } void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_volume_mount_finish, _1, _2, _3), object, result); } @@ -456,17 +460,17 @@ QString GioLister::FindUniqueIdByVolume(GVolume* volume) const { } void GioLister::VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_volume_eject_with_operation_finish, _1, _2, _3), object, result); } void GioLister::MountEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_mount_eject_with_operation_finish, _1, _2, _3), object, result); } void GioLister::MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_mount_unmount_with_operation_finish, _1, _2, _3), object, result); } diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index 7131c8ce9..b6f185a8e 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -19,23 +19,14 @@ * 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "config.h" #include "gstengine.h" -#include "gstenginepipeline.h" -#include "core/logging.h" -#include "core/taskmanager.h" -#include "core/utilities.h" - -#ifdef HAVE_MOODBAR -# include "gst/moodbar/spectrum.h" -#endif #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -49,9 +40,18 @@ #include +#include "config.h" +#include "gstenginepipeline.h" +#include "core/logging.h" +#include "core/taskmanager.h" +#include "core/utilities.h" +#ifdef HAVE_MOODBAR +# include "gst/moodbar/spectrum.h" +#endif + +using std::shared_ptr; using std::vector; -using boost::shared_ptr; const char* GstEngine::kSettingsGroup = "GstEngine"; const char* GstEngine::kAutoSink = "autoaudiosink"; diff --git a/src/engines/gstengine.h b/src/engines/gstengine.h index 94c3a93bc..3f3a6c8bf 100644 --- a/src/engines/gstengine.h +++ b/src/engines/gstengine.h @@ -22,6 +22,8 @@ #ifndef AMAROK_GSTENGINE_H #define AMAROK_GSTENGINE_H +#include + #include "bufferconsumer.h" #include "enginebase.h" #include "core/boundfuturewatcher.h" @@ -35,7 +37,6 @@ #include #include -#include class QTimer; class QTimerEvent; @@ -146,12 +147,13 @@ class GstEngine : public Engine::Base, public BufferConsumer { void StartTimers(); void StopTimers(); - boost::shared_ptr CreatePipeline(); - boost::shared_ptr CreatePipeline(const QUrl& url, qint64 end_nanosec); + std::shared_ptr CreatePipeline(); + std::shared_ptr CreatePipeline( + const QUrl& url, qint64 end_nanosec); void UpdateScope(); - int AddBackgroundStream(boost::shared_ptr pipeline); + int AddBackgroundStream(std::shared_ptr pipeline); static QUrl FixupUrl(const QUrl& url); @@ -171,9 +173,9 @@ class GstEngine : public Engine::Base, public BufferConsumer { QString sink_; QString device_; - boost::shared_ptr current_pipeline_; - boost::shared_ptr fadeout_pipeline_; - boost::shared_ptr fadeout_pause_pipeline_; + std::shared_ptr current_pipeline_; + std::shared_ptr fadeout_pipeline_; + std::shared_ptr fadeout_pause_pipeline_; QUrl preloaded_url_; QList buffer_consumers_; @@ -205,7 +207,7 @@ class GstEngine : public Engine::Base, public BufferConsumer { int timer_id_; int next_element_id_; - QHash > background_streams_; + QHash > background_streams_; bool is_fading_out_to_pause_; bool has_faded_out_; diff --git a/src/globalsearch/globalsearchview.cpp b/src/globalsearch/globalsearchview.cpp index 67cc90bb2..9b38847aa 100644 --- a/src/globalsearch/globalsearchview.cpp +++ b/src/globalsearch/globalsearchview.cpp @@ -1,25 +1,33 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ +#include "globalsearchview.h" + +#include +#include +#include +#include + +#include + #include "globalsearch.h" #include "globalsearchitemdelegate.h" #include "globalsearchmodel.h" #include "globalsearchsortmodel.h" -#include "globalsearchview.h" #include "searchprovider.h" #include "searchproviderstatuswidget.h" #include "suggestionwidget.h" @@ -32,12 +40,8 @@ #include "library/librarymodel.h" #include "library/groupbydialog.h" -#include - -#include -#include -#include -#include +using std::placeholders::_1; +using std::placeholders::_2; const int GlobalSearchView::kSwapModelsTimeoutMsec = 250; const int GlobalSearchView::kMaxSuggestions = 10; @@ -176,14 +180,14 @@ namespace { void GlobalSearchView::ReloadSettings() { QSettings s; - + // Library settings s.beginGroup(LibraryView::kSettingsGroup); const bool pretty = s.value("pretty_covers", true).toBool(); front_model_->set_use_pretty_covers(pretty); back_model_->set_use_pretty_covers(pretty); s.endGroup(); - + // Global search settings s.beginGroup(GlobalSearch::kSettingsGroup); const QStringList provider_order = @@ -197,11 +201,11 @@ void GlobalSearchView::ReloadSettings() { LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); s.endGroup(); - + // Delete any old status widgets qDeleteAll(provider_status_widgets_); provider_status_widgets_.clear(); - + // Toggle visibility of the providers group ui_->providers_group->setVisible(show_providers_); @@ -209,27 +213,27 @@ void GlobalSearchView::ReloadSettings() { // Sort the list of providers QList providers = engine_->providers(); qSort(providers.begin(), providers.end(), - boost::bind(&CompareProvider, boost::cref(provider_order), _1, _2)); - + std::bind(&CompareProvider, std::cref(provider_order), _1, _2)); + bool any_disabled = false; - + foreach (SearchProvider* provider, providers) { QWidget* parent = ui_->enabled_list; if (!engine_->is_provider_usable(provider)) { parent = ui_->disabled_list; any_disabled = true; } - + SearchProviderStatusWidget* widget = new SearchProviderStatusWidget(warning_icon_, engine_, provider); - + parent->layout()->addWidget(widget); provider_status_widgets_ << widget; } - + ui_->disabled_label->setVisible(any_disabled); } - + ui_->suggestions_group->setVisible(show_suggestions_); if (!show_suggestions_) { update_suggestions_timer_->stop(); diff --git a/src/library/groupbydialog.h b/src/library/groupbydialog.h index fa8976d27..718590286 100644 --- a/src/library/groupbydialog.h +++ b/src/library/groupbydialog.h @@ -20,6 +20,11 @@ #include +#include + +using std::placeholders::_1; +using std::placeholders::_2; + #include #include #include diff --git a/src/library/librarydirectorymodel.cpp b/src/library/librarydirectorymodel.cpp index 8376ffef4..79b140161 100644 --- a/src/library/librarydirectorymodel.cpp +++ b/src/library/librarydirectorymodel.cpp @@ -38,7 +38,7 @@ void LibraryDirectoryModel::DirectoryDiscovered(const Directory &dir) { QStandardItem* item = new QStandardItem(dir.path); item->setData(dir.id, kIdRole); item->setIcon(dir_icon_); - storage_ << boost::shared_ptr(new FilesystemMusicStorage(dir.path)); + storage_ << std::shared_ptr(new FilesystemMusicStorage(dir.path)); appendRow(item); } diff --git a/src/library/librarydirectorymodel.h b/src/library/librarydirectorymodel.h index eee72270b..5d7c4d482 100644 --- a/src/library/librarydirectorymodel.h +++ b/src/library/librarydirectorymodel.h @@ -18,11 +18,11 @@ #ifndef LIBRARYDIRECTORYMODEL_H #define LIBRARYDIRECTORYMODEL_H +#include + #include #include -#include - #include "directory.h" class LibraryBackend; @@ -51,7 +51,7 @@ class LibraryDirectoryModel : public QStandardItemModel { QIcon dir_icon_; LibraryBackend* backend_; - QList > storage_; + QList > storage_; }; #endif // LIBRARYDIRECTORYMODEL_H diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 9bd919522..db3f95a3d 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -16,6 +16,18 @@ */ #include "librarymodel.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarybackend.h" #include "libraryitem.h" #include "librarydirectorymodel.h" @@ -32,16 +44,8 @@ #include "smartplaylists/querygenerator.h" #include "ui/iconloader.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include +using std::placeholders::_1; +using std::placeholders::_2; using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; @@ -1079,7 +1083,7 @@ void LibraryModel::GetChildSongs(LibraryItem* item, QList* urls, const_cast(this)->LazyPopulate(item); QList children = item->children; - qSort(children.begin(), children.end(), boost::bind( + qSort(children.begin(), children.end(), std::bind( &LibraryModel::CompareItems, this, _1, _2)); foreach (LibraryItem* child, children) diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index e807836d2..297212837 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -15,10 +15,22 @@ along with Clementine. If not, see . */ +#include "libraryview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarydirectorymodel.h" #include "libraryfilterwidget.h" #include "librarymodel.h" -#include "libraryview.h" #include "libraryitem.h" #include "librarybackend.h" #include "core/application.h" @@ -34,17 +46,6 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - using smart_playlists::Wizard; const char* LibraryView::kSettingsGroup = "LibraryView"; @@ -613,9 +614,9 @@ void LibraryView::Delete() { // We can cheat and always take the storage of the first directory, since // they'll all be FilesystemMusicStorage in a library and deleting doesn't // check the actual directory. - boost::shared_ptr storage = + std::shared_ptr storage = app_->library_model()->directory_model()->index(0, 0).data(MusicStorage::Role_Storage) - .value >(); + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); diff --git a/src/main.cpp b/src/main.cpp index 8c0e9542d..2bf13f593 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include #ifdef Q_OS_WIN32 @@ -23,6 +25,19 @@ # include #endif // Q_OS_WIN32 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "config.h" #include "core/application.h" #include "core/commandlineoptions.h" @@ -54,26 +69,10 @@ #include "qtsingleapplication.h" #include "qtsinglecoreapplication.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include #include #include -#include -using boost::scoped_ptr; - #include #ifdef HAVE_SPOTIFY_DOWNLOADER @@ -438,7 +437,7 @@ int main(int argc, char *argv[]) { #endif // Q_OS_LINUX // Create the tray icon and OSD - scoped_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); + std::unique_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); OSD osd(tray_icon.get(), &app); #ifdef HAVE_DBUS diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index ea07cca42..dfb11116f 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -16,6 +16,25 @@ */ #include "playlist.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "playlistbackend.h" #include "playlistfilter.h" #include "playlistitemmimedata.h" @@ -48,36 +67,15 @@ #include "smartplaylists/generatorinserter.h" #include "smartplaylists/generatormimedata.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef USE_STD_UNORDERED_MAP - #include - using std::unordered_map; -#else - #include - using std::tr1::unordered_map; -#endif +using std::placeholders::_1; +using std::placeholders::_2; +using std::shared_ptr; +using std::unordered_map; using smart_playlists::Generator; using smart_playlists::GeneratorInserter; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const char* Playlist::kCddaMimeType = "x-content/audio-cdda"; const char* Playlist::kRowsMimetype = "application/x-clementine-playlist-rows"; const char* Playlist::kPlayNowMimetype = "application/x-clementine-play-now"; @@ -1264,7 +1262,7 @@ void Playlist::sort(int column, Qt::SortOrder order) { begin += current_item_index_.row() + 1; qStableSort(begin, new_items.end(), - boost::bind(&Playlist::CompareItems, column, order, _1, _2)); + std::bind(&Playlist::CompareItems, column, order, _1, _2)); undo_stack_->push(new PlaylistUndoCommands::SortItems(this, column, order, new_items)); } @@ -1811,8 +1809,8 @@ void Playlist::ReshuffleIndices() { // Sort the virtual items std::stable_sort(begin, end, - boost::bind(AlbumShuffleComparator, album_key_positions, - album_keys, _1, _2)); + std::bind(AlbumShuffleComparator, album_key_positions, + album_keys, _1, _2)); break; } diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index c248a2b3d..f8a604016 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -16,6 +16,17 @@ */ #include "playlistbackend.h" + +#include +#include + +#include +#include +#include +#include +#include +#include + #include "core/application.h" #include "core/database.h" #include "core/scopedtransaction.h" @@ -26,19 +37,11 @@ #include "playlistparsers/cueparser.h" #include "smartplaylists/generator.h" -#include -#include -#include -#include -#include -#include - -#include +using std::placeholders::_1; +using std::shared_ptr; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const int PlaylistBackend::kSongTableJoins = 4; PlaylistBackend::PlaylistBackend(Application* app, QObject* parent) @@ -174,8 +177,10 @@ QFuture PlaylistBackend::GetPlaylistItems(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped( + rows, std::bind( + &PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); } QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { @@ -184,11 +189,12 @@ QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped(rows, std::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); } -PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery( + const SqlRow& row, std::shared_ptr state) { // The song tables get joined first, plus one each for the song ROWIDs const int playlist_row = (Song::kColumns.count() + 1) * kSongTableJoins; @@ -201,13 +207,15 @@ PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boo } } -Song PlaylistBackend::NewSongFromQuery(const SqlRow& row, boost::shared_ptr state) { +Song PlaylistBackend::NewSongFromQuery( + const SqlRow& row, std::shared_ptr state) { return NewPlaylistItemFromQuery(row, state)->Metadata(); } // If song had a CUE and the CUE still exists, the metadata from it will // be applied here. -PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::RestoreCueData( + PlaylistItemPtr item, std::shared_ptr state) { // we need library to run a CueParser; also, this method applies only to // file-type PlaylistItems if(item->type() != "File") { diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h index d9c4a071c..29fdf9142 100644 --- a/src/playlist/playlistbackend.h +++ b/src/playlist/playlistbackend.h @@ -90,9 +90,9 @@ class PlaylistBackend : public QObject { QList GetPlaylistRows(int playlist); - Song NewSongFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state); + Song NewSongFromQuery(const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, std::shared_ptr state); enum GetPlaylistsFlags { GetPlaylists_OpenInUi = 1, diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 449a1f421..467d10c09 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -18,19 +18,19 @@ #ifndef PLAYLISTITEM_H #define PLAYLISTITEM_H +#include + #include #include #include #include -#include - #include "core/song.h" class QAction; class SqlRow; -class PlaylistItem : public boost::enable_shared_from_this { +class PlaylistItem : public std::enable_shared_from_this { public: PlaylistItem(const QString& type) : type_(type) {} @@ -109,7 +109,7 @@ class PlaylistItem : public boost::enable_shared_from_this { QMap background_colors_; QMap foreground_colors_; }; -typedef boost::shared_ptr PlaylistItemPtr; +typedef std::shared_ptr PlaylistItemPtr; typedef QList PlaylistItemList; Q_DECLARE_METATYPE(PlaylistItemPtr) diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 487f975ff..e7e91b9b4 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -17,6 +17,8 @@ #include "transcoder.h" +#include + #include #include #include @@ -24,12 +26,10 @@ #include #include -#include - #include "core/logging.h" #include "core/signalchecker.h" -using boost::shared_ptr; +using std::shared_ptr; int Transcoder::JobFinishedEvent::sEventType = -1; @@ -541,7 +541,7 @@ void Transcoder::Cancel() { QMap Transcoder::GetProgress() const { QMap ret; - foreach (boost::shared_ptr state, current_jobs_) { + for (const auto& state : current_jobs_) { if (!state->pipeline_) continue; diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index 58c53288e..62f3149b4 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -18,6 +18,8 @@ #ifndef TRANSCODER_H #define TRANSCODER_H +#include + #include #include @@ -25,9 +27,6 @@ #include #include -#include -#include - #include "core/song.h" @@ -138,7 +137,7 @@ class Transcoder : public QObject { static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); private: - typedef QList > JobStateList; + typedef QList > JobStateList; int max_threads_; QList queued_jobs_; diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 1aa3bc0a9..bc9a43f24 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -17,6 +17,33 @@ #include "mainwindow.h" #include "ui_mainwindow.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef Q_OS_WIN32 +# include +#endif + +#include + + #include "core/appearance.h" #include "core/application.h" #include "core/backgroundstreams.h" @@ -118,34 +145,6 @@ # include "moodbar/moodbarproxystyle.h" #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef Q_OS_WIN32 -# include -#endif - - -#include - -#include - -using boost::shared_ptr; -using boost::scoped_ptr; - #ifdef Q_OS_DARWIN // Non exported mac-specific function. void qt_mac_set_dock_menu(QMenu*); @@ -1909,7 +1908,7 @@ void MainWindow::PlaylistDelete() { QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage(new FilesystemMusicStorage("/")); + std::shared_ptr storage(new FilesystemMusicStorage("/")); // Get selected songs SongList selected_songs; diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index bb786115e..c3f7908f2 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -15,13 +15,10 @@ along with Clementine. If not, see . */ -#include "iconloader.h" #include "organisedialog.h" -#include "organiseerrordialog.h" #include "ui_organisedialog.h" -#include "core/musicstorage.h" -#include "core/organise.h" -#include "core/tagreaderclient.h" + +#include #include #include @@ -32,6 +29,12 @@ #include #include +#include "iconloader.h" +#include "organiseerrordialog.h" +#include "core/musicstorage.h" +#include "core/organise.h" +#include "core/tagreaderclient.h" + const int OrganiseDialog::kNumberOfPreviews = 10; const char* OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%title.%extension"; @@ -192,12 +195,12 @@ void OrganiseDialog::InsertTag(const QString &tag) { void OrganiseDialog::UpdatePreviews() { const QModelIndex destination = ui_->destination->model()->index( ui_->destination->currentIndex(), 0); - boost::shared_ptr storage; + std::shared_ptr storage; bool has_local_destination = false; if (destination.isValid()) { storage = destination.data(MusicStorage::Role_Storage) - .value >(); + .value>(); if (storage) { has_local_destination = !storage->LocalPath().isEmpty(); } @@ -294,9 +297,9 @@ void OrganiseDialog::accept() { const QModelIndex destination = ui_->destination->model()->index( ui_->destination->currentIndex(), 0); - boost::shared_ptr storage = + std::shared_ptr storage = destination.data(MusicStorage::Role_StorageForceConnect) - .value >(); + .value>(); if (!storage) return; diff --git a/src/widgets/fileview.h b/src/widgets/fileview.h index 07e5d239f..db740bcb7 100644 --- a/src/widgets/fileview.h +++ b/src/widgets/fileview.h @@ -18,13 +18,13 @@ #ifndef FILEVIEW_H #define FILEVIEW_H +#include + #include #include #include #include -#include - #include "core/song.h" class FilesystemMusicStorage; @@ -102,7 +102,7 @@ class FileView : public QWidget { QUndoStack* undo_stack_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; QString lazy_set_path_; From 5b4b06f64bdd4c1e1ef478a17c9a19beae7ee587 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 15:35:36 +0100 Subject: [PATCH 087/362] Remove boost::scoped_ptr & boost::shared_ptr --- src/core/crashreporting.h | 6 ++-- src/core/macglobalshortcutbackend.h | 6 ++-- src/core/mpris2.h | 2 -- src/core/player.h | 6 ++-- src/core/utilities.cpp | 4 +-- src/core/utilities.h | 6 ++-- src/covers/albumcoverfetcher.h | 2 -- src/covers/currentartloader.h | 10 +++---- src/devices/connecteddevice.h | 8 ++--- src/devices/devicekitlister.h | 6 ++-- src/devices/devicelister.h | 2 -- src/devices/deviceview.h | 6 ++-- src/devices/gpodloader.cpp | 5 ++-- src/devices/gpodloader.h | 7 +++-- src/devices/mtpdevice.h | 6 ++-- src/devices/mtploader.cpp | 12 ++++---- src/devices/mtploader.h | 8 ++--- src/engines/enginebase.h | 5 ++-- src/engines/gstenginepipeline.cpp | 31 ++++++++++---------- src/engines/gstenginepipeline.h | 5 ++-- src/globalsearch/spotifysearchprovider.cpp | 8 ++--- src/internet/cloudfileservice.h | 6 ++-- src/internet/digitallyimportedservicebase.h | 4 +-- src/internet/groovesharkservice.cpp | 6 ++-- src/internet/lastfmservice.cpp | 3 -- src/internet/lastfmservice.h | 8 ++--- src/internet/magnatunedownloaddialog.cpp | 19 +++++++----- src/internet/magnatunedownloaddialog.h | 6 ++-- src/internet/magnatuneservice.cpp | 2 -- src/internet/savedradio.h | 6 ++-- src/internet/skydriveservice.cpp | 5 ++-- src/internet/spotifyservice.h | 2 -- src/library/library.h | 2 -- src/library/libraryfilterwidget.h | 6 ++-- src/library/librarymodel.h | 2 -- src/library/libraryview.h | 12 ++++---- src/moodbar/moodbarloader.cpp | 4 +-- src/networkremote/networkremote.h | 10 +++---- src/networkremote/outgoingdatacreator.h | 5 ++-- src/playlist/playlist.h | 2 -- src/playlist/playlistsequence.h | 6 ++-- src/playlist/playlistview.h | 6 ++-- src/playlistparsers/xmlparser.h | 5 ++-- src/smartplaylists/generator.h | 7 ++--- src/smartplaylists/generator_fwd.h | 4 +-- src/smartplaylists/querywizardplugin.cpp | 10 +++---- src/smartplaylists/querywizardplugin.h | 7 +++-- src/smartplaylists/searchpreview.cpp | 11 ++++--- src/songinfo/echonestbiographies.cpp | 13 ++++---- src/songinfo/echonestbiographies.h | 6 ++-- src/songinfo/echonestimages.cpp | 9 +++--- src/songinfo/echonestimages.h | 6 ++-- src/songinfo/echonesttags.cpp | 13 ++++---- src/songinfo/echonesttags.h | 6 ++-- src/songinfo/songinfoview.h | 6 ++-- src/songinfo/ultimatelyricsprovider.cpp | 2 -- src/ui/albumcovermanager.cpp | 2 +- src/ui/albumcovermanagerlist.cpp | 11 +++---- src/ui/albumcoversearcher.h | 7 ++--- src/ui/globalshortcutgrabber.mm | 5 ++-- src/ui/globalshortcutssettingspage.h | 6 ++-- src/ui/macsystemtrayicon.h | 11 ++++--- src/ui/macsystemtrayicon.mm | 4 ++- src/ui/mainwindow.cpp | 10 ------- src/ui/mainwindow.h | 30 +++++++++---------- src/ui/organisedialog.h | 6 ++-- src/visualisations/projectmvisualisation.cpp | 8 ++--- src/visualisations/projectmvisualisation.h | 8 ++--- src/widgets/fancytabwidget.h | 6 ++-- src/widgets/nowplayingwidget.h | 10 +++---- src/widgets/osd.h | 5 ++-- src/widgets/osd_x11.cpp | 11 +++---- src/wiimotedev/shortcuts.cpp | 1 - src/wiimotedev/shortcuts.h | 5 ++-- src/wiimotedev/wiimoteshortcutgrabber.h | 6 ++-- 75 files changed, 255 insertions(+), 275 deletions(-) diff --git a/src/core/crashreporting.h b/src/core/crashreporting.h index 54d30558a..a627d0bb0 100644 --- a/src/core/crashreporting.h +++ b/src/core/crashreporting.h @@ -18,9 +18,9 @@ #ifndef CRASHREPORTING_H #define CRASHREPORTING_H -#include +#include -#include +#include class QFile; class QNetworkAccessManager; @@ -64,7 +64,7 @@ private: static const char* kSendCrashReportOption; static char* sPath; - boost::scoped_ptr handler_; + std::unique_ptr handler_; }; diff --git a/src/core/macglobalshortcutbackend.h b/src/core/macglobalshortcutbackend.h index 4e42be366..9abcf8e98 100644 --- a/src/core/macglobalshortcutbackend.h +++ b/src/core/macglobalshortcutbackend.h @@ -18,13 +18,13 @@ #ifndef MACGLOBALSHORTCUTBACKEND_H #define MACGLOBALSHORTCUTBACKEND_H +#include + #include "globalshortcutbackend.h" #include #include -#include - class MacGlobalShortcutBackendPrivate; class QAction; @@ -50,7 +50,7 @@ private: QMap shortcuts_; friend class MacGlobalShortcutBackendPrivate; - boost::scoped_ptr p_; + std::unique_ptr p_; }; #endif // MACGLOBALSHORTCUTBACKEND_H diff --git a/src/core/mpris2.h b/src/core/mpris2.h index 999994cd4..28b4e1744 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -24,8 +24,6 @@ #include #include -#include - class Application; class MainWindow; class Playlist; diff --git a/src/core/player.h b/src/core/player.h index c8b7b7854..70fcc4266 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -18,11 +18,11 @@ #ifndef PLAYER_H #define PLAYER_H +#include + #include #include -#include - #include "config.h" #include "core/song.h" #include "core/urlhandler.h" @@ -176,7 +176,7 @@ public slots: PlaylistItemPtr current_item_; - boost::scoped_ptr engine_; + std::unique_ptr engine_; Engine::TrackChangeFlags stream_change_type_; Engine::State last_state_; diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 6c07faa18..0978609cf 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -19,7 +19,7 @@ #include -#include +#include #include #include @@ -265,7 +265,7 @@ bool Copy(QIODevice* source, QIODevice* destination) { return false; const qint64 bytes = source->size(); - boost::scoped_array data(new char[bytes]); + std::unique_ptr data(new char[bytes]); qint64 pos = 0; qint64 bytes_read; diff --git a/src/core/utilities.h b/src/core/utilities.h index edaa54508..1ad614c03 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -18,6 +18,8 @@ #ifndef UTILITIES_H #define UTILITIES_H +#include + #include #include #include @@ -25,8 +27,6 @@ #include #include -#include - class QIODevice; class QMouseEvent; class QXmlStreamReader; @@ -159,7 +159,7 @@ private: Q_DISABLE_COPY(ScopedWCharArray); int chars_; - boost::scoped_array data_; + std::unique_ptr data_; }; #endif // UTILITIES_H diff --git a/src/covers/albumcoverfetcher.h b/src/covers/albumcoverfetcher.h index a8a8dcc2f..034ddddfb 100644 --- a/src/covers/albumcoverfetcher.h +++ b/src/covers/albumcoverfetcher.h @@ -29,8 +29,6 @@ #include #include -#include - class QNetworkReply; class QString; diff --git a/src/covers/currentartloader.h b/src/covers/currentartloader.h index 05e1a7db7..5b24e71fd 100644 --- a/src/covers/currentartloader.h +++ b/src/covers/currentartloader.h @@ -18,12 +18,12 @@ #ifndef CURRENTARTLOADER_H #define CURRENTARTLOADER_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class Application; @@ -56,8 +56,8 @@ private: QString temp_file_pattern_; - boost::scoped_ptr temp_art_; - boost::scoped_ptr temp_art_thumbnail_; + std::unique_ptr temp_art_; + std::unique_ptr temp_art_thumbnail_; quint64 id_; Song last_song_; diff --git a/src/devices/connecteddevice.h b/src/devices/connecteddevice.h index 3eb468a39..663e5253d 100644 --- a/src/devices/connecteddevice.h +++ b/src/devices/connecteddevice.h @@ -18,14 +18,14 @@ #ifndef CONNECTEDDEVICE_H #define CONNECTEDDEVICE_H -#include "core/musicstorage.h" -#include "core/song.h" +#include #include #include #include -#include +#include "core/musicstorage.h" +#include "core/song.h" class Application; class Database; @@ -35,7 +35,7 @@ class LibraryBackend; class LibraryModel; class ConnectedDevice : public QObject, public virtual MusicStorage, - public boost::enable_shared_from_this { + public std::enable_shared_from_this { Q_OBJECT public: diff --git a/src/devices/devicekitlister.h b/src/devices/devicekitlister.h index c91bdb437..201e9b74b 100644 --- a/src/devices/devicekitlister.h +++ b/src/devices/devicekitlister.h @@ -18,12 +18,12 @@ #ifndef DEVICEKITLISTER_H #define DEVICEKITLISTER_H -#include "devicelister.h" +#include #include #include -#include +#include "devicelister.h" class OrgFreedesktopUDisksInterface; @@ -88,7 +88,7 @@ private: T LockAndGetDeviceInfo(const QString& id, T DeviceData::*field); private: - boost::scoped_ptr interface_; + std::unique_ptr interface_; QMutex mutex_; QMap device_data_; diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h index 4003fb8fc..5791968ab 100644 --- a/src/devices/devicelister.h +++ b/src/devices/devicelister.h @@ -21,8 +21,6 @@ #include #include -#include - class ConnectedDevice; class DeviceManager; diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h index 6bb81c440..f64592e6e 100644 --- a/src/devices/deviceview.h +++ b/src/devices/deviceview.h @@ -18,6 +18,8 @@ #ifndef DEVICEVIEW_H #define DEVICEVIEW_H +#include + #include "core/song.h" #include "library/libraryview.h" #include "widgets/autoexpandingtreeview.h" @@ -88,8 +90,8 @@ private: MergedProxyModel* merged_model_; QSortFilterProxyModel* sort_model_; - boost::scoped_ptr properties_dialog_; - boost::scoped_ptr organise_dialog_; + std::unique_ptr properties_dialog_; + std::unique_ptr organise_dialog_; QMenu* device_menu_; QAction* eject_action_; diff --git a/src/devices/gpodloader.cpp b/src/devices/gpodloader.cpp index 730cff5b8..9faa44be5 100644 --- a/src/devices/gpodloader.cpp +++ b/src/devices/gpodloader.cpp @@ -27,8 +27,9 @@ #include #include -GPodLoader::GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) +GPodLoader::GPodLoader( + const QString& mount_point, TaskManager* task_manager, + LibraryBackend* backend, std::shared_ptr device) : QObject(NULL), device_(device), mount_point_(mount_point), diff --git a/src/devices/gpodloader.h b/src/devices/gpodloader.h index c24fd8a7a..e3c2f74f6 100644 --- a/src/devices/gpodloader.h +++ b/src/devices/gpodloader.h @@ -18,9 +18,10 @@ #ifndef GPODLOADER_H #define GPODLOADER_H +#include + #include -#include #include #include "core/song.h" @@ -34,7 +35,7 @@ class GPodLoader : public QObject { public: GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + LibraryBackend* backend, std::shared_ptr device); ~GPodLoader(); void set_music_path_prefix(const QString& prefix) { path_prefix_ = prefix; } @@ -49,7 +50,7 @@ signals: void LoadFinished(Itdb_iTunesDB* db); private: - boost::shared_ptr device_; + std::shared_ptr device_; QThread* original_thread_; QString mount_point_; diff --git a/src/devices/mtpdevice.h b/src/devices/mtpdevice.h index 6bc45f5ba..7317ea5e6 100644 --- a/src/devices/mtpdevice.h +++ b/src/devices/mtpdevice.h @@ -18,12 +18,12 @@ #ifndef MTPDEVICE_H #define MTPDEVICE_H -#include "connecteddevice.h" +#include #include #include -#include +#include "connecteddevice.h" struct LIBMTP_mtpdevice_struct; @@ -74,7 +74,7 @@ private: SongList songs_to_add_; SongList songs_to_remove_; - boost::scoped_ptr connection_; + std::unique_ptr connection_; }; #endif // MTPDEVICE_H diff --git a/src/devices/mtploader.cpp b/src/devices/mtploader.cpp index 17015f18a..abb4329b4 100644 --- a/src/devices/mtploader.cpp +++ b/src/devices/mtploader.cpp @@ -15,17 +15,19 @@ along with Clementine. If not, see . */ +#include "mtploader.h" + +#include + #include "connecteddevice.h" #include "mtpconnection.h" -#include "mtploader.h" #include "core/song.h" #include "core/taskmanager.h" #include "library/librarybackend.h" -#include - -MtpLoader::MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) +MtpLoader::MtpLoader( + const QUrl& url, TaskManager* task_manager, + LibraryBackend* backend, std::shared_ptr device) : QObject(NULL), device_(device), url_(url), diff --git a/src/devices/mtploader.h b/src/devices/mtploader.h index c38401f89..357597d41 100644 --- a/src/devices/mtploader.h +++ b/src/devices/mtploader.h @@ -18,11 +18,11 @@ #ifndef MTPLOADER_H #define MTPLOADER_H +#include + #include #include -#include - class ConnectedDevice; class LibraryBackend; class TaskManager; @@ -32,7 +32,7 @@ class MtpLoader : public QObject { public: MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + LibraryBackend* backend, std::shared_ptr device); ~MtpLoader(); public slots: @@ -47,7 +47,7 @@ private: bool TryLoad(); private: - boost::shared_ptr device_; + std::shared_ptr device_; QThread* original_thread_; QUrl url_; diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h index c3e75b0d5..d998639e1 100644 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -27,8 +27,6 @@ #include -#include - #include #include #include @@ -39,7 +37,7 @@ namespace Engine { typedef std::vector Scope; -class Base : public QObject, boost::noncopyable { +class Base : public QObject { Q_OBJECT public: @@ -153,6 +151,7 @@ class Base : public QObject, boost::noncopyable { private: bool about_to_end_emitted_; + Q_DISABLE_COPY(Base); }; diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 94f77a357..21eb614b7 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -41,11 +41,11 @@ const int GstEnginePipeline::kEqBandFrequencies[] = { 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; int GstEnginePipeline::sId = 1; -GstElementDeleter* GstEnginePipeline::sElementDeleter = NULL; +GstElementDeleter* GstEnginePipeline::sElementDeleter = nullptr; GstEnginePipeline::GstEnginePipeline(GstEngine* engine) - : QObject(NULL), + : QObject(nullptr), engine_(engine), id_(sId++), valid_(false), @@ -75,20 +75,19 @@ GstEnginePipeline::GstEnginePipeline(GstEngine* engine) pending_seek_nanosec_(-1), volume_percent_(100), volume_modifier_(1.0), - fader_(NULL), - pipeline_(NULL), - uridecodebin_(NULL), - audiobin_(NULL), - queue_(NULL), - audioconvert_(NULL), - rgvolume_(NULL), - rglimiter_(NULL), - audioconvert2_(NULL), - equalizer_(NULL), - stereo_panorama_(NULL), - volume_(NULL), - audioscale_(NULL), - audiosink_(NULL) + pipeline_(nullptr), + uridecodebin_(nullptr), + audiobin_(nullptr), + queue_(nullptr), + audioconvert_(nullptr), + rgvolume_(nullptr), + rglimiter_(nullptr), + audioconvert2_(nullptr), + equalizer_(nullptr), + stereo_panorama_(nullptr), + volume_(nullptr), + audioscale_(nullptr), + audiosink_(nullptr) { if (!sElementDeleter) { sElementDeleter = new GstElementDeleter; diff --git a/src/engines/gstenginepipeline.h b/src/engines/gstenginepipeline.h index a1b8c9efb..65e23003f 100644 --- a/src/engines/gstenginepipeline.h +++ b/src/engines/gstenginepipeline.h @@ -18,6 +18,8 @@ #ifndef GSTENGINEPIPELINE_H #define GSTENGINEPIPELINE_H +#include + #include #include #include @@ -27,7 +29,6 @@ #include #include -#include #include "engine_fwd.h" @@ -253,7 +254,7 @@ class GstEnginePipeline : public QObject { int volume_percent_; qreal volume_modifier_; - boost::scoped_ptr fader_; + std::unique_ptr fader_; QBasicTimer fader_fudge_timer_; bool use_fudge_timer_; diff --git a/src/globalsearch/spotifysearchprovider.cpp b/src/globalsearch/spotifysearchprovider.cpp index 0dfc6bdd4..5f955c27b 100644 --- a/src/globalsearch/spotifysearchprovider.cpp +++ b/src/globalsearch/spotifysearchprovider.cpp @@ -18,9 +18,7 @@ #include "spotifysearchprovider.h" #include - -#include -#include +#include #include "core/logging.h" #include "internet/internetmodel.h" @@ -219,8 +217,8 @@ QStringList SpotifySearchProvider::GetSuggestions(int count) { QStringList all_suggestions = suggestions_.toList(); - boost::mt19937 gen(std::time(0)); - boost::uniform_int<> random(0, all_suggestions.size() - 1); + std::mt19937 gen(std::time(0)); + std::uniform_int_distribution<> random(0, all_suggestions.size() - 1); QSet candidates; diff --git a/src/internet/cloudfileservice.h b/src/internet/cloudfileservice.h index ef3627cc5..d31a54ccc 100644 --- a/src/internet/cloudfileservice.h +++ b/src/internet/cloudfileservice.h @@ -3,6 +3,8 @@ #include "internetservice.h" +#include + #include #include "core/tagreaderclient.h" @@ -61,8 +63,8 @@ class CloudFileService : public InternetService { LibraryModel* library_model_; QSortFilterProxyModel* library_sort_model_; - boost::scoped_ptr context_menu_; - boost::scoped_ptr cover_manager_; + std::unique_ptr context_menu_; + std::unique_ptr cover_manager_; PlaylistManager* playlist_manager_; TaskManager* task_manager_; diff --git a/src/internet/digitallyimportedservicebase.h b/src/internet/digitallyimportedservicebase.h index 6380cb9a3..d58f3c614 100644 --- a/src/internet/digitallyimportedservicebase.h +++ b/src/internet/digitallyimportedservicebase.h @@ -18,7 +18,7 @@ #ifndef DIGITALLYIMPORTEDSERVICEBASE_H #define DIGITALLYIMPORTEDSERVICEBASE_H -#include +#include #include "digitallyimportedclient.h" #include "internetservice.h" @@ -104,7 +104,7 @@ private: QStandardItem* root_; - boost::scoped_ptr context_menu_; + std::unique_ptr context_menu_; QStandardItem* context_item_; CachedList saved_channels_; diff --git a/src/internet/groovesharkservice.cpp b/src/internet/groovesharkservice.cpp index 6b3b30155..697bfadd6 100644 --- a/src/internet/groovesharkservice.cpp +++ b/src/internet/groovesharkservice.cpp @@ -17,7 +17,7 @@ #include "groovesharkservice.h" -#include +#include #include #include @@ -1286,8 +1286,8 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { if (!playlists_.contains(playlist_id)) { return; } - - boost::scoped_ptr confirmation_dialog(new QMessageBox( + + std::unique_ptr confirmation_dialog(new QMessageBox( QMessageBox::Question, tr("Delete Grooveshark playlist"), tr("Are you sure you want to delete this playlist?"), QMessageBox::Yes | QMessageBox::Cancel)); diff --git a/src/internet/lastfmservice.cpp b/src/internet/lastfmservice.cpp index 2636524fe..b8c2c6730 100644 --- a/src/internet/lastfmservice.cpp +++ b/src/internet/lastfmservice.cpp @@ -32,8 +32,6 @@ #include "lastfmservice.h" -#include - #include #include @@ -61,7 +59,6 @@ #include "ui/iconloader.h" #include "ui/settingsdialog.h" -using boost::scoped_ptr; using lastfm::XmlQuery; uint qHash(const lastfm::Track& track) { diff --git a/src/internet/lastfmservice.h b/src/internet/lastfmservice.h index a25b21f33..9b832ea7a 100644 --- a/src/internet/lastfmservice.h +++ b/src/internet/lastfmservice.h @@ -18,6 +18,8 @@ #ifndef LASTFMSERVICE_H #define LASTFMSERVICE_H +#include + namespace lastfm { class RadioStation; class Track; @@ -40,8 +42,6 @@ uint qHash(const lastfm::Track& track); #include #include -#include - class LastFMUrlHandler; class QAction; @@ -198,9 +198,9 @@ class LastFMService : public InternetService { QQueue playlist_; bool already_scrobbled_; - boost::scoped_ptr station_dialog_; + std::unique_ptr station_dialog_; - boost::scoped_ptr context_menu_; + std::unique_ptr context_menu_; QAction* remove_action_; QAction* add_artist_action_; QAction* add_tag_action_; diff --git a/src/internet/magnatunedownloaddialog.cpp b/src/internet/magnatunedownloaddialog.cpp index 91afc8f4d..edf645223 100644 --- a/src/internet/magnatunedownloaddialog.cpp +++ b/src/internet/magnatunedownloaddialog.cpp @@ -16,13 +16,8 @@ */ #include "magnatunedownloaddialog.h" -#include "magnatuneservice.h" -#include "internetmodel.h" -#include "ui_magnatunedownloaddialog.h" -#include "core/logging.h" -#include "core/network.h" -#include "core/utilities.h" -#include "widgets/progressitemdelegate.h" + +#include #include #include @@ -35,6 +30,14 @@ #include #include +#include "magnatuneservice.h" +#include "internetmodel.h" +#include "ui_magnatunedownloaddialog.h" +#include "core/logging.h" +#include "core/network.h" +#include "core/utilities.h" +#include "widgets/progressitemdelegate.h" + MagnatuneDownloadDialog::MagnatuneDownloadDialog(MagnatuneService* service, QWidget *parent) : QDialog(parent), @@ -275,7 +278,7 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { void MagnatuneDownloadDialog::closeEvent(QCloseEvent* e) { if (current_reply_ && current_reply_->isRunning()) { - boost::scoped_ptr message_box(new QMessageBox( + std::unique_ptr message_box(new QMessageBox( QMessageBox::Question, tr("Really cancel?"), tr("Closing this window will cancel the download."), QMessageBox::Abort, this)); diff --git a/src/internet/magnatunedownloaddialog.h b/src/internet/magnatunedownloaddialog.h index 397a91705..7c0ffb438 100644 --- a/src/internet/magnatunedownloaddialog.h +++ b/src/internet/magnatunedownloaddialog.h @@ -18,12 +18,12 @@ #ifndef MAGNATUNEDOWNLOADDIALOG_H #define MAGNATUNEDOWNLOADDIALOG_H +#include + #include #include #include -#include - #include "core/song.h" class MagnatuneService; @@ -71,7 +71,7 @@ private: QNetworkAccessManager* network_; QNetworkReply* current_reply_; - boost::scoped_ptr download_file_; + std::unique_ptr download_file_; int next_row_; }; diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index 7b00a0fa2..78c343bd4 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -51,8 +51,6 @@ #include -using boost::shared_ptr; - const char* MagnatuneService::kServiceName = "Magnatune"; const char* MagnatuneService::kSettingsGroup = "Magnatune"; const char* MagnatuneService::kSongsTable = "magnatune_songs"; diff --git a/src/internet/savedradio.h b/src/internet/savedradio.h index d3a1d9ec6..619aeec66 100644 --- a/src/internet/savedradio.h +++ b/src/internet/savedradio.h @@ -18,9 +18,9 @@ #ifndef SAVEDRADIO_H #define SAVEDRADIO_H -#include "internetservice.h" +#include -#include +#include "internetservice.h" class QMenu; @@ -83,7 +83,7 @@ class SavedRadio : public InternetService { StreamList streams_; - boost::scoped_ptr edit_dialog_; + std::unique_ptr edit_dialog_; }; #endif // SAVEDRADIO_H diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index 0de877394..e3023f5c1 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -1,7 +1,6 @@ #include "skydriveservice.h" -#include -using boost::scoped_ptr; +#include #include @@ -158,7 +157,7 @@ QUrl SkydriveService::GetStreamingUrlFromSongId(const QString& file_id) { QUrl url(QString(kSkydriveBase) + file_id); QNetworkRequest request(url); AddAuthorizationHeader(&request); - scoped_ptr reply(network_->get(request)); + std::unique_ptr reply(network_->get(request)); WaitForSignal(reply.get(), SIGNAL(finished())); QJson::Parser parser; diff --git a/src/internet/spotifyservice.h b/src/internet/spotifyservice.h index 338114067..530aa0a5d 100644 --- a/src/internet/spotifyservice.h +++ b/src/internet/spotifyservice.h @@ -8,8 +8,6 @@ #include #include -#include - class Playlist; class SearchBoxWidget; class SpotifyServer; diff --git a/src/library/library.h b/src/library/library.h index f174845ea..70681cda6 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -21,8 +21,6 @@ #include #include -#include - class Application; class Database; class LibraryBackend; diff --git a/src/library/libraryfilterwidget.h b/src/library/libraryfilterwidget.h index 572bb1185..25074ee8c 100644 --- a/src/library/libraryfilterwidget.h +++ b/src/library/libraryfilterwidget.h @@ -18,9 +18,9 @@ #ifndef LIBRARYFILTERWIDGET_H #define LIBRARYFILTERWIDGET_H -#include +#include -#include +#include #include "librarymodel.h" @@ -91,7 +91,7 @@ class LibraryFilterWidget : public QWidget { Ui_LibraryFilterWidget* ui_; LibraryModel* model_; - boost::scoped_ptr group_by_dialog_; + std::unique_ptr group_by_dialog_; SettingsDialog* settings_dialog_; QMenu* filter_age_menu_; diff --git a/src/library/librarymodel.h b/src/library/librarymodel.h index b2ad18443..a5d708de6 100644 --- a/src/library/librarymodel.h +++ b/src/library/librarymodel.h @@ -32,8 +32,6 @@ #include "playlist/playlistmanager.h" #include "smartplaylists/generator_fwd.h" -#include - class Application; class AlbumCoverLoader; class LibraryDirectoryModel; diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 85afe7e8a..fb096fa2d 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -18,13 +18,13 @@ #ifndef LIBRARYVIEW_H #define LIBRARYVIEW_H -#include "core/song.h" -#include "ui/edittagdialog.h" -#include "widgets/autoexpandingtreeview.h" +#include #include -#include +#include "core/song.h" +#include "ui/edittagdialog.h" +#include "widgets/autoexpandingtreeview.h" class Application; class LibraryFilterWidget; @@ -140,8 +140,8 @@ class LibraryView : public AutoExpandingTreeView { QAction* edit_smart_playlist_; QAction* delete_smart_playlist_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr edit_tag_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr edit_tag_dialog_; bool is_in_keyboard_search_; diff --git a/src/moodbar/moodbarloader.cpp b/src/moodbar/moodbarloader.cpp index dacbe1e0e..2bface572 100644 --- a/src/moodbar/moodbarloader.cpp +++ b/src/moodbar/moodbarloader.cpp @@ -17,7 +17,7 @@ #include "moodbarloader.h" -#include +#include #include #include @@ -101,7 +101,7 @@ MoodbarLoader::Result MoodbarLoader::Load( } // Maybe it exists in the cache? - boost::scoped_ptr cache_device(cache_->data(url)); + std::unique_ptr cache_device(cache_->data(url)); if (cache_device) { qLog(Info) << "Loading cached moodbar data for" << filename; *data = cache_device->readAll(); diff --git a/src/networkremote/networkremote.h b/src/networkremote/networkremote.h index 5de164eb3..716538251 100644 --- a/src/networkremote/networkremote.h +++ b/src/networkremote/networkremote.h @@ -1,7 +1,7 @@ #ifndef NETWORKREMOTE_H #define NETWORKREMOTE_H -#include +#include #include #include @@ -30,10 +30,10 @@ public slots: void SendKitten(quint64 id, const QImage& kitten); private: - boost::scoped_ptr server_; - boost::scoped_ptr server_ipv6_; - boost::scoped_ptr incoming_data_parser_; - boost::scoped_ptr outgoing_data_creator_; + std::unique_ptr server_; + std::unique_ptr server_ipv6_; + std::unique_ptr incoming_data_parser_; + std::unique_ptr outgoing_data_creator_; quint16 port_; bool use_remote_; diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index 264da2add..fb243a3db 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -1,6 +1,8 @@ #ifndef OUTGOINGDATACREATOR_H #define OUTGOINGDATACREATOR_H +#include + #include #include #include @@ -24,7 +26,6 @@ #include "songinfo/ultimatelyricsreader.h" #include "remotecontrolmessages.pb.h" #include "remoteclient.h" -#include typedef QList ProviderList; @@ -91,7 +92,7 @@ private: int last_track_position_; bool aww_; - boost::scoped_ptr ultimate_reader_; + std::unique_ptr ultimate_reader_; ProviderList provider_list_; QMap results_; SongInfoFetcher* fetcher_; diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index 8a24ce7f8..cf7721dee 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -21,8 +21,6 @@ #include #include -#include - #include "playlistitem.h" #include "playlistsequence.h" #include "core/tagreaderclient.h" diff --git a/src/playlist/playlistsequence.h b/src/playlist/playlistsequence.h index cfdae520d..0141b09cf 100644 --- a/src/playlist/playlistsequence.h +++ b/src/playlist/playlistsequence.h @@ -18,12 +18,12 @@ #ifndef PLAYLISTSEQUENCE_H #define PLAYLISTSEQUENCE_H +#include + #include #include "core/settingsprovider.h" -#include - class QMenu; class Ui_PlaylistSequence; @@ -79,7 +79,7 @@ class PlaylistSequence : public QWidget { private: Ui_PlaylistSequence* ui_; - boost::scoped_ptr settings_; + std::unique_ptr settings_; QMenu* repeat_menu_; QMenu* shuffle_menu_; diff --git a/src/playlist/playlistview.h b/src/playlist/playlistview.h index 6b897188c..1fb1eca60 100644 --- a/src/playlist/playlistview.h +++ b/src/playlist/playlistview.h @@ -18,13 +18,13 @@ #ifndef PLAYLISTVIEW_H #define PLAYLISTVIEW_H -#include "playlist.h" +#include #include #include #include -#include +#include "playlist.h" class QCleanlooksStyle; @@ -52,7 +52,7 @@ public: QPainter* painter, const QWidget* widget) const; private: - boost::scoped_ptr cleanlooks_; + std::unique_ptr cleanlooks_; }; diff --git a/src/playlistparsers/xmlparser.h b/src/playlistparsers/xmlparser.h index ee1081f85..33750b028 100644 --- a/src/playlistparsers/xmlparser.h +++ b/src/playlistparsers/xmlparser.h @@ -23,8 +23,6 @@ #include #include -#include - class QDomDocument; class QDomNode; @@ -32,7 +30,7 @@ class XMLParser : public ParserBase { protected: XMLParser(LibraryBackendInterface* library, QObject* parent); - class StreamElement : public boost::noncopyable { + class StreamElement { public: StreamElement(const QString& name, QXmlStreamWriter* stream) : stream_(stream) { stream->writeStartElement(name); @@ -44,6 +42,7 @@ class XMLParser : public ParserBase { private: QXmlStreamWriter* stream_; + Q_DISABLE_COPY(StreamElement); }; }; diff --git a/src/smartplaylists/generator.h b/src/smartplaylists/generator.h index 7046e87ec..561e3b8f5 100644 --- a/src/smartplaylists/generator.h +++ b/src/smartplaylists/generator.h @@ -20,14 +20,13 @@ #include "playlist/playlistitem.h" -#include -#include +#include class LibraryBackend; namespace smart_playlists { -class Generator : public QObject, public boost::enable_shared_from_this { +class Generator : public QObject, public std::enable_shared_from_this { Q_OBJECT public: @@ -38,7 +37,7 @@ public: static const int kDefaultDynamicFuture; // Creates a new Generator of the given type - static boost::shared_ptr Create(const QString& type); + static std::shared_ptr Create(const QString& type); // Should be called before Load on a new Generator void set_library(LibraryBackend* backend) { backend_ = backend; } diff --git a/src/smartplaylists/generator_fwd.h b/src/smartplaylists/generator_fwd.h index db110b0bd..4f46aa135 100644 --- a/src/smartplaylists/generator_fwd.h +++ b/src/smartplaylists/generator_fwd.h @@ -18,13 +18,13 @@ #ifndef PLAYLISTGENERATOR_FWD_H #define PLAYLISTGENERATOR_FWD_H -#include +#include namespace smart_playlists { class Generator; -typedef boost::shared_ptr GeneratorPtr; +typedef std::shared_ptr GeneratorPtr; } // namespace diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp index e0991a582..2bc4f5b6d 100644 --- a/src/smartplaylists/querywizardplugin.cpp +++ b/src/smartplaylists/querywizardplugin.cpp @@ -55,7 +55,7 @@ public: SearchPreview* preview_; - boost::scoped_ptr ui_; + std::unique_ptr ui_; }; class QueryWizardPlugin::SortPage : public QWizardPage { @@ -161,8 +161,8 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { } void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { - boost::shared_ptr gen = - boost::dynamic_pointer_cast(g); + std::shared_ptr gen = + std::dynamic_pointer_cast(g); if (!gen) return; Search search = gen->search(); @@ -198,10 +198,10 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { } GeneratorPtr QueryWizardPlugin::CreateGenerator() const { - boost::shared_ptr gen(new QueryGenerator); + std::shared_ptr gen(new QueryGenerator); gen->Load(MakeSearch()); - return boost::static_pointer_cast(gen); + return std::static_pointer_cast(gen); } void QueryWizardPlugin::UpdateSortOrder() { diff --git a/src/smartplaylists/querywizardplugin.h b/src/smartplaylists/querywizardplugin.h index 8213d945b..8dded7c32 100644 --- a/src/smartplaylists/querywizardplugin.h +++ b/src/smartplaylists/querywizardplugin.h @@ -18,12 +18,13 @@ #ifndef QUERYWIZARDPLUGIN_H #define QUERYWIZARDPLUGIN_H -#include "search.h" #include "wizardplugin.h" +#include + #include -#include +#include "search.h" class Ui_SmartPlaylistQuerySearchPage; class Ui_SmartPlaylistQuerySortPage; @@ -70,7 +71,7 @@ private: Search MakeSearch() const; SearchPage* search_page_; - boost::scoped_ptr sort_ui_; + std::unique_ptr sort_ui_; int previous_scrollarea_max_; }; diff --git a/src/smartplaylists/searchpreview.cpp b/src/smartplaylists/searchpreview.cpp index 08c6065f0..d16db4c25 100644 --- a/src/smartplaylists/searchpreview.cpp +++ b/src/smartplaylists/searchpreview.cpp @@ -15,14 +15,17 @@ along with Clementine. If not, see . */ -#include "querygenerator.h" #include "searchpreview.h" #include "ui_searchpreview.h" -#include "playlist/playlist.h" + +#include #include #include +#include "querygenerator.h" +#include "playlist/playlist.h" + namespace smart_playlists { typedef QFuture Future; @@ -94,7 +97,7 @@ PlaylistItemList DoRunSearch(GeneratorPtr gen) { void SearchPreview::RunSearch(const Search& search) { generator_.reset(new QueryGenerator); generator_->set_library(backend_); - boost::dynamic_pointer_cast(generator_)->Load(search); + std::dynamic_pointer_cast(generator_)->Load(search); ui_->busy_container->show(); ui_->count_label->hide(); @@ -109,7 +112,7 @@ void SearchPreview::SearchFinished() { FutureWatcher* watcher = static_cast(sender()); watcher->deleteLater(); - last_search_ = boost::dynamic_pointer_cast(generator_)->search(); + last_search_ = std::dynamic_pointer_cast(generator_)->search(); generator_.reset(); if (pending_search_.is_valid() && pending_search_ != last_search_) { diff --git a/src/songinfo/echonestbiographies.cpp b/src/songinfo/echonestbiographies.cpp index 720b7ab08..20ed63fc5 100644 --- a/src/songinfo/echonestbiographies.cpp +++ b/src/songinfo/echonestbiographies.cpp @@ -16,18 +16,19 @@ */ #include "echonestbiographies.h" -#include "songinfotextview.h" -#include "core/logging.h" + +#include #include -#include +#include "songinfotextview.h" +#include "core/logging.h" struct EchoNestBiographies::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; EchoNestBiographies::EchoNestBiographies() { @@ -46,7 +47,7 @@ EchoNestBiographies::EchoNestBiographies() { } void EchoNestBiographies::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchBiographies(); @@ -70,7 +71,7 @@ void EchoNestBiographies::RequestFinished() { QSet already_seen; - foreach (const Echonest::Biography& bio, request->artist_->biographies()) { + for (const Echonest::Biography& bio : request->artist_->biographies()) { QString canonical_site = bio.site().toLower(); canonical_site.replace(QRegExp("[^a-z]"),""); diff --git a/src/songinfo/echonestbiographies.h b/src/songinfo/echonestbiographies.h index 5223fa114..8e8175fd1 100644 --- a/src/songinfo/echonestbiographies.h +++ b/src/songinfo/echonestbiographies.h @@ -18,9 +18,9 @@ #ifndef ECHONESTBIOGRAPHIES_H #define ECHONESTBIOGRAPHIES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -40,7 +40,7 @@ private: QMap site_icons_; struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/echonestimages.cpp b/src/songinfo/echonestimages.cpp index 87a5c8559..b16e9c20c 100644 --- a/src/songinfo/echonestimages.cpp +++ b/src/songinfo/echonestimages.cpp @@ -16,21 +16,22 @@ */ #include "echonestimages.h" -#include "core/logging.h" + +#include #include -#include +#include "core/logging.h" struct EchoNestImages::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestImages::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchImages(); diff --git a/src/songinfo/echonestimages.h b/src/songinfo/echonestimages.h index ddd3f66e5..25585b9bb 100644 --- a/src/songinfo/echonestimages.h +++ b/src/songinfo/echonestimages.h @@ -18,9 +18,9 @@ #ifndef ECHONESTIMAGES_H #define ECHONESTIMAGES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -35,7 +35,7 @@ private slots: private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/echonesttags.cpp b/src/songinfo/echonesttags.cpp index 5e4c902ab..6ed53afe2 100644 --- a/src/songinfo/echonesttags.cpp +++ b/src/songinfo/echonesttags.cpp @@ -16,22 +16,23 @@ */ #include "echonesttags.h" -#include "tagwidget.h" -#include "core/logging.h" + +#include #include -#include +#include "tagwidget.h" +#include "core/logging.h" struct EchoNestTags::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestTags::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchTerms(); @@ -65,7 +66,7 @@ void EchoNestTags::RequestFinished() { widget->SetIcon(data.icon_); - foreach (const Echonest::Term& term, request->artist_->terms()) { + for (const Echonest::Term& term : request->artist_->terms()) { widget->AddTag(term.name()); if (widget->count() >= 10) break; diff --git a/src/songinfo/echonesttags.h b/src/songinfo/echonesttags.h index 7ef9284b3..96bddd86d 100644 --- a/src/songinfo/echonesttags.h +++ b/src/songinfo/echonesttags.h @@ -18,9 +18,9 @@ #ifndef ECHONESTTAGS_H #define ECHONESTTAGS_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -35,7 +35,7 @@ private slots: private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/songinfoview.h b/src/songinfo/songinfoview.h index 744a4d5c0..031226b5b 100644 --- a/src/songinfo/songinfoview.h +++ b/src/songinfo/songinfoview.h @@ -18,9 +18,9 @@ #ifndef SONGINFOVIEW_H #define SONGINFOVIEW_H -#include "songinfobase.h" +#include -#include +#include "songinfobase.h" class UltimateLyricsProvider; class UltimateLyricsReader; @@ -52,7 +52,7 @@ private slots: void UltimateLyricsParsed(); private: - boost::scoped_ptr ultimate_reader_; + std::unique_ptr ultimate_reader_; }; #endif // SONGINFOVIEW_H diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp index ccab2ce4c..95bcf0037 100644 --- a/src/songinfo/ultimatelyricsprovider.cpp +++ b/src/songinfo/ultimatelyricsprovider.cpp @@ -26,8 +26,6 @@ #include #include -#include - const int UltimateLyricsProvider::kRedirectLimit = 5; diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index ab98af032..43112cca3 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -211,7 +211,7 @@ void AlbumCoverManager::showEvent(QShowEvent *) { void AlbumCoverManager::closeEvent(QCloseEvent* e) { if (!cover_fetching_tasks_.isEmpty()) { - boost::scoped_ptr message_box(new QMessageBox( + std::unique_ptr message_box(new QMessageBox( QMessageBox::Question, tr("Really cancel?"), tr("Closing this window will stop searching for album covers."), QMessageBox::Abort, this)); diff --git a/src/ui/albumcovermanagerlist.cpp b/src/ui/albumcovermanagerlist.cpp index a73cb9f5a..faa671f51 100644 --- a/src/ui/albumcovermanagerlist.cpp +++ b/src/ui/albumcovermanagerlist.cpp @@ -15,16 +15,17 @@ along with Clementine. If not, see . */ -#include "albumcovermanager.h" #include "albumcovermanagerlist.h" -#include "library/librarybackend.h" -#include "playlist/songmimedata.h" -#include +#include #include #include +#include "albumcovermanager.h" +#include "library/librarybackend.h" +#include "playlist/songmimedata.h" + AlbumCoverManagerList::AlbumCoverManagerList(QWidget *parent) : QListWidget(parent), manager_(NULL) @@ -48,7 +49,7 @@ QMimeData* AlbumCoverManagerList::mimeData(const QList items) } // Get the QAbstractItemModel data so the picture works - boost::scoped_ptr orig_data(QListWidget::mimeData(items)); + std::unique_ptr orig_data(QListWidget::mimeData(items)); SongMimeData* mime_data = new SongMimeData; mime_data->backend = manager_->backend(); diff --git a/src/ui/albumcoversearcher.h b/src/ui/albumcoversearcher.h index 710e9ce8a..f028cce40 100644 --- a/src/ui/albumcoversearcher.h +++ b/src/ui/albumcoversearcher.h @@ -18,14 +18,12 @@ #ifndef ALBUMCOVERSEARCHER_H #define ALBUMCOVERSEARCHER_H -#include "covers/albumcoverfetcher.h" -#include "covers/albumcoverloaderoptions.h" - #include #include #include -#include +#include "covers/albumcoverfetcher.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverLoader; class Application; @@ -35,7 +33,6 @@ class QModelIndex; class QStandardItem; class QStandardItemModel; - class SizeOverlayDelegate : public QStyledItemDelegate { public: static const int kMargin; diff --git a/src/ui/globalshortcutgrabber.mm b/src/ui/globalshortcutgrabber.mm index dfefc5feb..b46536ad1 100644 --- a/src/ui/globalshortcutgrabber.mm +++ b/src/ui/globalshortcutgrabber.mm @@ -24,11 +24,9 @@ #include -#include - #import "core/mac_utilities.h" -class MacMonitorWrapper : boost::noncopyable { +class MacMonitorWrapper { public: explicit MacMonitorWrapper(id monitor) : local_monitor_(monitor) { @@ -40,6 +38,7 @@ class MacMonitorWrapper : boost::noncopyable { private: id local_monitor_; + Q_DISABLE_COPY(MacMonitorWrapper); }; bool GlobalShortcutGrabber::HandleMacEvent(NSEvent* event) { diff --git a/src/ui/globalshortcutssettingspage.h b/src/ui/globalshortcutssettingspage.h index dd830ee74..593b14a5c 100644 --- a/src/ui/globalshortcutssettingspage.h +++ b/src/ui/globalshortcutssettingspage.h @@ -18,11 +18,11 @@ #ifndef GLOBALSHORTCUTSSETTINGSPAGE_H #define GLOBALSHORTCUTSSETTINGSPAGE_H +#include + #include #include -#include - #include "core/globalshortcuts.h" #include "ui/settingspage.h" @@ -64,7 +64,7 @@ private: Ui_GlobalShortcutsSettingsPage* ui_; bool initialised_; - boost::scoped_ptr grabber_; + std::unique_ptr grabber_; QSettings settings_; QMap shortcuts_; diff --git a/src/ui/macsystemtrayicon.h b/src/ui/macsystemtrayicon.h index 154473bd7..1cfa5f6ab 100644 --- a/src/ui/macsystemtrayicon.h +++ b/src/ui/macsystemtrayicon.h @@ -18,14 +18,13 @@ #ifndef MACSYSTEMTRAYICON_H #define MACSYSTEMTRAYICON_H -#include "systemtrayicon.h" +#include -#include -#include +#include "systemtrayicon.h" class MacSystemTrayIconPrivate; -class MacSystemTrayIcon : public SystemTrayIcon, boost::noncopyable { +class MacSystemTrayIcon : public SystemTrayIcon { Q_OBJECT public: @@ -52,8 +51,8 @@ protected: private: QPixmap orange_icon_; QPixmap grey_icon_; - - boost::scoped_ptr p_; + std::unique_ptr p_; + Q_DISABLE_COPY(MacSystemTrayIcon); }; #endif // MACSYSTEMTRAYICON_H diff --git a/src/ui/macsystemtrayicon.mm b/src/ui/macsystemtrayicon.mm index 3142c14ea..b15282d7a 100644 --- a/src/ui/macsystemtrayicon.mm +++ b/src/ui/macsystemtrayicon.mm @@ -56,7 +56,7 @@ } @end -class MacSystemTrayIconPrivate : boost::noncopyable { +class MacSystemTrayIconPrivate { public: MacSystemTrayIconPrivate() { dock_menu_ = [[NSMenu alloc] initWithTitle:@"DockMenu"]; @@ -153,6 +153,8 @@ class MacSystemTrayIconPrivate : boost::noncopyable { NSMenuItem* now_playing_; NSMenuItem* now_playing_artist_; NSMenuItem* now_playing_title_; + + Q_DISABLE_COPY(MacSystemTrayIconPrivate); }; MacSystemTrayIcon::MacSystemTrayIcon(QObject* parent) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index bc9a43f24..303016a43 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -174,18 +174,8 @@ MainWindow::MainWindow(Application* app, device_view_(new DeviceView(this)), song_info_view_(new SongInfoView(this)), artist_info_view_(new ArtistInfoView(this)), - settings_dialog_(NULL), - cover_manager_(NULL), equalizer_(new Equalizer), - error_dialog_(NULL), organise_dialog_(new OrganiseDialog(app_->task_manager())), - queue_manager_(NULL), -#ifdef ENABLE_VISUALISATIONS - visualisation_(NULL), -#endif -#ifdef HAVE_WIIMOTEDEV - wiimotedev_shortcuts_(NULL), -#endif playlist_menu_(new QMenu(this)), playlist_add_to_another_(NULL), playlistitem_actions_separator_(NULL), diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 9d25ab01e..b62357833 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -18,7 +18,7 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include +#include #include #include @@ -278,8 +278,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { Application* app_; SystemTrayIcon* tray_icon_; OSD* osd_; - boost::scoped_ptr edit_tag_dialog_; - boost::scoped_ptr about_dialog_; + std::unique_ptr edit_tag_dialog_; + std::unique_ptr about_dialog_; GlobalShortcuts* global_shortcuts_; Remote* remote_; @@ -293,25 +293,25 @@ class MainWindow : public QMainWindow, public PlatformInterface { SongInfoView* song_info_view_; ArtistInfoView* artist_info_view_; - boost::scoped_ptr settings_dialog_; - boost::scoped_ptr add_stream_dialog_; - boost::scoped_ptr cover_manager_; - boost::scoped_ptr equalizer_; - boost::scoped_ptr transcode_dialog_; - boost::scoped_ptr error_dialog_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr queue_manager_; + std::unique_ptr settings_dialog_; + std::unique_ptr add_stream_dialog_; + std::unique_ptr cover_manager_; + std::unique_ptr equalizer_; + std::unique_ptr transcode_dialog_; + std::unique_ptr error_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr queue_manager_; - boost::scoped_ptr tag_fetcher_; - boost::scoped_ptr track_selection_dialog_; + std::unique_ptr tag_fetcher_; + std::unique_ptr track_selection_dialog_; PlaylistItemList autocomplete_tag_items_; #ifdef ENABLE_VISUALISATIONS - boost::scoped_ptr visualisation_; + std::unique_ptr visualisation_; #endif #ifdef HAVE_WIIMOTEDEV - boost::scoped_ptr wiimotedev_shortcuts_; + std::unique_ptr wiimotedev_shortcuts_; #endif QAction* library_show_all_; diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index 30b6dfba1..9ac05e01f 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -18,6 +18,8 @@ #ifndef ORGANISEDIALOG_H #define ORGANISEDIALOG_H +#include + #include #include #include @@ -25,8 +27,6 @@ #include "core/organiseformat.h" #include "core/song.h" -#include - class LibraryWatcher; class OrganiseErrorDialog; class TaskManager; @@ -80,7 +80,7 @@ private: SongList preview_songs_; quint64 total_size_; - boost::scoped_ptr error_dialog_; + std::unique_ptr error_dialog_; bool resized_by_user_; }; diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp index 536c5ccbe..673bb95a2 100644 --- a/src/visualisations/projectmvisualisation.cpp +++ b/src/visualisations/projectmvisualisation.cpp @@ -48,15 +48,13 @@ ProjectMVisualisation::ProjectMVisualisation(QObject *parent) : QGraphicsScene(parent), - projectm_(NULL), - preset_model_(NULL), + preset_model_(nullptr), mode_(Random), duration_(15), - texture_size_(512) -{ + texture_size_(512) { connect(this, SIGNAL(sceneRectChanged(QRectF)), SLOT(SceneRectChanged(QRectF))); - for (int i=0 ; i + #include #include #include -#include - #include "engines/bufferconsumer.h" class projectM; @@ -77,12 +77,12 @@ private: int IndexOfPreset(const QString& path) const; private: - boost::scoped_ptr projectm_; + std::unique_ptr projectm_; ProjectMPresetModel* preset_model_; Mode mode_; int duration_; - boost::scoped_ptr temporary_font_; + std::unique_ptr temporary_font_; std::vector default_rating_list_; diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h index cbdbb2167..5d9d412fa 100644 --- a/src/widgets/fancytabwidget.h +++ b/src/widgets/fancytabwidget.h @@ -30,6 +30,8 @@ #ifndef FANCYTABWIDGET_H #define FANCYTABWIDGET_H +#include + #include #include #include @@ -37,8 +39,6 @@ #include #include -#include - class QActionGroup; class QMenu; class QPainter; @@ -219,7 +219,7 @@ private: QMenu* menu_; - boost::scoped_ptr proxy_style_; + std::unique_ptr proxy_style_; }; } // namespace Internal diff --git a/src/widgets/nowplayingwidget.h b/src/widgets/nowplayingwidget.h index 498e1a44e..aee49956a 100644 --- a/src/widgets/nowplayingwidget.h +++ b/src/widgets/nowplayingwidget.h @@ -18,12 +18,12 @@ #ifndef NOWPLAYINGWIDGET_H #define NOWPLAYINGWIDGET_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverChoiceController; class Application; @@ -141,8 +141,8 @@ private: static const char* kHypnotoadPath; QAction* bask_in_his_glory_action_; - boost::scoped_ptr hypnotoad_; - boost::scoped_ptr big_hypnotoad_; + std::unique_ptr hypnotoad_; + std::unique_ptr big_hypnotoad_; bool aww_; KittenLoader* kittens_; diff --git a/src/widgets/osd.h b/src/widgets/osd.h index dddd7648e..af1dacbfd 100644 --- a/src/widgets/osd.h +++ b/src/widgets/osd.h @@ -18,6 +18,8 @@ #ifndef OSD_H #define OSD_H +#include + #include #include #include @@ -36,7 +38,6 @@ class QDBusPendingCallWatcher; #ifdef HAVE_DBUS # include -# include QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); @@ -136,7 +137,7 @@ class OSD : public QObject { #endif // Q_OS_DARWIN #ifdef HAVE_DBUS - boost::scoped_ptr interface_; + std::unique_ptr interface_; uint notification_id_; QDateTime last_notification_time_; #endif diff --git a/src/widgets/osd_x11.cpp b/src/widgets/osd_x11.cpp index afe8e0db1..831b9761a 100644 --- a/src/widgets/osd_x11.cpp +++ b/src/widgets/osd_x11.cpp @@ -15,19 +15,20 @@ along with Clementine. If not, see . */ -#include "config.h" #include "osd.h" -#include "core/logging.h" + +#include #include +#include "config.h" +#include "core/logging.h" + #ifdef HAVE_DBUS #include "dbus/notification.h" #include #include -using boost::scoped_ptr; - QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image) { if (image.isNull()) { // Sometimes this gets called with a null QImage for no obvious reason. @@ -142,7 +143,7 @@ void OSD::ShowMessageNative(const QString& summary, const QString& message, #ifdef HAVE_DBUS void OSD::CallFinished(QDBusPendingCallWatcher* watcher) { - scoped_ptr w(watcher); + std::unique_ptr w(watcher); QDBusPendingReply reply = *watcher; if (reply.isError()) { diff --git a/src/wiimotedev/shortcuts.cpp b/src/wiimotedev/shortcuts.cpp index c01e4f4f8..6379a5ab1 100644 --- a/src/wiimotedev/shortcuts.cpp +++ b/src/wiimotedev/shortcuts.cpp @@ -36,7 +36,6 @@ WiimotedevShortcuts::WiimotedevShortcuts(OSD* osd, QWidget* window, QObject* par wiimotedev_device_(1), wiimotedev_enable_(true), wiimotedev_focus_(false), - wiimotedev_iface_(NULL), wiimotedev_notification_(true) { connect(this, SIGNAL(WiiremoteActived(int)), osd_, SLOT(WiiremoteActived(int))); diff --git a/src/wiimotedev/shortcuts.h b/src/wiimotedev/shortcuts.h index 046a5829b..be0206789 100644 --- a/src/wiimotedev/shortcuts.h +++ b/src/wiimotedev/shortcuts.h @@ -18,8 +18,9 @@ #ifndef WIIMOTEDEV_SHORTCUTS_H #define WIIMOTEDEV_SHORTCUTS_H +#include + #include -#include #include "dbus/wiimotedev.h" #include "core/player.h" @@ -77,7 +78,7 @@ private: quint32 wiimotedev_device_; bool wiimotedev_enable_; bool wiimotedev_focus_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; bool wiimotedev_notification_; QHash actions_; diff --git a/src/wiimotedev/wiimoteshortcutgrabber.h b/src/wiimotedev/wiimoteshortcutgrabber.h index 130e167e8..d02c9fc8e 100644 --- a/src/wiimotedev/wiimoteshortcutgrabber.h +++ b/src/wiimotedev/wiimoteshortcutgrabber.h @@ -18,11 +18,11 @@ #ifndef WIIMOTESHORTCUTGRABBER_H #define WIIMOTESHORTCUTGRABBER_H +#include + #include #include -#include - #include "wiimotesettingspage.h" #include "dbus/wiimotedev.h" @@ -47,7 +47,7 @@ private: Ui_WiimoteShortcutGrabber* ui_; WiimoteSettingsPage* config_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; quint32 wiimotedev_device_; quint64 wiimotedev_buttons_; From d309d4ab2740de9d98b13ef467f2d54e5cff63af Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 14:48:00 +0100 Subject: [PATCH 088/362] Use c++11 instead of boost where possible. --- CMakeLists.txt | 18 ----- ext/libclementine-common/core/closure.cpp | 4 +- ext/libclementine-common/core/closure.h | 33 +++++---- ext/libclementine-common/core/concurrentrun.h | 21 +++--- ext/libclementine-tagreader/fmpsparser.cpp | 11 ++- ext/libclementine-tagreader/tagreader.cpp | 18 +++-- src/CMakeLists.txt | 1 + src/config.h.in | 1 - src/core/crashreporting.h | 6 +- src/core/deletefiles.cpp | 7 +- src/core/deletefiles.h | 8 +-- src/core/macglobalshortcutbackend.h | 6 +- src/core/mergedproxymodel.h | 3 + src/core/mpris2.h | 2 - src/core/musicstorage.h | 10 +-- src/core/organise.cpp | 21 +++--- src/core/organise.h | 8 +-- src/core/player.cpp | 17 ++--- src/core/player.h | 6 +- src/core/songloader.cpp | 12 ++-- src/core/songloader.h | 10 +-- src/core/utilities.cpp | 4 +- src/core/utilities.h | 6 +- src/covers/albumcoverfetcher.h | 2 - src/covers/currentartloader.h | 10 +-- src/devices/connecteddevice.h | 8 +-- src/devices/devicekitlister.h | 6 +- src/devices/devicelister.h | 2 - src/devices/devicemanager.cpp | 16 ++--- src/devices/devicemanager.h | 11 +-- src/devices/deviceproperties.cpp | 22 +++--- src/devices/deviceview.cpp | 35 +++++----- src/devices/deviceview.h | 6 +- src/devices/giolister.cpp | 16 +++-- src/devices/gpodloader.cpp | 5 +- src/devices/gpodloader.h | 7 +- src/devices/mtpdevice.h | 6 +- src/devices/mtploader.cpp | 12 ++-- src/devices/mtploader.h | 8 +-- src/engines/enginebase.h | 5 +- src/engines/gstengine.cpp | 26 +++---- src/engines/gstengine.h | 18 ++--- src/engines/gstenginepipeline.cpp | 31 +++++---- src/engines/gstenginepipeline.h | 5 +- src/globalsearch/globalsearchview.cpp | 46 +++++++------ src/globalsearch/spotifysearchprovider.cpp | 8 +-- src/internet/digitallyimportedservicebase.h | 4 +- src/internet/groovesharkservice.cpp | 6 +- src/internet/lastfmservice.cpp | 3 - src/internet/lastfmservice.h | 8 +-- src/internet/magnatunedownloaddialog.cpp | 19 +++--- src/internet/magnatunedownloaddialog.h | 6 +- src/internet/magnatuneservice.cpp | 2 - src/internet/savedradio.h | 6 +- src/internet/skydriveservice.cpp | 5 +- src/internet/spotifyservice.h | 2 - src/library/groupbydialog.h | 5 ++ src/library/library.h | 2 - src/library/librarydirectorymodel.cpp | 2 +- src/library/librarydirectorymodel.h | 6 +- src/library/libraryfilterwidget.h | 6 +- src/library/librarymodel.cpp | 26 ++++--- src/library/librarymodel.h | 2 - src/library/libraryview.cpp | 29 ++++---- src/library/libraryview.h | 12 ++-- src/main.cpp | 33 +++++---- src/moodbar/moodbarloader.cpp | 4 +- src/networkremote/networkremote.h | 10 +-- src/networkremote/outgoingdatacreator.h | 5 +- src/playlist/playlist.cpp | 54 +++++++-------- src/playlist/playlist.h | 2 - src/playlist/playlistbackend.cpp | 42 +++++++----- src/playlist/playlistbackend.h | 6 +- src/playlist/playlistitem.h | 8 +-- src/playlist/playlistsequence.h | 6 +- src/playlist/playlistview.h | 6 +- src/playlistparsers/xmlparser.h | 5 +- src/smartplaylists/generator.h | 7 +- src/smartplaylists/generator_fwd.h | 4 +- src/smartplaylists/querywizardplugin.cpp | 10 +-- src/smartplaylists/querywizardplugin.h | 7 +- src/smartplaylists/searchpreview.cpp | 11 +-- src/songinfo/echonestbiographies.cpp | 13 ++-- src/songinfo/echonestbiographies.h | 6 +- src/songinfo/echonestimages.cpp | 9 +-- src/songinfo/echonestimages.h | 6 +- src/songinfo/echonesttags.cpp | 13 ++-- src/songinfo/echonesttags.h | 6 +- src/songinfo/songinfoview.h | 6 +- src/songinfo/ultimatelyricsprovider.cpp | 2 - src/transcoder/transcoder.cpp | 8 +-- src/transcoder/transcoder.h | 7 +- src/ui/albumcovermanager.cpp | 2 +- src/ui/albumcovermanagerlist.cpp | 11 +-- src/ui/albumcoversearcher.h | 7 +- src/ui/globalshortcutgrabber.mm | 5 +- src/ui/globalshortcutssettingspage.h | 6 +- src/ui/macsystemtrayicon.h | 11 ++- src/ui/macsystemtrayicon.mm | 4 +- src/ui/mainwindow.cpp | 67 ++++++++----------- src/ui/mainwindow.h | 32 ++++----- src/ui/organisedialog.cpp | 23 ++++--- src/ui/organisedialog.h | 1 + src/visualisations/projectmvisualisation.cpp | 8 +-- src/visualisations/projectmvisualisation.h | 8 +-- src/widgets/fancytabwidget.h | 6 +- src/widgets/fileview.h | 6 +- src/widgets/nowplayingwidget.h | 12 ++-- src/widgets/osd.h | 5 +- src/widgets/osd_x11.cpp | 11 +-- src/wiimotedev/shortcuts.cpp | 1 - src/wiimotedev/shortcuts.h | 5 +- src/wiimotedev/wiimoteshortcutgrabber.h | 6 +- 113 files changed, 616 insertions(+), 612 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9764981ca..267670e6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,24 +20,6 @@ if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") endif () -set(CMAKE_REQUIRED_FLAGS "-std=c++0x") -check_cxx_source_compiles( - "#include - int main() { - std::unordered_map m; - return 0; - } - " - USE_STD_UNORDERED_MAP) -check_cxx_source_compiles( - "int main() { - [](){}(); - } - " - HAVE_LAMBDAS) -unset(CMAKE_REQUIRED_FLAGS) - - if (UNIX AND NOT APPLE) set(LINUX 1) endif (UNIX AND NOT APPLE) diff --git a/ext/libclementine-common/core/closure.cpp b/ext/libclementine-common/core/closure.cpp index ad14c9413..e2c27c13f 100644 --- a/ext/libclementine-common/core/closure.cpp +++ b/ext/libclementine-common/core/closure.cpp @@ -33,7 +33,7 @@ ClosureBase::~ClosureBase() { CallbackClosure::CallbackClosure( QObject* sender, const char* signal, - boost::function callback) + std::function callback) : ClosureBase(new ObjectHelper(sender, signal, this)), callback_(callback) { } @@ -67,7 +67,7 @@ void Unpack(QList*) {} _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - boost::function callback) { + std::function callback) { return new _detail::CallbackClosure( sender, signal, callback); } diff --git a/ext/libclementine-common/core/closure.h b/ext/libclementine-common/core/closure.h index 155df38bd..bb874d05f 100644 --- a/ext/libclementine-common/core/closure.h +++ b/ext/libclementine-common/core/closure.h @@ -19,22 +19,18 @@ #define CLOSURE_H #include +#include #include #include #include -#include -#include -#include -#include - namespace _detail { class ObjectHelper; // Interface for ObjectHelper to call on signal emission. -class ClosureBase : boost::noncopyable { +class ClosureBase { public: virtual ~ClosureBase(); virtual void Invoke() = 0; @@ -45,6 +41,9 @@ class ClosureBase : boost::noncopyable { protected: explicit ClosureBase(ObjectHelper*); ObjectHelper* helper_; + + private: + Q_DISABLE_COPY(ClosureBase); }; // QObject helper as templated QObjects do not work. @@ -62,7 +61,7 @@ class ObjectHelper : public QObject { void Invoked(); private: - boost::scoped_ptr closure_; + std::unique_ptr closure_; Q_DISABLE_COPY(ObjectHelper); }; @@ -92,8 +91,8 @@ class Closure : public ClosureBase { const char* slot, const Args&... args) : ClosureBase(new ObjectHelper(sender, signal, this)), - // boost::bind is the easiest way to store an argument list. - function_(boost::bind(&Closure::Call, this, args...)), + // std::bind is the easiest way to store an argument list. + function_(std::bind(&Closure::Call, this, args...)), receiver_(receiver) { const QMetaObject* meta_receiver = receiver->metaObject(); QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1); @@ -126,7 +125,7 @@ class Closure : public ClosureBase { arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); } - boost::function function_; + std::function function_; QObject* receiver_; QMetaMethod slot_; }; @@ -158,12 +157,12 @@ class CallbackClosure : public ClosureBase { CallbackClosure( QObject* sender, const char* signal, - boost::function callback); + std::function callback); virtual void Invoke(); private: - boost::function callback_; + std::function callback_; }; } // namespace _detail @@ -194,15 +193,15 @@ _detail::ClosureBase* NewClosure( _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - boost::function callback); + std::function callback); template _detail::ClosureBase* NewClosure( QObject* sender, const char* signal, - boost::function callback, + std::function callback, const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); + return NewClosure(sender, signal, std::bind(callback, args...)); } template @@ -211,7 +210,7 @@ _detail::ClosureBase* NewClosure( const char* signal, void (*callback)(Args...), const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); + return NewClosure(sender, signal, std::bind(callback, args...)); } template @@ -220,7 +219,7 @@ _detail::ClosureBase* NewClosure( const char* signal, T* receiver, Unused (T::*callback)(Args...), const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, receiver, args...)); + return NewClosure(sender, signal, std::bind(callback, receiver, args...)); } diff --git a/ext/libclementine-common/core/concurrentrun.h b/ext/libclementine-common/core/concurrentrun.h index 119ee083a..58fc05577 100644 --- a/ext/libclementine-common/core/concurrentrun.h +++ b/ext/libclementine-common/core/concurrentrun.h @@ -18,8 +18,7 @@ #ifndef CONCURRENTRUN_H #define CONCURRENTRUN_H -#include -#include +#include #include #include @@ -69,9 +68,9 @@ class ThreadFunctorBase : public QFutureInterface, public QRunnable template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, + ThreadFunctor(std::function function, Args... args) - : function_(boost::bind(function, args...)) { + : function_(std::bind(function, args...)) { } virtual void run() { @@ -80,16 +79,16 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; // Partial specialisation for void return type. template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, + ThreadFunctor(std::function function, Args... args) - : function_(boost::bind(function, args...)) { + : function_(std::bind(function, args...)) { } virtual void run() { @@ -98,7 +97,7 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; @@ -111,7 +110,7 @@ namespace ConcurrentRun { template QFuture Run( QThreadPool* threadpool, - boost::function function) { + std::function function) { return (new ThreadFunctor(function))->Start(threadpool); } @@ -119,7 +118,7 @@ namespace ConcurrentRun { template QFuture Run( QThreadPool* threadpool, - boost::function function, + std::function function, const Args&... args) { return (new ThreadFunctor( function, args...))->Start(threadpool); @@ -132,7 +131,7 @@ namespace ConcurrentRun { ReturnType (*function) (Args...), const Args&... args) { return Run( - threadpool, boost::function(function), args...); + threadpool, std::function(function), args...); } } diff --git a/ext/libclementine-tagreader/fmpsparser.cpp b/ext/libclementine-tagreader/fmpsparser.cpp index 113f9f316..5eca59207 100644 --- a/ext/libclementine-tagreader/fmpsparser.cpp +++ b/ext/libclementine-tagreader/fmpsparser.cpp @@ -17,10 +17,13 @@ #include "fmpsparser.h" +#include + #include #include -#include +using std::placeholders::_1; +using std::placeholders::_2; FMPSParser::FMPSParser() : // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the way @@ -105,12 +108,14 @@ int FMPSParser::ParseValueRef(const QStringRef& data, QVariant* ret) const { // Parses an inner list - a list of values int FMPSParser::ParseListRef(const QStringRef& data, QVariantList* ret) const { - return ParseContainer<':'>(data, boost::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); + return ParseContainer<':'>( + data, std::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); } // Parses an outer list - a list of lists int FMPSParser::ParseListListRef(const QStringRef& data, Result* ret) const { - return ParseContainer<';'>(data, boost::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); + return ParseContainer<';'>( + data, std::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); } // Convenience functions that take QStrings instead of QStringRefs. Use the diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp index b94a64214..62e5f631f 100644 --- a/ext/libclementine-tagreader/tagreader.cpp +++ b/ext/libclementine-tagreader/tagreader.cpp @@ -17,6 +17,8 @@ #include "tagreader.h" +#include + #include #include #include @@ -51,15 +53,11 @@ #include -#include - #include "fmpsparser.h" #include "core/logging.h" #include "core/messagehandler.h" #include "core/timeconstants.h" -using boost::scoped_ptr; - // Taglib added support for FLAC pictures in 1.7.0 #if (TAGLIB_MAJOR_VERSION > 1) || (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) # define TAGLIB_HAS_FLAC_PICTURELIST @@ -123,7 +121,7 @@ void TagReader::ReadFile(const QString& filename, song->set_mtime(info.lastModified().toTime_t()); song->set_ctime(info.created().toTime_t()); - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if(fileref->isNull()) { qLog(Info) << "TagLib hasn't been able to read " << filename << " file"; return; @@ -530,7 +528,7 @@ bool TagReader::SaveFile(const QString& filename, qLog(Debug) << "Saving tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -591,7 +589,7 @@ bool TagReader::SaveSongStatisticsToFile(const QString& filename, qLog(Debug) << "Saving song statistics tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -647,7 +645,7 @@ bool TagReader::SaveSongRatingToFile(const QString& filename, qLog(Debug) << "Saving song rating tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; @@ -749,7 +747,7 @@ void TagReader::SetTextFrame(const char* id, const std::string& value, bool TagReader::IsMediaFile(const QString& filename) const { qLog(Debug) << "Checking for valid file" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); return !fileref->isNull() && fileref->tag(); } @@ -865,7 +863,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, CloudStream* stream = new CloudStream( download_url, title, size, authorisation_header, network_); stream->Precache(); - scoped_ptr tag; + std::unique_ptr tag; if (mime_type == "audio/mpeg" && title.endsWith(".mp3")) { tag.reset(new TagLib::MPEG::File( stream, // Takes ownership. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 63f004be2..af0874480 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,6 +25,7 @@ if (QT_VERSION_MINOR GREATER 5) endif(QT_VERSION_MINOR GREATER 7) endif(QT_VERSION_MINOR GREATER 5) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +add_definitions(-DBOOST_BIND_NO_PLACEHOLDERS) include_directories(${CMAKE_BINARY_DIR}) include_directories(${GLIB_INCLUDE_DIRS}) diff --git a/src/config.h.in b/src/config.h.in index 56a9bcee8..6fb4afcc0 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -46,7 +46,6 @@ #cmakedefine TAGLIB_HAS_OPUS #cmakedefine USE_INSTALL_PREFIX #cmakedefine USE_SYSTEM_PROJECTM -#cmakedefine USE_STD_UNORDERED_MAP #cmakedefine HAVE_LAMBDAS #endif // CONFIG_H_IN diff --git a/src/core/crashreporting.h b/src/core/crashreporting.h index 54d30558a..a627d0bb0 100644 --- a/src/core/crashreporting.h +++ b/src/core/crashreporting.h @@ -18,9 +18,9 @@ #ifndef CRASHREPORTING_H #define CRASHREPORTING_H -#include +#include -#include +#include class QFile; class QNetworkAccessManager; @@ -64,7 +64,7 @@ private: static const char* kSendCrashReportOption; static char* sPath; - boost::scoped_ptr handler_; + std::unique_ptr handler_; }; diff --git a/src/core/deletefiles.cpp b/src/core/deletefiles.cpp index e881dc947..8a65e34ac 100644 --- a/src/core/deletefiles.cpp +++ b/src/core/deletefiles.cpp @@ -16,18 +16,19 @@ */ #include "deletefiles.h" -#include "musicstorage.h" -#include "taskmanager.h" #include #include #include #include +#include "musicstorage.h" +#include "taskmanager.h" + const int DeleteFiles::kBatchSize = 50; DeleteFiles::DeleteFiles(TaskManager* task_manager, - boost::shared_ptr storage) + std::shared_ptr storage) : thread_(NULL), task_manager_(task_manager), storage_(storage), diff --git a/src/core/deletefiles.h b/src/core/deletefiles.h index 38c995b67..142c5a7b5 100644 --- a/src/core/deletefiles.h +++ b/src/core/deletefiles.h @@ -18,9 +18,9 @@ #ifndef DELETEFILES_H #define DELETEFILES_H -#include +#include -#include +#include #include "song.h" @@ -31,7 +31,7 @@ class DeleteFiles : public QObject { Q_OBJECT public: - DeleteFiles(TaskManager* task_manager, boost::shared_ptr storage); + DeleteFiles(TaskManager* task_manager, std::shared_ptr storage); ~DeleteFiles(); static const int kBatchSize; @@ -49,7 +49,7 @@ private: QThread* thread_; QThread* original_thread_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; SongList songs_; diff --git a/src/core/macglobalshortcutbackend.h b/src/core/macglobalshortcutbackend.h index 4e42be366..9abcf8e98 100644 --- a/src/core/macglobalshortcutbackend.h +++ b/src/core/macglobalshortcutbackend.h @@ -18,13 +18,13 @@ #ifndef MACGLOBALSHORTCUTBACKEND_H #define MACGLOBALSHORTCUTBACKEND_H +#include + #include "globalshortcutbackend.h" #include #include -#include - class MacGlobalShortcutBackendPrivate; class QAction; @@ -50,7 +50,7 @@ private: QMap shortcuts_; friend class MacGlobalShortcutBackendPrivate; - boost::scoped_ptr p_; + std::unique_ptr p_; }; #endif // MACGLOBALSHORTCUTBACKEND_H diff --git a/src/core/mergedproxymodel.h b/src/core/mergedproxymodel.h index c8b04ec7c..92b4ee3f1 100644 --- a/src/core/mergedproxymodel.h +++ b/src/core/mergedproxymodel.h @@ -20,6 +20,9 @@ #include +using std::placeholders::_1; +using std::placeholders::_2; + #include #include #include diff --git a/src/core/mpris2.h b/src/core/mpris2.h index 06402646e..259ee5e06 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -24,8 +24,6 @@ #include #include -#include - class Application; class MainWindow; class Playlist; diff --git a/src/core/musicstorage.h b/src/core/musicstorage.h index 4f7d0556f..4127c9304 100644 --- a/src/core/musicstorage.h +++ b/src/core/musicstorage.h @@ -20,10 +20,10 @@ #include "song.h" -#include +#include +#include -#include -#include +#include class MusicStorage { public: @@ -44,7 +44,7 @@ public: Transcode_Unsupported = 3, }; - typedef boost::function ProgressFunction; + typedef std::function ProgressFunction; struct CopyJob { QString source_; @@ -77,6 +77,6 @@ public: }; Q_DECLARE_METATYPE(MusicStorage*); -Q_DECLARE_METATYPE(boost::shared_ptr); +Q_DECLARE_METATYPE(std::shared_ptr); #endif // MUSICSTORAGE_H diff --git a/src/core/organise.cpp b/src/core/organise.cpp index b9efc0dab..0d03c2e2a 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -15,12 +15,9 @@ along with Clementine. If not, see . */ -#include "musicstorage.h" #include "organise.h" -#include "taskmanager.h" -#include "core/logging.h" -#include "core/tagreaderclient.h" -#include "core/utilities.h" + +#include #include #include @@ -28,13 +25,19 @@ #include #include -#include +#include "musicstorage.h" +#include "taskmanager.h" +#include "core/logging.h" +#include "core/tagreaderclient.h" +#include "core/utilities.h" + +using std::placeholders::_1; const int Organise::kBatchSize = 10; const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, - boost::shared_ptr destination, + std::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, const NewSongInfoList& songs_info, bool eject_after) : thread_(NULL), @@ -177,8 +180,8 @@ void Organise::ProcessSomeFiles() { job.metadata_ = song; job.overwrite_ = overwrite_; job.remove_original_ = !copy_; - job.progress_ = boost::bind(&Organise::SetSongProgress, - this, _1, !task.transcoded_filename_.isEmpty()); + job.progress_ = std::bind(&Organise::SetSongProgress, + this, _1, !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { files_with_errors_ << task.song_info_.song_.basefilename(); diff --git a/src/core/organise.h b/src/core/organise.h index b40bf8cb9..eba134750 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -18,12 +18,12 @@ #ifndef ORGANISE_H #define ORGANISE_H +#include + #include #include #include -#include - #include "organiseformat.h" #include "transcoder/transcoder.h" @@ -44,7 +44,7 @@ public: typedef QList NewSongInfoList; Organise(TaskManager* task_manager, - boost::shared_ptr destination, + std::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, const NewSongInfoList& songs, bool eject_after); @@ -85,7 +85,7 @@ private: QThread* original_thread_; TaskManager* task_manager_; Transcoder* transcoder_; - boost::shared_ptr destination_; + std::shared_ptr destination_; QList supported_filetypes_; const OrganiseFormat format_; diff --git a/src/core/player.cpp b/src/core/player.cpp index 994ebd3f1..915f7f95f 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -15,8 +15,15 @@ along with Clementine. If not, see . */ -#include "config.h" #include "player.h" + +#include + +#include +#include +#include + +#include "config.h" #include "core/application.h" #include "core/logging.h" #include "core/urlhandler.h" @@ -31,13 +38,7 @@ # include "internet/lastfmservice.h" #endif -#include -#include - -#include - -using boost::shared_ptr; - +using std::shared_ptr; Player::Player(Application* app, QObject* parent) : PlayerInterface(parent), diff --git a/src/core/player.h b/src/core/player.h index 20a02d4dc..c8df58c98 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -18,11 +18,11 @@ #ifndef PLAYER_H #define PLAYER_H +#include + #include #include -#include - #include "config.h" #include "core/song.h" #include "core/urlhandler.h" @@ -176,7 +176,7 @@ public slots: PlaylistItemPtr current_item_; - boost::scoped_ptr engine_; + std::unique_ptr engine_; Engine::TrackChangeFlags stream_change_type_; Engine::State last_state_; int nb_errors_received_; diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 34a50b7f9..83433e568 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -17,7 +17,8 @@ #include "songloader.h" -#include +#include +#include #include #include @@ -49,6 +50,7 @@ #include "podcasts/podcastservice.h" #include "podcasts/podcasturlloader.h" +using std::placeholders::_1; QSet SongLoader::sRawUriSchemes; const int SongLoader::kDefaultTimeout = 5000; @@ -234,7 +236,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // inside right away. if (QFileInfo(filename).isDir()) { ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); + std::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); return WillLoadAsync; } @@ -257,7 +259,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // It's a playlist! ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); + std::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); return WillLoadAsync; } @@ -460,8 +462,8 @@ SongLoader::Result SongLoader::LoadRemote() { // rest of the file, parse the playlist and return success. // Create the pipeline - it gets unreffed if it goes out of scope - boost::shared_ptr pipeline( - gst_pipeline_new(NULL), boost::bind(&gst_object_unref, _1)); + std::shared_ptr pipeline( + gst_pipeline_new(NULL), std::bind(&gst_object_unref, _1)); // Create the source element automatically based on the URL GstElement* source = gst_element_make_from_uri( diff --git a/src/core/songloader.h b/src/core/songloader.h index 4f335eb31..7b4753fc5 100644 --- a/src/core/songloader.h +++ b/src/core/songloader.h @@ -18,6 +18,10 @@ #ifndef SONGLOADER_H #define SONGLOADER_H +#include + +#include + #include #include #include @@ -26,10 +30,6 @@ #include "core/tagreaderclient.h" #include "musicbrainz/musicbrainzclient.h" -#include - -#include - class CueParser; class LibraryBackendInterface; class ParserBase; @@ -134,7 +134,7 @@ private: LibraryBackendInterface* library_; const Player* player_; - boost::shared_ptr pipeline_; + std::shared_ptr pipeline_; QThreadPool thread_pool_; }; diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 6ebfe849b..2fb9afcfa 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -19,7 +19,7 @@ #include -#include +#include #include #include @@ -267,7 +267,7 @@ bool Copy(QIODevice* source, QIODevice* destination) { return false; const qint64 bytes = source->size(); - boost::scoped_array data(new char[bytes]); + std::unique_ptr data(new char[bytes]); qint64 pos = 0; qint64 bytes_read; diff --git a/src/core/utilities.h b/src/core/utilities.h index b71225bf0..a926e154d 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -18,6 +18,8 @@ #ifndef UTILITIES_H #define UTILITIES_H +#include + #include #include #include @@ -26,8 +28,6 @@ #include #include -#include - class QIODevice; class QMouseEvent; class QXmlStreamReader; @@ -171,7 +171,7 @@ private: Q_DISABLE_COPY(ScopedWCharArray); int chars_; - boost::scoped_array data_; + std::unique_ptr data_; }; #endif // UTILITIES_H diff --git a/src/covers/albumcoverfetcher.h b/src/covers/albumcoverfetcher.h index a8a8dcc2f..034ddddfb 100644 --- a/src/covers/albumcoverfetcher.h +++ b/src/covers/albumcoverfetcher.h @@ -29,8 +29,6 @@ #include #include -#include - class QNetworkReply; class QString; diff --git a/src/covers/currentartloader.h b/src/covers/currentartloader.h index 05e1a7db7..5b24e71fd 100644 --- a/src/covers/currentartloader.h +++ b/src/covers/currentartloader.h @@ -18,12 +18,12 @@ #ifndef CURRENTARTLOADER_H #define CURRENTARTLOADER_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class Application; @@ -56,8 +56,8 @@ private: QString temp_file_pattern_; - boost::scoped_ptr temp_art_; - boost::scoped_ptr temp_art_thumbnail_; + std::unique_ptr temp_art_; + std::unique_ptr temp_art_thumbnail_; quint64 id_; Song last_song_; diff --git a/src/devices/connecteddevice.h b/src/devices/connecteddevice.h index 3eb468a39..663e5253d 100644 --- a/src/devices/connecteddevice.h +++ b/src/devices/connecteddevice.h @@ -18,14 +18,14 @@ #ifndef CONNECTEDDEVICE_H #define CONNECTEDDEVICE_H -#include "core/musicstorage.h" -#include "core/song.h" +#include #include #include #include -#include +#include "core/musicstorage.h" +#include "core/song.h" class Application; class Database; @@ -35,7 +35,7 @@ class LibraryBackend; class LibraryModel; class ConnectedDevice : public QObject, public virtual MusicStorage, - public boost::enable_shared_from_this { + public std::enable_shared_from_this { Q_OBJECT public: diff --git a/src/devices/devicekitlister.h b/src/devices/devicekitlister.h index c91bdb437..201e9b74b 100644 --- a/src/devices/devicekitlister.h +++ b/src/devices/devicekitlister.h @@ -18,12 +18,12 @@ #ifndef DEVICEKITLISTER_H #define DEVICEKITLISTER_H -#include "devicelister.h" +#include #include #include -#include +#include "devicelister.h" class OrgFreedesktopUDisksInterface; @@ -88,7 +88,7 @@ private: T LockAndGetDeviceInfo(const QString& id, T DeviceData::*field); private: - boost::scoped_ptr interface_; + std::unique_ptr interface_; QMutex mutex_; QMap device_data_; diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h index 4003fb8fc..5791968ab 100644 --- a/src/devices/devicelister.h +++ b/src/devices/devicelister.h @@ -21,8 +21,6 @@ #include #include -#include - class ConnectedDevice; class DeviceManager; diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index eb2a1d351..e4e041755 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -17,7 +17,7 @@ #include "devicemanager.h" -#include +#include #include #include @@ -60,7 +60,7 @@ # include "mtpdevice.h" #endif -using boost::bind; +using std::bind; const int DeviceManager::kDeviceIconSize = 32; const int DeviceManager::kDeviceIconOverlaySize = 16; @@ -311,7 +311,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { const_cast(this)->Connect(index.row()); if (!info.device_) return QVariant(); - return QVariant::fromValue >(info.device_); + return QVariant::fromValue>(info.device_); case MusicStorage::Role_StorageForceConnect: if (!info.device_) { @@ -319,7 +319,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { if (info.BestBackend()->lister_->AskForScan(info.BestBackend()->unique_id_)) { - boost::scoped_ptr dialog(new QMessageBox( + std::unique_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."), QMessageBox::Cancel)); @@ -336,7 +336,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { } if (!info.device_) return QVariant(); - return QVariant::fromValue >(info.device_); + return QVariant::fromValue>(info.device_); case Role_MountPath: { if (!info.device_) @@ -520,12 +520,12 @@ void DeviceManager::PhysicalDeviceChanged(const QString &id) { // TODO } -boost::shared_ptr DeviceManager::Connect(int row) { +std::shared_ptr DeviceManager::Connect(int row) { DeviceInfo& info = devices_[row]; if (info.device_) // Already connected return info.device_; - boost::shared_ptr ret; + std::shared_ptr ret; if (!info.BestBackend()->lister_) // Not physically connected return ret; @@ -612,7 +612,7 @@ boost::shared_ptr DeviceManager::Connect(int row) { return ret; } -boost::shared_ptr DeviceManager::GetConnectedDevice(int row) const { +std::shared_ptr DeviceManager::GetConnectedDevice(int row) const { return devices_[row].device_; } diff --git a/src/devices/devicemanager.h b/src/devices/devicemanager.h index d165d17db..6f20b0159 100644 --- a/src/devices/devicemanager.h +++ b/src/devices/devicemanager.h @@ -19,13 +19,14 @@ #define DEVICEMANAGER_H #include "devicedatabasebackend.h" -#include "library/librarymodel.h" + +#include #include #include #include -#include +#include "library/librarymodel.h" class Application; class ConnectedDevice; @@ -72,13 +73,13 @@ public: // Get info about devices int GetDatabaseId(int row) const; DeviceLister* GetLister(int row) const; - boost::shared_ptr GetConnectedDevice(int row) const; + std::shared_ptr GetConnectedDevice(int row) const; int FindDeviceById(const QString& id) const; int FindDeviceByUrl(const QList& url) const; // Actions on devices - boost::shared_ptr Connect(int row); + std::shared_ptr Connect(int row); void Disconnect(int row); void Forget(int row); void UnmountAsync(int row); @@ -143,7 +144,7 @@ private: int database_id_; // -1 if not remembered in the database - boost::shared_ptr device_; // NULL if not connected to clementine + std::shared_ptr device_; // NULL if not connected to clementine QList backends_; QString friendly_name_; diff --git a/src/devices/deviceproperties.cpp b/src/devices/deviceproperties.cpp index 0f59f3c85..80bca6e9c 100644 --- a/src/devices/deviceproperties.cpp +++ b/src/devices/deviceproperties.cpp @@ -15,20 +15,22 @@ along with Clementine. If not, see . */ -#include "connecteddevice.h" -#include "devicelister.h" -#include "devicemanager.h" #include "deviceproperties.h" -#include "ui_deviceproperties.h" -#include "core/utilities.h" -#include "transcoder/transcoder.h" -#include "ui/iconloader.h" + +#include +#include #include #include #include -#include +#include "connecteddevice.h" +#include "devicelister.h" +#include "devicemanager.h" +#include "ui_deviceproperties.h" +#include "core/utilities.h" +#include "transcoder/transcoder.h" +#include "ui/iconloader.h" DeviceProperties::DeviceProperties(QWidget *parent) : QDialog(parent), @@ -178,7 +180,7 @@ void DeviceProperties::UpdateHardwareInfo() { void DeviceProperties::UpdateFormats() { QString id = index_.data(DeviceManager::Role_UniqueId).toString(); DeviceLister* lister = manager_->GetLister(index_.row()); - boost::shared_ptr device = + std::shared_ptr device = manager_->GetConnectedDevice(index_.row()); // Transcode mode @@ -219,7 +221,7 @@ void DeviceProperties::UpdateFormats() { // blocks, so do it in the background. supported_formats_.clear(); - QFuture future = QtConcurrent::run(boost::bind( + QFuture future = QtConcurrent::run(std::bind( &ConnectedDevice::GetSupportedFiletypes, device, &supported_formats_)); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 2d561bb41..342ce936a 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -15,11 +15,22 @@ along with Clementine. If not, see . */ +#include "deviceview.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + #include "connecteddevice.h" #include "devicelister.h" #include "devicemanager.h" #include "deviceproperties.h" -#include "deviceview.h" #include "core/application.h" #include "core/deletefiles.h" #include "core/mergedproxymodel.h" @@ -31,16 +42,6 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include - -#include - const int DeviceItemDelegate::kIconPadding = 6; DeviceItemDelegate::DeviceItemDelegate(QObject *parent) @@ -238,7 +239,8 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { bool is_filesystem_device = false; if (parent_device_index.isValid()) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(parent_device_index.row()); + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(parent_device_index.row()); if (device && !device->LocalPath().isEmpty()) is_filesystem_device = true; } @@ -281,7 +283,8 @@ void DeviceView::Connect() { } void DeviceView::DeviceConnected(int row) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(row); + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(row); if (!device) return; @@ -306,7 +309,7 @@ void DeviceView::Forget() { QString unique_id = app_->device_manager()->data(device_idx, DeviceManager::Role_UniqueId).toString(); if (app_->device_manager()->GetLister(device_idx.row()) && app_->device_manager()->GetLister(device_idx.row())->AskForScan(unique_id)) { - boost::scoped_ptr dialog(new QMessageBox( + std::unique_ptr dialog(new QMessageBox( QMessageBox::Question, tr("Forget device"), tr("Forgetting a device will remove it from this list and Clementine will have to rescan all the songs again next time you connect it."), QMessageBox::Cancel, this)); @@ -390,8 +393,8 @@ void DeviceView::Delete() { QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage = - device_index.data(MusicStorage::Role_Storage).value >(); + std::shared_ptr storage = + device_index.data(MusicStorage::Role_Storage).value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h index 6bb81c440..f64592e6e 100644 --- a/src/devices/deviceview.h +++ b/src/devices/deviceview.h @@ -18,6 +18,8 @@ #ifndef DEVICEVIEW_H #define DEVICEVIEW_H +#include + #include "core/song.h" #include "library/libraryview.h" #include "widgets/autoexpandingtreeview.h" @@ -88,8 +90,8 @@ private: MergedProxyModel* merged_model_; QSortFilterProxyModel* sort_model_; - boost::scoped_ptr properties_dialog_; - boost::scoped_ptr organise_dialog_; + std::unique_ptr properties_dialog_; + std::unique_ptr organise_dialog_; QMenu* device_menu_; QAction* eject_action_; diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp index 625f05d66..504bbbc7c 100644 --- a/src/devices/giolister.cpp +++ b/src/devices/giolister.cpp @@ -17,16 +17,20 @@ #include "config.h" +#include + #include #include #include -#include - #include "giolister.h" #include "core/logging.h" #include "core/signalchecker.h" +using std::placeholders::_1; +using std::placeholders::_2; +using std::placeholders::_3; + QString GioLister::DeviceInfo::unique_id() const { if (mount) return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); @@ -65,7 +69,7 @@ void OperationFinished(F f, GObject *object, GAsyncResult *result) { } void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_volume_mount_finish, _1, _2, _3), object, result); } @@ -456,17 +460,17 @@ QString GioLister::FindUniqueIdByVolume(GVolume* volume) const { } void GioLister::VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_volume_eject_with_operation_finish, _1, _2, _3), object, result); } void GioLister::MountEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_mount_eject_with_operation_finish, _1, _2, _3), object, result); } void GioLister::MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( + OperationFinished(std::bind( g_mount_unmount_with_operation_finish, _1, _2, _3), object, result); } diff --git a/src/devices/gpodloader.cpp b/src/devices/gpodloader.cpp index 730cff5b8..9faa44be5 100644 --- a/src/devices/gpodloader.cpp +++ b/src/devices/gpodloader.cpp @@ -27,8 +27,9 @@ #include #include -GPodLoader::GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) +GPodLoader::GPodLoader( + const QString& mount_point, TaskManager* task_manager, + LibraryBackend* backend, std::shared_ptr device) : QObject(NULL), device_(device), mount_point_(mount_point), diff --git a/src/devices/gpodloader.h b/src/devices/gpodloader.h index c24fd8a7a..e3c2f74f6 100644 --- a/src/devices/gpodloader.h +++ b/src/devices/gpodloader.h @@ -18,9 +18,10 @@ #ifndef GPODLOADER_H #define GPODLOADER_H +#include + #include -#include #include #include "core/song.h" @@ -34,7 +35,7 @@ class GPodLoader : public QObject { public: GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + LibraryBackend* backend, std::shared_ptr device); ~GPodLoader(); void set_music_path_prefix(const QString& prefix) { path_prefix_ = prefix; } @@ -49,7 +50,7 @@ signals: void LoadFinished(Itdb_iTunesDB* db); private: - boost::shared_ptr device_; + std::shared_ptr device_; QThread* original_thread_; QString mount_point_; diff --git a/src/devices/mtpdevice.h b/src/devices/mtpdevice.h index 6bc45f5ba..7317ea5e6 100644 --- a/src/devices/mtpdevice.h +++ b/src/devices/mtpdevice.h @@ -18,12 +18,12 @@ #ifndef MTPDEVICE_H #define MTPDEVICE_H -#include "connecteddevice.h" +#include #include #include -#include +#include "connecteddevice.h" struct LIBMTP_mtpdevice_struct; @@ -74,7 +74,7 @@ private: SongList songs_to_add_; SongList songs_to_remove_; - boost::scoped_ptr connection_; + std::unique_ptr connection_; }; #endif // MTPDEVICE_H diff --git a/src/devices/mtploader.cpp b/src/devices/mtploader.cpp index 17015f18a..abb4329b4 100644 --- a/src/devices/mtploader.cpp +++ b/src/devices/mtploader.cpp @@ -15,17 +15,19 @@ along with Clementine. If not, see . */ +#include "mtploader.h" + +#include + #include "connecteddevice.h" #include "mtpconnection.h" -#include "mtploader.h" #include "core/song.h" #include "core/taskmanager.h" #include "library/librarybackend.h" -#include - -MtpLoader::MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) +MtpLoader::MtpLoader( + const QUrl& url, TaskManager* task_manager, + LibraryBackend* backend, std::shared_ptr device) : QObject(NULL), device_(device), url_(url), diff --git a/src/devices/mtploader.h b/src/devices/mtploader.h index c38401f89..357597d41 100644 --- a/src/devices/mtploader.h +++ b/src/devices/mtploader.h @@ -18,11 +18,11 @@ #ifndef MTPLOADER_H #define MTPLOADER_H +#include + #include #include -#include - class ConnectedDevice; class LibraryBackend; class TaskManager; @@ -32,7 +32,7 @@ class MtpLoader : public QObject { public: MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + LibraryBackend* backend, std::shared_ptr device); ~MtpLoader(); public slots: @@ -47,7 +47,7 @@ private: bool TryLoad(); private: - boost::shared_ptr device_; + std::shared_ptr device_; QThread* original_thread_; QUrl url_; diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h index c3e75b0d5..d998639e1 100644 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -27,8 +27,6 @@ #include -#include - #include #include #include @@ -39,7 +37,7 @@ namespace Engine { typedef std::vector Scope; -class Base : public QObject, boost::noncopyable { +class Base : public QObject { Q_OBJECT public: @@ -153,6 +151,7 @@ class Base : public QObject, boost::noncopyable { private: bool about_to_end_emitted_; + Q_DISABLE_COPY(Base); }; diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index 0f1add714..e1eb46944 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -19,23 +19,14 @@ * 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "config.h" #include "gstengine.h" -#include "gstenginepipeline.h" -#include "core/logging.h" -#include "core/taskmanager.h" -#include "core/utilities.h" - -#ifdef HAVE_MOODBAR -# include "gst/moodbar/spectrum.h" -#endif #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -48,9 +39,18 @@ #include +#include "config.h" +#include "gstenginepipeline.h" +#include "core/logging.h" +#include "core/taskmanager.h" +#include "core/utilities.h" +#ifdef HAVE_MOODBAR +# include "gst/moodbar/spectrum.h" +#endif + +using std::shared_ptr; using std::vector; -using boost::shared_ptr; const char* GstEngine::kSettingsGroup = "GstEngine"; const char* GstEngine::kAutoSink = "autoaudiosink"; diff --git a/src/engines/gstengine.h b/src/engines/gstengine.h index 94c3a93bc..3f3a6c8bf 100644 --- a/src/engines/gstengine.h +++ b/src/engines/gstengine.h @@ -22,6 +22,8 @@ #ifndef AMAROK_GSTENGINE_H #define AMAROK_GSTENGINE_H +#include + #include "bufferconsumer.h" #include "enginebase.h" #include "core/boundfuturewatcher.h" @@ -35,7 +37,6 @@ #include #include -#include class QTimer; class QTimerEvent; @@ -146,12 +147,13 @@ class GstEngine : public Engine::Base, public BufferConsumer { void StartTimers(); void StopTimers(); - boost::shared_ptr CreatePipeline(); - boost::shared_ptr CreatePipeline(const QUrl& url, qint64 end_nanosec); + std::shared_ptr CreatePipeline(); + std::shared_ptr CreatePipeline( + const QUrl& url, qint64 end_nanosec); void UpdateScope(); - int AddBackgroundStream(boost::shared_ptr pipeline); + int AddBackgroundStream(std::shared_ptr pipeline); static QUrl FixupUrl(const QUrl& url); @@ -171,9 +173,9 @@ class GstEngine : public Engine::Base, public BufferConsumer { QString sink_; QString device_; - boost::shared_ptr current_pipeline_; - boost::shared_ptr fadeout_pipeline_; - boost::shared_ptr fadeout_pause_pipeline_; + std::shared_ptr current_pipeline_; + std::shared_ptr fadeout_pipeline_; + std::shared_ptr fadeout_pause_pipeline_; QUrl preloaded_url_; QList buffer_consumers_; @@ -205,7 +207,7 @@ class GstEngine : public Engine::Base, public BufferConsumer { int timer_id_; int next_element_id_; - QHash > background_streams_; + QHash > background_streams_; bool is_fading_out_to_pause_; bool has_faded_out_; diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 94f77a357..21eb614b7 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -41,11 +41,11 @@ const int GstEnginePipeline::kEqBandFrequencies[] = { 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; int GstEnginePipeline::sId = 1; -GstElementDeleter* GstEnginePipeline::sElementDeleter = NULL; +GstElementDeleter* GstEnginePipeline::sElementDeleter = nullptr; GstEnginePipeline::GstEnginePipeline(GstEngine* engine) - : QObject(NULL), + : QObject(nullptr), engine_(engine), id_(sId++), valid_(false), @@ -75,20 +75,19 @@ GstEnginePipeline::GstEnginePipeline(GstEngine* engine) pending_seek_nanosec_(-1), volume_percent_(100), volume_modifier_(1.0), - fader_(NULL), - pipeline_(NULL), - uridecodebin_(NULL), - audiobin_(NULL), - queue_(NULL), - audioconvert_(NULL), - rgvolume_(NULL), - rglimiter_(NULL), - audioconvert2_(NULL), - equalizer_(NULL), - stereo_panorama_(NULL), - volume_(NULL), - audioscale_(NULL), - audiosink_(NULL) + pipeline_(nullptr), + uridecodebin_(nullptr), + audiobin_(nullptr), + queue_(nullptr), + audioconvert_(nullptr), + rgvolume_(nullptr), + rglimiter_(nullptr), + audioconvert2_(nullptr), + equalizer_(nullptr), + stereo_panorama_(nullptr), + volume_(nullptr), + audioscale_(nullptr), + audiosink_(nullptr) { if (!sElementDeleter) { sElementDeleter = new GstElementDeleter; diff --git a/src/engines/gstenginepipeline.h b/src/engines/gstenginepipeline.h index a1b8c9efb..65e23003f 100644 --- a/src/engines/gstenginepipeline.h +++ b/src/engines/gstenginepipeline.h @@ -18,6 +18,8 @@ #ifndef GSTENGINEPIPELINE_H #define GSTENGINEPIPELINE_H +#include + #include #include #include @@ -27,7 +29,6 @@ #include #include -#include #include "engine_fwd.h" @@ -253,7 +254,7 @@ class GstEnginePipeline : public QObject { int volume_percent_; qreal volume_modifier_; - boost::scoped_ptr fader_; + std::unique_ptr fader_; QBasicTimer fader_fudge_timer_; bool use_fudge_timer_; diff --git a/src/globalsearch/globalsearchview.cpp b/src/globalsearch/globalsearchview.cpp index 67cc90bb2..9b38847aa 100644 --- a/src/globalsearch/globalsearchview.cpp +++ b/src/globalsearch/globalsearchview.cpp @@ -1,25 +1,33 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ +#include "globalsearchview.h" + +#include +#include +#include +#include + +#include + #include "globalsearch.h" #include "globalsearchitemdelegate.h" #include "globalsearchmodel.h" #include "globalsearchsortmodel.h" -#include "globalsearchview.h" #include "searchprovider.h" #include "searchproviderstatuswidget.h" #include "suggestionwidget.h" @@ -32,12 +40,8 @@ #include "library/librarymodel.h" #include "library/groupbydialog.h" -#include - -#include -#include -#include -#include +using std::placeholders::_1; +using std::placeholders::_2; const int GlobalSearchView::kSwapModelsTimeoutMsec = 250; const int GlobalSearchView::kMaxSuggestions = 10; @@ -176,14 +180,14 @@ namespace { void GlobalSearchView::ReloadSettings() { QSettings s; - + // Library settings s.beginGroup(LibraryView::kSettingsGroup); const bool pretty = s.value("pretty_covers", true).toBool(); front_model_->set_use_pretty_covers(pretty); back_model_->set_use_pretty_covers(pretty); s.endGroup(); - + // Global search settings s.beginGroup(GlobalSearch::kSettingsGroup); const QStringList provider_order = @@ -197,11 +201,11 @@ void GlobalSearchView::ReloadSettings() { LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); s.endGroup(); - + // Delete any old status widgets qDeleteAll(provider_status_widgets_); provider_status_widgets_.clear(); - + // Toggle visibility of the providers group ui_->providers_group->setVisible(show_providers_); @@ -209,27 +213,27 @@ void GlobalSearchView::ReloadSettings() { // Sort the list of providers QList providers = engine_->providers(); qSort(providers.begin(), providers.end(), - boost::bind(&CompareProvider, boost::cref(provider_order), _1, _2)); - + std::bind(&CompareProvider, std::cref(provider_order), _1, _2)); + bool any_disabled = false; - + foreach (SearchProvider* provider, providers) { QWidget* parent = ui_->enabled_list; if (!engine_->is_provider_usable(provider)) { parent = ui_->disabled_list; any_disabled = true; } - + SearchProviderStatusWidget* widget = new SearchProviderStatusWidget(warning_icon_, engine_, provider); - + parent->layout()->addWidget(widget); provider_status_widgets_ << widget; } - + ui_->disabled_label->setVisible(any_disabled); } - + ui_->suggestions_group->setVisible(show_suggestions_); if (!show_suggestions_) { update_suggestions_timer_->stop(); diff --git a/src/globalsearch/spotifysearchprovider.cpp b/src/globalsearch/spotifysearchprovider.cpp index 0dfc6bdd4..5f955c27b 100644 --- a/src/globalsearch/spotifysearchprovider.cpp +++ b/src/globalsearch/spotifysearchprovider.cpp @@ -18,9 +18,7 @@ #include "spotifysearchprovider.h" #include - -#include -#include +#include #include "core/logging.h" #include "internet/internetmodel.h" @@ -219,8 +217,8 @@ QStringList SpotifySearchProvider::GetSuggestions(int count) { QStringList all_suggestions = suggestions_.toList(); - boost::mt19937 gen(std::time(0)); - boost::uniform_int<> random(0, all_suggestions.size() - 1); + std::mt19937 gen(std::time(0)); + std::uniform_int_distribution<> random(0, all_suggestions.size() - 1); QSet candidates; diff --git a/src/internet/digitallyimportedservicebase.h b/src/internet/digitallyimportedservicebase.h index 6380cb9a3..d58f3c614 100644 --- a/src/internet/digitallyimportedservicebase.h +++ b/src/internet/digitallyimportedservicebase.h @@ -18,7 +18,7 @@ #ifndef DIGITALLYIMPORTEDSERVICEBASE_H #define DIGITALLYIMPORTEDSERVICEBASE_H -#include +#include #include "digitallyimportedclient.h" #include "internetservice.h" @@ -104,7 +104,7 @@ private: QStandardItem* root_; - boost::scoped_ptr context_menu_; + std::unique_ptr context_menu_; QStandardItem* context_item_; CachedList saved_channels_; diff --git a/src/internet/groovesharkservice.cpp b/src/internet/groovesharkservice.cpp index af19640c4..ba5234c44 100644 --- a/src/internet/groovesharkservice.cpp +++ b/src/internet/groovesharkservice.cpp @@ -17,7 +17,7 @@ #include "groovesharkservice.h" -#include +#include #include #include @@ -1286,8 +1286,8 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { if (!playlists_.contains(playlist_id)) { return; } - - boost::scoped_ptr confirmation_dialog(new QMessageBox( + + std::unique_ptr confirmation_dialog(new QMessageBox( QMessageBox::Question, tr("Delete Grooveshark playlist"), tr("Are you sure you want to delete this playlist?"), QMessageBox::Yes | QMessageBox::Cancel)); diff --git a/src/internet/lastfmservice.cpp b/src/internet/lastfmservice.cpp index 2636524fe..b8c2c6730 100644 --- a/src/internet/lastfmservice.cpp +++ b/src/internet/lastfmservice.cpp @@ -32,8 +32,6 @@ #include "lastfmservice.h" -#include - #include #include @@ -61,7 +59,6 @@ #include "ui/iconloader.h" #include "ui/settingsdialog.h" -using boost::scoped_ptr; using lastfm::XmlQuery; uint qHash(const lastfm::Track& track) { diff --git a/src/internet/lastfmservice.h b/src/internet/lastfmservice.h index a25b21f33..9b832ea7a 100644 --- a/src/internet/lastfmservice.h +++ b/src/internet/lastfmservice.h @@ -18,6 +18,8 @@ #ifndef LASTFMSERVICE_H #define LASTFMSERVICE_H +#include + namespace lastfm { class RadioStation; class Track; @@ -40,8 +42,6 @@ uint qHash(const lastfm::Track& track); #include #include -#include - class LastFMUrlHandler; class QAction; @@ -198,9 +198,9 @@ class LastFMService : public InternetService { QQueue playlist_; bool already_scrobbled_; - boost::scoped_ptr station_dialog_; + std::unique_ptr station_dialog_; - boost::scoped_ptr context_menu_; + std::unique_ptr context_menu_; QAction* remove_action_; QAction* add_artist_action_; QAction* add_tag_action_; diff --git a/src/internet/magnatunedownloaddialog.cpp b/src/internet/magnatunedownloaddialog.cpp index 91afc8f4d..edf645223 100644 --- a/src/internet/magnatunedownloaddialog.cpp +++ b/src/internet/magnatunedownloaddialog.cpp @@ -16,13 +16,8 @@ */ #include "magnatunedownloaddialog.h" -#include "magnatuneservice.h" -#include "internetmodel.h" -#include "ui_magnatunedownloaddialog.h" -#include "core/logging.h" -#include "core/network.h" -#include "core/utilities.h" -#include "widgets/progressitemdelegate.h" + +#include #include #include @@ -35,6 +30,14 @@ #include #include +#include "magnatuneservice.h" +#include "internetmodel.h" +#include "ui_magnatunedownloaddialog.h" +#include "core/logging.h" +#include "core/network.h" +#include "core/utilities.h" +#include "widgets/progressitemdelegate.h" + MagnatuneDownloadDialog::MagnatuneDownloadDialog(MagnatuneService* service, QWidget *parent) : QDialog(parent), @@ -275,7 +278,7 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { void MagnatuneDownloadDialog::closeEvent(QCloseEvent* e) { if (current_reply_ && current_reply_->isRunning()) { - boost::scoped_ptr message_box(new QMessageBox( + std::unique_ptr message_box(new QMessageBox( QMessageBox::Question, tr("Really cancel?"), tr("Closing this window will cancel the download."), QMessageBox::Abort, this)); diff --git a/src/internet/magnatunedownloaddialog.h b/src/internet/magnatunedownloaddialog.h index 397a91705..7c0ffb438 100644 --- a/src/internet/magnatunedownloaddialog.h +++ b/src/internet/magnatunedownloaddialog.h @@ -18,12 +18,12 @@ #ifndef MAGNATUNEDOWNLOADDIALOG_H #define MAGNATUNEDOWNLOADDIALOG_H +#include + #include #include #include -#include - #include "core/song.h" class MagnatuneService; @@ -71,7 +71,7 @@ private: QNetworkAccessManager* network_; QNetworkReply* current_reply_; - boost::scoped_ptr download_file_; + std::unique_ptr download_file_; int next_row_; }; diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index 7b00a0fa2..78c343bd4 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -51,8 +51,6 @@ #include -using boost::shared_ptr; - const char* MagnatuneService::kServiceName = "Magnatune"; const char* MagnatuneService::kSettingsGroup = "Magnatune"; const char* MagnatuneService::kSongsTable = "magnatune_songs"; diff --git a/src/internet/savedradio.h b/src/internet/savedradio.h index d3a1d9ec6..619aeec66 100644 --- a/src/internet/savedradio.h +++ b/src/internet/savedradio.h @@ -18,9 +18,9 @@ #ifndef SAVEDRADIO_H #define SAVEDRADIO_H -#include "internetservice.h" +#include -#include +#include "internetservice.h" class QMenu; @@ -83,7 +83,7 @@ class SavedRadio : public InternetService { StreamList streams_; - boost::scoped_ptr edit_dialog_; + std::unique_ptr edit_dialog_; }; #endif // SAVEDRADIO_H diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index 0de877394..e3023f5c1 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -1,7 +1,6 @@ #include "skydriveservice.h" -#include -using boost::scoped_ptr; +#include #include @@ -158,7 +157,7 @@ QUrl SkydriveService::GetStreamingUrlFromSongId(const QString& file_id) { QUrl url(QString(kSkydriveBase) + file_id); QNetworkRequest request(url); AddAuthorizationHeader(&request); - scoped_ptr reply(network_->get(request)); + std::unique_ptr reply(network_->get(request)); WaitForSignal(reply.get(), SIGNAL(finished())); QJson::Parser parser; diff --git a/src/internet/spotifyservice.h b/src/internet/spotifyservice.h index 338114067..530aa0a5d 100644 --- a/src/internet/spotifyservice.h +++ b/src/internet/spotifyservice.h @@ -8,8 +8,6 @@ #include #include -#include - class Playlist; class SearchBoxWidget; class SpotifyServer; diff --git a/src/library/groupbydialog.h b/src/library/groupbydialog.h index fa8976d27..718590286 100644 --- a/src/library/groupbydialog.h +++ b/src/library/groupbydialog.h @@ -20,6 +20,11 @@ #include +#include + +using std::placeholders::_1; +using std::placeholders::_2; + #include #include #include diff --git a/src/library/library.h b/src/library/library.h index f174845ea..70681cda6 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -21,8 +21,6 @@ #include #include -#include - class Application; class Database; class LibraryBackend; diff --git a/src/library/librarydirectorymodel.cpp b/src/library/librarydirectorymodel.cpp index 2f2394332..06596f242 100644 --- a/src/library/librarydirectorymodel.cpp +++ b/src/library/librarydirectorymodel.cpp @@ -46,7 +46,7 @@ void LibraryDirectoryModel::DirectoryDiscovered(const Directory &dir) { } item->setData(dir.id, kIdRole); item->setIcon(dir_icon_); - storage_ << boost::shared_ptr(new FilesystemMusicStorage(dir.path)); + storage_ << std::shared_ptr(new FilesystemMusicStorage(dir.path)); appendRow(item); } diff --git a/src/library/librarydirectorymodel.h b/src/library/librarydirectorymodel.h index eee72270b..5d7c4d482 100644 --- a/src/library/librarydirectorymodel.h +++ b/src/library/librarydirectorymodel.h @@ -18,11 +18,11 @@ #ifndef LIBRARYDIRECTORYMODEL_H #define LIBRARYDIRECTORYMODEL_H +#include + #include #include -#include - #include "directory.h" class LibraryBackend; @@ -51,7 +51,7 @@ class LibraryDirectoryModel : public QStandardItemModel { QIcon dir_icon_; LibraryBackend* backend_; - QList > storage_; + QList > storage_; }; #endif // LIBRARYDIRECTORYMODEL_H diff --git a/src/library/libraryfilterwidget.h b/src/library/libraryfilterwidget.h index 255e35685..74620ba20 100644 --- a/src/library/libraryfilterwidget.h +++ b/src/library/libraryfilterwidget.h @@ -18,9 +18,9 @@ #ifndef LIBRARYFILTERWIDGET_H #define LIBRARYFILTERWIDGET_H -#include +#include -#include +#include #include "librarymodel.h" @@ -92,7 +92,7 @@ class LibraryFilterWidget : public QWidget { Ui_LibraryFilterWidget* ui_; LibraryModel* model_; - boost::scoped_ptr group_by_dialog_; + std::unique_ptr group_by_dialog_; SettingsDialog* settings_dialog_; QMenu* filter_age_menu_; diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 6db78f4db..011a4466d 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -16,6 +16,18 @@ */ #include "librarymodel.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarybackend.h" #include "libraryitem.h" #include "librarydirectorymodel.h" @@ -32,16 +44,8 @@ #include "smartplaylists/querygenerator.h" #include "ui/iconloader.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include +using std::placeholders::_1; +using std::placeholders::_2; using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; @@ -1114,7 +1118,7 @@ void LibraryModel::GetChildSongs(LibraryItem* item, QList* urls, const_cast(this)->LazyPopulate(item); QList children = item->children; - qSort(children.begin(), children.end(), boost::bind( + qSort(children.begin(), children.end(), std::bind( &LibraryModel::CompareItems, this, _1, _2)); foreach (LibraryItem* child, children) diff --git a/src/library/librarymodel.h b/src/library/librarymodel.h index 79a105327..efd2812e1 100644 --- a/src/library/librarymodel.h +++ b/src/library/librarymodel.h @@ -32,8 +32,6 @@ #include "playlist/playlistmanager.h" #include "smartplaylists/generator_fwd.h" -#include - class Application; class AlbumCoverLoader; class LibraryDirectoryModel; diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index e807836d2..297212837 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -15,10 +15,22 @@ along with Clementine. If not, see . */ +#include "libraryview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarydirectorymodel.h" #include "libraryfilterwidget.h" #include "librarymodel.h" -#include "libraryview.h" #include "libraryitem.h" #include "librarybackend.h" #include "core/application.h" @@ -34,17 +46,6 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - using smart_playlists::Wizard; const char* LibraryView::kSettingsGroup = "LibraryView"; @@ -613,9 +614,9 @@ void LibraryView::Delete() { // We can cheat and always take the storage of the first directory, since // they'll all be FilesystemMusicStorage in a library and deleting doesn't // check the actual directory. - boost::shared_ptr storage = + std::shared_ptr storage = app_->library_model()->directory_model()->index(0, 0).data(MusicStorage::Role_Storage) - .value >(); + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 85afe7e8a..fb096fa2d 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -18,13 +18,13 @@ #ifndef LIBRARYVIEW_H #define LIBRARYVIEW_H -#include "core/song.h" -#include "ui/edittagdialog.h" -#include "widgets/autoexpandingtreeview.h" +#include #include -#include +#include "core/song.h" +#include "ui/edittagdialog.h" +#include "widgets/autoexpandingtreeview.h" class Application; class LibraryFilterWidget; @@ -140,8 +140,8 @@ class LibraryView : public AutoExpandingTreeView { QAction* edit_smart_playlist_; QAction* delete_smart_playlist_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr edit_tag_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr edit_tag_dialog_; bool is_in_keyboard_search_; diff --git a/src/main.cpp b/src/main.cpp index 050d335d9..cd7bcc2f1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include #ifdef Q_OS_WIN32 @@ -23,6 +25,19 @@ # include #endif // Q_OS_WIN32 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "config.h" #include "core/application.h" #include "core/commandlineoptions.h" @@ -54,26 +69,10 @@ #include "qtsingleapplication.h" #include "qtsinglecoreapplication.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include #include #include -#include -using boost::scoped_ptr; - #include #ifdef HAVE_SPOTIFY_DOWNLOADER @@ -449,7 +448,7 @@ int main(int argc, char *argv[]) { #endif // Q_OS_LINUX // Create the tray icon and OSD - scoped_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); + std::unique_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); OSD osd(tray_icon.get(), &app); #ifdef HAVE_DBUS diff --git a/src/moodbar/moodbarloader.cpp b/src/moodbar/moodbarloader.cpp index dacbe1e0e..2bface572 100644 --- a/src/moodbar/moodbarloader.cpp +++ b/src/moodbar/moodbarloader.cpp @@ -17,7 +17,7 @@ #include "moodbarloader.h" -#include +#include #include #include @@ -101,7 +101,7 @@ MoodbarLoader::Result MoodbarLoader::Load( } // Maybe it exists in the cache? - boost::scoped_ptr cache_device(cache_->data(url)); + std::unique_ptr cache_device(cache_->data(url)); if (cache_device) { qLog(Info) << "Loading cached moodbar data for" << filename; *data = cache_device->readAll(); diff --git a/src/networkremote/networkremote.h b/src/networkremote/networkremote.h index 5de164eb3..716538251 100644 --- a/src/networkremote/networkremote.h +++ b/src/networkremote/networkremote.h @@ -1,7 +1,7 @@ #ifndef NETWORKREMOTE_H #define NETWORKREMOTE_H -#include +#include #include #include @@ -30,10 +30,10 @@ public slots: void SendKitten(quint64 id, const QImage& kitten); private: - boost::scoped_ptr server_; - boost::scoped_ptr server_ipv6_; - boost::scoped_ptr incoming_data_parser_; - boost::scoped_ptr outgoing_data_creator_; + std::unique_ptr server_; + std::unique_ptr server_ipv6_; + std::unique_ptr incoming_data_parser_; + std::unique_ptr outgoing_data_creator_; quint16 port_; bool use_remote_; diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index 264da2add..fb243a3db 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -1,6 +1,8 @@ #ifndef OUTGOINGDATACREATOR_H #define OUTGOINGDATACREATOR_H +#include + #include #include #include @@ -24,7 +26,6 @@ #include "songinfo/ultimatelyricsreader.h" #include "remotecontrolmessages.pb.h" #include "remoteclient.h" -#include typedef QList ProviderList; @@ -91,7 +92,7 @@ private: int last_track_position_; bool aww_; - boost::scoped_ptr ultimate_reader_; + std::unique_ptr ultimate_reader_; ProviderList provider_list_; QMap results_; SongInfoFetcher* fetcher_; diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index ed2cd6938..e5525bd28 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -16,6 +16,25 @@ */ #include "playlist.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "playlistbackend.h" #include "playlistfilter.h" #include "playlistitemmimedata.h" @@ -49,36 +68,15 @@ #include "smartplaylists/generatorinserter.h" #include "smartplaylists/generatormimedata.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef USE_STD_UNORDERED_MAP - #include - using std::unordered_map; -#else - #include - using std::tr1::unordered_map; -#endif +using std::placeholders::_1; +using std::placeholders::_2; +using std::shared_ptr; +using std::unordered_map; using smart_playlists::Generator; using smart_playlists::GeneratorInserter; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const char* Playlist::kCddaMimeType = "x-content/audio-cdda"; const char* Playlist::kRowsMimetype = "application/x-clementine-playlist-rows"; const char* Playlist::kPlayNowMimetype = "application/x-clementine-play-now"; @@ -1267,7 +1265,7 @@ void Playlist::sort(int column, Qt::SortOrder order) { begin += current_item_index_.row() + 1; qStableSort(begin, new_items.end(), - boost::bind(&Playlist::CompareItems, column, order, _1, _2)); + std::bind(&Playlist::CompareItems, column, order, _1, _2)); undo_stack_->push(new PlaylistUndoCommands::SortItems(this, column, order, new_items)); } @@ -1814,8 +1812,8 @@ void Playlist::ReshuffleIndices() { // Sort the virtual items std::stable_sort(begin, end, - boost::bind(AlbumShuffleComparator, album_key_positions, - album_keys, _1, _2)); + std::bind(AlbumShuffleComparator, album_key_positions, + album_keys, _1, _2)); break; } diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index 8a24ce7f8..cf7721dee 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -21,8 +21,6 @@ #include #include -#include - #include "playlistitem.h" #include "playlistsequence.h" #include "core/tagreaderclient.h" diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index c248a2b3d..f8a604016 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -16,6 +16,17 @@ */ #include "playlistbackend.h" + +#include +#include + +#include +#include +#include +#include +#include +#include + #include "core/application.h" #include "core/database.h" #include "core/scopedtransaction.h" @@ -26,19 +37,11 @@ #include "playlistparsers/cueparser.h" #include "smartplaylists/generator.h" -#include -#include -#include -#include -#include -#include - -#include +using std::placeholders::_1; +using std::shared_ptr; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const int PlaylistBackend::kSongTableJoins = 4; PlaylistBackend::PlaylistBackend(Application* app, QObject* parent) @@ -174,8 +177,10 @@ QFuture PlaylistBackend::GetPlaylistItems(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped( + rows, std::bind( + &PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); } QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { @@ -184,11 +189,12 @@ QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped(rows, std::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); } -PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery( + const SqlRow& row, std::shared_ptr state) { // The song tables get joined first, plus one each for the song ROWIDs const int playlist_row = (Song::kColumns.count() + 1) * kSongTableJoins; @@ -201,13 +207,15 @@ PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boo } } -Song PlaylistBackend::NewSongFromQuery(const SqlRow& row, boost::shared_ptr state) { +Song PlaylistBackend::NewSongFromQuery( + const SqlRow& row, std::shared_ptr state) { return NewPlaylistItemFromQuery(row, state)->Metadata(); } // If song had a CUE and the CUE still exists, the metadata from it will // be applied here. -PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::RestoreCueData( + PlaylistItemPtr item, std::shared_ptr state) { // we need library to run a CueParser; also, this method applies only to // file-type PlaylistItems if(item->type() != "File") { diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h index c908a3a84..eebf07303 100644 --- a/src/playlist/playlistbackend.h +++ b/src/playlist/playlistbackend.h @@ -92,9 +92,9 @@ class PlaylistBackend : public QObject { QList GetPlaylistRows(int playlist); - Song NewSongFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state); + Song NewSongFromQuery(const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, std::shared_ptr state); enum GetPlaylistsFlags { GetPlaylists_OpenInUi = 1, diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 449a1f421..467d10c09 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -18,19 +18,19 @@ #ifndef PLAYLISTITEM_H #define PLAYLISTITEM_H +#include + #include #include #include #include -#include - #include "core/song.h" class QAction; class SqlRow; -class PlaylistItem : public boost::enable_shared_from_this { +class PlaylistItem : public std::enable_shared_from_this { public: PlaylistItem(const QString& type) : type_(type) {} @@ -109,7 +109,7 @@ class PlaylistItem : public boost::enable_shared_from_this { QMap background_colors_; QMap foreground_colors_; }; -typedef boost::shared_ptr PlaylistItemPtr; +typedef std::shared_ptr PlaylistItemPtr; typedef QList PlaylistItemList; Q_DECLARE_METATYPE(PlaylistItemPtr) diff --git a/src/playlist/playlistsequence.h b/src/playlist/playlistsequence.h index cfdae520d..0141b09cf 100644 --- a/src/playlist/playlistsequence.h +++ b/src/playlist/playlistsequence.h @@ -18,12 +18,12 @@ #ifndef PLAYLISTSEQUENCE_H #define PLAYLISTSEQUENCE_H +#include + #include #include "core/settingsprovider.h" -#include - class QMenu; class Ui_PlaylistSequence; @@ -79,7 +79,7 @@ class PlaylistSequence : public QWidget { private: Ui_PlaylistSequence* ui_; - boost::scoped_ptr settings_; + std::unique_ptr settings_; QMenu* repeat_menu_; QMenu* shuffle_menu_; diff --git a/src/playlist/playlistview.h b/src/playlist/playlistview.h index 8fdc1a6c8..8ce39747c 100644 --- a/src/playlist/playlistview.h +++ b/src/playlist/playlistview.h @@ -18,13 +18,13 @@ #ifndef PLAYLISTVIEW_H #define PLAYLISTVIEW_H -#include "playlist.h" +#include #include #include #include -#include +#include "playlist.h" class QCleanlooksStyle; @@ -52,7 +52,7 @@ public: QPainter* painter, const QWidget* widget) const; private: - boost::scoped_ptr cleanlooks_; + std::unique_ptr cleanlooks_; }; diff --git a/src/playlistparsers/xmlparser.h b/src/playlistparsers/xmlparser.h index ee1081f85..33750b028 100644 --- a/src/playlistparsers/xmlparser.h +++ b/src/playlistparsers/xmlparser.h @@ -23,8 +23,6 @@ #include #include -#include - class QDomDocument; class QDomNode; @@ -32,7 +30,7 @@ class XMLParser : public ParserBase { protected: XMLParser(LibraryBackendInterface* library, QObject* parent); - class StreamElement : public boost::noncopyable { + class StreamElement { public: StreamElement(const QString& name, QXmlStreamWriter* stream) : stream_(stream) { stream->writeStartElement(name); @@ -44,6 +42,7 @@ class XMLParser : public ParserBase { private: QXmlStreamWriter* stream_; + Q_DISABLE_COPY(StreamElement); }; }; diff --git a/src/smartplaylists/generator.h b/src/smartplaylists/generator.h index 7046e87ec..561e3b8f5 100644 --- a/src/smartplaylists/generator.h +++ b/src/smartplaylists/generator.h @@ -20,14 +20,13 @@ #include "playlist/playlistitem.h" -#include -#include +#include class LibraryBackend; namespace smart_playlists { -class Generator : public QObject, public boost::enable_shared_from_this { +class Generator : public QObject, public std::enable_shared_from_this { Q_OBJECT public: @@ -38,7 +37,7 @@ public: static const int kDefaultDynamicFuture; // Creates a new Generator of the given type - static boost::shared_ptr Create(const QString& type); + static std::shared_ptr Create(const QString& type); // Should be called before Load on a new Generator void set_library(LibraryBackend* backend) { backend_ = backend; } diff --git a/src/smartplaylists/generator_fwd.h b/src/smartplaylists/generator_fwd.h index db110b0bd..4f46aa135 100644 --- a/src/smartplaylists/generator_fwd.h +++ b/src/smartplaylists/generator_fwd.h @@ -18,13 +18,13 @@ #ifndef PLAYLISTGENERATOR_FWD_H #define PLAYLISTGENERATOR_FWD_H -#include +#include namespace smart_playlists { class Generator; -typedef boost::shared_ptr GeneratorPtr; +typedef std::shared_ptr GeneratorPtr; } // namespace diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp index e0991a582..2bc4f5b6d 100644 --- a/src/smartplaylists/querywizardplugin.cpp +++ b/src/smartplaylists/querywizardplugin.cpp @@ -55,7 +55,7 @@ public: SearchPreview* preview_; - boost::scoped_ptr ui_; + std::unique_ptr ui_; }; class QueryWizardPlugin::SortPage : public QWizardPage { @@ -161,8 +161,8 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { } void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { - boost::shared_ptr gen = - boost::dynamic_pointer_cast(g); + std::shared_ptr gen = + std::dynamic_pointer_cast(g); if (!gen) return; Search search = gen->search(); @@ -198,10 +198,10 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { } GeneratorPtr QueryWizardPlugin::CreateGenerator() const { - boost::shared_ptr gen(new QueryGenerator); + std::shared_ptr gen(new QueryGenerator); gen->Load(MakeSearch()); - return boost::static_pointer_cast(gen); + return std::static_pointer_cast(gen); } void QueryWizardPlugin::UpdateSortOrder() { diff --git a/src/smartplaylists/querywizardplugin.h b/src/smartplaylists/querywizardplugin.h index 8213d945b..8dded7c32 100644 --- a/src/smartplaylists/querywizardplugin.h +++ b/src/smartplaylists/querywizardplugin.h @@ -18,12 +18,13 @@ #ifndef QUERYWIZARDPLUGIN_H #define QUERYWIZARDPLUGIN_H -#include "search.h" #include "wizardplugin.h" +#include + #include -#include +#include "search.h" class Ui_SmartPlaylistQuerySearchPage; class Ui_SmartPlaylistQuerySortPage; @@ -70,7 +71,7 @@ private: Search MakeSearch() const; SearchPage* search_page_; - boost::scoped_ptr sort_ui_; + std::unique_ptr sort_ui_; int previous_scrollarea_max_; }; diff --git a/src/smartplaylists/searchpreview.cpp b/src/smartplaylists/searchpreview.cpp index 08c6065f0..d16db4c25 100644 --- a/src/smartplaylists/searchpreview.cpp +++ b/src/smartplaylists/searchpreview.cpp @@ -15,14 +15,17 @@ along with Clementine. If not, see . */ -#include "querygenerator.h" #include "searchpreview.h" #include "ui_searchpreview.h" -#include "playlist/playlist.h" + +#include #include #include +#include "querygenerator.h" +#include "playlist/playlist.h" + namespace smart_playlists { typedef QFuture Future; @@ -94,7 +97,7 @@ PlaylistItemList DoRunSearch(GeneratorPtr gen) { void SearchPreview::RunSearch(const Search& search) { generator_.reset(new QueryGenerator); generator_->set_library(backend_); - boost::dynamic_pointer_cast(generator_)->Load(search); + std::dynamic_pointer_cast(generator_)->Load(search); ui_->busy_container->show(); ui_->count_label->hide(); @@ -109,7 +112,7 @@ void SearchPreview::SearchFinished() { FutureWatcher* watcher = static_cast(sender()); watcher->deleteLater(); - last_search_ = boost::dynamic_pointer_cast(generator_)->search(); + last_search_ = std::dynamic_pointer_cast(generator_)->search(); generator_.reset(); if (pending_search_.is_valid() && pending_search_ != last_search_) { diff --git a/src/songinfo/echonestbiographies.cpp b/src/songinfo/echonestbiographies.cpp index 0ac9f69a1..923fb4bb9 100644 --- a/src/songinfo/echonestbiographies.cpp +++ b/src/songinfo/echonestbiographies.cpp @@ -16,18 +16,19 @@ */ #include "echonestbiographies.h" -#include "songinfotextview.h" -#include "core/logging.h" + +#include #include -#include +#include "songinfotextview.h" +#include "core/logging.h" struct EchoNestBiographies::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; EchoNestBiographies::EchoNestBiographies() { @@ -46,7 +47,7 @@ EchoNestBiographies::EchoNestBiographies() { } void EchoNestBiographies::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchBiographies(); @@ -70,7 +71,7 @@ void EchoNestBiographies::RequestFinished() { QSet already_seen; - foreach (const Echonest::Biography& bio, request->artist_->biographies()) { + for (const Echonest::Biography& bio : request->artist_->biographies()) { QString canonical_site = bio.site().toLower(); canonical_site.replace(QRegExp("[^a-z]"),""); diff --git a/src/songinfo/echonestbiographies.h b/src/songinfo/echonestbiographies.h index 5223fa114..8e8175fd1 100644 --- a/src/songinfo/echonestbiographies.h +++ b/src/songinfo/echonestbiographies.h @@ -18,9 +18,9 @@ #ifndef ECHONESTBIOGRAPHIES_H #define ECHONESTBIOGRAPHIES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -40,7 +40,7 @@ private: QMap site_icons_; struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/echonestimages.cpp b/src/songinfo/echonestimages.cpp index 87a5c8559..b16e9c20c 100644 --- a/src/songinfo/echonestimages.cpp +++ b/src/songinfo/echonestimages.cpp @@ -16,21 +16,22 @@ */ #include "echonestimages.h" -#include "core/logging.h" + +#include #include -#include +#include "core/logging.h" struct EchoNestImages::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestImages::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchImages(); diff --git a/src/songinfo/echonestimages.h b/src/songinfo/echonestimages.h index ddd3f66e5..25585b9bb 100644 --- a/src/songinfo/echonestimages.h +++ b/src/songinfo/echonestimages.h @@ -18,9 +18,9 @@ #ifndef ECHONESTIMAGES_H #define ECHONESTIMAGES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -35,7 +35,7 @@ private slots: private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/echonesttags.cpp b/src/songinfo/echonesttags.cpp index 5e4c902ab..6ed53afe2 100644 --- a/src/songinfo/echonesttags.cpp +++ b/src/songinfo/echonesttags.cpp @@ -16,22 +16,23 @@ */ #include "echonesttags.h" -#include "tagwidget.h" -#include "core/logging.h" + +#include #include -#include +#include "tagwidget.h" +#include "core/logging.h" struct EchoNestTags::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestTags::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchTerms(); @@ -65,7 +66,7 @@ void EchoNestTags::RequestFinished() { widget->SetIcon(data.icon_); - foreach (const Echonest::Term& term, request->artist_->terms()) { + for (const Echonest::Term& term : request->artist_->terms()) { widget->AddTag(term.name()); if (widget->count() >= 10) break; diff --git a/src/songinfo/echonesttags.h b/src/songinfo/echonesttags.h index 7ef9284b3..96bddd86d 100644 --- a/src/songinfo/echonesttags.h +++ b/src/songinfo/echonesttags.h @@ -18,9 +18,9 @@ #ifndef ECHONESTTAGS_H #define ECHONESTTAGS_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; @@ -35,7 +35,7 @@ private slots: private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; diff --git a/src/songinfo/songinfoview.h b/src/songinfo/songinfoview.h index 887e31242..82b869dfc 100644 --- a/src/songinfo/songinfoview.h +++ b/src/songinfo/songinfoview.h @@ -18,9 +18,9 @@ #ifndef SONGINFOVIEW_H #define SONGINFOVIEW_H -#include "songinfobase.h" +#include -#include +#include "songinfobase.h" class UltimateLyricsProvider; class UltimateLyricsReader; @@ -53,7 +53,7 @@ private slots: void UltimateLyricsParsed(); private: - boost::scoped_ptr ultimate_reader_; + std::unique_ptr ultimate_reader_; }; #endif // SONGINFOVIEW_H diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp index 349733593..98f798b99 100644 --- a/src/songinfo/ultimatelyricsprovider.cpp +++ b/src/songinfo/ultimatelyricsprovider.cpp @@ -26,8 +26,6 @@ #include #include -#include - const int UltimateLyricsProvider::kRedirectLimit = 5; diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 9ce4c46ec..478190a22 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -17,6 +17,8 @@ #include "transcoder.h" +#include + #include #include #include @@ -24,12 +26,10 @@ #include #include -#include - #include "core/logging.h" #include "core/signalchecker.h" -using boost::shared_ptr; +using std::shared_ptr; int Transcoder::JobFinishedEvent::sEventType = -1; @@ -543,7 +543,7 @@ void Transcoder::Cancel() { QMap Transcoder::GetProgress() const { QMap ret; - foreach (boost::shared_ptr state, current_jobs_) { + for (const auto& state : current_jobs_) { if (!state->pipeline_) continue; diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index 303009525..ab3e3efcf 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -18,6 +18,8 @@ #ifndef TRANSCODER_H #define TRANSCODER_H +#include + #include #include @@ -25,9 +27,6 @@ #include #include -#include -#include - #include "core/song.h" @@ -139,7 +138,7 @@ class Transcoder : public QObject { static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); private: - typedef QList > JobStateList; + typedef QList > JobStateList; int max_threads_; QList queued_jobs_; diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index ab98af032..43112cca3 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -211,7 +211,7 @@ void AlbumCoverManager::showEvent(QShowEvent *) { void AlbumCoverManager::closeEvent(QCloseEvent* e) { if (!cover_fetching_tasks_.isEmpty()) { - boost::scoped_ptr message_box(new QMessageBox( + std::unique_ptr message_box(new QMessageBox( QMessageBox::Question, tr("Really cancel?"), tr("Closing this window will stop searching for album covers."), QMessageBox::Abort, this)); diff --git a/src/ui/albumcovermanagerlist.cpp b/src/ui/albumcovermanagerlist.cpp index a73cb9f5a..faa671f51 100644 --- a/src/ui/albumcovermanagerlist.cpp +++ b/src/ui/albumcovermanagerlist.cpp @@ -15,16 +15,17 @@ along with Clementine. If not, see . */ -#include "albumcovermanager.h" #include "albumcovermanagerlist.h" -#include "library/librarybackend.h" -#include "playlist/songmimedata.h" -#include +#include #include #include +#include "albumcovermanager.h" +#include "library/librarybackend.h" +#include "playlist/songmimedata.h" + AlbumCoverManagerList::AlbumCoverManagerList(QWidget *parent) : QListWidget(parent), manager_(NULL) @@ -48,7 +49,7 @@ QMimeData* AlbumCoverManagerList::mimeData(const QList items) } // Get the QAbstractItemModel data so the picture works - boost::scoped_ptr orig_data(QListWidget::mimeData(items)); + std::unique_ptr orig_data(QListWidget::mimeData(items)); SongMimeData* mime_data = new SongMimeData; mime_data->backend = manager_->backend(); diff --git a/src/ui/albumcoversearcher.h b/src/ui/albumcoversearcher.h index 710e9ce8a..f028cce40 100644 --- a/src/ui/albumcoversearcher.h +++ b/src/ui/albumcoversearcher.h @@ -18,14 +18,12 @@ #ifndef ALBUMCOVERSEARCHER_H #define ALBUMCOVERSEARCHER_H -#include "covers/albumcoverfetcher.h" -#include "covers/albumcoverloaderoptions.h" - #include #include #include -#include +#include "covers/albumcoverfetcher.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverLoader; class Application; @@ -35,7 +33,6 @@ class QModelIndex; class QStandardItem; class QStandardItemModel; - class SizeOverlayDelegate : public QStyledItemDelegate { public: static const int kMargin; diff --git a/src/ui/globalshortcutgrabber.mm b/src/ui/globalshortcutgrabber.mm index 0fe26dd45..873bf9ac7 100644 --- a/src/ui/globalshortcutgrabber.mm +++ b/src/ui/globalshortcutgrabber.mm @@ -24,11 +24,9 @@ #include -#include - #import "core/mac_utilities.h" -class MacMonitorWrapper : boost::noncopyable { +class MacMonitorWrapper { public: explicit MacMonitorWrapper(id monitor) : local_monitor_(monitor) {} @@ -36,6 +34,7 @@ class MacMonitorWrapper : boost::noncopyable { private: id local_monitor_; + Q_DISABLE_COPY(MacMonitorWrapper); }; bool GlobalShortcutGrabber::HandleMacEvent(NSEvent* event) { diff --git a/src/ui/globalshortcutssettingspage.h b/src/ui/globalshortcutssettingspage.h index dd830ee74..593b14a5c 100644 --- a/src/ui/globalshortcutssettingspage.h +++ b/src/ui/globalshortcutssettingspage.h @@ -18,11 +18,11 @@ #ifndef GLOBALSHORTCUTSSETTINGSPAGE_H #define GLOBALSHORTCUTSSETTINGSPAGE_H +#include + #include #include -#include - #include "core/globalshortcuts.h" #include "ui/settingspage.h" @@ -64,7 +64,7 @@ private: Ui_GlobalShortcutsSettingsPage* ui_; bool initialised_; - boost::scoped_ptr grabber_; + std::unique_ptr grabber_; QSettings settings_; QMap shortcuts_; diff --git a/src/ui/macsystemtrayicon.h b/src/ui/macsystemtrayicon.h index 154473bd7..1cfa5f6ab 100644 --- a/src/ui/macsystemtrayicon.h +++ b/src/ui/macsystemtrayicon.h @@ -18,14 +18,13 @@ #ifndef MACSYSTEMTRAYICON_H #define MACSYSTEMTRAYICON_H -#include "systemtrayicon.h" +#include -#include -#include +#include "systemtrayicon.h" class MacSystemTrayIconPrivate; -class MacSystemTrayIcon : public SystemTrayIcon, boost::noncopyable { +class MacSystemTrayIcon : public SystemTrayIcon { Q_OBJECT public: @@ -52,8 +51,8 @@ protected: private: QPixmap orange_icon_; QPixmap grey_icon_; - - boost::scoped_ptr p_; + std::unique_ptr p_; + Q_DISABLE_COPY(MacSystemTrayIcon); }; #endif // MACSYSTEMTRAYICON_H diff --git a/src/ui/macsystemtrayicon.mm b/src/ui/macsystemtrayicon.mm index cc4695e1a..5ff661ab1 100644 --- a/src/ui/macsystemtrayicon.mm +++ b/src/ui/macsystemtrayicon.mm @@ -56,7 +56,7 @@ } @end -class MacSystemTrayIconPrivate : boost::noncopyable { +class MacSystemTrayIconPrivate { public: MacSystemTrayIconPrivate() { dock_menu_ = [[NSMenu alloc] initWithTitle:@"DockMenu"]; @@ -159,6 +159,8 @@ class MacSystemTrayIconPrivate : boost::noncopyable { NSMenuItem* now_playing_; NSMenuItem* now_playing_artist_; NSMenuItem* now_playing_title_; + + Q_DISABLE_COPY(MacSystemTrayIconPrivate); }; MacSystemTrayIcon::MacSystemTrayIcon(QObject* parent) diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 327471255..e7063e0fb 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -17,6 +17,33 @@ #include "mainwindow.h" #include "ui_mainwindow.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef Q_OS_WIN32 +# include +#endif + +#include + + #include "core/appearance.h" #include "core/application.h" #include "core/backgroundstreams.h" @@ -122,34 +149,6 @@ # include "moodbar/moodbarproxystyle.h" #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef Q_OS_WIN32 -# include -#endif - - -#include - -#include - -using boost::shared_ptr; -using boost::scoped_ptr; - #ifdef Q_OS_DARWIN // Non exported mac-specific function. void qt_mac_set_dock_menu(QMenu*); @@ -180,18 +179,8 @@ MainWindow::MainWindow(Application* app, device_view_(device_view_container_->view()), song_info_view_(new SongInfoView(this)), artist_info_view_(new ArtistInfoView(this)), - settings_dialog_(NULL), - cover_manager_(NULL), equalizer_(new Equalizer), - error_dialog_(NULL), organise_dialog_(new OrganiseDialog(app_->task_manager())), - queue_manager_(NULL), -#ifdef ENABLE_VISUALISATIONS - visualisation_(NULL), -#endif -#ifdef HAVE_WIIMOTEDEV - wiimotedev_shortcuts_(NULL), -#endif playlist_menu_(new QMenu(this)), playlist_add_to_another_(NULL), playlistitem_actions_separator_(NULL), @@ -1962,7 +1951,7 @@ void MainWindow::PlaylistDelete() { QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage(new FilesystemMusicStorage("/")); + std::shared_ptr storage(new FilesystemMusicStorage("/")); // Get selected songs SongList selected_songs; diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 8f11c8bdc..4ab78948f 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -18,7 +18,7 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include +#include #include #include @@ -287,8 +287,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { Application* app_; SystemTrayIcon* tray_icon_; OSD* osd_; - boost::scoped_ptr edit_tag_dialog_; - boost::scoped_ptr about_dialog_; + std::unique_ptr edit_tag_dialog_; + std::unique_ptr about_dialog_; GlobalShortcuts* global_shortcuts_; Remote* remote_; @@ -297,7 +297,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { LibraryViewContainer* library_view_; FileView* file_view_; #ifdef HAVE_AUDIOCD - boost::scoped_ptr rip_cd_; + std::unique_ptr rip_cd_; #endif PlaylistListContainer* playlist_list_; InternetViewContainer* internet_view_; @@ -306,25 +306,25 @@ class MainWindow : public QMainWindow, public PlatformInterface { SongInfoView* song_info_view_; ArtistInfoView* artist_info_view_; - boost::scoped_ptr settings_dialog_; - boost::scoped_ptr add_stream_dialog_; - boost::scoped_ptr cover_manager_; - boost::scoped_ptr equalizer_; - boost::scoped_ptr transcode_dialog_; - boost::scoped_ptr error_dialog_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr queue_manager_; + std::unique_ptr settings_dialog_; + std::unique_ptr add_stream_dialog_; + std::unique_ptr cover_manager_; + std::unique_ptr equalizer_; + std::unique_ptr transcode_dialog_; + std::unique_ptr error_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr queue_manager_; - boost::scoped_ptr tag_fetcher_; - boost::scoped_ptr track_selection_dialog_; + std::unique_ptr tag_fetcher_; + std::unique_ptr track_selection_dialog_; PlaylistItemList autocomplete_tag_items_; #ifdef ENABLE_VISUALISATIONS - boost::scoped_ptr visualisation_; + std::unique_ptr visualisation_; #endif #ifdef HAVE_WIIMOTEDEV - boost::scoped_ptr wiimotedev_shortcuts_; + std::unique_ptr wiimotedev_shortcuts_; #endif QAction* library_show_all_; diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 45bea8f6e..51749fa74 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -15,14 +15,10 @@ along with Clementine. If not, see . */ -#include "iconloader.h" #include "organisedialog.h" -#include "organiseerrordialog.h" #include "ui_organisedialog.h" -#include "core/musicstorage.h" -#include "core/organise.h" -#include "core/tagreaderclient.h" -#include "core/utilities.h" + +#include #include #include @@ -34,6 +30,13 @@ #include #include +#include "iconloader.h" +#include "organiseerrordialog.h" +#include "core/musicstorage.h" +#include "core/organise.h" +#include "core/tagreaderclient.h" +#include "core/utilities.h" + const char* OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%title.%extension"; const char* OrganiseDialog::kSettingsGroup = "OrganiseDialog"; @@ -190,12 +193,12 @@ Organise::NewSongInfoList OrganiseDialog::ComputeNewSongsFilenames( void OrganiseDialog::UpdatePreviews() { const QModelIndex destination = ui_->destination->model()->index( ui_->destination->currentIndex(), 0); - boost::shared_ptr storage; + std::shared_ptr storage; bool has_local_destination = false; if (destination.isValid()) { storage = destination.data(MusicStorage::Role_Storage) - .value >(); + .value>(); if (storage) { has_local_destination = !storage->LocalPath().isEmpty(); } @@ -294,9 +297,9 @@ void OrganiseDialog::accept() { const QModelIndex destination = ui_->destination->model()->index( ui_->destination->currentIndex(), 0); - boost::shared_ptr storage = + std::shared_ptr storage = destination.data(MusicStorage::Role_StorageForceConnect) - .value >(); + .value>(); if (!storage) return; diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index a9a2ce0b8..4466e0307 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -19,6 +19,7 @@ #define ORGANISEDIALOG_H #include + #include #include #include diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp index d16baf36d..49ecf7452 100644 --- a/src/visualisations/projectmvisualisation.cpp +++ b/src/visualisations/projectmvisualisation.cpp @@ -48,15 +48,13 @@ ProjectMVisualisation::ProjectMVisualisation(QObject *parent) : QGraphicsScene(parent), - projectm_(NULL), - preset_model_(NULL), + preset_model_(nullptr), mode_(Random), duration_(15), - texture_size_(512) -{ + texture_size_(512) { connect(this, SIGNAL(sceneRectChanged(QRectF)), SLOT(SceneRectChanged(QRectF))); - for (int i=0 ; i + #include #include #include -#include - #include "engines/bufferconsumer.h" class projectM; @@ -78,12 +78,12 @@ private: int IndexOfPreset(const QString& path) const; private: - boost::scoped_ptr projectm_; + std::unique_ptr projectm_; ProjectMPresetModel* preset_model_; Mode mode_; int duration_; - boost::scoped_ptr temporary_font_; + std::unique_ptr temporary_font_; std::vector default_rating_list_; diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h index cbdbb2167..5d9d412fa 100644 --- a/src/widgets/fancytabwidget.h +++ b/src/widgets/fancytabwidget.h @@ -30,6 +30,8 @@ #ifndef FANCYTABWIDGET_H #define FANCYTABWIDGET_H +#include + #include #include #include @@ -37,8 +39,6 @@ #include #include -#include - class QActionGroup; class QMenu; class QPainter; @@ -219,7 +219,7 @@ private: QMenu* menu_; - boost::scoped_ptr proxy_style_; + std::unique_ptr proxy_style_; }; } // namespace Internal diff --git a/src/widgets/fileview.h b/src/widgets/fileview.h index 07e5d239f..db740bcb7 100644 --- a/src/widgets/fileview.h +++ b/src/widgets/fileview.h @@ -18,13 +18,13 @@ #ifndef FILEVIEW_H #define FILEVIEW_H +#include + #include #include #include #include -#include - #include "core/song.h" class FilesystemMusicStorage; @@ -102,7 +102,7 @@ class FileView : public QWidget { QUndoStack* undo_stack_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; QString lazy_set_path_; diff --git a/src/widgets/nowplayingwidget.h b/src/widgets/nowplayingwidget.h index b7dd4da1d..fee7f8efe 100644 --- a/src/widgets/nowplayingwidget.h +++ b/src/widgets/nowplayingwidget.h @@ -18,12 +18,12 @@ #ifndef NOWPLAYINGWIDGET_H #define NOWPLAYINGWIDGET_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverChoiceController; class Application; @@ -145,10 +145,10 @@ private: static const char* kHypnotoadPath; QAction* bask_in_his_glory_action_; - boost::scoped_ptr hypnotoad_; - boost::scoped_ptr big_hypnotoad_; + std::unique_ptr hypnotoad_; + std::unique_ptr big_hypnotoad_; - boost::scoped_ptr spinner_animation_; + std::unique_ptr spinner_animation_; bool downloading_covers_; bool aww_; diff --git a/src/widgets/osd.h b/src/widgets/osd.h index d7783e88a..158bc0d9b 100644 --- a/src/widgets/osd.h +++ b/src/widgets/osd.h @@ -18,6 +18,8 @@ #ifndef OSD_H #define OSD_H +#include + #include #include #include @@ -36,7 +38,6 @@ class QDBusPendingCallWatcher; #ifdef HAVE_DBUS # include -# include QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); @@ -137,7 +138,7 @@ class OSD : public QObject { #endif // Q_OS_DARWIN #ifdef HAVE_DBUS - boost::scoped_ptr interface_; + std::unique_ptr interface_; uint notification_id_; QDateTime last_notification_time_; #endif diff --git a/src/widgets/osd_x11.cpp b/src/widgets/osd_x11.cpp index afe8e0db1..831b9761a 100644 --- a/src/widgets/osd_x11.cpp +++ b/src/widgets/osd_x11.cpp @@ -15,19 +15,20 @@ along with Clementine. If not, see . */ -#include "config.h" #include "osd.h" -#include "core/logging.h" + +#include #include +#include "config.h" +#include "core/logging.h" + #ifdef HAVE_DBUS #include "dbus/notification.h" #include #include -using boost::scoped_ptr; - QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image) { if (image.isNull()) { // Sometimes this gets called with a null QImage for no obvious reason. @@ -142,7 +143,7 @@ void OSD::ShowMessageNative(const QString& summary, const QString& message, #ifdef HAVE_DBUS void OSD::CallFinished(QDBusPendingCallWatcher* watcher) { - scoped_ptr w(watcher); + std::unique_ptr w(watcher); QDBusPendingReply reply = *watcher; if (reply.isError()) { diff --git a/src/wiimotedev/shortcuts.cpp b/src/wiimotedev/shortcuts.cpp index c01e4f4f8..6379a5ab1 100644 --- a/src/wiimotedev/shortcuts.cpp +++ b/src/wiimotedev/shortcuts.cpp @@ -36,7 +36,6 @@ WiimotedevShortcuts::WiimotedevShortcuts(OSD* osd, QWidget* window, QObject* par wiimotedev_device_(1), wiimotedev_enable_(true), wiimotedev_focus_(false), - wiimotedev_iface_(NULL), wiimotedev_notification_(true) { connect(this, SIGNAL(WiiremoteActived(int)), osd_, SLOT(WiiremoteActived(int))); diff --git a/src/wiimotedev/shortcuts.h b/src/wiimotedev/shortcuts.h index 046a5829b..be0206789 100644 --- a/src/wiimotedev/shortcuts.h +++ b/src/wiimotedev/shortcuts.h @@ -18,8 +18,9 @@ #ifndef WIIMOTEDEV_SHORTCUTS_H #define WIIMOTEDEV_SHORTCUTS_H +#include + #include -#include #include "dbus/wiimotedev.h" #include "core/player.h" @@ -77,7 +78,7 @@ private: quint32 wiimotedev_device_; bool wiimotedev_enable_; bool wiimotedev_focus_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; bool wiimotedev_notification_; QHash actions_; diff --git a/src/wiimotedev/wiimoteshortcutgrabber.h b/src/wiimotedev/wiimoteshortcutgrabber.h index 130e167e8..d02c9fc8e 100644 --- a/src/wiimotedev/wiimoteshortcutgrabber.h +++ b/src/wiimotedev/wiimoteshortcutgrabber.h @@ -18,11 +18,11 @@ #ifndef WIIMOTESHORTCUTGRABBER_H #define WIIMOTESHORTCUTGRABBER_H +#include + #include #include -#include - #include "wiimotesettingspage.h" #include "dbus/wiimotedev.h" @@ -47,7 +47,7 @@ private: Ui_WiimoteShortcutGrabber* ui_; WiimoteSettingsPage* config_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; quint32 wiimotedev_device_; quint64 wiimotedev_buttons_; From 71893e4847033c324c8765c7d26ed888d883fdee Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 16:49:49 +0100 Subject: [PATCH 089/362] Use nullptr instead of NULL everywhere. --- ext/clementine-spotifyblob/main.cpp | 2 +- ext/clementine-spotifyblob/mediapipeline.cpp | 32 ++++---- ext/clementine-spotifyblob/spotifyclient.cpp | 18 ++-- ext/clementine-tagreader/main.cpp | 2 +- ext/libclementine-common/core/logging.cpp | 12 +-- .../core/messagehandler.cpp | 6 +- ext/libclementine-tagreader/tagreader.cpp | 40 ++++----- src/analyzers/analyzer.cpp | 2 +- src/analyzers/analyzerbase.cpp | 2 +- src/analyzers/analyzercontainer.cpp | 8 +- src/analyzers/glanalyzer2.cpp | 4 +- src/analyzers/glanalyzer3.cpp | 4 +- src/core/application.cpp | 48 +++++------ src/core/backgroundstreams.cpp | 2 +- src/core/commandlineoptions.cpp | 2 +- src/core/crashreporting.cpp | 8 +- src/core/database.cpp | 8 +- src/core/deletefiles.cpp | 2 +- src/core/globalshortcuts.cpp | 4 +- src/core/gnomeglobalshortcutbackend.cpp | 2 +- src/core/mergedproxymodel.cpp | 8 +- src/core/mpris1.cpp | 6 +- src/core/network.cpp | 4 +- src/core/networkproxyfactory.cpp | 2 +- src/core/organise.cpp | 2 +- src/core/player.cpp | 4 +- src/core/song.cpp | 2 +- src/core/songloader.cpp | 24 +++--- src/core/tagreaderclient.cpp | 2 +- src/core/utilities.cpp | 4 +- src/devices/cddadevice.cpp | 14 ++-- src/devices/cddalister.cpp | 2 +- src/devices/connecteddevice.cpp | 4 +- src/devices/devicelister.cpp | 2 +- src/devices/devicemanager.cpp | 10 +-- src/devices/deviceproperties.cpp | 2 +- src/devices/deviceview.cpp | 12 +-- src/devices/giolister.cpp | 40 ++++----- src/devices/gpoddevice.cpp | 20 ++--- src/devices/gpodloader.cpp | 6 +- src/devices/mtpconnection.cpp | 6 +- src/devices/mtpdevice.cpp | 8 +- src/devices/mtploader.cpp | 5 +- src/engines/gstengine.cpp | 12 +-- src/engines/gstenginepipeline.cpp | 82 ++++++++++--------- src/globalsearch/globalsearch.cpp | 4 +- src/globalsearch/globalsearchmodel.cpp | 2 +- src/globalsearch/globalsearchview.cpp | 6 +- .../groovesharksearchprovider.cpp | 2 +- src/globalsearch/searchprovider.cpp | 2 +- src/globalsearch/soundcloudsearchprovider.cpp | 2 +- src/globalsearch/spotifysearchprovider.cpp | 8 +- src/internet/cloudfileservice.cpp | 2 +- src/internet/digitallyimportedservicebase.cpp | 2 +- src/internet/digitallyimportedurlhandler.cpp | 2 +- src/internet/dropboxauthenticator.cpp | 2 +- src/internet/groovesharkservice.cpp | 70 ++++++++-------- src/internet/icecastmodel.cpp | 4 +- src/internet/icecastservice.cpp | 6 +- src/internet/internetmodel.cpp | 12 +-- src/internet/internetservice.cpp | 8 +- src/internet/internetviewcontainer.cpp | 12 +-- src/internet/jamendoservice.cpp | 10 +-- src/internet/lastfmservice.cpp | 16 ++-- src/internet/magnatunedownloaddialog.cpp | 4 +- src/internet/magnatuneservice.cpp | 10 +-- src/internet/savedradio.cpp | 4 +- src/internet/somafmservice.cpp | 4 +- src/internet/somafmurlhandler.cpp | 2 +- src/internet/soundcloudservice.cpp | 6 +- src/internet/spotifyblobdownloader.cpp | 4 +- src/internet/spotifyserver.cpp | 2 +- src/internet/spotifyservice.cpp | 28 +++---- src/internet/subsonicservice.cpp | 10 +-- src/internet/ubuntuoneauthenticator.cpp | 2 +- src/library/library.cpp | 8 +- src/library/libraryfilterwidget.cpp | 2 +- src/library/librarymodel.cpp | 18 ++-- src/library/libraryview.cpp | 8 +- src/library/librarywatcher.cpp | 4 +- src/main.cpp | 6 +- src/moodbar/moodbarcontroller.cpp | 2 +- src/moodbar/moodbaritemdelegate.cpp | 2 +- src/moodbar/moodbarpipeline.cpp | 25 +++--- src/moodbar/moodbarproxystyle.cpp | 6 +- src/musicbrainz/chromaprinter.cpp | 30 +++---- src/musicbrainz/tagfetcher.cpp | 4 +- src/networkremote/networkremotehelper.cpp | 4 +- src/networkremote/outgoingdatacreator.cpp | 2 +- src/networkremote/tinysvcmdns.cpp | 4 +- src/networkremote/zeroconf.cpp | 4 +- src/playlist/playlist.cpp | 8 +- src/playlist/playlistcontainer.cpp | 10 +-- src/playlist/playlistfilterparser.cpp | 2 +- src/playlist/playlistitem.cpp | 4 +- src/playlist/playlistlistcontainer.cpp | 4 +- src/playlist/playlistlistmodel.cpp | 2 +- src/playlist/playlistmanager.cpp | 10 +-- src/playlist/playlisttabbar.cpp | 2 +- src/playlist/playlistview.cpp | 8 +- src/playlist/queue.cpp | 2 +- src/playlist/queuemanager.cpp | 6 +- src/playlist/songloaderinserter.cpp | 4 +- src/playlistparsers/playlistparser.cpp | 4 +- src/podcasts/gpoddersearchpage.cpp | 2 +- src/podcasts/gpoddertoptagsmodel.cpp | 2 +- src/podcasts/gpoddertoptagspage.cpp | 2 +- src/podcasts/podcastdownloader.cpp | 6 +- src/podcasts/podcastinfowidget.cpp | 4 +- src/podcasts/podcastservice.cpp | 6 +- src/smartplaylists/generator.cpp | 4 +- src/smartplaylists/querywizardplugin.cpp | 2 +- src/smartplaylists/searchpreview.cpp | 4 +- src/smartplaylists/searchtermwidget.cpp | 12 +-- src/songinfo/songinfobase.cpp | 2 +- src/songinfo/songinfoview.cpp | 2 +- src/transcoder/transcoder.cpp | 32 ++++---- src/transcoder/transcoderoptionsdialog.cpp | 2 +- src/ui/addstreamdialog.cpp | 2 +- src/ui/albumcoverchoicecontroller.cpp | 12 +-- src/ui/albumcovermanager.cpp | 6 +- src/ui/albumcovermanagerlist.cpp | 4 +- src/ui/albumcoversearcher.cpp | 2 +- src/ui/edittagdialog.cpp | 2 +- src/ui/mainwindow.cpp | 10 +-- src/ui/qtsystemtrayicon.cpp | 14 ++-- src/ui/ripcd.cpp | 2 +- src/ui/settingsdialog.cpp | 2 +- src/ui/standarditemiconloader.cpp | 2 +- src/ui/windows7thumbbar.cpp | 8 +- src/visualisations/projectmvisualisation.cpp | 2 +- src/visualisations/visualisationcontainer.cpp | 4 +- src/visualisations/visualisationselector.cpp | 2 +- src/widgets/fancytabwidget.cpp | 6 +- src/widgets/fileview.cpp | 4 +- src/widgets/nowplayingwidget.cpp | 8 +- src/widgets/prettyimage.cpp | 2 +- src/widgets/trackslider.cpp | 2 +- 138 files changed, 559 insertions(+), 553 deletions(-) diff --git a/ext/clementine-spotifyblob/main.cpp b/ext/clementine-spotifyblob/main.cpp index 7d8f61729..238049e04 100644 --- a/ext/clementine-spotifyblob/main.cpp +++ b/ext/clementine-spotifyblob/main.cpp @@ -35,7 +35,7 @@ int main(int argc, char** argv) { logging::Init(); - gst_init(NULL, NULL); + gst_init(nullptr, nullptr); const QStringList arguments(a.arguments()); diff --git a/ext/clementine-spotifyblob/mediapipeline.cpp b/ext/clementine-spotifyblob/mediapipeline.cpp index 38c3541ee..859fd28ab 100644 --- a/ext/clementine-spotifyblob/mediapipeline.cpp +++ b/ext/clementine-spotifyblob/mediapipeline.cpp @@ -28,8 +28,8 @@ MediaPipeline::MediaPipeline(int port, quint64 length_msec) : port_(port), length_msec_(length_msec), accepting_data_(true), - pipeline_(NULL), - appsrc_(NULL), + pipeline_(nullptr), + appsrc_(nullptr), byte_rate_(1), offset_bytes_(0) { @@ -49,15 +49,15 @@ bool MediaPipeline::Init(int sample_rate, int channels) { pipeline_ = gst_pipeline_new("pipeline"); // Create elements - appsrc_ = GST_APP_SRC(gst_element_factory_make("appsrc", NULL)); - GstElement* gdppay = gst_element_factory_make("gdppay", NULL); - tcpsink_ = gst_element_factory_make("tcpclientsink", NULL); + appsrc_ = GST_APP_SRC(gst_element_factory_make("appsrc", nullptr)); + GstElement* gdppay = gst_element_factory_make("gdppay", nullptr); + tcpsink_ = gst_element_factory_make("tcpclientsink", nullptr); if (!pipeline_ || !appsrc_ || !tcpsink_) { - if (pipeline_) { gst_object_unref(GST_OBJECT(pipeline_)); pipeline_ = NULL; } - if (appsrc_) { gst_object_unref(GST_OBJECT(appsrc_)); appsrc_ = NULL; } + if (pipeline_) { gst_object_unref(GST_OBJECT(pipeline_)); pipeline_ = nullptr; } + if (appsrc_) { gst_object_unref(GST_OBJECT(appsrc_)); appsrc_ = nullptr; } if (gdppay) { gst_object_unref(GST_OBJECT(gdppay)); } - if (tcpsink_) { gst_object_unref(GST_OBJECT(tcpsink_)); tcpsink_ = NULL; } + if (tcpsink_) { gst_object_unref(GST_OBJECT(tcpsink_)); tcpsink_ = nullptr; } return false; } @@ -65,22 +65,22 @@ bool MediaPipeline::Init(int sample_rate, int channels) { gst_bin_add(GST_BIN(pipeline_), GST_ELEMENT(appsrc_)); gst_bin_add(GST_BIN(pipeline_), gdppay); gst_bin_add(GST_BIN(pipeline_), tcpsink_); - gst_element_link_many(GST_ELEMENT(appsrc_), gdppay, tcpsink_, NULL); + gst_element_link_many(GST_ELEMENT(appsrc_), gdppay, tcpsink_, nullptr); // Set the sink's port - g_object_set(G_OBJECT(tcpsink_), "host", "127.0.0.1", NULL); - g_object_set(G_OBJECT(tcpsink_), "port", port_, NULL); + g_object_set(G_OBJECT(tcpsink_), "host", "127.0.0.1", nullptr); + g_object_set(G_OBJECT(tcpsink_), "port", port_, nullptr); // Try to send 5 seconds of audio in advance to initially fill Clementine's // buffer. - g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), NULL); + g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), nullptr); // We know the time of each buffer - g_object_set(G_OBJECT(appsrc_), "format", GST_FORMAT_TIME, NULL); + g_object_set(G_OBJECT(appsrc_), "format", GST_FORMAT_TIME, nullptr); // Spotify only pushes data to us every 100ms, so keep the appsrc half full // to prevent tiny stalls. - g_object_set(G_OBJECT(appsrc_), "min-percent", 50, NULL); + g_object_set(G_OBJECT(appsrc_), "min-percent", 50, nullptr); // Set callbacks for when to start/stop pushing data GstAppSrcCallbacks callbacks; @@ -88,7 +88,7 @@ bool MediaPipeline::Init(int sample_rate, int channels) { callbacks.need_data = NeedDataCallback; callbacks.seek_data = SeekDataCallback; - gst_app_src_set_callbacks(appsrc_, &callbacks, this, NULL); + gst_app_src_set_callbacks(appsrc_, &callbacks, this, nullptr); #if Q_BYTE_ORDER == Q_BIG_ENDIAN const int endianness = G_BIG_ENDIAN; @@ -104,7 +104,7 @@ bool MediaPipeline::Init(int sample_rate, int channels) { "depth", G_TYPE_INT, 16, "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, channels, - NULL); + nullptr); gst_app_src_set_caps(appsrc_, caps); gst_caps_unref(caps); diff --git a/ext/clementine-spotifyblob/spotifyclient.cpp b/ext/clementine-spotifyblob/spotifyclient.cpp index e89ef0991..751d3f8e8 100644 --- a/ext/clementine-spotifyblob/spotifyclient.cpp +++ b/ext/clementine-spotifyblob/spotifyclient.cpp @@ -38,10 +38,10 @@ const int SpotifyClient::kWaveHeaderSize = 44; SpotifyClient::SpotifyClient(QObject* parent) - : AbstractMessageHandler(NULL, parent), + : AbstractMessageHandler(nullptr, parent), api_key_(QByteArray::fromBase64(kSpotifyApiKey)), protocol_socket_(new QTcpSocket(this)), - session_(NULL), + session_(nullptr), events_timer_(new QTimer(this)) { SetDevice(protocol_socket_); @@ -328,7 +328,7 @@ void SpotifyClient::Login(const pb::spotify::LoginRequest& req) { req.username().c_str(), req.password().c_str(), true, // Remember the password. - NULL); + nullptr); } } @@ -389,7 +389,7 @@ void SpotifyClient::SendPlaylistList() { sp_playlistcontainer* container = sp_session_playlistcontainer(session_); if (!container) { - qLog(Warning) << "sp_session_playlistcontainer returned NULL"; + qLog(Warning) << "sp_session_playlistcontainer returned nullptr"; return; } @@ -432,7 +432,7 @@ void SpotifyClient::SendPlaylistList() { } sp_playlist* SpotifyClient::GetPlaylist(pb::spotify::PlaylistType type, int user_index) { - sp_playlist* playlist = NULL; + sp_playlist* playlist = nullptr; switch (type) { case pb::spotify::Inbox: playlist = sp_session_inbox_create(session_); @@ -499,7 +499,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // Find this playlist's pending load object int pending_load_index = -1; - PendingLoadPlaylist* pending_load = NULL; + PendingLoadPlaylist* pending_load = nullptr; for (int i=0 ; ipending_load_playlists_.count() ; ++i) { if (me->pending_load_playlists_[i].playlist_ == pl) { pending_load_index = i; @@ -710,7 +710,7 @@ void SpotifyClient::OfflineStatusUpdatedCallback(sp_session* session) { SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); sp_playlistcontainer* container = sp_session_playlistcontainer(session); if (!container) { - qLog(Warning) << "sp_session_playlistcontainer returned NULL"; + qLog(Warning) << "sp_session_playlistcontainer returned nullptr"; return; } @@ -884,7 +884,7 @@ void SpotifyClient::TryImageAgain(sp_image* image) { // Find the pending request for this image int index = -1; - PendingImageRequest* req = NULL; + PendingImageRequest* req = nullptr; for (int i=0 ; i* sClassLevels = NULL; -static QIODevice* sNullDevice = NULL; +static QMap* sClassLevels = nullptr; +static QIODevice* sNullDevice = nullptr; const char* kDefaultLogLevels = "GstEnginePipeline:2,*:3"; static const char* kMessageHandlerMagic = "__logging_message__"; static const int kMessageHandlerMagicLength = strlen(kMessageHandlerMagic); -static QtMsgHandler sOriginalMessageHandler = NULL; +static QtMsgHandler sOriginalMessageHandler = nullptr; void GLog(const char* domain, int level, const char* message, void* user_data) { @@ -152,7 +152,7 @@ QString ParsePrettyFunction(const char * pretty_function) { QDebug CreateLogger(Level level, const QString& class_name, int line) { // Map the level to a string - const char* level_name = NULL; + const char* level_name = nullptr; switch (level) { case Level_Debug: level_name = " DEBUG "; break; case Level_Info: level_name = " INFO "; break; @@ -193,8 +193,8 @@ QString CXXDemangle(const QString& mangled_function) { int status; char* demangled_function = abi::__cxa_demangle( mangled_function.toAscii().constData(), - NULL, - NULL, + nullptr, + nullptr, &status); if (status == 0) { QString ret = QString::fromAscii(demangled_function); diff --git a/ext/libclementine-common/core/messagehandler.cpp b/ext/libclementine-common/core/messagehandler.cpp index e21fc2974..d0de5297e 100644 --- a/ext/libclementine-common/core/messagehandler.cpp +++ b/ext/libclementine-common/core/messagehandler.cpp @@ -27,9 +27,9 @@ _MessageHandlerBase::_MessageHandlerBase(QIODevice* device, QObject* parent) : QObject(parent), - device_(NULL), - flush_abstract_socket_(NULL), - flush_local_socket_(NULL), + device_(nullptr), + flush_abstract_socket_(nullptr), + flush_local_socket_(nullptr), reading_protobuf_(false), expected_length_(0), is_device_closed_(false) { diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp index 62e5f631f..475a2385a 100644 --- a/ext/libclementine-tagreader/tagreader.cpp +++ b/ext/libclementine-tagreader/tagreader.cpp @@ -129,10 +129,10 @@ void TagReader::ReadFile(const QString& filename, TagLib::Tag* tag = fileref->tag(); if (tag) { - Decode(tag->title(), NULL, song->mutable_title()); - Decode(tag->artist(), NULL, song->mutable_artist()); // TPE1 - Decode(tag->album(), NULL, song->mutable_album()); - Decode(tag->genre(), NULL, song->mutable_genre()); + Decode(tag->title(), nullptr, song->mutable_title()); + Decode(tag->artist(), nullptr, song->mutable_artist()); // TPE1 + Decode(tag->album(), nullptr, song->mutable_album()); + Decode(tag->genre(), nullptr, song->mutable_genre()); song->set_year(tag->year()); song->set_track(tag->track()); song->set_valid(true); @@ -145,7 +145,7 @@ void TagReader::ReadFile(const QString& filename, // apart, so we keep specific behavior for some formats by adding another // "else if" block below. if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { - ParseOggTag(tag->fieldListMap(), NULL, &disc, &compilation, song); + ParseOggTag(tag->fieldListMap(), nullptr, &disc, &compilation, song); } if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { @@ -159,15 +159,15 @@ void TagReader::ReadFile(const QString& filename, song->set_bpm(TStringToQString(map["TBPM"].front()->toString()).trimmed().toFloat()); if (!map["TCOM"].isEmpty()) - Decode(map["TCOM"].front()->toString(), NULL, song->mutable_composer()); + Decode(map["TCOM"].front()->toString(), nullptr, song->mutable_composer()); if (!map["TIT1"].isEmpty()) // content group - Decode(map["TIT1"].front()->toString(), NULL, song->mutable_grouping()); + Decode(map["TIT1"].front()->toString(), nullptr, song->mutable_grouping()); // Skip TPE1 (which is the artist) here because we already fetched it if (!map["TPE2"].isEmpty()) // non-standard: Apple, Microsoft - Decode(map["TPE2"].front()->toString(), NULL, song->mutable_albumartist()); + Decode(map["TPE2"].front()->toString(), nullptr, song->mutable_albumartist()); if (!map["TCMP"].isEmpty()) compilation = TStringToQString(map["TCMP"].front()->toString()).trimmed(); @@ -181,7 +181,7 @@ void TagReader::ReadFile(const QString& filename, dynamic_cast(map["COMM"][i]); if (frame && TStringToQString(frame->description()) != "iTunNORM") { - Decode(frame->text(), NULL, song->mutable_comment()); + Decode(frame->text(), nullptr, song->mutable_comment()); break; } } @@ -218,14 +218,14 @@ void TagReader::ReadFile(const QString& filename, } } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { if ( file->xiphComment() ) { - ParseOggTag(file->xiphComment()->fieldListMap(), NULL, &disc, &compilation, song); + ParseOggTag(file->xiphComment()->fieldListMap(), nullptr, &disc, &compilation, song); #ifdef TAGLIB_HAS_FLAC_PICTURELIST if (!file->pictureList().isEmpty()) { song->set_art_automatic(kEmbeddedCover); } #endif } - Decode(tag->comment(), NULL, song->mutable_comment()); + Decode(tag->comment(), nullptr, song->mutable_comment()); } else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { if (file->tag()) { TagLib::MP4::Tag* mp4_tag = file->tag(); @@ -236,7 +236,7 @@ void TagReader::ReadFile(const QString& filename, if (it != items.end()) { TagLib::StringList album_artists = it->second.toStringList(); if (!album_artists.isEmpty()) { - Decode(album_artists.front(), NULL, song->mutable_albumartist()); + Decode(album_artists.front(), nullptr, song->mutable_albumartist()); } } @@ -269,12 +269,12 @@ void TagReader::ReadFile(const QString& filename, } if(items.contains("\251wrt")) { - Decode(items["\251wrt"].toStringList().toString(", "), NULL, song->mutable_composer()); + Decode(items["\251wrt"].toStringList().toString(", "), nullptr, song->mutable_composer()); } if(items.contains("\251grp")) { - Decode(items["\251grp"].toStringList().toString(" "), NULL, song->mutable_grouping()); + Decode(items["\251grp"].toStringList().toString(" "), nullptr, song->mutable_grouping()); } - Decode(mp4_tag->comment(), NULL, song->mutable_comment()); + Decode(mp4_tag->comment(), nullptr, song->mutable_comment()); } } #ifdef TAGLIB_WITH_ASF @@ -310,7 +310,7 @@ void TagReader::ReadFile(const QString& filename, } #endif else if (tag) { - Decode(tag->comment(), NULL, song->mutable_comment()); + Decode(tag->comment(), nullptr, song->mutable_comment()); } if (!disc.isEmpty()) { @@ -575,7 +575,7 @@ bool TagReader::SaveFile(const QString& filename, if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } #endif // Q_OS_LINUX @@ -632,7 +632,7 @@ bool TagReader::SaveSongStatisticsToFile(const QString& filename, if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } #endif // Q_OS_LINUX return ret; @@ -685,7 +685,7 @@ bool TagReader::SaveSongRatingToFile(const QString& filename, if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } #endif // Q_OS_LINUX return ret; @@ -944,7 +944,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, #endif // HAVE_GOOGLE_DRIVE TagLib::ID3v2::PopularimeterFrame* TagReader::GetPOPMFrameFromTag(TagLib::ID3v2::Tag* tag) { - TagLib::ID3v2::PopularimeterFrame* frame = NULL; + TagLib::ID3v2::PopularimeterFrame* frame = nullptr; const TagLib::ID3v2::FrameListMap& map = tag->frameListMap(); if (!map["POPM"].isEmpty()) { diff --git a/src/analyzers/analyzer.cpp b/src/analyzers/analyzer.cpp index 986bd74fd..1a6e1dda1 100644 --- a/src/analyzers/analyzer.cpp +++ b/src/analyzers/analyzer.cpp @@ -4,7 +4,7 @@ AnalyzerBase::AnalyzerBase(QWidget* parent) : QGLWidget(parent), - engine_(NULL) { + engine_(nullptr) { } void AnalyzerBase::set_engine(Engine::Base* engine) { diff --git a/src/analyzers/analyzerbase.cpp b/src/analyzers/analyzerbase.cpp index 523c063f1..b4e12b91b 100644 --- a/src/analyzers/analyzerbase.cpp +++ b/src/analyzers/analyzerbase.cpp @@ -48,7 +48,7 @@ Analyzer::Base::Base( QWidget *parent, uint scopeSize ) : QWidget( parent ) , m_timeout( 40 ) // msec , m_fht( new FHT(scopeSize) ) - , m_engine(NULL) + , m_engine(nullptr) , m_lastScope(512) , new_frame_(false) , is_playing_(false) diff --git a/src/analyzers/analyzercontainer.cpp b/src/analyzers/analyzercontainer.cpp index 445f5315f..e3478a3b8 100644 --- a/src/analyzers/analyzercontainer.cpp +++ b/src/analyzers/analyzercontainer.cpp @@ -48,11 +48,11 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent) group_framerate_(new QActionGroup(this)), mapper_(new QSignalMapper(this)), mapper_framerate_(new QSignalMapper(this)), - visualisation_action_(NULL), + visualisation_action_(nullptr), double_click_timer_(new QTimer(this)), ignore_next_click_(false), - current_analyzer_(NULL), - engine_(NULL) + current_analyzer_(nullptr), + engine_(nullptr) { QHBoxLayout* layout = new QHBoxLayout(this); setLayout(layout); @@ -135,7 +135,7 @@ void AnalyzerContainer::SetEngine(EngineBase* engine) { void AnalyzerContainer::DisableAnalyzer() { delete current_analyzer_; - current_analyzer_ = NULL; + current_analyzer_ = nullptr; Save(); } diff --git a/src/analyzers/glanalyzer2.cpp b/src/analyzers/glanalyzer2.cpp index 6f3d1c83a..00c3095e4 100644 --- a/src/analyzers/glanalyzer2.cpp +++ b/src/analyzers/glanalyzer2.cpp @@ -90,7 +90,7 @@ void GLAnalyzer2::resizeGL( int w, int h ) // Get current timestamp. timeval tv; - gettimeofday( &tv, NULL ); + gettimeofday( &tv, nullptr ); show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; } @@ -145,7 +145,7 @@ void GLAnalyzer2::paintGL() { // Compute the dT since the last call to paintGL and update timings timeval tv; - gettimeofday( &tv, NULL ); + gettimeofday( &tv, nullptr ); double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; show.dT = currentTime - show.timeStamp; show.timeStamp = currentTime; diff --git a/src/analyzers/glanalyzer3.cpp b/src/analyzers/glanalyzer3.cpp index cc7ce4c7f..0892f4d88 100644 --- a/src/analyzers/glanalyzer3.cpp +++ b/src/analyzers/glanalyzer3.cpp @@ -190,7 +190,7 @@ void GLAnalyzer3::resizeGL( int w, int h ) // Get current timestamp. timeval tv; - gettimeofday( &tv, NULL ); + gettimeofday( &tv, nullptr ); show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; } @@ -203,7 +203,7 @@ void GLAnalyzer3::analyze( const Scope &s ) { // compute the dTime since the last call timeval tv; - gettimeofday( &tv, NULL ); + gettimeofday( &tv, nullptr ); double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; show.dT = currentTime - show.timeStamp; show.timeStamp = currentTime; diff --git a/src/core/application.cpp b/src/core/application.cpp index 45d96b749..60238a63e 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -48,28 +48,28 @@ bool Application::kIsPortable = false; Application::Application(QObject* parent) : QObject(parent), - tag_reader_client_(NULL), - database_(NULL), - album_cover_loader_(NULL), - playlist_backend_(NULL), - podcast_backend_(NULL), - appearance_(NULL), - cover_providers_(NULL), - task_manager_(NULL), - player_(NULL), - playlist_manager_(NULL), - current_art_loader_(NULL), - global_search_(NULL), - internet_model_(NULL), - library_(NULL), - device_manager_(NULL), - podcast_updater_(NULL), - podcast_downloader_(NULL), - gpodder_sync_(NULL), - moodbar_loader_(NULL), - moodbar_controller_(NULL), - network_remote_(NULL), - network_remote_helper_(NULL) + tag_reader_client_(nullptr), + database_(nullptr), + album_cover_loader_(nullptr), + playlist_backend_(nullptr), + podcast_backend_(nullptr), + appearance_(nullptr), + cover_providers_(nullptr), + task_manager_(nullptr), + player_(nullptr), + playlist_manager_(nullptr), + current_art_loader_(nullptr), + global_search_(nullptr), + internet_model_(nullptr), + library_(nullptr), + device_manager_(nullptr), + podcast_updater_(nullptr), + podcast_downloader_(nullptr), + gpodder_sync_(nullptr), + moodbar_loader_(nullptr), + moodbar_controller_(nullptr), + network_remote_(nullptr), + network_remote_helper_(nullptr) { tag_reader_client_ = new TagReaderClient(this); MoveToNewThread(tag_reader_client_); @@ -125,7 +125,7 @@ Application::~Application() { // It's important that the device manager is deleted before the database. // Deleting the database deletes all objects that have been created in its // thread, including some device library backends. - delete device_manager_; device_manager_ = NULL; + delete device_manager_; device_manager_ = nullptr; foreach (QObject* object, objects_in_threads_) { object->deleteLater(); @@ -150,7 +150,7 @@ void Application::MoveToNewThread(QObject* object) { } void Application::MoveToThread(QObject* object, QThread* thread) { - object->setParent(NULL); + object->setParent(nullptr); object->moveToThread(thread); objects_in_threads_ << object; } diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp index 347b95908..a61ee3744 100644 --- a/src/core/backgroundstreams.cpp +++ b/src/core/backgroundstreams.cpp @@ -158,7 +158,7 @@ void BackgroundStreams::StreamActionDestroyed() { foreach (Stream* stream, streams_.values()) { if (stream->action == action) { - stream->action = NULL; + stream->action = nullptr; } } } diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index 9d7ab9231..ae24a19fb 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -138,7 +138,7 @@ bool CommandlineOptions::Parse() { // Parse the arguments bool ok = false; forever { - int c = getopt_long(argc_, argv_, "hptusrfv:alk:oyg:", kOptions, NULL); + int c = getopt_long(argc_, argv_, "hptusrfv:alk:oyg:", kOptions, nullptr); // End of the options if (c == -1) diff --git a/src/core/crashreporting.cpp b/src/core/crashreporting.cpp index a6995d522..fb761e139 100644 --- a/src/core/crashreporting.cpp +++ b/src/core/crashreporting.cpp @@ -38,13 +38,13 @@ const char* CrashSender::kUploadURL = "http://crashes.clementine-player.org/getuploadurl"; const char* CrashReporting::kSendCrashReportOption = "--send-crash-report"; -char* CrashReporting::sPath = NULL; +char* CrashReporting::sPath = nullptr; #if defined(HAVE_BREAKPAD) and defined(Q_OS_LINUX) CrashReporting::CrashReporting() : handler_(new google_breakpad::ExceptionHandler( - QDir::tempPath().toLocal8Bit().constData(), NULL, + QDir::tempPath().toLocal8Bit().constData(), nullptr, CrashReporting::Handler, this, true)) { } @@ -90,7 +90,7 @@ bool CrashReporting::Handler(const char* dump_path, if (sPath) { // We know the path to clementine, so exec it again to prompt the user to // upload the report. - const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, NULL}; + const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, nullptr}; sys_execv(sPath, argv); } @@ -102,7 +102,7 @@ CrashSender::CrashSender(const QString& path) : network_(new QNetworkAccessManager(this)), path_(path), file_(new QFile(path_, this)), - progress_(NULL) { + progress_(nullptr) { } bool CrashSender::Start() { diff --git a/src/core/database.cpp b/src/core/database.cpp index a5ad6294e..a8183dce9 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -85,7 +85,7 @@ struct sqlite3_tokenizer_cursor { /* Tokenizer implementations will typically add additional fields */ }; -sqlite3_tokenizer_module* Database::sFTSTokenizer = NULL; +sqlite3_tokenizer_module* Database::sFTSTokenizer = nullptr; int Database::FTSCreate(int argc, const char* const* argv, sqlite3_tokenizer** tokenizer) { @@ -643,11 +643,11 @@ void Database::BackupFile(const QString& filename) { QString dest_filename = QString("%1.bak").arg(filename); const int task_id = app_->task_manager()->StartTask(tr("Backing up database")); - sqlite3* source_connection = NULL; - sqlite3* dest_connection = NULL; + sqlite3* source_connection = nullptr; + sqlite3* dest_connection = nullptr; BOOST_SCOPE_EXIT((source_connection)(dest_connection)(task_id)(app_)) { - // Harmless to call sqlite3_close() with a NULL pointer. + // Harmless to call sqlite3_close() with a nullptr pointer. sqlite3_close(source_connection); sqlite3_close(dest_connection); app_->task_manager()->SetTaskFinished(task_id); diff --git a/src/core/deletefiles.cpp b/src/core/deletefiles.cpp index 8a65e34ac..45db3f260 100644 --- a/src/core/deletefiles.cpp +++ b/src/core/deletefiles.cpp @@ -29,7 +29,7 @@ const int DeleteFiles::kBatchSize = 50; DeleteFiles::DeleteFiles(TaskManager* task_manager, std::shared_ptr storage) - : thread_(NULL), + : thread_(nullptr), task_manager_(task_manager), storage_(storage), started_(false), diff --git a/src/core/globalshortcuts.cpp b/src/core/globalshortcuts.cpp index d758fca78..42bec58d7 100644 --- a/src/core/globalshortcuts.cpp +++ b/src/core/globalshortcuts.cpp @@ -35,8 +35,8 @@ const char* GlobalShortcuts::kSettingsGroup = "Shortcuts"; GlobalShortcuts::GlobalShortcuts(QWidget *parent) : QWidget(parent), - gnome_backend_(NULL), - system_backend_(NULL), + gnome_backend_(nullptr), + system_backend_(nullptr), use_gnome_(false), rating_signals_mapper_(new QSignalMapper(this)) { diff --git a/src/core/gnomeglobalshortcutbackend.cpp b/src/core/gnomeglobalshortcutbackend.cpp index 7c3bcf67e..9bd68a3ee 100644 --- a/src/core/gnomeglobalshortcutbackend.cpp +++ b/src/core/gnomeglobalshortcutbackend.cpp @@ -39,7 +39,7 @@ const char* GnomeGlobalShortcutBackend::kGsdInterface = "org.gnome.SettingsDaemo GnomeGlobalShortcutBackend::GnomeGlobalShortcutBackend(GlobalShortcuts* parent) : GlobalShortcutBackend(parent), - interface_(NULL), + interface_(nullptr), is_connected_(false) { } diff --git a/src/core/mergedproxymodel.cpp b/src/core/mergedproxymodel.cpp index 42b4c3cb8..9219e2366 100644 --- a/src/core/mergedproxymodel.cpp +++ b/src/core/mergedproxymodel.cpp @@ -28,7 +28,7 @@ std::size_t hash_value(const QModelIndex& index) { MergedProxyModel::MergedProxyModel(QObject* parent) : QAbstractProxyModel(parent), - resetting_model_(NULL) + resetting_model_(nullptr) { } @@ -85,7 +85,7 @@ void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { resetting_model_ = submodel; beginRemoveRows(proxy_parent, 0, std::numeric_limits::max() - 1); endRemoveRows(); - resetting_model_ = NULL; + resetting_model_ = nullptr; // Delete all the mappings that reference the submodel MappingContainer::index::type::iterator it = @@ -167,7 +167,7 @@ void MergedProxyModel::SubModelReset() { resetting_model_ = submodel; beginRemoveRows(proxy_parent, 0, std::numeric_limits::max() - 1); endRemoveRows(); - resetting_model_ = NULL; + resetting_model_ = nullptr; // Delete all the mappings that reference the submodel MappingContainer::index::type::iterator it = @@ -449,7 +449,7 @@ QAbstractItemModel* MergedProxyModel::GetModel(const QModelIndex& source_index) if (submodel == const_model) return submodel; } - return NULL; + return nullptr; } void MergedProxyModel::DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right) { diff --git a/src/core/mpris1.cpp b/src/core/mpris1.cpp index 368e284ed..56f330320 100644 --- a/src/core/mpris1.cpp +++ b/src/core/mpris1.cpp @@ -41,9 +41,9 @@ Mpris1::Mpris1(Application* app, QObject* parent, const QString& dbus_service_name) : QObject(parent), dbus_service_name_(dbus_service_name), - root_(NULL), - player_(NULL), - tracklist_(NULL) + root_(nullptr), + player_(nullptr), + tracklist_(nullptr) { qDBusRegisterMetaType(); qDBusRegisterMetaType(); diff --git a/src/core/network.cpp b/src/core/network.cpp index a5c0f143d..4015b8b20 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -27,7 +27,7 @@ #include "utilities.h" QMutex ThreadSafeNetworkDiskCache::sMutex; -QNetworkDiskCache* ThreadSafeNetworkDiskCache::sCache = NULL; +QNetworkDiskCache* ThreadSafeNetworkDiskCache::sCache = nullptr; ThreadSafeNetworkDiskCache::ThreadSafeNetworkDiskCache(QObject* parent) { @@ -169,7 +169,7 @@ void NetworkTimeouts::timerEvent(QTimerEvent* e) { RedirectFollower::RedirectFollower(QNetworkReply* first_reply, int max_redirects) - : QObject(NULL), + : QObject(nullptr), current_reply_(first_reply), redirects_remaining_(max_redirects) { ConnectReply(first_reply); diff --git a/src/core/networkproxyfactory.cpp b/src/core/networkproxyfactory.cpp index ffe7a73e7..095462b0a 100644 --- a/src/core/networkproxyfactory.cpp +++ b/src/core/networkproxyfactory.cpp @@ -8,7 +8,7 @@ #include -NetworkProxyFactory* NetworkProxyFactory::sInstance = NULL; +NetworkProxyFactory* NetworkProxyFactory::sInstance = nullptr; const char* NetworkProxyFactory::kSettingsGroup = "Proxy"; NetworkProxyFactory::NetworkProxyFactory() diff --git a/src/core/organise.cpp b/src/core/organise.cpp index 0d03c2e2a..b46583b2f 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -40,7 +40,7 @@ Organise::Organise(TaskManager* task_manager, std::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, const NewSongInfoList& songs_info, bool eject_after) - : thread_(NULL), + : thread_(nullptr), task_manager_(task_manager), transcoder_(new Transcoder(this)), destination_(destination), diff --git a/src/core/player.cpp b/src/core/player.cpp index 915f7f95f..86990b115 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -43,7 +43,7 @@ using std::shared_ptr; Player::Player(Application* app, QObject* parent) : PlayerInterface(parent), app_(app), - lastfm_(NULL), + lastfm_(nullptr), engine_(new GstEngine(app_->task_manager())), stream_change_type_(Engine::First), last_state_(Engine::Empty), @@ -611,7 +611,7 @@ void Player::UnregisterUrlHandler(UrlHandler* handler) { const UrlHandler* Player::HandlerForUrl(const QUrl& url) const { QMap::const_iterator it = url_handlers_.constFind(url.scheme()); if (it == url_handlers_.constEnd()) { - return NULL; + return nullptr; } return *it; } diff --git a/src/core/song.cpp b/src/core/song.cpp index 6bbf022ac..0dfce9995 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -717,7 +717,7 @@ void Song::InitFromLastFM(const lastfm::Track& track) { track->composer = strdup(d->composer_.toUtf8().constData()); track->genre = strdup(d->genre_.toUtf8().constData()); track->title = strdup(d->title_.toUtf8().constData()); - track->date = NULL; + track->date = nullptr; track->filename = strdup(d->basefilename_.toUtf8().constData()); diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 83433e568..57c83a0fe 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -66,7 +66,7 @@ SongLoader::SongLoader(LibraryBackendInterface* library, timeout_(kDefaultTimeout), state_(WaitingForType), success_(false), - parser_(NULL), + parser_(nullptr), is_podcast_(false), library_(library), player_(player) @@ -129,8 +129,8 @@ SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) { SongLoader::Result SongLoader::LoadAudioCD() { #ifdef HAVE_AUDIOCD // Create gstreamer cdda element - GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL); - if (cdda == NULL) { + GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", nullptr); + if (cdda == nullptr) { qLog(Error) << "Error while creating CDDA GstElement"; return Error; } @@ -180,9 +180,9 @@ SongLoader::Result SongLoader::LoadAudioCD() { GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); - GstTagList *tags = NULL; + GstTagList *tags = nullptr; gst_message_parse_tag (msg, &tags); - char *string_mb = NULL; + char *string_mb = nullptr; if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; @@ -463,22 +463,22 @@ SongLoader::Result SongLoader::LoadRemote() { // Create the pipeline - it gets unreffed if it goes out of scope std::shared_ptr pipeline( - gst_pipeline_new(NULL), std::bind(&gst_object_unref, _1)); + gst_pipeline_new(nullptr), std::bind(&gst_object_unref, _1)); // Create the source element automatically based on the URL GstElement* source = gst_element_make_from_uri( - GST_URI_SRC, url_.toEncoded().constData(), NULL); + GST_URI_SRC, url_.toEncoded().constData(), nullptr); if (!source) { qLog(Warning) << "Couldn't create gstreamer source element for" << url_.toString(); return Error; } // Create the other elements and link them up - GstElement* typefind = gst_element_factory_make("typefind", NULL); - GstElement* fakesink = gst_element_factory_make("fakesink", NULL); + GstElement* typefind = gst_element_factory_make("typefind", nullptr); + GstElement* fakesink = gst_element_factory_make("fakesink", nullptr); - gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, NULL); - gst_element_link_many(source, typefind, fakesink, NULL); + gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, nullptr); + gst_element_link_many(source, typefind, fakesink, nullptr); // Connect callbacks GstBus* bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline.get())); @@ -650,7 +650,7 @@ void SongLoader::MagicReady() { if (parser_->name() == "ASX/INI" && url_.scheme() == "http") { // This is actually a weird MS-WMSP stream. Changing the protocol to MMS from // HTTP makes it playable. - parser_ = NULL; + parser_ = nullptr; url_.setScheme("mms"); StopTypefindAsync(true); } diff --git a/src/core/tagreaderclient.cpp b/src/core/tagreaderclient.cpp index f043287b9..61f082ecd 100644 --- a/src/core/tagreaderclient.cpp +++ b/src/core/tagreaderclient.cpp @@ -26,7 +26,7 @@ const char* TagReaderClient::kWorkerExecutableName = "clementine-tagreader"; -TagReaderClient* TagReaderClient::sInstance = NULL; +TagReaderClient* TagReaderClient::sInstance = nullptr; TagReaderClient::TagReaderClient(QObject* parent) : QObject(parent), diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 2fb9afcfa..6fce75387 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -175,7 +175,7 @@ quint64 FileSystemCapacity(const QString& path) { #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - NULL, &ret, NULL) != 0) + nullptr, &ret, nullptr) != 0) return ret.QuadPart; #endif @@ -190,7 +190,7 @@ quint64 FileSystemFreeSpace(const QString& path) { #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - &ret, NULL, NULL) != 0) + &ret, nullptr, nullptr) != 0) return ret.QuadPart; #endif diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index 7e4239919..637022174 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -29,8 +29,8 @@ CddaDevice::CddaDevice(const QUrl& url, DeviceLister* lister, Application* app, int database_id, bool first_time) : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - cdda_(NULL), - cdio_(NULL) + cdda_(nullptr), + cdio_(nullptr) { } @@ -43,12 +43,12 @@ void CddaDevice::Init() { QMutexLocker locker(&mutex_init_); song_count_ = 0; // Reset song count, in case it was already set cdio_ = cdio_open (url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); - if (cdio_ == NULL) { + if (cdio_ == nullptr) { return; } // Create gstreamer cdda element - cdda_ = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL); - if (cdda_ == NULL) { + cdda_ = gst_element_make_from_uri (GST_URI_SRC, "cdda://", nullptr); + if (cdda_ == nullptr) { model_->Reset(); return; } @@ -106,9 +106,9 @@ void CddaDevice::Init() { GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); - GstTagList *tags = NULL; + GstTagList *tags = nullptr; gst_message_parse_tag (msg, &tags); - char *string_mb = NULL; + char *string_mb = nullptr; if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; diff --git a/src/devices/cddalister.cpp b/src/devices/cddalister.cpp index e4aa68724..7b82d512c 100644 --- a/src/devices/cddalister.cpp +++ b/src/devices/cddalister.cpp @@ -105,7 +105,7 @@ void CddaLister::Init() { qLog(Debug) << "No CD devices found"; return; } - for (; *devices != NULL; ++devices) { + for (; *devices != nullptr; ++devices) { QString device(*devices); QFileInfo device_info(device); if (device_info.isSymLink()) { diff --git a/src/devices/connecteddevice.cpp b/src/devices/connecteddevice.cpp index 56bb714da..e294417c9 100644 --- a/src/devices/connecteddevice.cpp +++ b/src/devices/connecteddevice.cpp @@ -39,8 +39,8 @@ ConnectedDevice::ConnectedDevice(const QUrl& url, DeviceLister* lister, unique_id_(unique_id), database_id_(database_id), manager_(manager), - backend_(NULL), - model_(NULL), + backend_(nullptr), + model_(nullptr), song_count_(0) { qLog(Info) << "connected" << url << unique_id << first_time; diff --git a/src/devices/devicelister.cpp b/src/devices/devicelister.cpp index 054d69510..fb00d8ca7 100644 --- a/src/devices/devicelister.cpp +++ b/src/devices/devicelister.cpp @@ -29,7 +29,7 @@ #endif DeviceLister::DeviceLister() - : thread_(NULL) + : thread_(nullptr) { } diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index e4e041755..09706b435 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -109,7 +109,7 @@ void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device& QStringList unique_ids = dev.unique_id_.split(','); foreach (const QString& id, unique_ids) { - backends_ << Backend(NULL, id); + backends_ << Backend(nullptr, id); } } @@ -149,7 +149,7 @@ void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QStrin const DeviceManager::DeviceInfo::Backend* DeviceManager::DeviceInfo::BestBackend() const { int best_priority = -1; - const Backend* ret = NULL; + const Backend* ret = nullptr; for (int i=0 ; ipriority() > best_priority) { @@ -470,7 +470,7 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { // Keep the structure around, but just "disconnect" it for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { - info.backends_[backend_index].lister_ = NULL; + info.backends_[backend_index].lister_ = nullptr; break; } } @@ -563,7 +563,7 @@ std::shared_ptr DeviceManager::Connect(int row) { // was "ipod" or "mtp" then the user compiled out support and the device // won't work properly. if (url.scheme() == "mtp" || url.scheme() == "gphoto2") { - if (QMessageBox::critical(NULL, tr("This device will not work properly"), + if (QMessageBox::critical(nullptr, tr("This device will not work properly"), tr("This is an MTP device, but you compiled Clementine without libmtp support.") + " " + tr("If you continue, this device will work slowly and songs copied to it may not work."), QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) @@ -571,7 +571,7 @@ std::shared_ptr DeviceManager::Connect(int row) { } if (url.scheme() == "ipod") { - if (QMessageBox::critical(NULL, tr("This device will not work properly"), + if (QMessageBox::critical(nullptr, tr("This device will not work properly"), tr("This is an iPod, but you compiled Clementine without libgpod support.") + " " + tr("If you continue, this device will work slowly and songs copied to it may not work."), QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) diff --git a/src/devices/deviceproperties.cpp b/src/devices/deviceproperties.cpp index 80bca6e9c..68e52b225 100644 --- a/src/devices/deviceproperties.cpp +++ b/src/devices/deviceproperties.cpp @@ -35,7 +35,7 @@ DeviceProperties::DeviceProperties(QWidget *parent) : QDialog(parent), ui_(new Ui_DeviceProperties), - manager_(NULL), + manager_(nullptr), updating_formats_(false) { ui_->setupUi(this); diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 342ce936a..2e8190880 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -146,12 +146,12 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con DeviceView::DeviceView(QWidget* parent) : AutoExpandingTreeView(parent), - app_(NULL), - merged_model_(NULL), - sort_model_(NULL), + app_(nullptr), + merged_model_(nullptr), + sort_model_(nullptr), properties_dialog_(new DeviceProperties), - device_menu_(NULL), - library_menu_(NULL) + device_menu_(nullptr), + library_menu_(nullptr) { setItemDelegate(new DeviceItemDelegate(this)); SetExpandOnReset(false); @@ -167,7 +167,7 @@ DeviceView::~DeviceView() { } void DeviceView::SetApplication(Application* app) { - Q_ASSERT(app_ == NULL); + Q_ASSERT(app_ == nullptr); app_ = app; connect(app_->device_manager(), SIGNAL(DeviceConnected(int)), SLOT(DeviceConnected(int))); diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp index 504bbbc7c..3c116d470 100644 --- a/src/devices/giolister.cpp +++ b/src/devices/giolister.cpp @@ -58,7 +58,7 @@ bool GioLister::DeviceInfo::is_suitable() const { template void OperationFinished(F f, GObject *object, GAsyncResult *result) { T* obj = reinterpret_cast(object); - GError* error = NULL; + GError* error = nullptr; f(obj, result, &error); @@ -371,8 +371,8 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Do a sanity check to make sure the root is actually this mount - when a // device is unmounted GIO sends a changed signal before the removed signal, // and we end up reading information about the / filesystem by mistake. - GError* error = NULL; - GMount* actual_mount = g_file_find_enclosing_mount(root, NULL, &error); + GError* error = nullptr; + GMount* actual_mount = g_file_find_enclosing_mount(root, nullptr, &error); if (error || !actual_mount) { g_error_free(error); invalid_enclosing_mount = true; @@ -381,10 +381,10 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { } // Query the filesystem info for size, free space, and type - error = NULL; + error = nullptr; GFileInfo* info = g_file_query_filesystem_info(root, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "," G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," - G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, NULL, &error); + G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -401,9 +401,9 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Query the file's info for a filesystem ID // Only afc devices (that I know of) give reliably unique IDs if (filesystem_type == "afc") { - error = NULL; + error = nullptr; info = g_file_query_info(root, G_FILE_ATTRIBUTE_ID_FILESYSTEM, - G_FILE_QUERY_INFO_NONE, NULL, &error); + G_FILE_QUERY_INFO_NONE, nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -489,10 +489,10 @@ void GioLister::UnmountDevice(const QString &id) { g_volume_eject_with_operation( info.volume, G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, + nullptr, + nullptr, (GAsyncReadyCallback) VolumeEjectFinished, - NULL); + nullptr); g_object_unref(info.volume); return; } @@ -502,18 +502,18 @@ void GioLister::UnmountDevice(const QString &id) { g_mount_eject_with_operation( info.mount, G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, + nullptr, + nullptr, (GAsyncReadyCallback) MountEjectFinished, - NULL); + nullptr); } else if (g_mount_can_unmount(info.mount)) { g_mount_unmount_with_operation( info.mount, G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, + nullptr, + nullptr, (GAsyncReadyCallback) MountUnmountFinished, - NULL); + nullptr); } } @@ -527,9 +527,9 @@ void GioLister::UpdateDeviceFreeSpace(const QString& id) { GFile* root = g_mount_get_root(device_info.mount); - GError* error = NULL; + GError* error = nullptr; GFileInfo* info = g_file_query_filesystem_info( - root, G_FILE_ATTRIBUTE_FILESYSTEM_FREE, NULL, &error); + root, G_FILE_ATTRIBUTE_FILESYSTEM_FREE, nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -571,7 +571,7 @@ void GioLister::DoMountDevice(const QString& id, int request_id) { return; } - g_volume_mount(info.volume, G_MOUNT_MOUNT_NONE, NULL, NULL, - VolumeMountFinished, NULL); + g_volume_mount(info.volume, G_MOUNT_MOUNT_NONE, nullptr, nullptr, + VolumeMountFinished, nullptr); emit DeviceMounted(id, request_id, true); } diff --git a/src/devices/gpoddevice.cpp b/src/devices/gpoddevice.cpp index cc3aa6598..8460c5f41 100644 --- a/src/devices/gpoddevice.cpp +++ b/src/devices/gpoddevice.cpp @@ -37,8 +37,8 @@ GPodDevice::GPodDevice( int database_id, bool first_time) : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), loader_thread_(new QThread(this)), - loader_(NULL), - db_(NULL) + loader_(nullptr), + db_(nullptr) { } @@ -66,7 +66,7 @@ void GPodDevice::LoadFinished(Itdb_iTunesDB* db) { db_wait_cond_.wakeAll(); loader_->deleteLater(); - loader_ = NULL; + loader_ = nullptr; } bool GPodDevice::StartCopy(QList* supported_filetypes) { @@ -113,7 +113,7 @@ bool GPodDevice::CopyToStorage(const CopyJob& job) { Itdb_Track* track = AddTrackToITunesDb(job.metadata_); // Copy the file - GError* error = NULL; + GError* error = nullptr; itdb_cp_track_to_ipod(track, QDir::toNativeSeparators(job.source_) .toLocal8Bit().constData(), &error); if (error) { @@ -139,7 +139,7 @@ bool GPodDevice::CopyToStorage(const CopyJob& job) { void GPodDevice::WriteDatabase(bool success) { if (success) { // Write the itunes database - GError* error = NULL; + GError* error = nullptr; itdb_write(db_, &error); if (error) { qLog(Error) << "writing database failed:" << error->message; @@ -167,7 +167,7 @@ void GPodDevice::FinishCopy(bool success) { } void GPodDevice::StartDelete() { - StartCopy(NULL); + StartCopy(nullptr); } bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& relative_to) { @@ -178,8 +178,8 @@ bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& rel ipod_filename.replace('/', ':'); // Find the track in the itdb, identify it by its filename - Itdb_Track* track = NULL; - for (GList* tracks = db_->tracks ; tracks != NULL ; tracks = tracks->next) { + Itdb_Track* track = nullptr; + for (GList* tracks = db_->tracks ; tracks != nullptr ; tracks = tracks->next) { Itdb_Track* t = static_cast(tracks->data); if (t->ipod_path == ipod_filename) { @@ -188,13 +188,13 @@ bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& rel } } - if (track == NULL) { + if (track == nullptr) { qLog(Warning) << "Couldn't find song" << path << "in iTunesDB"; return false; } // Remove the track from all playlists - for (GList* playlists = db_->playlists ; playlists != NULL ; playlists = playlists->next) { + for (GList* playlists = db_->playlists ; playlists != nullptr ; playlists = playlists->next) { Itdb_Playlist* playlist = static_cast(playlists->data); if (itdb_playlist_contains_track(playlist, track)) { diff --git a/src/devices/gpodloader.cpp b/src/devices/gpodloader.cpp index 9faa44be5..742c24ac8 100644 --- a/src/devices/gpodloader.cpp +++ b/src/devices/gpodloader.cpp @@ -30,7 +30,7 @@ GPodLoader::GPodLoader( const QString& mount_point, TaskManager* task_manager, LibraryBackend* backend, std::shared_ptr device) - : QObject(NULL), + : QObject(nullptr), device_(device), mount_point_(mount_point), type_(Song::Type_Unknown), @@ -48,7 +48,7 @@ void GPodLoader::LoadDatabase() { emit TaskStarted(task_id); // Load the iTunes database - GError* error = NULL; + GError* error = nullptr; Itdb_iTunesDB* db = itdb_parse( QDir::toNativeSeparators(mount_point_).toLocal8Bit(), &error); @@ -71,7 +71,7 @@ void GPodLoader::LoadDatabase() { ? QDir::fromNativeSeparators(mount_point_) : path_prefix_; SongList songs; - for (GList* tracks = db->tracks ; tracks != NULL ; tracks = tracks->next) { + for (GList* tracks = db->tracks ; tracks != nullptr ; tracks = tracks->next) { Itdb_Track* track = static_cast(tracks->data); Song song; diff --git a/src/devices/mtpconnection.cpp b/src/devices/mtpconnection.cpp index 4a34386ed..2aba31c28 100644 --- a/src/devices/mtpconnection.cpp +++ b/src/devices/mtpconnection.cpp @@ -22,7 +22,7 @@ #include MtpConnection::MtpConnection(const QUrl& url) - : device_(NULL) + : device_(nullptr) { QString hostname = url.host(); // Parse the URL @@ -53,14 +53,14 @@ MtpConnection::MtpConnection(const QUrl& url) // Get a list of devices from libmtp and figure out which one is ours int count = 0; - LIBMTP_raw_device_t* raw_devices = NULL; + LIBMTP_raw_device_t* raw_devices = nullptr; LIBMTP_error_number_t err = LIBMTP_Detect_Raw_Devices(&raw_devices, &count); if (err != LIBMTP_ERROR_NONE) { qLog(Warning) << "MTP error:" << err; return; } - LIBMTP_raw_device_t* raw_device = NULL; + LIBMTP_raw_device_t* raw_device = nullptr; for (int i=0 ; ideleteLater(); - loader_ = NULL; + loader_ = nullptr; db_busy_.unlock(); } @@ -147,7 +147,7 @@ void MtpDevice::FinishCopy(bool success) { } void MtpDevice::StartDelete() { - StartCopy(NULL); + StartCopy(nullptr); } bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { @@ -187,7 +187,7 @@ bool MtpDevice::GetSupportedFiletypes(QList* ret) { } bool MtpDevice::GetSupportedFiletypes(QList* ret, LIBMTP_mtpdevice_t* device) { - uint16_t* list = NULL; + uint16_t* list = nullptr; uint16_t length = 0; if (LIBMTP_Get_Supported_Filetypes(device, &list, &length) diff --git a/src/devices/mtploader.cpp b/src/devices/mtploader.cpp index abb4329b4..99cfcc2c9 100644 --- a/src/devices/mtploader.cpp +++ b/src/devices/mtploader.cpp @@ -28,7 +28,7 @@ MtpLoader::MtpLoader( const QUrl& url, TaskManager* task_manager, LibraryBackend* backend, std::shared_ptr device) - : QObject(NULL), + : QObject(nullptr), device_(device), url_(url), task_manager_(task_manager), @@ -61,7 +61,8 @@ bool MtpLoader::TryLoad() { // Load the list of songs on the device SongList songs; - LIBMTP_track_t* tracks = LIBMTP_Get_Tracklisting_With_Callback(dev.device(), NULL, NULL); + LIBMTP_track_t* tracks = LIBMTP_Get_Tracklisting_With_Callback( + dev.device(), nullptr, nullptr); while (tracks) { LIBMTP_track_t* track = tracks; diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index e1eb46944..36e2728ee 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -69,7 +69,7 @@ GstEngine::GstEngine(TaskManager* task_manager) : Engine::Base(), task_manager_(task_manager), buffering_task_id_(-1), - latest_buffer_(NULL), + latest_buffer_(nullptr), equalizer_enabled_(false), stereo_balance_(0.0f), rg_enabled_(false), @@ -106,7 +106,7 @@ bool GstEngine::Init() { } void GstEngine::InitialiseGstreamer() { - gst_init(NULL, NULL); + gst_init(nullptr, nullptr); #ifdef HAVE_MOODBAR gstmoodbar_register_static(); @@ -181,14 +181,14 @@ void GstEngine::AddBufferToScope(GstBuffer* buf, int pipeline_id) { return; } - if (latest_buffer_ != NULL) { + if (latest_buffer_ != nullptr) { gst_buffer_unref(latest_buffer_); } latest_buffer_ = buf; } const Engine::Scope& GstEngine::scope() { - if (latest_buffer_ != NULL) { + if (latest_buffer_ != nullptr) { UpdateScope(); } @@ -218,7 +218,7 @@ void GstEngine::UpdateScope() { memcpy(dest, source, bytes); gst_buffer_unref(latest_buffer_); - latest_buffer_ = NULL; + latest_buffer_ = nullptr; } void GstEngine::StartPreloading(const QUrl& url, bool force_stop_at_end, @@ -619,7 +619,7 @@ GstElement* GstEngine::CreateElement(const QString& factoryName, GstElement* bin emit Error(QString("GStreamer could not create the element: %1. " "Please make sure that you have installed all necessary GStreamer plugins (e.g. OGG and MP3)").arg( factoryName ) ); gst_object_unref(GST_OBJECT(bin)); - return NULL; + return nullptr; } if (bin) diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 21eb614b7..67c47b1c0 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -138,7 +138,7 @@ bool GstEnginePipeline::ReplaceDecodeBin(GstElement* new_bin) { } bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { - GstElement* new_bin = NULL; + GstElement* new_bin = nullptr; if (url.scheme() == "spotify") { new_bin = gst_bin_new("spotify_bin"); @@ -151,8 +151,8 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { // Pick a port number const int port = Utilities::PickUnusedPort(); - g_object_set(G_OBJECT(src), "host", "127.0.0.1", NULL); - g_object_set(G_OBJECT(src), "port", port, NULL); + g_object_set(G_OBJECT(src), "host", "127.0.0.1", nullptr); + g_object_set(G_OBJECT(src), "port", port, nullptr); // Link the elements gst_element_link(src, gdp); @@ -166,7 +166,7 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { InternetModel::Service()->server()->StartPlaybackLater(url.toString(), port); } else { new_bin = engine_->CreateElement("uridecodebin"); - g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), NULL); + g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), nullptr); CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, this); CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this); CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, this); @@ -176,7 +176,7 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { } GstElement* GstEnginePipeline::CreateDecodeBinFromString(const char* pipeline) { - GError* error = NULL; + GError* error = nullptr; GstElement* bin = gst_parse_bin_from_description(pipeline, TRUE, &error); if (error) { @@ -188,7 +188,7 @@ GstElement* GstEnginePipeline::CreateDecodeBinFromString(const char* pipeline) { qLog(Warning) << message; emit Error(id(), message, domain, code); - return NULL; + return nullptr; } else { return bin; } @@ -222,7 +222,7 @@ bool GstEnginePipeline::Init() { return false; if (GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(sink_) && !device_.isEmpty()) - g_object_set(G_OBJECT(audiosink_), "device", device_.toUtf8().constData(), NULL); + g_object_set(G_OBJECT(audiosink_), "device", device_.toUtf8().constData(), nullptr); // Create all the other elements GstElement *tee, *probe_queue, *probe_converter, *probe_sink, *audio_queue, @@ -269,9 +269,9 @@ bool GstEnginePipeline::Init() { } // Set replaygain settings - g_object_set(G_OBJECT(rgvolume_), "album-mode", rg_mode_, NULL); - g_object_set(G_OBJECT(rgvolume_), "pre-amp", double(rg_preamp_), NULL); - g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), NULL); + g_object_set(G_OBJECT(rgvolume_), "album-mode", rg_mode_, nullptr); + g_object_set(G_OBJECT(rgvolume_), "pre-amp", double(rg_preamp_), nullptr); + g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), nullptr); } // Create a pad on the outside of the audiobin and connect it to the pad of @@ -288,10 +288,10 @@ bool GstEnginePipeline::Init() { gst_object_unref(pad); // Configure the fakesink properly - g_object_set(G_OBJECT(probe_sink), "sync", TRUE, NULL); + g_object_set(G_OBJECT(probe_sink), "sync", TRUE, nullptr); // Set the equalizer bands - g_object_set(G_OBJECT(equalizer_), "num-bands", 10, NULL); + g_object_set(G_OBJECT(equalizer_), "num-bands", 10, nullptr); int last_band_frequency = 0; for (int i=0 ; i 0) { - g_object_set(G_OBJECT(queue_), "use-buffering", true, NULL); + g_object_set(G_OBJECT(queue_), "use-buffering", true, nullptr); } gst_element_link(queue_, audioconvert_); @@ -331,12 +331,12 @@ bool GstEnginePipeline::Init() { GstCaps* caps16 = gst_caps_new_simple ("audio/x-raw-int", "width", G_TYPE_INT, 16, "signed", G_TYPE_BOOLEAN, true, - NULL); + nullptr); GstCaps* caps32 = gst_caps_new_simple ("audio/x-raw-float", "width", G_TYPE_INT, 32, - NULL); + nullptr); if (mono_playback_) { - gst_caps_set_simple(caps32, "channels", G_TYPE_INT, 1, NULL); + gst_caps_set_simple(caps32, "channels", G_TYPE_INT, 1, nullptr); } // Link the elements with special caps @@ -351,13 +351,13 @@ bool GstEnginePipeline::Init() { // Link replaygain elements if enabled. if (rg_enabled_) { - gst_element_link_many(rgvolume_, rglimiter_, audioconvert2_, tee, NULL); + gst_element_link_many(rgvolume_, rglimiter_, audioconvert2_, tee, nullptr); } // Link everything else. gst_element_link(probe_queue, probe_converter); gst_element_link_many(audio_queue, equalizer_preamp_, equalizer_, stereo_panorama_, - volume_, audioscale_, convert, audiosink_, NULL); + volume_, audioscale_, convert, audiosink_, nullptr); // Add probes and handlers. gst_pad_add_buffer_probe(gst_element_get_static_pad(probe_converter, "src"), G_CALLBACK(HandoffCallback), this); @@ -420,7 +420,8 @@ bool GstEnginePipeline::InitFromUrl(const QUrl &url, qint64 end_nanosec) { GstEnginePipeline::~GstEnginePipeline() { if (pipeline_) { - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr, nullptr); g_source_remove(bus_cb_id_); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(GST_OBJECT(pipeline_)); @@ -509,7 +510,7 @@ void GstEnginePipeline::StreamStatusMessageReceived(GstMessage* msg) { memset(&callbacks, 0, sizeof(callbacks)); callbacks.enter_thread = TaskEnterCallback; - gst_task_set_thread_callbacks(task, &callbacks, this, NULL); + gst_task_set_thread_callbacks(task, &callbacks, this, nullptr); } } } @@ -565,7 +566,7 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage* msg) { } void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { - GstTagList* taglist = NULL; + GstTagList* taglist = nullptr; gst_message_parse_tag(msg, &taglist); Engine::SimpleMetaBundle bundle; @@ -585,7 +586,7 @@ void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { } QString GstEnginePipeline::ParseTag(GstTagList* list, const char* tag) const { - gchar* data = NULL; + gchar* data = nullptr; bool success = gst_tag_list_get_string(list, tag, &data); QString ret; @@ -735,7 +736,8 @@ bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, gpointer self // The segment start time is used to calculate the proper offset of data // buffers from the start of the stream gint64 start = 0; - gst_event_parse_new_segment(e, NULL, NULL, NULL, &start, NULL, NULL); + gst_event_parse_new_segment( + e, nullptr, nullptr, nullptr, &start, nullptr, nullptr); instance->segment_start_ = start; instance->segment_start_received_ = true; @@ -761,7 +763,7 @@ void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer sel void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *pspec, gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); GstElement* element; - g_object_get(bin, "source", &element, NULL); + g_object_get(bin, "source", &element, nullptr); if (!element) { return; } @@ -772,7 +774,7 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps // documentation, this might be added in the future). Despite that, for now // we include device inside URL: we decompose it during Init and set device // here, when this callback is called. - g_object_set(element, "device", instance->source_device().toLocal8Bit().constData(), NULL); + g_object_set(element, "device", instance->source_device().toLocal8Bit().constData(), nullptr); } if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "extra-headers") && instance->url().host().contains("grooveshark")) { @@ -781,8 +783,8 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps // Maybe it could be usefull in some other cases, but for now, I prefer to // keep this grooveshark specific. GstStructure* headers; - headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, "bytes=0-", NULL); - g_object_set(element, "extra-headers", headers, NULL); + headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, "bytes=0-", nullptr); + g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } @@ -794,8 +796,8 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps "Authorization", G_TYPE_STRING, instance->url().fragment().toAscii().data(), - NULL); - g_object_set(element, "extra-headers", headers, NULL); + nullptr); + g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } @@ -803,7 +805,7 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps QString user_agent = QString("%1 %2").arg( QCoreApplication::applicationName(), QCoreApplication::applicationVersion()); - g_object_set(element, "user-agent", user_agent.toUtf8().constData(), NULL); + g_object_set(element, "user-agent", user_agent.toUtf8().constData(), nullptr); } } @@ -906,7 +908,7 @@ void GstEnginePipeline::UpdateEqualizer() { gain *= 0.12; GstObject* band = gst_child_proxy_get_child_by_index(GST_CHILD_PROXY(equalizer_), i); - g_object_set(G_OBJECT(band), "gain", gain, NULL); + g_object_set(G_OBJECT(band), "gain", gain, nullptr); g_object_unref(G_OBJECT(band)); } @@ -915,12 +917,12 @@ void GstEnginePipeline::UpdateEqualizer() { if (eq_enabled_) preamp = float(eq_preamp_ + 100) * 0.01; // To scale from 0.0 to 2.0 - g_object_set(G_OBJECT(equalizer_preamp_), "volume", preamp, NULL); + g_object_set(G_OBJECT(equalizer_preamp_), "volume", preamp, nullptr); } void GstEnginePipeline::UpdateStereoBalance() { if (stereo_panorama_) { - g_object_set(G_OBJECT(stereo_panorama_), "panorama", stereo_balance_, NULL); + g_object_set(G_OBJECT(stereo_panorama_), "panorama", stereo_balance_, nullptr); } } @@ -936,7 +938,7 @@ void GstEnginePipeline::SetVolumeModifier(qreal mod) { void GstEnginePipeline::UpdateVolume() { float vol = double(volume_percent_) * 0.01 * volume_modifier_; - g_object_set(G_OBJECT(volume_), "volume", vol, NULL); + g_object_set(G_OBJECT(volume_), "volume", vol, nullptr); } void GstEnginePipeline::StartFader(qint64 duration_nanosec, diff --git a/src/globalsearch/globalsearch.cpp b/src/globalsearch/globalsearch.cpp index 4131b1570..b3c2912ae 100644 --- a/src/globalsearch/globalsearch.cpp +++ b/src/globalsearch/globalsearch.cpp @@ -254,7 +254,7 @@ void GlobalSearch::AlbumArtLoaded(quint64 id, const QImage& image) { return; int orig_id = cover_loader_tasks_.take(id); - HandleLoadedArt(orig_id, image, NULL); + HandleLoadedArt(orig_id, image, nullptr); } void GlobalSearch::HandleLoadedArt(int id, const QImage& image, SearchProvider* provider) { @@ -283,7 +283,7 @@ MimeData* GlobalSearch::LoadTracks(const SearchProvider::ResultList& results) { // possible to combine different providers. Just take the results from a // single provider. if (results.isEmpty()) { - return NULL; + return nullptr; } SearchProvider* first_provider = results[0].provider_; diff --git a/src/globalsearch/globalsearchmodel.cpp b/src/globalsearch/globalsearchmodel.cpp index 4408fa4c3..ca0aa6e58 100644 --- a/src/globalsearch/globalsearchmodel.cpp +++ b/src/globalsearch/globalsearchmodel.cpp @@ -24,7 +24,7 @@ GlobalSearchModel::GlobalSearchModel(GlobalSearch* engine, QObject* parent) : QStandardItemModel(parent), engine_(engine), - proxy_(NULL), + proxy_(nullptr), use_pretty_covers_(true), artist_icon_(":/icons/22x22/x-clementine-artist.png"), album_icon_(":/icons/22x22/x-clementine-album.png") diff --git a/src/globalsearch/globalsearchview.cpp b/src/globalsearch/globalsearchview.cpp index 9b38847aa..7314e588a 100644 --- a/src/globalsearch/globalsearchview.cpp +++ b/src/globalsearch/globalsearchview.cpp @@ -52,7 +52,7 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) app_(app), engine_(app_->global_search()), ui_(new Ui_GlobalSearchView), - context_menu_(NULL), + context_menu_(nullptr), last_search_id_(0), front_model_(new GlobalSearchModel(engine_, this)), back_model_(new GlobalSearchModel(engine_, this)), @@ -358,7 +358,7 @@ void GlobalSearchView::ArtLoaded(int id, const QPixmap& pixmap) { MimeData* GlobalSearchView::SelectedMimeData() { if (!ui_->results->selectionModel()) - return NULL; + return nullptr; // Get all selected model indexes QModelIndexList indexes = ui_->results->selectionModel()->selectedRows(); @@ -377,7 +377,7 @@ MimeData* GlobalSearchView::SelectedMimeData() { // Still got nothing? Give up. if (indexes.isEmpty()) { - return NULL; + return nullptr; } // Get items for these indexes diff --git a/src/globalsearch/groovesharksearchprovider.cpp b/src/globalsearch/groovesharksearchprovider.cpp index 0661ac207..2c1ee44ee 100644 --- a/src/globalsearch/groovesharksearchprovider.cpp +++ b/src/globalsearch/groovesharksearchprovider.cpp @@ -26,7 +26,7 @@ GroovesharkSearchProvider::GroovesharkSearchProvider(Application* app, QObject* parent) : SearchProvider(app, parent), - service_(NULL) + service_(nullptr) { } diff --git a/src/globalsearch/searchprovider.cpp b/src/globalsearch/searchprovider.cpp index 51d55413a..428355234 100644 --- a/src/globalsearch/searchprovider.cpp +++ b/src/globalsearch/searchprovider.cpp @@ -126,7 +126,7 @@ void SearchProvider::LoadArtAsync(int id, const Result& result) { } MimeData* SearchProvider::LoadTracks(const ResultList& results) { - MimeData* mime_data = NULL; + MimeData* mime_data = nullptr; if (mime_data_contains_urls_only()) { mime_data = new MimeData; diff --git a/src/globalsearch/soundcloudsearchprovider.cpp b/src/globalsearch/soundcloudsearchprovider.cpp index d79525814..5af8f456f 100644 --- a/src/globalsearch/soundcloudsearchprovider.cpp +++ b/src/globalsearch/soundcloudsearchprovider.cpp @@ -26,7 +26,7 @@ SoundCloudSearchProvider::SoundCloudSearchProvider(Application* app, QObject* parent) : SearchProvider(app, parent), - service_(NULL) + service_(nullptr) { } diff --git a/src/globalsearch/spotifysearchprovider.cpp b/src/globalsearch/spotifysearchprovider.cpp index 5f955c27b..3e08aa529 100644 --- a/src/globalsearch/spotifysearchprovider.cpp +++ b/src/globalsearch/spotifysearchprovider.cpp @@ -33,8 +33,8 @@ const int kSearchAlbumLimit = 20; SpotifySearchProvider::SpotifySearchProvider(Application* app, QObject* parent) : SearchProvider(app, parent), - server_(NULL), - service_(NULL) + server_(nullptr), + service_(nullptr) { Init("Spotify", "spotify", QIcon(":icons/32x32/spotify.png"), WantsDelayedQueries | WantsSerialisedArtQueries | ArtIsProbablyRemote | @@ -49,7 +49,7 @@ SpotifyServer* SpotifySearchProvider::server() { service_ = InternetModel::Service(); if (service_->login_state() != SpotifyService::LoginState_LoggedIn) - return NULL; + return nullptr; server_ = service_->server(); connect(server_, SIGNAL(SearchResults(pb::spotify::SearchResponse)), @@ -66,7 +66,7 @@ SpotifyServer* SpotifySearchProvider::server() { } void SpotifySearchProvider::ServerDestroyed() { - server_ = NULL; + server_ = nullptr; } void SpotifySearchProvider::SearchAsync(int id, const QString& query) { diff --git a/src/internet/cloudfileservice.cpp b/src/internet/cloudfileservice.cpp index 4b7c7232c..55cb1ab7a 100644 --- a/src/internet/cloudfileservice.cpp +++ b/src/internet/cloudfileservice.cpp @@ -25,7 +25,7 @@ CloudFileService::CloudFileService( const QIcon& icon, SettingsDialog::Page settings_page) : InternetService(service_name, app, parent, parent), - root_(NULL), + root_(nullptr), network_(new NetworkAccessManager(this)), library_sort_model_(new QSortFilterProxyModel(this)), playlist_manager_(app->playlist_manager()), diff --git a/src/internet/digitallyimportedservicebase.cpp b/src/internet/digitallyimportedservicebase.cpp index 4ef5086bc..3e363afbc 100644 --- a/src/internet/digitallyimportedservicebase.cpp +++ b/src/internet/digitallyimportedservicebase.cpp @@ -56,7 +56,7 @@ DigitallyImportedServiceBase::DigitallyImportedServiceBase( url_handler_(new DigitallyImportedUrlHandler(app, this)), basic_audio_type_(1), premium_audio_type_(2), - root_(NULL), + root_(nullptr), saved_channels_(kSettingsGroup, api_service_name, kStreamsCacheDurationSecs), api_client_(new DigitallyImportedClient(api_service_name, this)) { diff --git a/src/internet/digitallyimportedurlhandler.cpp b/src/internet/digitallyimportedurlhandler.cpp index 24b05665f..651097148 100644 --- a/src/internet/digitallyimportedurlhandler.cpp +++ b/src/internet/digitallyimportedurlhandler.cpp @@ -79,7 +79,7 @@ void DigitallyImportedUrlHandler::LoadPlaylistFinished(QIODevice* device) { CancelTask(); // Try to parse the playlist - PlaylistParser parser(NULL); + PlaylistParser parser(nullptr); QList songs = parser.LoadFromDevice(device); qLog(Info) << "Loading station finished, got" << songs.count() << "songs"; diff --git a/src/internet/dropboxauthenticator.cpp b/src/internet/dropboxauthenticator.cpp index 2cbda3d81..ce3239df6 100644 --- a/src/internet/dropboxauthenticator.cpp +++ b/src/internet/dropboxauthenticator.cpp @@ -133,7 +133,7 @@ QByteArray DropboxAuthenticator::GenerateAuthorisationHeader( QList params; params << Param("oauth_consumer_key", kAppKey) << Param("oauth_signature_method", "PLAINTEXT") - << Param("oauth_timestamp", QString::number(time(NULL))) + << Param("oauth_timestamp", QString::number(time(nullptr))) << Param("oauth_nonce", QString::number(qrand())) << Param("oauth_signature", signature); if (!token.isNull()) { diff --git a/src/internet/groovesharkservice.cpp b/src/internet/groovesharkservice.cpp index ba5234c44..d700d7e88 100644 --- a/src/internet/groovesharkservice.cpp +++ b/src/internet/groovesharkservice.cpp @@ -87,29 +87,29 @@ GroovesharkService::GroovesharkService(Application* app, InternetModel *parent) : InternetService(kServiceName, app, parent, parent), url_handler_(new GroovesharkUrlHandler(this, this)), next_pending_search_id_(0), - root_(NULL), - search_(NULL), - popular_month_(NULL), - popular_today_(NULL), - stations_(NULL), - grooveshark_radio_(NULL), - favorites_(NULL), - library_(NULL), - playlists_parent_(NULL), - subscribed_playlists_parent_(NULL), + root_(nullptr), + search_(nullptr), + popular_month_(nullptr), + popular_today_(nullptr), + stations_(nullptr), + grooveshark_radio_(nullptr), + favorites_(nullptr), + library_(nullptr), + playlists_parent_(nullptr), + subscribed_playlists_parent_(nullptr), network_(new NetworkAccessManager(this)), - context_menu_(NULL), - create_playlist_(NULL), - delete_playlist_(NULL), - rename_playlist_(NULL), - remove_from_playlist_(NULL), - remove_from_favorites_(NULL), - remove_from_library_(NULL), - get_url_to_share_song_(NULL), - get_url_to_share_playlist_(NULL), + context_menu_(nullptr), + create_playlist_(nullptr), + delete_playlist_(nullptr), + rename_playlist_(nullptr), + remove_from_playlist_(nullptr), + remove_from_favorites_(nullptr), + remove_from_library_(nullptr), + get_url_to_share_song_(nullptr), + get_url_to_share_playlist_(nullptr), search_box_(new SearchBoxWidget(this)), search_delay_(new QTimer(this)), - last_search_reply_(NULL), + last_search_reply_(nullptr), api_key_(QByteArray::fromBase64(kApiSecret)), login_state_(LoginState_OtherError), task_popular_id_(0), @@ -170,7 +170,7 @@ void GroovesharkService::ShowConfig() { QWidget* GroovesharkService::HeaderWidget() const { if (IsLoggedIn()) return search_box_; - return NULL; + return nullptr; } void GroovesharkService::Search(const QString& text, bool now) { @@ -405,7 +405,7 @@ void GroovesharkService::Authenticated(QNetworkReply* reply) { login_state_ = LoginState_NoPremium; } if (!error.isEmpty()) { - QMessageBox::warning(NULL, tr("Grooveshark login error"), error, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Grooveshark login error"), error, QMessageBox::Close); ResetSessionId(); emit LoginFinished(false); return; @@ -430,17 +430,17 @@ void GroovesharkService::RemoveItems() { root_->removeRows(0, root_->rowCount()); // 'search', 'favorites', 'popular', ... items were root's children, and have // been deleted: we should update these now invalid pointers - search_ = NULL; - popular_month_ = NULL; - popular_today_ = NULL; - library_ = NULL; - favorites_ = NULL; - subscribed_playlists_parent_ = NULL; - stations_ = NULL; - grooveshark_radio_ = NULL; - playlists_parent_ = NULL; + search_ = nullptr; + popular_month_ = nullptr; + popular_today_ = nullptr; + library_ = nullptr; + favorites_ = nullptr; + subscribed_playlists_parent_ = nullptr; + stations_ = nullptr; + grooveshark_radio_ = nullptr; + playlists_parent_ = nullptr; playlists_.clear(); - subscribed_playlists_parent_ = NULL; + subscribed_playlists_parent_ = nullptr; subscribed_playlists_.clear(); pending_retrieve_playlists_.clear(); } @@ -1014,7 +1014,7 @@ GeneratorPtr GroovesharkService::CreateGenerator(QStandardItem* item) { if (item == grooveshark_radio_) { if (last_artists_ids_.isEmpty()) { - QMessageBox::warning(NULL, tr("Error"), + QMessageBox::warning(nullptr, tr("Error"), tr("To start Grooveshark radio, you should first listen to a few other Grooveshark songs")); return ret; } @@ -1240,7 +1240,7 @@ void GroovesharkService::RefreshPlaylist(int playlist_id) { } void GroovesharkService::CreateNewPlaylist() { - QString name = QInputDialog::getText(NULL, + QString name = QInputDialog::getText(nullptr, tr("Create a new Grooveshark playlist"), tr("Name"), QLineEdit::Normal); @@ -1333,7 +1333,7 @@ void GroovesharkService::RenamePlaylist(int playlist_id) { return; } const QString& old_name = playlists_[playlist_id].name_; - QString new_name = QInputDialog::getText(NULL, + QString new_name = QInputDialog::getText(nullptr, tr("Rename \"%1\" playlist").arg(old_name), tr("Name"), QLineEdit::Normal, diff --git a/src/internet/icecastmodel.cpp b/src/internet/icecastmodel.cpp index b1732d188..5954c365d 100644 --- a/src/internet/icecastmodel.cpp +++ b/src/internet/icecastmodel.cpp @@ -200,7 +200,7 @@ QStringList IcecastModel::mimeTypes() const { QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { if (indexes.isEmpty()) - return NULL; + return nullptr; SongMimeData* data = new SongMimeData; QList urls; @@ -216,7 +216,7 @@ QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { if (data->songs.isEmpty()) { delete data; - return NULL; + return nullptr; } data->setUrls(urls); diff --git a/src/internet/icecastservice.cpp b/src/internet/icecastservice.cpp index 00e83ac6f..50ca8445b 100644 --- a/src/internet/icecastservice.cpp +++ b/src/internet/icecastservice.cpp @@ -52,9 +52,9 @@ const char* IcecastService::kHomepage = "http://dir.xiph.org/"; IcecastService::IcecastService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(NULL), - backend_(NULL), - model_(NULL), + context_menu_(nullptr), + backend_(nullptr), + model_(nullptr), filter_(new IcecastFilterWidget(0)), load_directory_task_id_(0) { diff --git a/src/internet/internetmodel.cpp b/src/internet/internetmodel.cpp index 289f591e0..9b01a7dfc 100644 --- a/src/internet/internetmodel.cpp +++ b/src/internet/internetmodel.cpp @@ -61,7 +61,7 @@ using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; using smart_playlists::GeneratorPtr; -QMap* InternetModel::sServices = NULL; +QMap* InternetModel::sServices = nullptr; InternetModel::InternetModel(Application* app, QObject* parent) : QStandardItemModel(parent), @@ -162,7 +162,7 @@ void InternetModel::ServiceDeleted() { InternetService* InternetModel::ServiceByName(const QString& name) { if (sServices->contains(name)) return sServices->value(name); - return NULL; + return nullptr; } InternetService* InternetModel::ServiceForItem(const QStandardItem* item) const { @@ -178,7 +178,7 @@ InternetService* InternetModel::ServiceForIndex(const QModelIndex& index) const } current_index = current_index.parent(); } - return NULL; + return nullptr; } Qt::ItemFlags InternetModel::flags(const QModelIndex& index) const { @@ -230,7 +230,7 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { indexes[0].data(Role_PlayBehaviour).toInt() == PlayBehaviour_DoubleClickAction) { InternetModel::ServiceForIndex(indexes[0])->ItemDoubleClicked(itemFromIndex(indexes[0])); - return NULL; + return nullptr; } if (indexes.count() == 1 && @@ -238,7 +238,7 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { GeneratorPtr generator = InternetModel::ServiceForIndex(indexes[0])->CreateGenerator(itemFromIndex(indexes[0])); if (!generator) - return NULL; + return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(LibraryModel::kSmartPlaylistsMimeType, QByteArray()); data->name_for_new_playlist_ = this->data(indexes.first()).toString(); @@ -271,7 +271,7 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { } if (urls.isEmpty()) - return NULL; + return nullptr; InternetMimeData* data = new InternetMimeData(this); data->setUrls(urls); diff --git a/src/internet/internetservice.cpp b/src/internet/internetservice.cpp index b809f3ffb..31d5bfd49 100644 --- a/src/internet/internetservice.cpp +++ b/src/internet/internetservice.cpp @@ -31,10 +31,10 @@ InternetService::InternetService(const QString& name, Application* app, app_(app), model_(model), name_(name), - append_to_playlist_(NULL), - replace_playlist_(NULL), - open_in_new_playlist_(NULL), - separator_(NULL) + append_to_playlist_(nullptr), + replace_playlist_(nullptr), + open_in_new_playlist_(nullptr), + separator_(nullptr) { } diff --git a/src/internet/internetviewcontainer.cpp b/src/internet/internetviewcontainer.cpp index 206c995aa..1a731bbbb 100644 --- a/src/internet/internetviewcontainer.cpp +++ b/src/internet/internetviewcontainer.cpp @@ -32,9 +32,9 @@ const int InternetViewContainer::kAnimationDuration = 500; InternetViewContainer::InternetViewContainer(QWidget *parent) : QWidget(parent), ui_(new Ui_InternetViewContainer), - app_(NULL), - current_service_(NULL), - current_header_(NULL) + app_(nullptr), + current_service_(nullptr), + current_header_(nullptr) { ui_->setupUi(this); @@ -96,8 +96,8 @@ void InternetViewContainer::Collapsed(const QModelIndex& index) { if (app_->internet_model()->merged_model()->mapToSource(index).model() == app_->internet_model() && index.data(InternetModel::Role_Type) == InternetModel::Type_Service) { SetHeaderVisible(current_header_, false); - current_service_ = NULL; - current_header_ = NULL; + current_service_ = nullptr; + current_header_ = nullptr; } } @@ -133,7 +133,7 @@ void InternetViewContainer::FocusOnFilter(QKeyEvent* event) { void InternetViewContainer::SetHeaderHeight(int height) { QTimeLine* animation = qobject_cast(sender()); - QWidget* header = NULL; + QWidget* header = nullptr; foreach (QWidget* h, headers_.keys()) { if (headers_[h].animation_ == animation) { header = h; diff --git a/src/internet/jamendoservice.cpp b/src/internet/jamendoservice.cpp index 325b800c2..c968909dd 100644 --- a/src/internet/jamendoservice.cpp +++ b/src/internet/jamendoservice.cpp @@ -73,12 +73,12 @@ const int JamendoService::kApproxDatabaseSize = 300000; JamendoService::JamendoService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(NULL), - library_backend_(NULL), - library_filter_(NULL), - library_model_(NULL), + context_menu_(nullptr), + library_backend_(nullptr), + library_filter_(nullptr), + library_model_(nullptr), library_sort_model_(new QSortFilterProxyModel(this)), - search_provider_(NULL), + search_provider_(nullptr), load_database_task_id_(0), total_song_count_(0), accepted_download_(false) { diff --git a/src/internet/lastfmservice.cpp b/src/internet/lastfmservice.cpp index b8c2c6730..756dd661f 100644 --- a/src/internet/lastfmservice.cpp +++ b/src/internet/lastfmservice.cpp @@ -86,19 +86,19 @@ const int LastFMService::kFriendsCacheDurationSecs = 60 * 60 * 24; // 1 day LastFMService::LastFMService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), url_handler_(new LastFMUrlHandler(this, this)), - scrobbler_(NULL), + scrobbler_(nullptr), already_scrobbled_(false), station_dialog_(new LastFMStationDialog), context_menu_(new QMenu), initial_tune_(false), tune_task_id_(0), scrobbling_enabled_(false), - root_item_(NULL), - artist_list_(NULL), - tag_list_(NULL), - custom_list_(NULL), - friends_list_(NULL), - neighbours_list_(NULL), + root_item_(nullptr), + artist_list_(nullptr), + tag_list_(nullptr), + custom_list_(nullptr), + friends_list_(nullptr), + neighbours_list_(nullptr), friend_names_(kSettingsGroup, "friend_names", kFriendsCacheDurationSecs), connection_problems_(false) { @@ -330,7 +330,7 @@ void LastFMService::AuthenticateReplyFinished(QNetworkReply* reply) { // Invalidate the scrobbler - it will get recreated later delete scrobbler_; - scrobbler_ = NULL; + scrobbler_ = nullptr; emit AuthenticationComplete(true, QString()); } diff --git a/src/internet/magnatunedownloaddialog.cpp b/src/internet/magnatunedownloaddialog.cpp index edf645223..d8d92aca7 100644 --- a/src/internet/magnatunedownloaddialog.cpp +++ b/src/internet/magnatunedownloaddialog.cpp @@ -44,7 +44,7 @@ MagnatuneDownloadDialog::MagnatuneDownloadDialog(MagnatuneService* service, ui_(new Ui_MagnatuneDownloadDialog), service_(service), network_(new NetworkAccessManager(this)), - current_reply_(NULL), + current_reply_(nullptr), next_row_(0) { ui_->setupUi(this); @@ -230,7 +230,7 @@ void MagnatuneDownloadDialog::ShowError(const QString &message) { } void MagnatuneDownloadDialog::AllFinished(bool error) { - current_reply_ = NULL; + current_reply_ = nullptr; if (error) ui_->button_box->button(QDialogButtonBox::Ok)->show(); diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index 78c343bd4..fe661be2f 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -67,11 +67,11 @@ const char* MagnatuneService::kDownloadUrl = "http://download.magnatune.com/buy/ MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), url_handler_(new MagnatuneUrlHandler(this, this)), - context_menu_(NULL), - root_(NULL), - library_backend_(NULL), - library_model_(NULL), - library_filter_(NULL), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), library_sort_model_(new QSortFilterProxyModel(this)), load_database_task_id_(0), membership_(Membership_None), diff --git a/src/internet/savedradio.cpp b/src/internet/savedradio.cpp index d94ba561a..478250c9b 100644 --- a/src/internet/savedradio.cpp +++ b/src/internet/savedradio.cpp @@ -32,8 +32,8 @@ const char* SavedRadio::kSettingsGroup = "SavedRadio"; SavedRadio::SavedRadio(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), - context_menu_(NULL), - root_(NULL) + context_menu_(nullptr), + root_(nullptr) { LoadStreams(); diff --git a/src/internet/somafmservice.cpp b/src/internet/somafmservice.cpp index 5e3487619..899866ac8 100644 --- a/src/internet/somafmservice.cpp +++ b/src/internet/somafmservice.cpp @@ -56,8 +56,8 @@ SomaFMServiceBase::SomaFMServiceBase( : InternetService(name, app, parent, parent), url_scheme_(name.toLower().remove(' ')), url_handler_(new SomaFMUrlHandler(app, this, this)), - root_(NULL), - context_menu_(NULL), + root_(nullptr), + context_menu_(nullptr), network_(new NetworkAccessManager(this)), streams_(name, "streams", kStreamsCacheDurationSecs), name_(name), diff --git a/src/internet/somafmurlhandler.cpp b/src/internet/somafmurlhandler.cpp index 07f4c3a70..062ff45a1 100644 --- a/src/internet/somafmurlhandler.cpp +++ b/src/internet/somafmurlhandler.cpp @@ -76,7 +76,7 @@ void SomaFMUrlHandler::LoadPlaylistFinished() { } // Parse the playlist - PlaylistParser parser(NULL); + PlaylistParser parser(nullptr); QList songs = parser.LoadFromDevice(reply); qLog(Info) << "Loading station finished, got" << songs.count() << "songs"; diff --git a/src/internet/soundcloudservice.cpp b/src/internet/soundcloudservice.cpp index ae0cef802..8ebf2379b 100644 --- a/src/internet/soundcloudservice.cpp +++ b/src/internet/soundcloudservice.cpp @@ -57,10 +57,10 @@ typedef QPair Param; SoundCloudService::SoundCloudService(Application* app, InternetModel *parent) : InternetService(kServiceName, app, parent, parent), - root_(NULL), - search_(NULL), + root_(nullptr), + search_(nullptr), network_(new NetworkAccessManager(this)), - context_menu_(NULL), + context_menu_(nullptr), search_box_(new SearchBoxWidget(this)), search_delay_(new QTimer(this)), next_pending_search_id_(0) { diff --git a/src/internet/spotifyblobdownloader.cpp b/src/internet/spotifyblobdownloader.cpp index 2dbe7d70a..9827d6557 100644 --- a/src/internet/spotifyblobdownloader.cpp +++ b/src/internet/spotifyblobdownloader.cpp @@ -55,7 +55,7 @@ SpotifyBlobDownloader::~SpotifyBlobDownloader() { } bool SpotifyBlobDownloader::Prompt() { - QMessageBox::StandardButton ret = QMessageBox::question(NULL, + QMessageBox::StandardButton ret = QMessageBox::question(nullptr, tr("Spotify plugin not installed"), tr("An additional plugin is required to use Spotify in Clementine. Would you like to download and install it now?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); @@ -212,7 +212,7 @@ void SpotifyBlobDownloader::ShowError(const QString& message) { } qLog(Warning) << message; - QMessageBox::warning(NULL, tr("Error downloading Spotify plugin"), message, + QMessageBox::warning(nullptr, tr("Error downloading Spotify plugin"), message, QMessageBox::Close); deleteLater(); } diff --git a/src/internet/spotifyserver.cpp b/src/internet/spotifyserver.cpp index ecd48bea3..3728b2449 100644 --- a/src/internet/spotifyserver.cpp +++ b/src/internet/spotifyserver.cpp @@ -26,7 +26,7 @@ #include SpotifyServer::SpotifyServer(QObject* parent) - : AbstractMessageHandler(NULL, parent), + : AbstractMessageHandler(nullptr, parent), server_(new QTcpServer(this)), logged_in_(false) { diff --git a/src/internet/spotifyservice.cpp b/src/internet/spotifyservice.cpp index 543744ed3..e3f623121 100644 --- a/src/internet/spotifyservice.cpp +++ b/src/internet/spotifyservice.cpp @@ -43,15 +43,15 @@ const int SpotifyService::kSearchDelayMsec = 400; SpotifyService::SpotifyService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), - server_(NULL), - blob_process_(NULL), - root_(NULL), - search_(NULL), - starred_(NULL), - inbox_(NULL), - toplist_(NULL), + server_(nullptr), + blob_process_(nullptr), + root_(nullptr), + search_(nullptr), + starred_(nullptr), + inbox_(nullptr), + toplist_(nullptr), login_task_id_(0), - context_menu_(NULL), + context_menu_(nullptr), search_box_(new SearchBoxWidget(this)), search_delay_(new QTimer(this)), login_state_(LoginState_OtherError), @@ -181,7 +181,7 @@ void SpotifyService::LoginCompleted(bool success, const QString& error, } if (show_error_dialog) { - QMessageBox::warning(NULL, tr("Spotify login error"), error_copy, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Spotify login error"), error_copy, QMessageBox::Close); } } else { login_state_ = LoginState_LoggedIn; @@ -197,7 +197,7 @@ void SpotifyService::LoginCompleted(bool success, const QString& error, void SpotifyService::BlobProcessError(QProcess::ProcessError error) { qLog(Error) << "Spotify blob process failed:" << error; blob_process_->deleteLater(); - blob_process_ = NULL; + blob_process_ = nullptr; if (login_task_id_) { app_->task_manager()->SetTaskFinished(login_task_id_); @@ -449,7 +449,7 @@ QStandardItem* SpotifyService::PlaylistBySpotifyIndex(int index) const { return item; } } - return NULL; + return nullptr; } void SpotifyService::UserPlaylistLoaded(const pb::spotify::LoadPlaylistResponse& response) { @@ -515,7 +515,7 @@ PlaylistItem::Options SpotifyService::playlistitem_options() const { QWidget* SpotifyService::HeaderWidget() const { if (IsLoggedIn()) return search_box_; - return NULL; + return nullptr; } void SpotifyService::EnsureMenuCreated() { @@ -719,8 +719,8 @@ void SpotifyService::ShowConfig() { void SpotifyService::Logout() { delete server_; delete blob_process_; - server_ = NULL; - blob_process_ = NULL; + server_ = nullptr; + blob_process_ = nullptr; login_state_ = LoginState_OtherError; diff --git a/src/internet/subsonicservice.cpp b/src/internet/subsonicservice.cpp index 31582a65c..bb9443d9c 100644 --- a/src/internet/subsonicservice.cpp +++ b/src/internet/subsonicservice.cpp @@ -41,11 +41,11 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) url_handler_(new SubsonicUrlHandler(this, this)), scanner_(new SubsonicLibraryScanner(this, this)), load_database_task_id_(0), - context_menu_(NULL), - root_(NULL), - library_backend_(NULL), - library_model_(NULL), - library_filter_(NULL), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), library_sort_model_(new QSortFilterProxyModel(this)), total_song_count_(0), login_state_(LoginState_OtherError), diff --git a/src/internet/ubuntuoneauthenticator.cpp b/src/internet/ubuntuoneauthenticator.cpp index 8091fd0af..9a62460a9 100644 --- a/src/internet/ubuntuoneauthenticator.cpp +++ b/src/internet/ubuntuoneauthenticator.cpp @@ -85,7 +85,7 @@ QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader( const QString& token, const QString& token_secret) { typedef QPair Param; - QString timestamp = QString::number(time(NULL)); + QString timestamp = QString::number(time(nullptr)); QList parameters; parameters << Param("oauth_nonce", QString::number(qrand())) << Param("oauth_timestamp", timestamp) diff --git a/src/library/library.cpp b/src/library/library.cpp index 308ce7233..e77f22a56 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -37,10 +37,10 @@ const char* Library::kFtsTable = "songs_fts"; Library::Library(Application* app, QObject *parent) : QObject(parent), app_(app), - backend_(NULL), - model_(NULL), - watcher_(NULL), - watcher_thread_(NULL) + backend_(nullptr), + model_(nullptr), + watcher_(nullptr), + watcher_thread_(nullptr) { backend_ = new LibraryBackend; backend()->moveToThread(app->database()->thread()); diff --git a/src/library/libraryfilterwidget.cpp b/src/library/libraryfilterwidget.cpp index 3f866149b..37c3aec2b 100644 --- a/src/library/libraryfilterwidget.cpp +++ b/src/library/libraryfilterwidget.cpp @@ -33,7 +33,7 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) : QWidget(parent), ui_(new Ui_LibraryFilterWidget), - model_(NULL), + model_(nullptr), group_by_dialog_(new GroupByDialog), filter_delay_(new QTimer(this)), filter_applies_to_model_(true), diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 011a4466d..9a1240aaf 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -174,7 +174,7 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // Special case: if the song is a compilation and the current GroupBy // level is Artists, then we want the Various Artists node :( if (IsArtistGroupBy(type) && song.is_compilation()) { - if (container->compilation_artist_node_ == NULL) + if (container->compilation_artist_node_ == nullptr) CreateCompilationArtistNode(true, container); container = container->compilation_artist_node_; } else { @@ -242,7 +242,7 @@ LibraryItem* LibraryModel::CreateCompilationArtistNode(bool signal, LibraryItem* parent->compilation_artist_node_ = new LibraryItem(LibraryItem::Type_Container, parent); - parent->compilation_artist_node_->compilation_artist_node_ = NULL; + parent->compilation_artist_node_->compilation_artist_node_ = nullptr; parent->compilation_artist_node_->key = tr("Various artists"); parent->compilation_artist_node_->sort_text = " various"; parent->compilation_artist_node_->container_level = parent->container_level + 1; @@ -378,7 +378,7 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Special case the Various Artists node if (IsCompilationArtistNode(node)) - node->parent->compilation_artist_node_ = NULL; + node->parent->compilation_artist_node_ = nullptr; else container_nodes_[node->container_level].remove(node->key); @@ -702,10 +702,10 @@ void LibraryModel::BeginReset() { container_nodes_[2].clear(); divider_nodes_.clear(); pending_art_.clear(); - smart_playlist_node_ = NULL; + smart_playlist_node_ = nullptr; root_ = new LibraryItem(this); - root_->compilation_artist_node_ = NULL; + root_->compilation_artist_node_ = nullptr; root_->lazy_loaded = false; // Smart playlists? @@ -833,7 +833,7 @@ LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, LibraryItem *pare // Initialise the item depending on what type it's meant to be LibraryItem* item = new LibraryItem(item_type, parent); - item->compilation_artist_node_ = NULL; + item->compilation_artist_node_ = nullptr; item->container_level = container_level; return item; } @@ -1072,13 +1072,13 @@ QStringList LibraryModel::mimeTypes() const { QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const { if (indexes.isEmpty()) - return NULL; + return nullptr; // Special case: a smart playlist was dragged if (IndexToItem(indexes.first())->type == LibraryItem::Type_SmartPlaylist) { GeneratorPtr generator = CreateGenerator(indexes.first()); if (!generator) - return NULL; + return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(kSmartPlaylistsMimeType, QByteArray()); @@ -1248,7 +1248,7 @@ void LibraryModel::CreateSmartPlaylists() { void LibraryModel::ItemFromSmartPlaylist(const QSettings& s, bool notify) const { LibraryItem* item = new LibraryItem(LibraryItem::Type_SmartPlaylist, - notify ? NULL : smart_playlist_node_); + notify ? nullptr : smart_playlist_node_); item->display_text = tr(qPrintable(s.value("name").toString())); item->sort_text = item->display_text; item->key = s.value("type").toString(); diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index 297212837..b4976463d 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -165,11 +165,11 @@ bool LibraryItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, LibraryView::LibraryView(QWidget* parent) : AutoExpandingTreeView(parent), - app_(NULL), - filter_(NULL), + app_(nullptr), + filter_(nullptr), total_song_count_(-1), nomusic_(":nomusic.png"), - context_menu_(NULL), + context_menu_(nullptr), is_in_keyboard_search_(false) { setItemDelegate(new LibraryItemDelegate(this)); @@ -296,7 +296,7 @@ void LibraryView::ReloadSettings() { s.beginGroup(kSettingsGroup); SetAutoOpen(s.value("auto_open", true).toBool()); - if (app_ != NULL) { + if (app_ != nullptr) { app_->library_model()->set_pretty_covers(s.value("pretty_covers", true).toBool()); app_->library_model()->set_show_dividers(s.value("show_dividers", true).toBool()); } diff --git a/src/library/librarywatcher.cpp b/src/library/librarywatcher.cpp index 4a421a840..7867cb5e5 100644 --- a/src/library/librarywatcher.cpp +++ b/src/library/librarywatcher.cpp @@ -49,8 +49,8 @@ const char* LibraryWatcher::kSettingsGroup = "LibraryWatcher"; LibraryWatcher::LibraryWatcher(QObject* parent) : QObject(parent), - backend_(NULL), - task_manager_(NULL), + backend_(nullptr), + task_manager_(nullptr), fs_watcher_(FileSystemWatcherInterface::Create(this)), stop_requested_(false), scan_on_startup_(true), diff --git a/src/main.cpp b/src/main.cpp index cd7bcc2f1..bc2f8bba2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -137,7 +137,7 @@ void IncreaseFDLimit() { // getrlimit() lies about the hard limit so we have to check sysctl. int max_fd = 0; size_t len = sizeof(max_fd); - sysctlbyname("kern.maxfilesperproc", &max_fd, &len, NULL, 0); + sysctlbyname("kern.maxfilesperproc", &max_fd, &len, nullptr, 0); limit.rlim_cur = max_fd; int ret = setrlimit(RLIMIT_NOFILE, &limit); @@ -309,14 +309,14 @@ int main(int argc, char *argv[]) { // Initialise logging logging::Init(); logging::SetLevels(options.log_levels()); - g_log_set_default_handler(reinterpret_cast(&logging::GLog), NULL); + g_log_set_default_handler(reinterpret_cast(&logging::GLog), nullptr); // Output the version, so when people attach log output to bug reports they // don't have to tell us which version they're using. qLog(Info) << "Clementine" << CLEMENTINE_VERSION_DISPLAY; // Seed the random number generators. - time_t t = time(NULL); + time_t t = time(nullptr); srand(t); qsrand(t); diff --git a/src/moodbar/moodbarcontroller.cpp b/src/moodbar/moodbarcontroller.cpp index eb97af365..6241edca1 100644 --- a/src/moodbar/moodbarcontroller.cpp +++ b/src/moodbar/moodbarcontroller.cpp @@ -35,7 +35,7 @@ MoodbarController::MoodbarController(Application* app, QObject* parent) void MoodbarController::CurrentSongChanged(const Song& song) { QByteArray data; - MoodbarPipeline* pipeline = NULL; + MoodbarPipeline* pipeline = nullptr; const MoodbarLoader::Result result = app_->moodbar_loader()->Load(song.url(), &data, &pipeline); diff --git a/src/moodbar/moodbaritemdelegate.cpp b/src/moodbar/moodbaritemdelegate.cpp index cb5826c42..4a52d3315 100644 --- a/src/moodbar/moodbaritemdelegate.cpp +++ b/src/moodbar/moodbaritemdelegate.cpp @@ -119,7 +119,7 @@ void MoodbarItemDelegate::StartLoadingData(const QUrl& url, Data* data) { // Load a mood file for this song and generate some colors from it QByteArray bytes; - MoodbarPipeline* pipeline = NULL; + MoodbarPipeline* pipeline = nullptr; switch (app_->moodbar_loader()->Load(url, &bytes, &pipeline)) { case MoodbarLoader::CannotLoad: data->state_ = Data::State_CannotLoad; diff --git a/src/moodbar/moodbarpipeline.cpp b/src/moodbar/moodbarpipeline.cpp index 835e52e79..6937233bf 100644 --- a/src/moodbar/moodbarpipeline.cpp +++ b/src/moodbar/moodbarpipeline.cpp @@ -28,10 +28,10 @@ bool MoodbarPipeline::sIsAvailable = false; MoodbarPipeline::MoodbarPipeline(const QUrl& local_filename) - : QObject(NULL), + : QObject(nullptr), local_filename_(local_filename), - pipeline_(NULL), - convert_element_(NULL), + pipeline_(nullptr), + convert_element_(nullptr), success_(false) { } @@ -61,7 +61,7 @@ bool MoodbarPipeline::IsAvailable() { } GstElement* MoodbarPipeline::CreateElement(const QString& factory_name) { - GstElement* ret = gst_element_factory_make(factory_name.toAscii().constData(), NULL); + GstElement* ret = gst_element_factory_make(factory_name.toAscii().constData(), nullptr); if (ret) { gst_bin_add(GST_BIN(pipeline_), ret); @@ -90,21 +90,21 @@ void MoodbarPipeline::Start() { GstElement* appsink = CreateElement("appsink"); if (!decodebin || !convert_element_ || !fftwspectrum || !moodbar || !appsink) { - pipeline_ = NULL; + pipeline_ = nullptr; emit Finished(false); return; } // Join them together - gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, NULL); + gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, nullptr); // Set properties - g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), NULL); + g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), nullptr); g_object_set(fftwspectrum, "def-size", 2048, "def-step", 1024, - "hiquality", true, NULL); + "hiquality", true, nullptr); g_object_set(moodbar, "height", 1, - "max-width", 1000, NULL); + "max-width", 1000, nullptr); // Connect signals CHECKED_GCONNECT(decodebin, "pad-added", &NewPadCallback, this); @@ -115,7 +115,7 @@ void MoodbarPipeline::Start() { memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, this, NULL); + gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, this, nullptr); // Start playing gst_element_set_state(pipeline_, GST_STATE_PLAYING); @@ -187,9 +187,10 @@ void MoodbarPipeline::Cleanup() { Q_ASSERT(QThread::currentThread() != qApp->thread()); if (pipeline_) { - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr,nullptr); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); - pipeline_ = NULL; + pipeline_ = nullptr; } } diff --git a/src/moodbar/moodbarproxystyle.cpp b/src/moodbar/moodbarproxystyle.cpp index 4014c763d..10d98ead1 100644 --- a/src/moodbar/moodbarproxystyle.cpp +++ b/src/moodbar/moodbarproxystyle.cpp @@ -44,9 +44,9 @@ MoodbarProxyStyle::MoodbarProxyStyle(Application* app, QSlider* slider) fade_timeline_(new QTimeLine(1000, this)), moodbar_colors_dirty_(true), moodbar_pixmap_dirty_(true), - context_menu_(NULL), - show_moodbar_action_(NULL), - style_action_group_(NULL) + context_menu_(nullptr), + show_moodbar_action_(nullptr), + style_action_group_(nullptr) { slider->setStyle(this); slider->installEventFilter(this); diff --git a/src/musicbrainz/chromaprinter.cpp b/src/musicbrainz/chromaprinter.cpp index ea1ae2f33..6a0a6a60a 100644 --- a/src/musicbrainz/chromaprinter.cpp +++ b/src/musicbrainz/chromaprinter.cpp @@ -35,8 +35,8 @@ static const int kDecodeChannels = 1; Chromaprinter::Chromaprinter(const QString& filename) : filename_(filename), - event_loop_(NULL), - convert_element_(NULL), + event_loop_(nullptr), + convert_element_(nullptr), finishing_(false) { } @@ -82,8 +82,8 @@ QString Chromaprinter::CreateFingerprint() { convert_element_ = convert; // Connect the elements - gst_element_link_many(src, decode, NULL); - gst_element_link_many(convert, resample, NULL); + gst_element_link_many(src, decode, nullptr); + gst_element_link_many(convert, resample, nullptr); // Chromaprint expects mono floats at a sample rate of 11025Hz. GstCaps* caps = gst_caps_new_simple( @@ -91,19 +91,19 @@ QString Chromaprinter::CreateFingerprint() { "width", G_TYPE_INT, 16, "channels", G_TYPE_INT, kDecodeChannels, "rate", G_TYPE_INT, kDecodeRate, - NULL); + nullptr); gst_element_link_filtered(resample, sink, caps); gst_caps_unref(caps); GstAppSinkCallbacks callbacks; memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, NULL); - g_object_set(G_OBJECT(sink), "sync", FALSE, NULL); - g_object_set(G_OBJECT(sink), "emit-signals", TRUE, NULL); + gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, nullptr); + g_object_set(G_OBJECT(sink), "sync", FALSE, nullptr); + g_object_set(G_OBJECT(sink), "emit-signals", TRUE, nullptr); // Set the filename - g_object_set(src, "location", filename_.toUtf8().constData(), NULL); + g_object_set(src, "location", filename_.toUtf8().constData(), nullptr); // Connect signals CHECKED_GCONNECT(decode, "new-decoded-pad", &NewPadCallback, this); @@ -130,12 +130,12 @@ QString Chromaprinter::CreateFingerprint() { chromaprint_feed(chromaprint, reinterpret_cast(data.data()), data.size() / 2); chromaprint_finish(chromaprint); - void* fprint = NULL; + void* fprint = nullptr; int size = 0; int ret = chromaprint_get_raw_fingerprint(chromaprint, &fprint, &size); QByteArray fingerprint; if (ret == 1) { - void* encoded = NULL; + void* encoded = nullptr; int encoded_size = 0; chromaprint_encode_fingerprint( fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, &encoded, &encoded_size, 1); @@ -151,9 +151,11 @@ QString Chromaprinter::CreateFingerprint() { qLog(Debug) << "Decode time:" << decode_time << "Codegen time:" << codegen_time; // Cleanup - callbacks.new_buffer = NULL; - gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, NULL); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + callbacks.new_buffer = nullptr; + gst_app_sink_set_callbacks( + reinterpret_cast(sink), &callbacks, this, nullptr); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr, nullptr); g_source_remove(bus_callback_id); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); diff --git a/src/musicbrainz/tagfetcher.cpp b/src/musicbrainz/tagfetcher.cpp index 983665889..0c9991618 100644 --- a/src/musicbrainz/tagfetcher.cpp +++ b/src/musicbrainz/tagfetcher.cpp @@ -29,7 +29,7 @@ TagFetcher::TagFetcher(QObject* parent) : QObject(parent), - fingerprint_watcher_(NULL), + fingerprint_watcher_(nullptr), acoustid_client_(new AcoustidClient(this)), musicbrainz_client_(new MusicBrainzClient(this)) { @@ -61,7 +61,7 @@ void TagFetcher::Cancel() { fingerprint_watcher_->cancel(); delete fingerprint_watcher_; - fingerprint_watcher_ = NULL; + fingerprint_watcher_ = nullptr; } acoustid_client_->CancelAll(); diff --git a/src/networkremote/networkremotehelper.cpp b/src/networkremote/networkremotehelper.cpp index 27a5a63ac..8df9013db 100644 --- a/src/networkremote/networkremotehelper.cpp +++ b/src/networkremote/networkremotehelper.cpp @@ -20,7 +20,7 @@ #include "networkremote.h" #include "networkremotehelper.h" -NetworkRemoteHelper* NetworkRemoteHelper::sInstance = NULL; +NetworkRemoteHelper* NetworkRemoteHelper::sInstance = nullptr; NetworkRemoteHelper::NetworkRemoteHelper(Application* app) : app_(app) @@ -56,7 +56,7 @@ void NetworkRemoteHelper::ReloadSettings() { NetworkRemoteHelper* NetworkRemoteHelper::Instance() { if (!sInstance) { // normally he shouldn't go here. Only for safety - return NULL; + return nullptr; } return sInstance; } diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index d816d0992..eaed5a2e6 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -127,7 +127,7 @@ SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) const return provider; } } - return NULL; + return nullptr; } void OutgoingDataCreator::SendDataToClients(pb::remote::Message* msg) { diff --git a/src/networkremote/tinysvcmdns.cpp b/src/networkremote/tinysvcmdns.cpp index ab496f3cb..3c438178a 100644 --- a/src/networkremote/tinysvcmdns.cpp +++ b/src/networkremote/tinysvcmdns.cpp @@ -75,7 +75,7 @@ void TinySVCMDNS::PublishInternal( // Some pointless text, so tinymDNS publishes the service correctly. const char* txt[] = { "cat=nyan", - NULL + nullptr }; foreach(mdnsd* mdnsd, mdnsd_) { @@ -84,7 +84,7 @@ void TinySVCMDNS::PublishInternal( name.constData(), QString(type + ".local").toUtf8().constData(), port, - NULL, + nullptr, txt); } } diff --git a/src/networkremote/zeroconf.cpp b/src/networkremote/zeroconf.cpp index 2d901c34f..a67c810c0 100644 --- a/src/networkremote/zeroconf.cpp +++ b/src/networkremote/zeroconf.cpp @@ -16,7 +16,7 @@ #include -Zeroconf* Zeroconf::sInstance = NULL; +Zeroconf* Zeroconf::sInstance = nullptr; Zeroconf::~Zeroconf() { @@ -42,7 +42,7 @@ QByteArray Zeroconf::TruncateName(const QString& name) { QTextCodec* codec = QTextCodec::codecForName("UTF-8"); QByteArray truncated_utf8; foreach (QChar c, name) { - QByteArray rendered = codec->fromUnicode(&c, 1, NULL); + QByteArray rendered = codec->fromUnicode(&c, 1, nullptr); if (truncated_utf8.size() + rendered.size() >= 63) { break; } diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index e5525bd28..5799b688a 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -114,7 +114,7 @@ Playlist::Playlist(PlaylistBackend* backend, scrobble_point_(-1), lastfm_status_(LastFM_New), have_incremented_playcount_(false), - playlist_sequence_(NULL), + playlist_sequence_(nullptr), ignore_sorting_(false), undo_stack_(new QUndoStack(this)), special_type_(special_type) @@ -718,7 +718,7 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro // Get the list of rows that were moved QList source_rows; - Playlist* source_playlist = NULL; + Playlist* source_playlist = nullptr; qint64 pid = 0; qint64 own_pid = QCoreApplication::applicationPid(); @@ -1116,7 +1116,7 @@ void Playlist::UpdateItems(const SongList& songs) { QMimeData* Playlist::mimeData(const QModelIndexList& indexes) const { if (indexes.isEmpty()) - return NULL; + return nullptr; // We only want one index per row, but we can't just take column 0 because // the user might have hidden it. @@ -1377,7 +1377,7 @@ void Playlist::ItemsLoaded() { GeneratorPtr gen = Generator::Create(p.dynamic_type); if (gen) { // Hack: can't think of a better way to get the right backend - LibraryBackend* backend = NULL; + LibraryBackend* backend = nullptr; if (p.dynamic_backend == library_->songs_table()) backend = library_; else if (p.dynamic_backend == MagnatuneService::kSongsTable) diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index fe9a48bd7..4ef863718 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -40,14 +40,14 @@ const int PlaylistContainer::kFilterDelayPlaylistSizeThreshold = 5000; PlaylistContainer::PlaylistContainer(QWidget *parent) : QWidget(parent), ui_(new Ui_PlaylistContainer), - manager_(NULL), - undo_(NULL), - redo_(NULL), - playlist_(NULL), + manager_(nullptr), + undo_(nullptr), + redo_(nullptr), + playlist_(nullptr), starting_up_(true), tab_bar_visible_(false), tab_bar_animation_(new QTimeLine(500, this)), - no_matches_label_(NULL), + no_matches_label_(nullptr), filter_timer_(new QTimer(this)) { ui_->setupUi(this); diff --git a/src/playlist/playlistfilterparser.cpp b/src/playlist/playlistfilterparser.cpp index f4ee69090..d4dadadab 100644 --- a/src/playlist/playlistfilterparser.cpp +++ b/src/playlist/playlistfilterparser.cpp @@ -431,7 +431,7 @@ FilterTree* FilterParser::createSearchTermTreeNode( } // here comes a mess :/ // well, not that much of a mess, but so many options -_- - SearchTermComparator* cmp = NULL; + SearchTermComparator* cmp = nullptr; if (prefix == "!=" || prefix == "<>") { cmp = new NeComparator(search); } else if (!col.isEmpty() && columns_.contains(col) && diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index b8c24e0f5..cbd803cc0 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -48,7 +48,7 @@ PlaylistItem* PlaylistItem::NewFromType(const QString& type) { return new InternetPlaylistItem("Internet"); qLog(Warning) << "Invalid PlaylistItem type:" << type; - return NULL; + return nullptr; } PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, const Song& song) { @@ -60,7 +60,7 @@ PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, const Song& return new JamendoPlaylistItem(song); qLog(Warning) << "Invalid PlaylistItem songs table:" << table; - return NULL; + return nullptr; } void PlaylistItem::BindToQuery(QSqlQuery* query) const { diff --git a/src/playlist/playlistlistcontainer.cpp b/src/playlist/playlistlistcontainer.cpp index 267afdec0..468647d28 100644 --- a/src/playlist/playlistlistcontainer.cpp +++ b/src/playlist/playlistlistcontainer.cpp @@ -55,9 +55,9 @@ public: PlaylistListContainer::PlaylistListContainer(QWidget* parent) : QWidget(parent), - app_(NULL), + app_(nullptr), ui_(new Ui_PlaylistListContainer), - menu_(NULL), + menu_(nullptr), action_new_folder_(new QAction(this)), action_remove_(new QAction(this)), action_save_playlist_(new QAction(this)), diff --git a/src/playlist/playlistlistmodel.cpp b/src/playlist/playlistlistmodel.cpp index acfb9dda3..8d96528e7 100644 --- a/src/playlist/playlistlistmodel.cpp +++ b/src/playlist/playlistlistmodel.cpp @@ -127,7 +127,7 @@ QStandardItem* PlaylistListModel::FolderByPath(const QString& path) { const QStringList parts = path.split('/', QString::SkipEmptyParts); foreach (const QString& part, parts) { - QStandardItem* matching_child = NULL; + QStandardItem* matching_child = nullptr; const int child_count = parent->rowCount(); for (int i=0 ; idefault_filter(); filename = QFileDialog::getSaveFileName( - NULL, tr("Save playlist", "Title of the playlist save dialog."), filename, + nullptr, tr("Save playlist", "Title of the playlist save dialog."), filename, parser()->filters(), &default_filter); if (filename.isNull()) diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 48c16698c..4f5b898d0 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -40,7 +40,7 @@ const char* PlaylistTabBar::kSettingsGroup = "PlaylistTabBar"; PlaylistTabBar::PlaylistTabBar(QWidget *parent) : QTabBar(parent), - manager_(NULL), + manager_(nullptr), menu_(new QMenu(this)), menu_index_(-1), suppress_current_changed_(false), diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index e3e97782b..b29b35b61 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -99,9 +99,9 @@ void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt PlaylistView::PlaylistView(QWidget *parent) : QTreeView(parent), - app_(NULL), + app_(nullptr), style_(new PlaylistProxyStyle(style())), - playlist_(NULL), + playlist_(nullptr), header_(new PlaylistHeader(Qt::Horizontal, this, this)), setting_initial_header_layout_(false), upgrading_from_qheaderview_(false), @@ -116,7 +116,7 @@ PlaylistView::PlaylistView(QWidget *parent) glow_enabled_(true), currently_glowing_(false), glow_intensity_step_(0), - rating_delegate_(NULL), + rating_delegate_(nullptr), inhibit_autoscroll_timer_(new QTimer(this)), inhibit_autoscroll_(false), currently_autoscrolling_(false), @@ -982,7 +982,7 @@ void PlaylistView::dropEvent(QDropEvent *event) { } void PlaylistView::PlaylistDestroyed() { - playlist_ = NULL; + playlist_ = nullptr; // We'll get a SetPlaylist() soon } diff --git a/src/playlist/queue.cpp b/src/playlist/queue.cpp index 691402dd2..c7783bfd4 100644 --- a/src/playlist/queue.cpp +++ b/src/playlist/queue.cpp @@ -269,7 +269,7 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, } else if (data->hasFormat(Playlist::kRowsMimetype)) { // Dragged from the playlist - Playlist* playlist = NULL; + Playlist* playlist = nullptr; QList source_rows; QDataStream stream(data->data(Playlist::kRowsMimetype)); stream.readRawData(reinterpret_cast(&playlist), sizeof(playlist)); diff --git a/src/playlist/queuemanager.cpp b/src/playlist/queuemanager.cpp index 63b513093..319feec50 100644 --- a/src/playlist/queuemanager.cpp +++ b/src/playlist/queuemanager.cpp @@ -29,8 +29,8 @@ QueueManager::QueueManager(QWidget *parent) : QDialog(parent), ui_(new Ui_QueueManager), - playlists_(NULL), - current_playlist_(NULL) + playlists_(nullptr), + current_playlist_(nullptr) { ui_->setupUi(this); ui_->list->setItemDelegate(new QueuedItemDelegate(this, 0)); @@ -150,6 +150,6 @@ void QueueManager::UpdateButtonState() { } void QueueManager::PlaylistDestroyed() { - current_playlist_ = NULL; + current_playlist_ = nullptr; // We'll get another CurrentPlaylistChanged() soon } diff --git a/src/playlist/songloaderinserter.cpp b/src/playlist/songloaderinserter.cpp index 2a22738ec..bdc99ec7f 100644 --- a/src/playlist/songloaderinserter.cpp +++ b/src/playlist/songloaderinserter.cpp @@ -27,7 +27,7 @@ SongLoaderInserter::SongLoaderInserter(TaskManager* task_manager, LibraryBackendInterface* library, const Player* player) : task_manager_(task_manager), - destination_(NULL), + destination_(nullptr), row_(-1), play_now_(true), enqueue_(false), @@ -107,7 +107,7 @@ void SongLoaderInserter::LoadAudioCD(Playlist *destination, } void SongLoaderInserter::DestinationDestroyed() { - destination_ = NULL; + destination_ = nullptr; } void SongLoaderInserter::AudioCDTagsLoaded(bool success) { diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index 5b2f59dab..cb998c462 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -89,7 +89,7 @@ ParserBase* PlaylistParser::ParserForExtension(const QString& suffix) const { if (p->file_extensions().contains(suffix)) return p; } - return NULL; + return nullptr; } ParserBase* PlaylistParser::ParserForMagic(const QByteArray& data, @@ -99,7 +99,7 @@ ParserBase* PlaylistParser::ParserForMagic(const QByteArray& data, p->TryMagic(data)) return p; } - return NULL; + return nullptr; } SongList PlaylistParser::LoadFromFile(const QString& filename) const { diff --git a/src/podcasts/gpoddersearchpage.cpp b/src/podcasts/gpoddersearchpage.cpp index bf9f430e6..024d72692 100644 --- a/src/podcasts/gpoddersearchpage.cpp +++ b/src/podcasts/gpoddersearchpage.cpp @@ -73,7 +73,7 @@ void GPodderSearchPage::SearchFailed(mygpo::PodcastListPtr list) { model()->clear(); if (QMessageBox::warning( - NULL, tr("Failed to fetch podcasts"), + nullptr, tr("Failed to fetch podcasts"), tr("There was a problem communicating with gpodder.net"), QMessageBox::Retry | QMessageBox::Close, QMessageBox::Retry) != QMessageBox::Retry) { diff --git a/src/podcasts/gpoddertoptagsmodel.cpp b/src/podcasts/gpoddertoptagsmodel.cpp index af41f7e2d..9a4ec569e 100644 --- a/src/podcasts/gpoddertoptagsmodel.cpp +++ b/src/podcasts/gpoddertoptagsmodel.cpp @@ -106,7 +106,7 @@ void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent, } if (QMessageBox::warning( - NULL, tr("Failed to fetch podcasts"), + nullptr, tr("Failed to fetch podcasts"), tr("There was a problem communicating with gpodder.net"), QMessageBox::Retry | QMessageBox::Close, QMessageBox::Retry) != QMessageBox::Retry) { diff --git a/src/podcasts/gpoddertoptagspage.cpp b/src/podcasts/gpoddertoptagspage.cpp index 1fda03164..47c24b357 100644 --- a/src/podcasts/gpoddertoptagspage.cpp +++ b/src/podcasts/gpoddertoptagspage.cpp @@ -73,7 +73,7 @@ void GPodderTopTagsPage::TagListFailed(mygpo::TagListPtr list) { done_initial_load_ = false; if (QMessageBox::warning( - NULL, tr("Failed to fetch directory"), + nullptr, tr("Failed to fetch directory"), tr("There was a problem communicating with gpodder.net"), QMessageBox::Retry | QMessageBox::Close, QMessageBox::Retry) != QMessageBox::Retry) { diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index be281a0f7..4b5127fd9 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -37,7 +37,7 @@ const char* PodcastDownloader::kSettingsGroup = "Podcasts"; const int PodcastDownloader::kAutoDeleteCheckIntervalMsec = 15 * 60 * kMsecPerSec; // 15 minutes struct PodcastDownloader::Task { - Task() : file(NULL) {} + Task() : file(nullptr) {} ~Task() { delete file; } PodcastEpisode episode; @@ -52,7 +52,7 @@ PodcastDownloader::PodcastDownloader(Application* app, QObject* parent) disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), auto_download_(false), delete_after_secs_(0), - current_task_(NULL), + current_task_(nullptr), last_progress_signal_(0), auto_delete_timer_(new QTimer(this)) { @@ -211,7 +211,7 @@ void PodcastDownloader::StartDownloading(Task* task) { } void PodcastDownloader::NextTask() { - current_task_ = NULL; + current_task_ = nullptr; if (!queued_tasks_.isEmpty()) { StartDownloading(queued_tasks_.dequeue()); diff --git a/src/podcasts/podcastinfowidget.cpp b/src/podcasts/podcastinfowidget.cpp index 2669aad14..8ac024859 100644 --- a/src/podcasts/podcastinfowidget.cpp +++ b/src/podcasts/podcastinfowidget.cpp @@ -23,7 +23,7 @@ PodcastInfoWidget::PodcastInfoWidget(QWidget* parent) : QWidget(parent), ui_(new Ui_PodcastInfoWidget), - app_(NULL), + app_(nullptr), image_id_(0) { ui_->setupUi(this); @@ -56,7 +56,7 @@ void PodcastInfoWidget::SetApplication(Application* app) { namespace { template - void SetText(const QString& value, T* label, QLabel* buddy_label = NULL) { + void SetText(const QString& value, T* label, QLabel* buddy_label = nullptr) { const bool visible = !value.isEmpty(); label->setVisible(visible); diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 72d92c643..c05ef0f26 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -44,7 +44,7 @@ const char* PodcastService::kSettingsGroup = "Podcasts"; class PodcastSortProxyModel : public QSortFilterProxyModel { public: - PodcastSortProxyModel(QObject* parent = NULL); + PodcastSortProxyModel(QObject* parent = nullptr); protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; @@ -58,8 +58,8 @@ PodcastService::PodcastService(Application* app, InternetModel* parent) backend_(app->podcast_backend()), model_(new PodcastServiceModel(this)), proxy_(new PodcastSortProxyModel(this)), - context_menu_(NULL), - root_(NULL), + context_menu_(nullptr), + root_(nullptr), organise_dialog_(new OrganiseDialog(app_->task_manager())) { icon_loader_->SetModel(model_); diff --git a/src/smartplaylists/generator.cpp b/src/smartplaylists/generator.cpp index 17385b47a..58cb864b1 100644 --- a/src/smartplaylists/generator.cpp +++ b/src/smartplaylists/generator.cpp @@ -29,8 +29,8 @@ const int Generator::kDefaultDynamicHistory = 5; const int Generator::kDefaultDynamicFuture = 15; Generator::Generator() - : QObject(NULL), - backend_(NULL) + : QObject(nullptr), + backend_(nullptr) { } diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp index 2bc4f5b6d..a5dd900b1 100644 --- a/src/smartplaylists/querywizardplugin.cpp +++ b/src/smartplaylists/querywizardplugin.cpp @@ -74,7 +74,7 @@ public: QueryWizardPlugin::QueryWizardPlugin(Application* app, LibraryBackend* library, QObject* parent) : WizardPlugin(app, library, parent), - search_page_(NULL), + search_page_(nullptr), previous_scrollarea_max_(0) { } diff --git a/src/smartplaylists/searchpreview.cpp b/src/smartplaylists/searchpreview.cpp index d16db4c25..78e2fc662 100644 --- a/src/smartplaylists/searchpreview.cpp +++ b/src/smartplaylists/searchpreview.cpp @@ -34,7 +34,7 @@ typedef QFutureWatcher FutureWatcher; SearchPreview::SearchPreview(QWidget *parent) : QWidget(parent), ui_(new Ui_SmartPlaylistSearchPreview), - model_(NULL) + model_(nullptr) { ui_->setupUi(this); @@ -59,7 +59,7 @@ void SearchPreview::set_application(Application* app) { void SearchPreview::set_library(LibraryBackend* backend) { backend_ = backend; - model_ = new Playlist(NULL, NULL, backend_, -1, QString(), false, this); + model_ = new Playlist(nullptr, NULL, backend_, -1, QString(), false, this); ui_->tree->setModel(model_); ui_->tree->SetPlaylist(model_); ui_->tree->SetItemDelegates(backend_); diff --git a/src/smartplaylists/searchtermwidget.cpp b/src/smartplaylists/searchtermwidget.cpp index b12c4ff6e..e17a8bbf4 100644 --- a/src/smartplaylists/searchtermwidget.cpp +++ b/src/smartplaylists/searchtermwidget.cpp @@ -66,7 +66,7 @@ SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) : QWidget(parent), ui_(new Ui_SmartPlaylistSearchTermWidget), library_(library), - overlay_(NULL), + overlay_(nullptr), animation_(new QPropertyAnimation(this, "overlay_opacity", this)), active_(true), initialized_(false), @@ -142,14 +142,14 @@ void SearchTermWidget::FieldChanged(int index) { } // Show the correct value editor - QWidget* page = NULL; + QWidget* page = nullptr; switch (type) { case SearchTerm::Type_Time: page = ui_->page_time; break; case SearchTerm::Type_Number: page = ui_->page_number; break; case SearchTerm::Type_Date: page = ui_->page_date; break; case SearchTerm::Type_Rating: page = ui_->page_rating; break; case SearchTerm::Type_Text: page = ui_->page_text; break; - case SearchTerm::Type_Invalid: page = NULL; break; + case SearchTerm::Type_Invalid: page = nullptr; break; } ui_->value_stack->setCurrentWidget(page); @@ -164,7 +164,7 @@ void SearchTermWidget::FieldChanged(int index) { break; default: - ui_->value_text->setCompleter(NULL); + ui_->value_text->setCompleter(nullptr); } emit Changed(); @@ -174,7 +174,7 @@ void SearchTermWidget::OpChanged(int index) { // We need to change the page only in the following case if ((ui_->value_stack->currentWidget() == ui_->page_date) || (ui_->value_stack->currentWidget() == ui_->page_date_numeric) || (ui_->value_stack->currentWidget() == ui_->page_date_relative)) { - QWidget* page = NULL; + QWidget* page = nullptr; if (index == 4 || index == 5) { page = ui_->page_date_numeric; } else if (index == 6) { @@ -190,7 +190,7 @@ void SearchTermWidget::OpChanged(int index) { void SearchTermWidget::SetActive(bool active) { active_ = active; delete overlay_; - overlay_ = NULL; + overlay_ = nullptr; if (!active) { overlay_ = new Overlay(this); diff --git a/src/songinfo/songinfobase.cpp b/src/songinfo/songinfobase.cpp index b243e97a9..71a7329f2 100644 --- a/src/songinfo/songinfobase.cpp +++ b/src/songinfo/songinfobase.cpp @@ -34,7 +34,7 @@ SongInfoBase::SongInfoBase(QWidget* parent) current_request_id_(-1), scroll_area_(new QScrollArea), container_(new QVBoxLayout), - section_container_(NULL), + section_container_(nullptr), fader_(new WidgetFadeHelper(this, 1000)), dirty_(false) { diff --git a/src/songinfo/songinfoview.cpp b/src/songinfo/songinfoview.cpp index a5de1e308..42790b0db 100644 --- a/src/songinfo/songinfoview.cpp +++ b/src/songinfo/songinfoview.cpp @@ -145,7 +145,7 @@ SongInfoProvider* SongInfoView::ProviderByName(const QString& name) const { return provider; } } - return NULL; + return nullptr; } namespace { diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 478190a22..3750273b9 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -85,7 +85,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, const QString& mime_type, GstElement* bin) { if (mime_type.isEmpty()) - return NULL; + return nullptr; // HACK: Force ffmux_mp4 because it doesn't set any useful src caps if (mime_type == "audio/mp4") { @@ -141,7 +141,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, gst_caps_unref(target_caps); if (suitable_elements_.isEmpty()) - return NULL; + return nullptr; // Sort by rank qSort(suitable_elements_); @@ -165,11 +165,11 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, GstElement* id3v2 = CreateElement("id3v2mux", mp3bin); if (!lame || !xing || !id3v2) { - return NULL; + return nullptr; } // Link the elements together - gst_element_link_many(lame, xing, id3v2, NULL); + gst_element_link_many(lame, xing, id3v2, nullptr); // Link the bin's ghost pads to the elements on each end GstPad* pad = gst_element_get_static_pad(lame, "sink"); @@ -439,15 +439,15 @@ bool Transcoder::StartJob(const Job &job) { // Join them together gst_element_link(src, decode); if (codec && muxer) - gst_element_link_many(convert, resample, codec, muxer, sink, NULL); + gst_element_link_many(convert, resample, codec, muxer, sink, nullptr); else if (codec) - gst_element_link_many(convert, resample, codec, sink, NULL); + gst_element_link_many(convert, resample, codec, sink, nullptr); else if (muxer) - gst_element_link_many(convert, resample, muxer, sink, NULL); + gst_element_link_many(convert, resample, muxer, sink, nullptr); // Set properties - g_object_set(src, "location", job.input.toUtf8().constData(), NULL); - g_object_set(sink, "location", job.output.toUtf8().constData(), NULL); + g_object_set(src, "location", job.input.toUtf8().constData(), nullptr); + g_object_set(sink, "location", job.output.toUtf8().constData(), nullptr); // Set callbacks state->convert_element_ = convert; @@ -496,7 +496,7 @@ bool Transcoder::event(QEvent* e) { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE( - finished_event->state_->pipeline_)), NULL, NULL); + finished_event->state_->pipeline_)), nullptr, nullptr); g_source_remove(finished_event->state_->bus_callback_id_); // Remove it from the list - this will also destroy the GStreamer pipeline @@ -526,13 +526,13 @@ void Transcoder::Cancel() { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down gst_bus_set_sync_handler(gst_pipeline_get_bus( - GST_PIPELINE(state->pipeline_)), NULL, NULL); + GST_PIPELINE(state->pipeline_)), nullptr, nullptr); g_source_remove(state->bus_callback_id_); // Stop the pipeline if (gst_element_set_state(state->pipeline_, GST_STATE_NULL) == GST_STATE_CHANGE_ASYNC) { // Wait for it to finish stopping... - gst_element_get_state(state->pipeline_, NULL, NULL, GST_CLOCK_TIME_NONE); + gst_element_get_state(state->pipeline_, nullptr, nullptr, GST_CLOCK_TIME_NONE); } // Remove the job, this destroys the GStreamer pipeline too @@ -578,11 +578,11 @@ void Transcoder::SetElementProperties(const QString& name, GObject* object) { LogLine(QString("Setting %1 property: %2 = %3").arg(name, property->name, value.toString())); switch (property->value_type) { - case G_TYPE_DOUBLE: g_object_set(object, property->name, value.toDouble(), NULL); break; - case G_TYPE_FLOAT: g_object_set(object, property->name, value.toFloat(), NULL); break; - case G_TYPE_BOOLEAN: g_object_set(object, property->name, value.toInt(), NULL); break; + case G_TYPE_DOUBLE: g_object_set(object, property->name, value.toDouble(), nullptr); break; + case G_TYPE_FLOAT: g_object_set(object, property->name, value.toFloat(), nullptr); break; + case G_TYPE_BOOLEAN: g_object_set(object, property->name, value.toInt(), nullptr); break; case G_TYPE_INT: - default: g_object_set(object, property->name, value.toInt(), NULL); break; + default: g_object_set(object, property->name, value.toInt(), nullptr); break; } } diff --git a/src/transcoder/transcoderoptionsdialog.cpp b/src/transcoder/transcoderoptionsdialog.cpp index bcf8419c4..8f9143a70 100644 --- a/src/transcoder/transcoderoptionsdialog.cpp +++ b/src/transcoder/transcoderoptionsdialog.cpp @@ -28,7 +28,7 @@ TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget* parent) : QDialog(parent), ui_(new Ui_TranscoderOptionsDialog), - options_(NULL) + options_(nullptr) { ui_->setupUi(this); diff --git a/src/ui/addstreamdialog.cpp b/src/ui/addstreamdialog.cpp index 6e47ec370..17abca7d5 100644 --- a/src/ui/addstreamdialog.cpp +++ b/src/ui/addstreamdialog.cpp @@ -30,7 +30,7 @@ const char* AddStreamDialog::kSettingsGroup = "AddStreamDialog"; AddStreamDialog::AddStreamDialog(QWidget *parent) : QDialog(parent), ui_(new Ui_AddStreamDialog), - saved_radio_(NULL) + saved_radio_(nullptr) { ui_->setupUi(this); diff --git a/src/ui/albumcoverchoicecontroller.cpp b/src/ui/albumcoverchoicecontroller.cpp index a648268e9..a4a66270b 100644 --- a/src/ui/albumcoverchoicecontroller.cpp +++ b/src/ui/albumcoverchoicecontroller.cpp @@ -46,15 +46,15 @@ const char* AlbumCoverChoiceController::kSaveImageFileFilter = const char* AlbumCoverChoiceController::kAllFilesFilter = QT_TR_NOOP("All files (*)"); -QSet* AlbumCoverChoiceController::sImageExtensions = NULL; +QSet* AlbumCoverChoiceController::sImageExtensions = nullptr; AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget* parent) : QWidget(parent), - app_(NULL), - cover_searcher_(NULL), - cover_fetcher_(NULL), - save_file_dialog_(NULL), - cover_from_url_dialog_(NULL) + app_(nullptr), + cover_searcher_(nullptr), + cover_fetcher_(nullptr), + save_file_dialog_(nullptr), + cover_from_url_dialog_(nullptr) { cover_from_file_ = new QAction(IconLoader::Load("document-open"), tr("Load cover from disk..."), this); cover_to_file_ = new QAction(IconLoader::Load("document-save"), tr("Save cover to disk..."), this); diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index 43112cca3..0e56e2341 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -62,8 +62,8 @@ AlbumCoverManager::AlbumCoverManager(Application* app, app_(app), album_cover_choice_controller_(new AlbumCoverChoiceController(this)), cover_fetcher_(new AlbumCoverFetcher(app_->cover_providers(), this, network)), - cover_searcher_(NULL), - cover_export_(NULL), + cover_searcher_(nullptr), + cover_export_(nullptr), cover_exporter_(new AlbumCoverExporter(this)), artist_icon_(IconLoader::Load("x-clementine-artist")), all_artists_icon_(IconLoader::Load("x-clementine-album")), @@ -700,7 +700,7 @@ SongList AlbumCoverManager::GetSongsInAlbums(const QModelIndexList& indexes) con SongMimeData* AlbumCoverManager::GetMimeDataForAlbums(const QModelIndexList& indexes) const { SongList songs = GetSongsInAlbums(indexes); if (songs.isEmpty()) - return NULL; + return nullptr; SongMimeData* data = new SongMimeData; data->backend = library_backend_; diff --git a/src/ui/albumcovermanagerlist.cpp b/src/ui/albumcovermanagerlist.cpp index faa671f51..bc3b9120f 100644 --- a/src/ui/albumcovermanagerlist.cpp +++ b/src/ui/albumcovermanagerlist.cpp @@ -28,7 +28,7 @@ AlbumCoverManagerList::AlbumCoverManagerList(QWidget *parent) : QListWidget(parent), - manager_(NULL) + manager_(nullptr) { } @@ -40,7 +40,7 @@ QMimeData* AlbumCoverManagerList::mimeData(const QList items) } if (songs.isEmpty()) - return NULL; + return nullptr; // Get URLs from the songs QList urls; diff --git a/src/ui/albumcoversearcher.cpp b/src/ui/albumcoversearcher.cpp index 7c42f2cb2..ef6204a3b 100644 --- a/src/ui/albumcoversearcher.cpp +++ b/src/ui/albumcoversearcher.cpp @@ -96,7 +96,7 @@ AlbumCoverSearcher::AlbumCoverSearcher(const QIcon& no_cover_icon, app_(app), model_(new QStandardItemModel(this)), no_cover_icon_(no_cover_icon), - fetcher_(NULL), + fetcher_(nullptr), id_(0) { setWindowModality(Qt::WindowModal); diff --git a/src/ui/edittagdialog.cpp b/src/ui/edittagdialog.cpp index 2eabf8770..f44fa7cc9 100644 --- a/src/ui/edittagdialog.cpp +++ b/src/ui/edittagdialog.cpp @@ -536,7 +536,7 @@ void EditTagDialog::ResetField() { Song* EditTagDialog::GetFirstSelected() { const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); if (sel.isEmpty()) - return NULL; + return nullptr; return &data_[sel.first().row()].original_; } diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index e7063e0fb..7445db88e 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -169,7 +169,7 @@ MainWindow::MainWindow(Application* app, tray_icon_(tray_icon), osd_(osd), global_shortcuts_(new GlobalShortcuts(this)), - remote_(NULL), + remote_(nullptr), global_search_view_(new GlobalSearchView(app_, this)), library_view_(new LibraryViewContainer(this)), file_view_(new FileView(this)), @@ -182,8 +182,8 @@ MainWindow::MainWindow(Application* app, equalizer_(new Equalizer), organise_dialog_(new OrganiseDialog(app_->task_manager())), playlist_menu_(new QMenu(this)), - playlist_add_to_another_(NULL), - playlistitem_actions_separator_(NULL), + playlist_add_to_another_(nullptr), + playlistitem_actions_separator_(nullptr), library_sort_model_(new QSortFilterProxyModel(this)), track_position_timer_(new QTimer(this)), was_maximized_(false), @@ -582,7 +582,7 @@ MainWindow::MainWindow(Application* app, << ui_->action_play_pause << ui_->action_stop << ui_->action_next_track - << NULL // spacer + << nullptr // spacer << ui_->action_love << ui_->action_ban); @@ -1428,7 +1428,7 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& } //if it isn't the first time we right click, we need to remove the menu previously created - if (playlist_add_to_another_ != NULL) { + if (playlist_add_to_another_ != nullptr) { playlist_menu_->removeAction(playlist_add_to_another_); delete playlist_add_to_another_; } diff --git a/src/ui/qtsystemtrayicon.cpp b/src/ui/qtsystemtrayicon.cpp index 75e40b715..904376be3 100644 --- a/src/ui/qtsystemtrayicon.cpp +++ b/src/ui/qtsystemtrayicon.cpp @@ -32,12 +32,12 @@ QtSystemTrayIcon::QtSystemTrayIcon(QObject* parent) : SystemTrayIcon(parent), tray_(new QSystemTrayIcon(this)), menu_(new QMenu), - action_play_pause_(NULL), - action_stop_(NULL), - action_stop_after_this_track_(NULL), - action_mute_(NULL), - action_love_(NULL), - action_ban_(NULL) + action_play_pause_(nullptr), + action_stop_(nullptr), + action_stop_after_this_track_(nullptr), + action_mute_(nullptr), + action_love_(nullptr), + action_ban_(nullptr) { QIcon theme_icon = IconLoader::Load("clementine-panel"); QIcon theme_icon_grey = IconLoader::Load("clementine-panel-grey"); @@ -238,7 +238,7 @@ void QtSystemTrayIcon::SetNowPlaying(const Song& song, const QString& image_path return; #endif - int columns = image_path == NULL ? 1 : 2; + int columns = image_path == nullptr ? 1 : 2; QString clone = pattern_; diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 60f0f665e..34d55aad0 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -117,7 +117,7 @@ RipCD::RipCD(QWidget* parent) : setWindowTitle(tr("Rip CD")); AddDestinationDirectory(QDir::homePath()); - cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); + cdio_ = cdio_open(nullptr, DRIVER_UNKNOWN); if(!cdio_) { qLog(Error) << "Failed to read CD drive"; return; diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp index dc0d84f1a..fca7c5074 100644 --- a/src/ui/settingsdialog.cpp +++ b/src/ui/settingsdialog.cpp @@ -118,7 +118,7 @@ SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, QWi app_(app), model_(app_->library_model()->directory_model()), gst_engine_(qobject_cast(app_->player()->engine())), - song_info_view_(NULL), + song_info_view_(nullptr), streams_(streams), global_search_(app_->global_search()), appearance_(app_->appearance()), diff --git a/src/ui/standarditemiconloader.cpp b/src/ui/standarditemiconloader.cpp index 62efe300e..bc592fbbc 100644 --- a/src/ui/standarditemiconloader.cpp +++ b/src/ui/standarditemiconloader.cpp @@ -26,7 +26,7 @@ StandardItemIconLoader::StandardItemIconLoader(AlbumCoverLoader* cover_loader, QObject* parent) : QObject(parent), cover_loader_(cover_loader), - model_(NULL) + model_(nullptr) { cover_options_.desired_height_ = 16; diff --git a/src/ui/windows7thumbbar.cpp b/src/ui/windows7thumbbar.cpp index 9233af53e..4cc11c8c3 100644 --- a/src/ui/windows7thumbbar.cpp +++ b/src/ui/windows7thumbbar.cpp @@ -37,7 +37,7 @@ Windows7ThumbBar::Windows7ThumbBar(QWidget* widget) : QObject(widget), widget_(widget), button_created_message_id_(0), - taskbar_list_(NULL) + taskbar_list_(nullptr) { } @@ -93,13 +93,13 @@ void Windows7ThumbBar::HandleWinEvent(MSG* msg) { if (taskbar_list_) { qLog(Debug) << "Releasing old taskbar list"; reinterpret_cast(taskbar_list_)->Release(); - taskbar_list_ = NULL; + taskbar_list_ = nullptr; } // Copied from win7 SDK shobjidl.h static const GUID CLSID_ITaskbarList ={ 0x56FDF344,0xFD6D,0x11d0,{0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90}}; // Create the taskbar list - hr = CoCreateInstance(CLSID_ITaskbarList, NULL, CLSCTX_ALL, + hr = CoCreateInstance(CLSID_ITaskbarList, nullptr, CLSCTX_ALL, IID_ITaskbarList3, (void**) &taskbar_list_); if (hr != S_OK) { qLog(Warning) << "Error creating the ITaskbarList3 interface" << hex << DWORD (hr); @@ -111,7 +111,7 @@ void Windows7ThumbBar::HandleWinEvent(MSG* msg) { if (hr != S_OK) { qLog(Warning) << "Error initialising taskbar list" << hex << DWORD (hr); taskbar_list->Release(); - taskbar_list_ = NULL; + taskbar_list_ = nullptr; return; } diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp index 49ecf7452..798b19179 100644 --- a/src/visualisations/projectmvisualisation.cpp +++ b/src/visualisations/projectmvisualisation.cpp @@ -127,7 +127,7 @@ void ProjectMVisualisation::InitProjectM() { if (font_path.isNull()) { qWarning("ProjectM presets could not be found, search path was:\n %s", paths.join("\n ").toLocal8Bit().constData()); - QMessageBox::warning(NULL, tr("Missing projectM presets"), + QMessageBox::warning(nullptr, tr("Missing projectM presets"), tr("Clementine could not load any projectM visualisations. Check that you have installed Clementine properly.")); } } diff --git a/src/visualisations/visualisationcontainer.cpp b/src/visualisations/visualisationcontainer.cpp index c4d1ced44..14711c445 100644 --- a/src/visualisations/visualisationcontainer.cpp +++ b/src/visualisations/visualisationcontainer.cpp @@ -50,11 +50,11 @@ const int VisualisationContainer::kDefaultTextureSize = 512; VisualisationContainer::VisualisationContainer(QWidget *parent) : QGraphicsView(parent), initialised_(false), - engine_(NULL), + engine_(nullptr), vis_(new ProjectMVisualisation(this)), overlay_(new VisualisationOverlay), selector_(new VisualisationSelector(this)), - overlay_proxy_(NULL), + overlay_proxy_(nullptr), menu_(new QMenu(this)), fps_(kDefaultFps), size_(kDefaultTextureSize) diff --git a/src/visualisations/visualisationselector.cpp b/src/visualisations/visualisationselector.cpp index c8ddc87d8..b352e9b62 100644 --- a/src/visualisations/visualisationselector.cpp +++ b/src/visualisations/visualisationselector.cpp @@ -32,7 +32,7 @@ VisualisationSelector::VisualisationSelector(QWidget *parent) : QDialog(parent), ui_(new Ui_VisualisationSelector), - vis_(NULL) + vis_(nullptr) { ui_->setupUi(this); diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index 56038e9be..f89c5aa60 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -503,13 +503,13 @@ private: FancyTabWidget::FancyTabWidget(QWidget* parent) : QWidget(parent), mode_(Mode_None), - tab_bar_(NULL), + tab_bar_(nullptr), stack_(new QStackedLayout), side_widget_(new QWidget), side_layout_(new QVBoxLayout), top_layout_(new QVBoxLayout), use_background_(false), - menu_(NULL), + menu_(nullptr), proxy_style_(new FancyTabProxyStyle) { side_layout_->setSpacing(0); @@ -605,7 +605,7 @@ void FancyTabWidget::AddBottomWidget(QWidget* widget) { void FancyTabWidget::SetMode(Mode mode) { // Remove previous tab bar delete tab_bar_; - tab_bar_ = NULL; + tab_bar_ = nullptr; use_background_ = false; diff --git a/src/widgets/fileview.cpp b/src/widgets/fileview.cpp index 6a62a2e56..121eed017 100644 --- a/src/widgets/fileview.cpp +++ b/src/widgets/fileview.cpp @@ -37,9 +37,9 @@ const char* FileView::kFileFilter = "*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma FileView::FileView(QWidget* parent) : QWidget(parent), ui_(new Ui_FileView), - model_(NULL), + model_(nullptr), undo_stack_(new QUndoStack(this)), - task_manager_(NULL), + task_manager_(nullptr), storage_(new FilesystemMusicStorage("/")) { ui_->setupUi(this); diff --git a/src/widgets/nowplayingwidget.cpp b/src/widgets/nowplayingwidget.cpp index 13d62e861..7b3ebc4a5 100644 --- a/src/widgets/nowplayingwidget.cpp +++ b/src/widgets/nowplayingwidget.cpp @@ -60,21 +60,21 @@ const int NowPlayingWidget::kTopBorder = 4; NowPlayingWidget::NowPlayingWidget(QWidget* parent) : QWidget(parent), - app_(NULL), + app_(nullptr), album_cover_choice_controller_(new AlbumCoverChoiceController(this)), mode_(SmallSongDetails), menu_(new QMenu(this)), - above_statusbar_action_(NULL), + above_statusbar_action_(nullptr), visible_(false), small_ideal_height_(0), show_hide_animation_(new QTimeLine(500, this)), fade_animation_(new QTimeLine(1000, this)), details_(new QTextDocument(this)), previous_track_opacity_(0.0), - bask_in_his_glory_action_(NULL), + bask_in_his_glory_action_(nullptr), downloading_covers_(false), aww_(false), - kittens_(NULL), + kittens_(nullptr), pending_kitten_(0) { // Load settings diff --git a/src/widgets/prettyimage.cpp b/src/widgets/prettyimage.cpp index 56c938076..adca4360c 100644 --- a/src/widgets/prettyimage.cpp +++ b/src/widgets/prettyimage.cpp @@ -49,7 +49,7 @@ PrettyImage::PrettyImage(const QUrl& url, QNetworkAccessManager* network, network_(network), state_(State_WaitingForLazyLoad), url_(url), - menu_(NULL) + menu_(nullptr) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); diff --git a/src/widgets/trackslider.cpp b/src/widgets/trackslider.cpp index feb6e6db3..eab53cbc2 100644 --- a/src/widgets/trackslider.cpp +++ b/src/widgets/trackslider.cpp @@ -31,7 +31,7 @@ const char* TrackSlider::kSettingsGroup = "MainWindow"; TrackSlider::TrackSlider(QWidget* parent) : QWidget(parent), ui_(new Ui_TrackSlider), - moodbar_style_(NULL), + moodbar_style_(nullptr), setting_value_(false), show_remaining_time_(true), slider_maximum_value_(0) From 30fff5dfc40e46439d0a0a444e833426e6bb277f Mon Sep 17 00:00:00 2001 From: "Krzysztof A. Sobiecki" Date: Thu, 6 Feb 2014 17:34:17 +0100 Subject: [PATCH 090/362] Fix automatic podcast episodes downloads --- src/podcasts/podcastdownloader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/podcasts/podcastdownloader.h b/src/podcasts/podcastdownloader.h index 8e66da260..32804c32a 100644 --- a/src/podcasts/podcastdownloader.h +++ b/src/podcasts/podcastdownloader.h @@ -71,7 +71,7 @@ private slots: void ReloadSettings(); void SubscriptionAdded(const Podcast& podcast); - void EpisodesAdded(const QList& episodes); + void EpisodesAdded(const PodcastEpisodeList& episodes); void ReplyReadyRead(); void ReplyFinished(); From 8d1f4612db4f5a609c8754b1ae1352a8ba4ed5f2 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 17:44:29 +0100 Subject: [PATCH 091/362] Hide use of boost multi-index behind pimpl. --- src/core/mergedproxymodel.cpp | 87 +++++++++++++++++++++++++--------- src/core/mergedproxymodel.h | 41 +++------------- src/library/groupbydialog.cpp | 88 ++++++++++++++++++++++++++--------- src/library/groupbydialog.h | 39 ++-------------- 4 files changed, 139 insertions(+), 116 deletions(-) diff --git a/src/core/mergedproxymodel.cpp b/src/core/mergedproxymodel.cpp index 9219e2366..8c7578a6d 100644 --- a/src/core/mergedproxymodel.cpp +++ b/src/core/mergedproxymodel.cpp @@ -22,14 +22,61 @@ #include +// boost::multi_index still relies on these being in the global namespace. +using std::placeholders::_1; +using std::placeholders::_2; + +#include +#include +#include +#include + +using boost::multi_index::hashed_unique; +using boost::multi_index::identity; +using boost::multi_index::indexed_by; +using boost::multi_index::member; +using boost::multi_index::multi_index_container; +using boost::multi_index::ordered_unique; +using boost::multi_index::tag; + std::size_t hash_value(const QModelIndex& index) { return qHash(index); } +namespace { + +struct Mapping { + Mapping(const QModelIndex& _source_index) + : source_index(_source_index) {} + + QModelIndex source_index; +}; + +struct tag_by_source {}; +struct tag_by_pointer {}; + +} // namespace + +class MergedProxyModelPrivate { + private: + typedef multi_index_container< + Mapping*, + indexed_by< + hashed_unique, + member >, + ordered_unique, + identity > + > + > MappingContainer; + + public: + MappingContainer mappings_; +}; + MergedProxyModel::MergedProxyModel(QObject* parent) : QAbstractProxyModel(parent), - resetting_model_(nullptr) -{ + resetting_model_(nullptr), + p_(new MergedProxyModelPrivate) { } MergedProxyModel::~MergedProxyModel() { @@ -37,10 +84,8 @@ MergedProxyModel::~MergedProxyModel() { } void MergedProxyModel::DeleteAllMappings() { - MappingContainer::index::type::iterator begin = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + const auto& begin = p_->mappings_.get().begin(); + const auto& end = p_->mappings_.get().end(); qDeleteAll(begin, end); } @@ -88,14 +133,12 @@ void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { resetting_model_ = nullptr; // Delete all the mappings that reference the submodel - MappingContainer::index::type::iterator it = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + auto it = p_->mappings_.get().begin(); + auto end = p_->mappings_.get().end(); while (it != end) { if ((*it)->source_index.model() == submodel) { delete *it; - it = mappings_.get().erase(it); + it = p_->mappings_.get().erase(it); } else { ++it; } @@ -145,7 +188,7 @@ void MergedProxyModel::SourceModelReset() { DeleteAllMappings(); // Clear the containers - mappings_.clear(); + p_->mappings_.clear(); merge_points_.clear(); // Reset the proxy @@ -170,14 +213,12 @@ void MergedProxyModel::SubModelReset() { resetting_model_ = nullptr; // Delete all the mappings that reference the submodel - MappingContainer::index::type::iterator it = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + auto it = p_->mappings_.get().begin(); + auto end = p_->mappings_.get().end(); while (it != end) { if ((*it)->source_index.model() == submodel) { delete *it; - it = mappings_.get().erase(it); + it = p_->mappings_.get().erase(it); } else { ++it; } @@ -227,8 +268,8 @@ QModelIndex MergedProxyModel::mapToSource(const QModelIndex& proxy_index) const return QModelIndex(); Mapping* mapping = static_cast(proxy_index.internalPointer()); - if (mappings_.get().find(mapping) == - mappings_.get().end()) + if (p_->mappings_.get().find(mapping) == + p_->mappings_.get().end()) return QModelIndex(); if (mapping->source_index.model() == resetting_model_) return QModelIndex(); @@ -243,14 +284,14 @@ QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) con return QModelIndex(); // Add a mapping if we don't have one already - MappingContainer::index::type::iterator it = - mappings_.get().find(source_index); + const auto& it = + p_->mappings_.get().find(source_index); Mapping* mapping; - if (it != mappings_.get().end()) { + if (it != p_->mappings_.get().end()) { mapping = *it; } else { mapping = new Mapping(source_index); - const_cast(this)->mappings_.insert(mapping); + const_cast(this)->p_->mappings_.insert(mapping); } return createIndex(source_index.row(), source_index.column(), mapping); diff --git a/src/core/mergedproxymodel.h b/src/core/mergedproxymodel.h index 92b4ee3f1..95d8b249a 100644 --- a/src/core/mergedproxymodel.h +++ b/src/core/mergedproxymodel.h @@ -18,26 +18,14 @@ #ifndef MERGEDPROXYMODEL_H #define MERGEDPROXYMODEL_H +#include + #include -using std::placeholders::_1; -using std::placeholders::_2; - -#include -#include -#include -#include - -using boost::multi_index::multi_index_container; -using boost::multi_index::indexed_by; -using boost::multi_index::hashed_unique; -using boost::multi_index::ordered_unique; -using boost::multi_index::tag; -using boost::multi_index::member; -using boost::multi_index::identity; - std::size_t hash_value(const QModelIndex& index); +class MergedProxyModelPrivate; + class MergedProxyModel : public QAbstractProxyModel { Q_OBJECT @@ -105,30 +93,13 @@ class MergedProxyModel : public QAbstractProxyModel { void DeleteAllMappings(); bool IsKnownModel(const QAbstractItemModel* model) const; - struct Mapping { - Mapping(const QModelIndex& _source_index) - : source_index(_source_index) {} - QModelIndex source_index; - }; - - struct tag_by_source {}; - struct tag_by_pointer {}; - typedef multi_index_container< - Mapping*, - indexed_by< - hashed_unique, - member >, - ordered_unique, - identity > - > - > MappingContainer; - - MappingContainer mappings_; QMap merge_points_; QAbstractItemModel* resetting_model_; QMap old_merge_points_; + + std::unique_ptr p_; }; #endif // MERGEDPROXYMODEL_H diff --git a/src/library/groupbydialog.cpp b/src/library/groupbydialog.cpp index 74d17ffb2..8b2f49955 100644 --- a/src/library/groupbydialog.cpp +++ b/src/library/groupbydialog.cpp @@ -20,25 +20,69 @@ #include +// boost::multi_index still relies on these being in the global namespace. +using std::placeholders::_1; +using std::placeholders::_2; + +#include +#include +#include + +using boost::multi_index_container; +using boost::multi_index::indexed_by; +using boost::multi_index::ordered_unique; +using boost::multi_index::tag; +using boost::multi_index::member; + +namespace { + +struct Mapping { + Mapping(LibraryModel::GroupBy g, int i) : group_by(g), combo_box_index(i) {} + + LibraryModel::GroupBy group_by; + int combo_box_index; +}; + +struct tag_index {}; +struct tag_group_by {}; + +} // namespace + +class GroupByDialogPrivate { + private: + typedef multi_index_container< + Mapping, + indexed_by< + ordered_unique, + member >, + ordered_unique, + member > + > + > MappingContainer; + + public: + MappingContainer mapping_; +}; + GroupByDialog::GroupByDialog(QWidget *parent) : QDialog(parent), - ui_(new Ui_GroupByDialog) -{ + ui_(new Ui_GroupByDialog), + p_(new GroupByDialogPrivate) { ui_->setupUi(this); Reset(); - mapping_.insert(Mapping(LibraryModel::GroupBy_None, 0)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Album, 1)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Artist, 2)); - mapping_.insert(Mapping(LibraryModel::GroupBy_AlbumArtist, 3)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Composer, 4)); - mapping_.insert(Mapping(LibraryModel::GroupBy_FileType, 5)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Genre, 6)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Year, 7)); - mapping_.insert(Mapping(LibraryModel::GroupBy_YearAlbum, 8)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Bitrate, 9)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Performer, 10)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Grouping, 11)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_None, 0)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Album, 1)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Artist, 2)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_AlbumArtist, 3)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Composer, 4)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_FileType, 5)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Genre, 6)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Year, 7)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_YearAlbum, 8)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Bitrate, 9)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Performer, 10)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Grouping, 11)); connect(ui_->button_box->button(QDialogButtonBox::Reset), SIGNAL(clicked()), SLOT(Reset())); @@ -46,9 +90,7 @@ GroupByDialog::GroupByDialog(QWidget *parent) resize(sizeHint()); } -GroupByDialog::~GroupByDialog() { - delete ui_; -} +GroupByDialog::~GroupByDialog() {} void GroupByDialog::Reset() { ui_->first->setCurrentIndex(2); // Artist @@ -58,14 +100,14 @@ void GroupByDialog::Reset() { void GroupByDialog::accept() { emit Accepted(LibraryModel::Grouping( - mapping_.get().find(ui_->first->currentIndex())->group_by, - mapping_.get().find(ui_->second->currentIndex())->group_by, - mapping_.get().find(ui_->third->currentIndex())->group_by)); + p_->mapping_.get().find(ui_->first->currentIndex())->group_by, + p_->mapping_.get().find(ui_->second->currentIndex())->group_by, + p_->mapping_.get().find(ui_->third->currentIndex())->group_by)); QDialog::accept(); } void GroupByDialog::LibraryGroupingChanged(const LibraryModel::Grouping& g) { - ui_->first->setCurrentIndex(mapping_.get().find(g[0])->combo_box_index); - ui_->second->setCurrentIndex(mapping_.get().find(g[1])->combo_box_index); - ui_->third->setCurrentIndex(mapping_.get().find(g[2])->combo_box_index); + ui_->first->setCurrentIndex(p_->mapping_.get().find(g[0])->combo_box_index); + ui_->second->setCurrentIndex(p_->mapping_.get().find(g[1])->combo_box_index); + ui_->third->setCurrentIndex(p_->mapping_.get().find(g[2])->combo_box_index); } diff --git a/src/library/groupbydialog.h b/src/library/groupbydialog.h index 718590286..6c5cbc894 100644 --- a/src/library/groupbydialog.h +++ b/src/library/groupbydialog.h @@ -22,28 +22,16 @@ #include -using std::placeholders::_1; -using std::placeholders::_2; - -#include -#include -#include - #include "librarymodel.h" +class GroupByDialogPrivate; class Ui_GroupByDialog; -using boost::multi_index_container; -using boost::multi_index::indexed_by; -using boost::multi_index::ordered_unique; -using boost::multi_index::tag; -using boost::multi_index::member; - class GroupByDialog : public QDialog { Q_OBJECT public: - GroupByDialog(QWidget *parent = 0); + GroupByDialog(QWidget* parent = nullptr); ~GroupByDialog(); public slots: @@ -57,27 +45,8 @@ class GroupByDialog : public QDialog { void Reset(); private: - struct Mapping { - Mapping(LibraryModel::GroupBy g, int i) : group_by(g), combo_box_index(i) {} - - LibraryModel::GroupBy group_by; - int combo_box_index; - }; - - struct tag_index {}; - struct tag_group_by {}; - typedef multi_index_container< - Mapping, - indexed_by< - ordered_unique, - member >, - ordered_unique, - member > - > - > MappingContainer; - - MappingContainer mapping_; - Ui_GroupByDialog* ui_; + std::unique_ptr ui_; + std::unique_ptr p_; }; #endif // GROUPBYDIALOG_H From 1ac3f53a8977e0260b9677a626f3ee9ed821a80c Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 18:06:25 +0100 Subject: [PATCH 092/362] Build spotify blob as c++11 --- ext/clementine-spotifyblob/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/clementine-spotifyblob/CMakeLists.txt b/ext/clementine-spotifyblob/CMakeLists.txt index 15a9c8dcc..f971216b5 100644 --- a/ext/clementine-spotifyblob/CMakeLists.txt +++ b/ext/clementine-spotifyblob/CMakeLists.txt @@ -7,6 +7,8 @@ include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-spotifyblob) include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-common) include_directories(${CMAKE_SOURCE_DIR}/src) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wall -Wno-sign-compare -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-unknown-warning-option --std=c++0x -U__STRICT_ANSI__") + link_directories(${SPOTIFY_LIBRARY_DIRS}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) From 4902e8e2c7f57cd37ab7bbd7ee6363464c3d9ac3 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 18:24:46 +0100 Subject: [PATCH 093/362] Remove boost from tests. --- tests/closure_test.cpp | 9 +++++---- tests/database_test.cpp | 6 +++--- tests/librarybackend_test.cpp | 18 +++++++++--------- tests/librarymodel_test.cpp | 10 ++++++---- tests/mpris1_test.cpp | 8 +++++--- tests/playlist_test.cpp | 4 +++- tests/plsparser_test.cpp | 6 +++--- tests/songloader_test.cpp | 21 +++++++++++---------- tests/songplaylistitem_test.cpp | 7 ++++--- tests/utilities_test.cpp | 2 -- 10 files changed, 49 insertions(+), 42 deletions(-) diff --git a/tests/closure_test.cpp b/tests/closure_test.cpp index 7d8f768e9..248a9a915 100644 --- a/tests/closure_test.cpp +++ b/tests/closure_test.cpp @@ -1,12 +1,13 @@ #include "gtest/gtest.h" +#include +#include + #include #include #include #include -#include - #include "config.h" #include "core/closure.h" #include "test_utils.h" @@ -44,7 +45,7 @@ TEST(ClosureTest, ClosureDeletesSelf) { TEST(ClosureTest, ClosureDoesNotCrashWithSharedPointerSender) { TestQObject receiver; TestQObject* sender; - boost::scoped_ptr spy; + std::unique_ptr spy; QPointer<_detail::ObjectHelper> closure; { QSharedPointer sender_shared(new TestQObject); @@ -94,7 +95,7 @@ TEST(ClosureTest, ClosureWorksWithStandardFunctions) { bool called = false; int question = 42; int answer = 0; - boost::function callback(&Foo); + std::function callback(&Foo); NewClosure( &sender, SIGNAL(Emitted()), callback, &called, question, &answer); diff --git a/tests/database_test.cpp b/tests/database_test.cpp index ba95b4e44..e0235f64c 100644 --- a/tests/database_test.cpp +++ b/tests/database_test.cpp @@ -15,13 +15,13 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" #include "core/database.h" -#include - #include #include #include @@ -32,7 +32,7 @@ class DatabaseTest : public ::testing::Test { database_.reset(new MemoryDatabase); } - boost::scoped_ptr database_; + std::unique_ptr database_; }; TEST_F(DatabaseTest, DatabaseInitialises) { diff --git a/tests/librarybackend_test.cpp b/tests/librarybackend_test.cpp index 53fee439e..8d3f70a49 100644 --- a/tests/librarybackend_test.cpp +++ b/tests/librarybackend_test.cpp @@ -15,21 +15,21 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" -#include "library/librarybackend.h" -#include "library/library.h" -#include "core/song.h" -#include "core/database.h" - -#include - #include #include #include #include +#include "library/librarybackend.h" +#include "library/library.h" +#include "core/song.h" +#include "core/database.h" + namespace { class LibraryBackendTest : public ::testing::Test { @@ -53,8 +53,8 @@ class LibraryBackendTest : public ::testing::Test { return ret; } - boost::shared_ptr database_; - boost::scoped_ptr backend_; + std::shared_ptr database_; + std::unique_ptr backend_; }; TEST_F(LibraryBackendTest, EmptyDatabase) { diff --git a/tests/librarymodel_test.cpp b/tests/librarymodel_test.cpp index 7596c3a60..fc31b4e08 100644 --- a/tests/librarymodel_test.cpp +++ b/tests/librarymodel_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -70,10 +72,10 @@ class LibraryModelTest : public ::testing::Test { return AddSong(song); } - boost::shared_ptr database_; - boost::scoped_ptr backend_; - boost::scoped_ptr model_; - boost::scoped_ptr model_sorted_; + std::shared_ptr database_; + std::unique_ptr backend_; + std::unique_ptr model_; + std::unique_ptr model_sorted_; bool added_dir_; }; diff --git a/tests/mpris1_test.cpp b/tests/mpris1_test.cpp index 61a153368..6a3396132 100644 --- a/tests/mpris1_test.cpp +++ b/tests/mpris1_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "core/encoding.h" #include "core/mpris1.h" #include "core/song.h" @@ -64,14 +66,14 @@ protected: MockPlayer player_; MockPlaylistManager playlists_; - boost::scoped_ptr sequence_; + std::unique_ptr sequence_; }; TEST_F(Mpris1BasicTest, CreatesDBusService) { EXPECT_FALSE(QDBusConnection::sessionBus().interface()-> isServiceRegistered(service_name())); - boost::scoped_ptr mpris( + std::unique_ptr mpris( new mpris::Mpris1(&player_, NULL, NULL, service_name())); EXPECT_TRUE(QDBusConnection::sessionBus().interface()-> isServiceRegistered(service_name())); @@ -90,7 +92,7 @@ protected: mpris_.reset(new mpris::Mpris1(&player_, NULL, NULL, service_name())); } - boost::scoped_ptr mpris_; + std::unique_ptr mpris_; }; TEST_F(Mpris1Test, CorrectNameAndVersion) { diff --git a/tests/playlist_test.cpp b/tests/playlist_test.cpp index a55de6b54..98dcdb4af 100644 --- a/tests/playlist_test.cpp +++ b/tests/playlist_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -26,7 +28,7 @@ #include #include -using boost::shared_ptr; +using std::shared_ptr; using ::testing::Return; namespace { diff --git a/tests/plsparser_test.cpp b/tests/plsparser_test.cpp index 691895563..c92f1da02 100644 --- a/tests/plsparser_test.cpp +++ b/tests/plsparser_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -27,9 +29,7 @@ #include #include -#include - -using boost::shared_ptr; +using std::shared_ptr; class PLSParserTest : public ::testing::Test { protected: diff --git a/tests/songloader_test.cpp b/tests/songloader_test.cpp index dbbff390b..2bab9f585 100644 --- a/tests/songloader_test.cpp +++ b/tests/songloader_test.cpp @@ -15,13 +15,7 @@ along with Clementine. If not, see . */ -#include "test_utils.h" -#include "gmock/gmock-matchers.h" -#include "gtest/gtest.h" -#include "mock_librarybackend.h" - -#include "core/songloader.h" -#include "engines/gstengine.h" +#include #include #include @@ -29,9 +23,16 @@ #include #include -#include #include +#include "test_utils.h" +#include "gmock/gmock-matchers.h" +#include "gtest/gtest.h" +#include "mock_librarybackend.h" + +#include "core/songloader.h" +#include "engines/gstengine.h" + using ::testing::_; using ::testing::Return; @@ -63,8 +64,8 @@ protected: static const char* kRemoteUrl; static GstEngine* sGstEngine; - boost::scoped_ptr loader_; - boost::scoped_ptr library_; + std::unique_ptr loader_; + std::unique_ptr library_; }; const char* SongLoaderTest::kRemoteUrl = "http://remotetestdata.clementine-player.org"; diff --git a/tests/songplaylistitem_test.cpp b/tests/songplaylistitem_test.cpp index 7dee583f7..3d603686f 100644 --- a/tests/songplaylistitem_test.cpp +++ b/tests/songplaylistitem_test.cpp @@ -15,11 +15,12 @@ along with Clementine. If not, see . */ +#include + #include "playlist/songplaylistitem.h" #include "test_utils.h" #include -#include #include #include @@ -30,7 +31,7 @@ namespace { class SongPlaylistItemTest : public ::testing::TestWithParam { protected: SongPlaylistItemTest() : temp_file_(GetParam()) {} - + void SetUp() { // SongPlaylistItem::Url() checks if the file exists, so we need a real file temp_file_.open(); @@ -49,7 +50,7 @@ class SongPlaylistItemTest : public ::testing::TestWithParam { Song song_; QTemporaryFile temp_file_; QString absolute_file_name_; - boost::scoped_ptr item_; + std::unique_ptr item_; }; INSTANTIATE_TEST_CASE_P(RealFiles, SongPlaylistItemTest, testing::Values( diff --git a/tests/utilities_test.cpp b/tests/utilities_test.cpp index 40b07773b..85d60bab2 100644 --- a/tests/utilities_test.cpp +++ b/tests/utilities_test.cpp @@ -21,8 +21,6 @@ #include "core/utilities.h" -#include - #include TEST(UtilitiesTest, HmacFunctions) { From 3df3a5b645737603af6bda844db04c431b9c8064 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 19:03:10 +0100 Subject: [PATCH 094/362] Add missing header for syscall(). This is cunningly not defined in syscall.h --- src/core/utilities.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 6fce75387..cb9a94d0e 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -52,6 +52,7 @@ #endif #ifdef Q_OS_LINUX +# include # include #endif #ifdef Q_OS_DARWIN From 0cab75b28f9e23e7f976a087d8fe22045cf0fba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20T=C3=A4tzner?= Date: Thu, 6 Feb 2014 19:27:36 +0100 Subject: [PATCH 095/362] removed useless debug log --- src/library/librarybackend.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/library/librarybackend.cpp b/src/library/librarybackend.cpp index ad7cd2ecd..3fde02881 100644 --- a/src/library/librarybackend.cpp +++ b/src/library/librarybackend.cpp @@ -446,7 +446,6 @@ void LibraryBackend::DeleteSongs(const SongList &songs) { } void LibraryBackend::MarkSongsUnavailable(const SongList& songs, bool unavailable) { - qLog(Debug) << int(unavailable) << " mark unavailable"; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); From 7671108aa8d02658cd35cacf4337507cc80ea03a Mon Sep 17 00:00:00 2001 From: John Maguire Date: Thu, 6 Feb 2014 19:46:08 +0100 Subject: [PATCH 096/362] Add missing include for symlink() --- src/internet/spotifyblobdownloader.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/internet/spotifyblobdownloader.cpp b/src/internet/spotifyblobdownloader.cpp index 9827d6557..5bd12a057 100644 --- a/src/internet/spotifyblobdownloader.cpp +++ b/src/internet/spotifyblobdownloader.cpp @@ -15,8 +15,9 @@ along with Clementine. If not, see . */ -#include "config.h" #include "spotifyblobdownloader.h" + +#include "config.h" #include "spotifyservice.h" #include "core/logging.h" #include "core/network.h" @@ -32,6 +33,10 @@ #include #endif // HAVE_QCA +#ifdef Q_OS_UNIX + #include +#endif + const char* SpotifyBlobDownloader::kSignatureSuffix = ".sha1"; From eb622b7e0075eed0f17c1654ed07a858a4e0799b Mon Sep 17 00:00:00 2001 From: Mattias Andersson Date: Fri, 7 Feb 2014 12:12:25 +0100 Subject: [PATCH 097/362] Do not translate ip address. --- src/ui/networkremotesettingspage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/networkremotesettingspage.ui b/src/ui/networkremotesettingspage.ui index 23120536b..bcf0487f6 100644 --- a/src/ui/networkremotesettingspage.ui +++ b/src/ui/networkremotesettingspage.ui @@ -121,7 +121,7 @@ - 127.0.0.1 + 127.0.0.1 From acfc7e6d2196f9ecb080b5405cd78066734bbc39 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Fri, 7 Feb 2014 13:40:32 +0100 Subject: [PATCH 098/362] Add missing header for _exit() Fixes #4188 --- src/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index bc2f8bba2..9b5227a3b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,7 +23,11 @@ # define _WIN32_WINNT 0x0600 # include # include -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 + +#ifdef Q_OS_UNIX +# include +#endif // Q_OS_UNIX #include #include From bebd781fdffdd617b8b1810549a164bdb77f55c9 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Fri, 7 Feb 2014 16:34:20 +0100 Subject: [PATCH 099/362] Reformat all non-3rd-party C/C++/Objective-C++. Command line: find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \; --- ext/clementine-spotifyblob/main.cpp | 1 - ext/clementine-spotifyblob/mediapipeline.cpp | 68 +- ext/clementine-spotifyblob/mediapipeline.h | 8 +- .../spotify_utilities.cpp | 10 +- .../spotify_utilities.h | 1 - .../spotify_utilities.mm | 20 +- ext/clementine-spotifyblob/spotifyclient.cpp | 298 ++-- ext/clementine-spotifyblob/spotifyclient.h | 79 +- ext/clementine-spotifyblob/spotifykey.h | 18 +- ext/clementine-tagreader/main.cpp | 8 +- ext/clementine-tagreader/tagreaderworker.cpp | 47 +- ext/clementine-tagreader/tagreaderworker.h | 8 +- ext/libclementine-common/core/closure.cpp | 43 +- ext/libclementine-common/core/closure.h | 134 +- ext/libclementine-common/core/concurrentrun.h | 72 +- ext/libclementine-common/core/logging.cpp | 87 +- ext/libclementine-common/core/logging.h | 51 +- .../core/messagehandler.cpp | 15 +- .../core/messagehandler.h | 59 +- .../core/messagereply.cpp | 12 +- ext/libclementine-common/core/messagereply.h | 19 +- ext/libclementine-common/core/override.h | 7 +- ext/libclementine-common/core/waitforsignal.h | 2 +- ext/libclementine-common/core/workerpool.cpp | 7 +- ext/libclementine-common/core/workerpool.h | 105 +- ext/libclementine-tagreader/cloudstream.cpp | 42 +- ext/libclementine-tagreader/cloudstream.h | 13 +- ext/libclementine-tagreader/fmpsparser.cpp | 31 +- ext/libclementine-tagreader/fmpsparser.h | 6 +- ext/libclementine-tagreader/tagreader.cpp | 508 +++--- ext/libclementine-tagreader/tagreader.h | 63 +- src/analyzers/analyzer.cpp | 6 +- src/analyzers/analyzerbase.cpp | 271 ++-- src/analyzers/analyzerbase.h | 84 +- src/analyzers/analyzercontainer.cpp | 71 +- src/analyzers/analyzercontainer.h | 24 +- src/analyzers/baranalyzer.cpp | 235 ++- src/analyzers/baranalyzer.h | 71 +- src/analyzers/blockanalyzer.cpp | 637 ++++---- src/analyzers/blockanalyzer.h | 68 +- src/analyzers/boomanalyzer.cpp | 205 ++- src/analyzers/boomanalyzer.h | 41 +- src/analyzers/glanalyzer.cpp | 473 +++--- src/analyzers/glanalyzer.h | 24 +- src/analyzers/glanalyzer2.cpp | 506 +++--- src/analyzers/glanalyzer2.h | 50 +- src/analyzers/glanalyzer3.cpp | 693 ++++----- src/analyzers/glanalyzer3.h | 89 +- src/analyzers/nyancatanalyzer.cpp | 94 +- src/analyzers/nyancatanalyzer.h | 16 +- src/analyzers/sonogram.cpp | 93 +- src/analyzers/sonogram.h | 23 +- src/analyzers/turbine.cpp | 97 +- src/analyzers/turbine.h | 11 +- src/core/appearance.cpp | 15 +- src/core/appearance.h | 34 +- src/core/application.cpp | 81 +- src/core/application.h | 16 +- src/core/backgroundstreams.cpp | 24 +- src/core/backgroundstreams.h | 2 +- src/core/boundfuturewatcher.h | 7 +- src/core/cachedlist.h | 24 +- src/core/commandlineoptions.cpp | 264 ++-- src/core/commandlineoptions.h | 10 +- src/core/crashreporting.cpp | 88 +- src/core/crashreporting.h | 24 +- src/core/database.cpp | 194 ++- src/core/database.h | 52 +- src/core/deletefiles.cpp | 23 +- src/core/deletefiles.h | 8 +- src/core/fht.cpp | 331 ++-- src/core/fht.h | 145 +- src/core/filesystemmusicstorage.cpp | 12 +- src/core/filesystemmusicstorage.h | 6 +- src/core/filesystemwatcherinterface.cpp | 6 +- src/core/filesystemwatcherinterface.h | 2 +- src/core/globalshortcutbackend.cpp | 9 +- src/core/globalshortcutbackend.h | 6 +- src/core/globalshortcuts.cpp | 86 +- src/core/globalshortcuts.h | 16 +- src/core/gnomeglobalshortcutbackend.cpp | 64 +- src/core/gnomeglobalshortcutbackend.h | 10 +- src/core/mac_delegate.h | 27 +- src/core/mac_utilities.h | 1 - src/core/macfslistener.h | 13 +- src/core/macglobalshortcutbackend.h | 8 +- src/core/mergedproxymodel.cpp | 266 ++-- src/core/mergedproxymodel.h | 49 +- src/core/metatypes.cpp | 18 +- src/core/mimedata.h | 34 +- src/core/modelfuturewatcher.h | 8 +- src/core/mpris.cpp | 9 +- src/core/mpris.h | 8 +- src/core/mpris1.cpp | 168 +- src/core/mpris1.h | 79 +- src/core/mpris2.cpp | 315 ++-- src/core/mpris2.h | 102 +- src/core/mpris_common.h | 25 +- src/core/multisortfilterproxy.cpp | 45 +- src/core/multisortfilterproxy.h | 8 +- src/core/musicstorage.cpp | 4 +- src/core/musicstorage.h | 18 +- src/core/network.cpp | 60 +- src/core/network.h | 37 +- src/core/networkproxyfactory.cpp | 75 +- src/core/networkproxyfactory.h | 12 +- src/core/organise.cpp | 87 +- src/core/organise.h | 23 +- src/core/organiseformat.cpp | 152 +- src/core/organiseformat.h | 5 +- src/core/player.cpp | 321 ++-- src/core/player.h | 20 +- src/core/potranslator.h | 5 +- src/core/qhash_qurl.h | 6 +- src/core/qtfslistener.cpp | 9 +- src/core/qtfslistener.h | 1 - src/core/qxtglobalshortcutbackend.cpp | 12 +- src/core/qxtglobalshortcutbackend.h | 8 +- src/core/scoped_cftyperef.h | 28 +- src/core/scoped_nsautorelease_pool.h | 3 +- src/core/scoped_nsobject.h | 39 +- src/core/scopedgobject.h | 23 +- src/core/scopedtransaction.cpp | 4 +- src/core/scopedtransaction.h | 2 +- src/core/settingsprovider.cpp | 23 +- src/core/settingsprovider.h | 2 +- src/core/signalchecker.cpp | 11 +- src/core/signalchecker.h | 16 +- src/core/simpletreeitem.h | 58 +- src/core/simpletreemodel.h | 28 +- src/core/song.cpp | 657 ++++---- src/core/song.h | 29 +- src/core/songloader.cpp | 210 +-- src/core/songloader.h | 26 +- src/core/stylesheetloader.cpp | 25 +- src/core/stylesheetloader.h | 2 +- src/core/tagreaderclient.cpp | 36 +- src/core/tagreaderclient.h | 16 +- src/core/taskmanager.cpp | 34 +- src/core/taskmanager.h | 14 +- src/core/timeconstants.h | 10 +- src/core/ubuntuunityhack.cpp | 23 +- src/core/ubuntuunityhack.h | 8 +- src/core/urlhandler.cpp | 20 +- src/core/urlhandler.h | 17 +- src/core/utilities.cpp | 289 ++-- src/core/utilities.h | 190 ++- src/covers/albumcoverexporter.cpp | 14 +- src/covers/albumcoverexporter.h | 2 +- src/covers/albumcoverfetcher.cpp | 42 +- src/covers/albumcoverfetcher.h | 13 +- src/covers/albumcoverfetchersearch.cpp | 74 +- src/covers/albumcoverfetchersearch.h | 6 +- src/covers/albumcoverloader.cpp | 82 +- src/covers/albumcoverloader.h | 28 +- src/covers/albumcoverloaderoptions.cpp | 7 +- src/covers/albumcoverloaderoptions.h | 15 +- src/covers/amazoncoverprovider.cpp | 101 +- src/covers/amazoncoverprovider.h | 11 +- src/covers/coverexportrunnable.cpp | 103 +- src/covers/coverexportrunnable.h | 4 +- src/covers/coverprovider.cpp | 5 +- src/covers/coverprovider.h | 9 +- src/covers/coverproviders.cpp | 11 +- src/covers/coverproviders.h | 8 +- src/covers/coversearchstatistics.cpp | 21 +- src/covers/coversearchstatistics.h | 4 +- src/covers/coversearchstatisticsdialog.cpp | 56 +- src/covers/coversearchstatisticsdialog.h | 8 +- src/covers/currentartloader.cpp | 19 +- src/covers/currentartloader.h | 13 +- src/covers/discogscoverprovider.cpp | 51 +- src/covers/discogscoverprovider.h | 18 +- src/covers/kittenloader.cpp | 18 +- src/covers/lastfmcoverprovider.cpp | 15 +- src/covers/lastfmcoverprovider.h | 8 +- src/covers/musicbrainzcoverprovider.cpp | 53 +- src/devices/cddadevice.cpp | 110 +- src/devices/cddadevice.h | 18 +- src/devices/cddalister.cpp | 27 +- src/devices/cddalister.h | 8 +- src/devices/connecteddevice.cpp | 41 +- src/devices/connecteddevice.h | 21 +- src/devices/devicedatabasebackend.cpp | 50 +- src/devices/devicedatabasebackend.h | 14 +- src/devices/devicekitlister.cpp | 122 +- src/devices/devicekitlister.h | 26 +- src/devices/devicelister.cpp | 15 +- src/devices/devicelister.h | 15 +- src/devices/devicemanager.cpp | 299 ++-- src/devices/devicemanager.h | 48 +- src/devices/deviceproperties.cpp | 125 +- src/devices/deviceproperties.h | 12 +- src/devices/devicestatefiltermodel.cpp | 19 +- src/devices/devicestatefiltermodel.h | 14 +- src/devices/deviceview.cpp | 182 ++- src/devices/deviceview.h | 22 +- src/devices/deviceviewcontainer.cpp | 20 +- src/devices/deviceviewcontainer.h | 14 +- src/devices/filesystemdevice.cpp | 56 +- src/devices/filesystemdevice.h | 18 +- src/devices/giolister.cpp | 177 +-- src/devices/giolister.h | 44 +- src/devices/gpoddevice.cpp | 60 +- src/devices/gpoddevice.h | 20 +- src/devices/gpodloader.cpp | 34 +- src/devices/gpodloader.h | 8 +- src/devices/macdevicelister.h | 12 +- src/devices/mtpconnection.cpp | 27 +- src/devices/mtpconnection.h | 6 +- src/devices/mtpdevice.cpp | 88 +- src/devices/mtpdevice.h | 21 +- src/devices/mtploader.cpp | 24 +- src/devices/mtploader.h | 14 +- src/engines/bufferconsumer.h | 4 +- src/engines/engine_fwd.h | 50 +- src/engines/enginebase.cpp | 55 +- src/engines/enginebase.h | 33 +- src/engines/gstelementdeleter.cpp | 5 +- src/engines/gstelementdeleter.h | 6 +- src/engines/gstengine.cpp | 289 ++-- src/engines/gstengine.h | 30 +- src/engines/gstenginepipeline.cpp | 348 +++-- src/engines/gstenginepipeline.h | 15 +- .../digitallyimportedsearchprovider.cpp | 16 +- .../digitallyimportedsearchprovider.h | 8 +- src/globalsearch/globalsearch.cpp | 105 +- src/globalsearch/globalsearch.h | 17 +- src/globalsearch/globalsearchitemdelegate.cpp | 17 +- src/globalsearch/globalsearchitemdelegate.h | 12 +- src/globalsearch/globalsearchmodel.cpp | 155 +- src/globalsearch/globalsearchmodel.h | 47 +- src/globalsearch/globalsearchsettingspage.cpp | 68 +- src/globalsearch/globalsearchsettingspage.h | 12 +- src/globalsearch/globalsearchsortmodel.cpp | 40 +- src/globalsearch/globalsearchsortmodel.h | 6 +- src/globalsearch/globalsearchview.cpp | 217 +-- src/globalsearch/globalsearchview.h | 24 +- .../groovesharksearchprovider.cpp | 43 +- src/globalsearch/icecastsearchprovider.cpp | 15 +- src/globalsearch/icecastsearchprovider.h | 10 +- src/globalsearch/lastfmsearchprovider.cpp | 28 +- src/globalsearch/lastfmsearchprovider.h | 11 +- src/globalsearch/librarysearchprovider.cpp | 19 +- src/globalsearch/librarysearchprovider.h | 11 +- src/globalsearch/savedradiosearchprovider.cpp | 13 +- src/globalsearch/savedradiosearchprovider.h | 11 +- src/globalsearch/searchprovider.cpp | 44 +- src/globalsearch/searchprovider.h | 32 +- .../searchproviderstatuswidget.cpp | 73 +- src/globalsearch/searchproviderstatuswidget.h | 19 +- src/globalsearch/simplesearchprovider.cpp | 48 +- src/globalsearch/simplesearchprovider.h | 14 +- src/globalsearch/somafmsearchprovider.cpp | 16 +- src/globalsearch/somafmsearchprovider.h | 11 +- src/globalsearch/soundcloudsearchprovider.cpp | 24 +- src/globalsearch/spotifysearchprovider.cpp | 45 +- src/globalsearch/spotifysearchprovider.h | 11 +- src/globalsearch/suggestionwidget.cpp | 50 +- src/globalsearch/suggestionwidget.h | 16 +- src/globalsearch/urlsearchprovider.cpp | 4 +- src/globalsearch/urlsearchprovider.h | 6 +- src/internet/boxservice.cpp | 98 +- src/internet/boxservice.h | 6 +- src/internet/boxsettingspage.cpp | 11 +- src/internet/boxsettingspage.h | 8 +- src/internet/boxurlhandler.cpp | 4 +- src/internet/cloudfileservice.cpp | 92 +- src/internet/cloudfileservice.h | 26 +- src/internet/digitallyimportedclient.cpp | 81 +- src/internet/digitallyimportedclient.h | 16 +- src/internet/digitallyimportedservicebase.cpp | 170 +- src/internet/digitallyimportedservicebase.h | 39 +- .../digitallyimportedsettingspage.cpp | 41 +- src/internet/digitallyimportedsettingspage.h | 10 +- src/internet/digitallyimportedurlhandler.cpp | 12 +- src/internet/digitallyimportedurlhandler.h | 10 +- src/internet/dropboxauthenticator.cpp | 43 +- src/internet/dropboxauthenticator.h | 7 +- src/internet/dropboxservice.cpp | 54 +- src/internet/dropboxservice.h | 2 +- src/internet/dropboxsettingspage.cpp | 24 +- src/internet/dropboxsettingspage.h | 8 +- src/internet/dropboxurlhandler.cpp | 8 +- src/internet/fixlastfm.cpp | 5 +- src/internet/fixlastfm.h | 8 +- src/internet/geolocator.cpp | 19 +- src/internet/geolocator.h | 2 +- src/internet/googledriveclient.cpp | 77 +- src/internet/googledriveclient.h | 33 +- src/internet/googledriveservice.cpp | 64 +- src/internet/googledriveservice.h | 12 +- src/internet/googledrivesettingspage.cpp | 18 +- src/internet/googledrivesettingspage.h | 8 +- src/internet/googledriveurlhandler.cpp | 9 +- src/internet/groovesharkradio.cpp | 25 +- src/internet/groovesharkradio.h | 8 +- src/internet/groovesharkservice.cpp | 716 +++++---- src/internet/groovesharkservice.h | 58 +- src/internet/groovesharksettingspage.cpp | 40 +- src/internet/groovesharksettingspage.h | 10 +- src/internet/groovesharkurlhandler.cpp | 32 +- src/internet/groovesharkurlhandler.h | 8 +- src/internet/icecastbackend.cpp | 57 +- src/internet/icecastbackend.h | 12 +- src/internet/icecastfilterwidget.cpp | 37 +- src/internet/icecastfilterwidget.h | 15 +- src/internet/icecastitem.h | 15 +- src/internet/icecastmodel.cpp | 71 +- src/internet/icecastmodel.h | 21 +- src/internet/icecastservice.cpp | 108 +- src/internet/icecastservice.h | 14 +- src/internet/internetmimedata.h | 7 +- src/internet/internetmodel.cpp | 110 +- src/internet/internetmodel.h | 18 +- src/internet/internetplaylistitem.cpp | 39 +- src/internet/internetplaylistitem.h | 2 +- src/internet/internetservice.cpp | 60 +- src/internet/internetservice.h | 29 +- src/internet/internetsongmimedata.h | 7 +- src/internet/internetview.cpp | 17 +- src/internet/internetview.h | 8 +- src/internet/internetviewcontainer.cpp | 64 +- src/internet/internetviewcontainer.h | 2 +- src/internet/jamendodynamicplaylist.cpp | 70 +- src/internet/jamendodynamicplaylist.h | 23 +- src/internet/jamendoplaylistitem.cpp | 11 +- src/internet/jamendoplaylistitem.h | 4 +- src/internet/jamendoservice.cpp | 170 +- src/internet/jamendoservice.h | 9 +- src/internet/lastfmcompat.cpp | 62 +- src/internet/lastfmcompat.h | 45 +- src/internet/lastfmservice.cpp | 428 ++--- src/internet/lastfmservice.h | 22 +- src/internet/lastfmsettingspage.cpp | 40 +- src/internet/lastfmsettingspage.h | 8 +- src/internet/lastfmstationdialog.cpp | 12 +- src/internet/lastfmstationdialog.h | 8 +- src/internet/lastfmurlhandler.cpp | 10 +- src/internet/lastfmurlhandler.h | 7 +- src/internet/localredirectserver.cpp | 19 +- src/internet/localredirectserver.h | 3 +- src/internet/magnatunedownloaddialog.cpp | 89 +- src/internet/magnatunedownloaddialog.h | 16 +- src/internet/magnatuneplaylistitem.cpp | 11 +- src/internet/magnatuneplaylistitem.h | 2 +- src/internet/magnatuneservice.cpp | 121 +- src/internet/magnatuneservice.h | 4 +- src/internet/magnatunesettingspage.cpp | 58 +- src/internet/magnatunesettingspage.h | 10 +- src/internet/magnatuneurlhandler.cpp | 7 +- src/internet/magnatuneurlhandler.h | 7 +- src/internet/oauthenticator.cpp | 68 +- src/internet/oauthenticator.h | 20 +- src/internet/savedradio.cpp | 61 +- src/internet/savedradio.h | 12 +- src/internet/searchboxwidget.cpp | 27 +- src/internet/searchboxwidget.h | 10 +- src/internet/skydriveservice.cpp | 47 +- src/internet/skydriveservice.h | 6 +- src/internet/skydriveurlhandler.cpp | 9 +- src/internet/somafmservice.cpp | 137 +- src/internet/somafmservice.h | 26 +- src/internet/somafmurlhandler.cpp | 25 +- src/internet/somafmurlhandler.h | 15 +- src/internet/soundcloudservice.cpp | 77 +- src/internet/soundcloudservice.h | 11 +- src/internet/spotifyblobdownloader.cpp | 82 +- src/internet/spotifyblobdownloader.h | 10 +- src/internet/spotifyserver.cpp | 70 +- src/internet/spotifyserver.h | 16 +- src/internet/spotifyservice.cpp | 240 +-- src/internet/spotifyservice.h | 17 +- src/internet/spotifysettingspage.cpp | 57 +- src/internet/spotifysettingspage.h | 12 +- src/internet/subsonicservice.cpp | 143 +- src/internet/subsonicservice.h | 33 +- src/internet/subsonicsettingspage.cpp | 168 +- src/internet/subsonicsettingspage.h | 7 +- src/internet/subsonicurlhandler.cpp | 7 +- src/internet/subsonicurlhandler.h | 4 +- src/internet/ubuntuoneauthenticator.cpp | 49 +- src/internet/ubuntuoneauthenticator.h | 13 +- src/internet/ubuntuoneservice.cpp | 43 +- src/internet/ubuntuonesettingspage.cpp | 14 +- src/internet/ubuntuoneurlhandler.cpp | 9 +- src/library/directory.h | 5 +- src/library/groupbydialog.cpp | 40 +- src/library/groupbydialog.h | 4 +- src/library/library.cpp | 173 ++- src/library/library.h | 7 +- src/library/librarybackend.cpp | 464 +++--- src/library/librarybackend.h | 89 +- src/library/librarydirectorymodel.cpp | 62 +- src/library/librarydirectorymodel.h | 4 +- src/library/libraryfilterwidget.cpp | 129 +- src/library/libraryfilterwidget.h | 14 +- src/library/libraryitem.h | 14 +- src/library/librarymodel.cpp | 860 +++++----- src/library/librarymodel.h | 54 +- src/library/libraryplaylistitem.cpp | 26 +- src/library/libraryplaylistitem.h | 2 +- src/library/libraryquery.cpp | 83 +- src/library/libraryquery.h | 24 +- src/library/librarysettingspage.cpp | 59 +- src/library/librarysettingspage.h | 8 +- src/library/libraryview.cpp | 292 ++-- src/library/libraryview.h | 21 +- src/library/libraryviewcontainer.cpp | 22 +- src/library/libraryviewcontainer.h | 6 +- src/library/librarywatcher.cpp | 306 ++-- src/library/librarywatcher.h | 65 +- src/library/sqlrow.cpp | 9 +- src/main.cpp | 122 +- src/moodbar/moodbarcontroller.cpp | 36 +- src/moodbar/moodbarcontroller.h | 14 +- src/moodbar/moodbaritemdelegate.cpp | 141 +- src/moodbar/moodbaritemdelegate.h | 21 +- src/moodbar/moodbarloader.cpp | 40 +- src/moodbar/moodbarloader.h | 13 +- src/moodbar/moodbarpipeline.cpp | 64 +- src/moodbar/moodbarpipeline.h | 13 +- src/moodbar/moodbarproxystyle.cpp | 208 +-- src/moodbar/moodbarproxystyle.h | 36 +- src/moodbar/moodbarrenderer.cpp | 105 +- src/moodbar/moodbarrenderer.h | 20 +- src/musicbrainz/acoustidclient.cpp | 31 +- src/musicbrainz/acoustidclient.h | 8 +- src/musicbrainz/chromaprinter.cpp | 80 +- src/musicbrainz/chromaprinter.h | 14 +- src/musicbrainz/musicbrainzclient.cpp | 54 +- src/musicbrainz/musicbrainzclient.h | 40 +- src/musicbrainz/tagfetcher.cpp | 32 +- src/musicbrainz/tagfetcher.h | 10 +- src/networkremote/avahi.cpp | 92 +- src/networkremote/avahi.h | 7 +- src/networkremote/bonjour.h | 7 +- src/networkremote/incomingdataparser.cpp | 119 +- src/networkremote/incomingdataparser.h | 14 +- src/networkremote/networkremote.cpp | 56 +- src/networkremote/networkremote.h | 10 +- src/networkremote/networkremotehelper.cpp | 27 +- src/networkremote/networkremotehelper.h | 10 +- src/networkremote/outgoingdatacreator.cpp | 336 ++-- src/networkremote/outgoingdatacreator.h | 32 +- src/networkremote/remoteclient.cpp | 24 +- src/networkremote/remoteclient.h | 10 +- src/networkremote/tinysvcmdns.cpp | 60 +- src/networkremote/tinysvcmdns.h | 7 +- src/networkremote/zeroconf.cpp | 37 +- src/networkremote/zeroconf.h | 14 +- src/playlist/dynamicplaylistcontrols.cpp | 10 +- src/playlist/dynamicplaylistcontrols.h | 6 +- src/playlist/playlist.cpp | 1012 ++++++------ src/playlist/playlist.h | 161 +- src/playlist/playlistbackend.cpp | 166 +- src/playlist/playlistbackend.h | 20 +- src/playlist/playlistcontainer.cpp | 202 +-- src/playlist/playlistcontainer.h | 24 +- src/playlist/playlistdelegates.cpp | 239 ++- src/playlist/playlistdelegates.h | 69 +- src/playlist/playlistfilter.cpp | 29 +- src/playlist/playlistfilter.h | 8 +- src/playlist/playlistfilterparser.cpp | 111 +- src/playlist/playlistfilterparser.h | 29 +- src/playlist/playlistheader.cpp | 45 +- src/playlist/playlistheader.h | 4 +- src/playlist/playlistitem.cpp | 38 +- src/playlist/playlistitem.h | 16 +- src/playlist/playlistitemmimedata.h | 9 +- src/playlist/playlistlistcontainer.cpp | 163 +- src/playlist/playlistlistcontainer.h | 13 +- src/playlist/playlistlistmodel.cpp | 127 +- src/playlist/playlistlistmodel.h | 20 +- src/playlist/playlistlistview.cpp | 13 +- src/playlist/playlistmanager.cpp | 208 ++- src/playlist/playlistmanager.h | 47 +- src/playlist/playlistsequence.cpp | 131 +- src/playlist/playlistsequence.h | 6 +- src/playlist/playlisttabbar.cpp | 146 +- src/playlist/playlisttabbar.h | 12 +- src/playlist/playlistundocommands.cpp | 89 +- src/playlist/playlistundocommands.h | 151 +- src/playlist/playlistview.cpp | 511 +++--- src/playlist/playlistview.h | 49 +- src/playlist/queue.cpp | 160 +- src/playlist/queue.h | 25 +- src/playlist/queuemanager.cpp | 84 +- src/playlist/queuemanager.h | 8 +- src/playlist/songloaderinserter.cpp | 39 +- src/playlist/songloaderinserter.h | 13 +- src/playlist/songmimedata.h | 7 +- src/playlist/songplaylistitem.cpp | 25 +- src/playlist/songplaylistitem.h | 2 +- src/playlistparsers/asxiniparser.cpp | 14 +- src/playlistparsers/asxiniparser.h | 12 +- src/playlistparsers/asxparser.cpp | 14 +- src/playlistparsers/asxparser.h | 7 +- src/playlistparsers/cueparser.cpp | 178 ++- src/playlistparsers/cueparser.h | 21 +- src/playlistparsers/m3uparser.cpp | 22 +- src/playlistparsers/m3uparser.h | 13 +- src/playlistparsers/parserbase.cpp | 19 +- src/playlistparsers/parserbase.h | 32 +- src/playlistparsers/playlistparser.cpp | 32 +- src/playlistparsers/playlistparser.h | 11 +- src/playlistparsers/plsparser.cpp | 15 +- src/playlistparsers/plsparser.h | 12 +- src/playlistparsers/wplparser.cpp | 9 +- src/playlistparsers/wplparser.h | 4 +- src/playlistparsers/xmlparser.cpp | 3 +- src/playlistparsers/xmlparser.h | 7 +- src/playlistparsers/xspfparser.cpp | 19 +- src/playlistparsers/xspfparser.h | 7 +- src/podcasts/addpodcastbyurl.cpp | 44 +- src/podcasts/addpodcastbyurl.h | 16 +- src/podcasts/addpodcastdialog.cpp | 61 +- src/podcasts/addpodcastdialog.h | 20 +- src/podcasts/addpodcastpage.cpp | 11 +- src/podcasts/addpodcastpage.h | 14 +- src/podcasts/fixedopmlpage.cpp | 37 +- src/podcasts/fixedopmlpage.h | 14 +- src/podcasts/gpoddersearchpage.cpp | 44 +- src/podcasts/gpoddersearchpage.h | 15 +- src/podcasts/gpoddersync.cpp | 225 +-- src/podcasts/gpoddersync.h | 22 +- src/podcasts/gpoddertoptagsmodel.cpp | 50 +- src/podcasts/gpoddertoptagsmodel.h | 22 +- src/podcasts/gpoddertoptagspage.cpp | 43 +- src/podcasts/gpoddertoptagspage.h | 14 +- src/podcasts/itunessearchpage.cpp | 39 +- src/podcasts/itunessearchpage.h | 14 +- src/podcasts/opmlcontainer.h | 10 +- src/podcasts/podcast.cpp | 70 +- src/podcasts/podcast.h | 24 +- src/podcasts/podcastbackend.cpp | 120 +- src/podcasts/podcastbackend.h | 19 +- src/podcasts/podcastdiscoverymodel.cpp | 37 +- src/podcasts/podcastdiscoverymodel.h | 26 +- src/podcasts/podcastdownloader.cpp | 88 +- src/podcasts/podcastdownloader.h | 19 +- src/podcasts/podcastepisode.cpp | 93 +- src/podcasts/podcastepisode.h | 14 +- src/podcasts/podcastinfowidget.cpp | 54 +- src/podcasts/podcastinfowidget.h | 14 +- src/podcasts/podcastparser.cpp | 335 ++-- src/podcasts/podcastparser.h | 18 +- src/podcasts/podcastservice.cpp | 294 ++-- src/podcasts/podcastservice.h | 45 +- src/podcasts/podcastservicemodel.cpp | 41 +- src/podcasts/podcastservicemodel.h | 22 +- src/podcasts/podcastsettingspage.cpp | 68 +- src/podcasts/podcastsettingspage.h | 14 +- src/podcasts/podcastupdater.cpp | 64 +- src/podcasts/podcastupdater.h | 18 +- src/podcasts/podcasturlloader.cpp | 73 +- src/podcasts/podcasturlloader.h | 28 +- src/smartplaylists/generator.cpp | 9 +- src/smartplaylists/generator.h | 24 +- src/smartplaylists/generator_fwd.h | 4 +- src/smartplaylists/generatorinserter.cpp | 24 +- src/smartplaylists/generatorinserter.h | 14 +- src/smartplaylists/generatormimedata.h | 9 +- src/smartplaylists/querygenerator.cpp | 20 +- src/smartplaylists/querygenerator.h | 13 +- src/smartplaylists/querywizardplugin.cpp | 126 +- src/smartplaylists/querywizardplugin.h | 10 +- src/smartplaylists/search.cpp | 48 +- src/smartplaylists/search.h | 29 +- src/smartplaylists/searchpreview.cpp | 26 +- src/smartplaylists/searchpreview.h | 16 +- src/smartplaylists/searchterm.cpp | 323 ++-- src/smartplaylists/searchterm.h | 28 +- src/smartplaylists/searchtermwidget.cpp | 223 +-- src/smartplaylists/searchtermwidget.h | 17 +- src/smartplaylists/wizard.cpp | 56 +- src/smartplaylists/wizard.h | 14 +- src/smartplaylists/wizardplugin.cpp | 12 +- src/smartplaylists/wizardplugin.h | 10 +- src/songinfo/artistinfoview.cpp | 42 +- src/songinfo/artistinfoview.h | 11 +- src/songinfo/collapsibleinfoheader.cpp | 36 +- src/songinfo/collapsibleinfoheader.h | 10 +- src/songinfo/collapsibleinfopane.cpp | 18 +- src/songinfo/collapsibleinfopane.h | 13 +- src/songinfo/echonestbiographies.cpp | 25 +- src/songinfo/echonestbiographies.h | 8 +- src/songinfo/echonestimages.cpp | 11 +- src/songinfo/echonestimages.h | 8 +- src/songinfo/echonestsimilarartists.cpp | 14 +- src/songinfo/echonestsimilarartists.h | 8 +- src/songinfo/echonesttags.cpp | 13 +- src/songinfo/echonesttags.h | 8 +- src/songinfo/lastfmtrackinfoprovider.cpp | 25 +- src/songinfo/lastfmtrackinfoprovider.h | 12 +- src/songinfo/songinfobase.cpp | 68 +- src/songinfo/songinfobase.h | 26 +- src/songinfo/songinfofetcher.cpp | 52 +- src/songinfo/songinfofetcher.h | 13 +- src/songinfo/songinfoprovider.cpp | 9 +- src/songinfo/songinfoprovider.h | 6 +- src/songinfo/songinfosettingspage.cpp | 47 +- src/songinfo/songinfosettingspage.h | 8 +- src/songinfo/songinfotextview.cpp | 26 +- src/songinfo/songinfotextview.h | 10 +- src/songinfo/songinfoview.cpp | 78 +- src/songinfo/songinfoview.h | 19 +- src/songinfo/songkickconcerts.cpp | 38 +- src/songinfo/songkickconcertwidget.cpp | 27 +- src/songinfo/songkickconcertwidget.h | 18 +- src/songinfo/songplaystats.cpp | 20 +- src/songinfo/songplaystats.h | 8 +- src/songinfo/tagwidget.cpp | 40 +- src/songinfo/tagwidget.h | 26 +- src/songinfo/ultimatelyricslyric.cpp | 8 +- src/songinfo/ultimatelyricslyric.h | 4 +- src/songinfo/ultimatelyricsprovider.cpp | 137 +- src/songinfo/ultimatelyricsprovider.h | 26 +- src/songinfo/ultimatelyricsreader.cpp | 50 +- src/songinfo/ultimatelyricsreader.h | 6 +- src/transcoder/transcodedialog.cpp | 107 +- src/transcoder/transcodedialog.h | 2 +- src/transcoder/transcoder.cpp | 239 +-- src/transcoder/transcoder.h | 22 +- src/transcoder/transcoderoptionsaac.cpp | 8 +- src/transcoder/transcoderoptionsaac.h | 6 +- src/transcoder/transcoderoptionsdialog.cpp | 41 +- src/transcoder/transcoderoptionsdialog.h | 8 +- src/transcoder/transcoderoptionsflac.cpp | 8 +- src/transcoder/transcoderoptionsflac.h | 6 +- src/transcoder/transcoderoptionsinterface.h | 4 +- src/transcoder/transcoderoptionsmp3.cpp | 23 +- src/transcoder/transcoderoptionsmp3.h | 8 +- src/transcoder/transcoderoptionsopus.cpp | 10 +- src/transcoder/transcoderoptionsopus.h | 6 +- src/transcoder/transcoderoptionsspeex.cpp | 8 +- src/transcoder/transcoderoptionsspeex.h | 6 +- src/transcoder/transcoderoptionsvorbis.cpp | 12 +- src/transcoder/transcoderoptionsvorbis.h | 6 +- src/transcoder/transcoderoptionswma.cpp | 8 +- src/transcoder/transcoderoptionswma.h | 6 +- src/transcoder/transcodersettingspage.cpp | 8 +- src/transcoder/transcodersettingspage.h | 6 +- src/ui/about.cpp | 47 +- src/ui/about.h | 7 +- src/ui/addstreamdialog.cpp | 35 +- src/ui/addstreamdialog.h | 10 +- src/ui/albumcoverchoicecontroller.cpp | 139 +- src/ui/albumcoverchoicecontroller.h | 22 +- src/ui/albumcoverexport.cpp | 35 +- src/ui/albumcoverexport.h | 2 +- src/ui/albumcovermanager.cpp | 312 ++-- src/ui/albumcovermanager.h | 36 +- src/ui/albumcovermanagerlist.cpp | 22 +- src/ui/albumcovermanagerlist.h | 12 +- src/ui/albumcoversearcher.cpp | 105 +- src/ui/albumcoversearcher.h | 20 +- src/ui/appearancesettingspage.cpp | 118 +- src/ui/appearancesettingspage.h | 11 +- src/ui/backgroundstreamssettingspage.cpp | 16 +- src/ui/backgroundstreamssettingspage.h | 10 +- src/ui/behavioursettingspage.cpp | 76 +- src/ui/behavioursettingspage.h | 8 +- src/ui/console.cpp | 3 +- src/ui/coverfromurldialog.cpp | 25 +- src/ui/coverfromurldialog.h | 2 +- src/ui/dbusscreensaver.cpp | 15 +- src/ui/dbusscreensaver.h | 2 +- src/ui/edittagdialog.cpp | 371 ++--- src/ui/edittagdialog.h | 25 +- src/ui/equalizer.cpp | 200 +-- src/ui/equalizer.h | 16 +- src/ui/flowlayout.cpp | 211 ++- src/ui/flowlayout.h | 48 +- src/ui/globalshortcutgrabber.cpp | 20 +- src/ui/globalshortcutgrabber.h | 8 +- src/ui/globalshortcutssettingspage.cpp | 59 +- src/ui/globalshortcutssettingspage.h | 12 +- src/ui/iconloader.cpp | 16 +- src/ui/iconloader.h | 6 +- src/ui/macscreensaver.cpp | 18 +- src/ui/macsystemtrayicon.h | 12 +- src/ui/mainwindow.cpp | 1382 ++++++++++------- src/ui/mainwindow.h | 26 +- src/ui/networkproxysettingspage.cpp | 50 +- src/ui/networkproxysettingspage.h | 6 +- src/ui/networkremotesettingspage.cpp | 10 +- src/ui/networkremotesettingspage.h | 8 +- src/ui/notificationssettingspage.cpp | 168 +- src/ui/notificationssettingspage.h | 10 +- src/ui/organisedialog.cpp | 85 +- src/ui/organisedialog.h | 15 +- src/ui/organiseerrordialog.cpp | 43 +- src/ui/organiseerrordialog.h | 11 +- src/ui/playbacksettingspage.cpp | 55 +- src/ui/playbacksettingspage.h | 8 +- src/ui/qt_blurimage.h | 2 +- src/ui/qtsystemtrayicon.cpp | 109 +- src/ui/qtsystemtrayicon.h | 16 +- src/ui/ripcd.cpp | 181 ++- src/ui/ripcd.h | 10 +- src/ui/screensaver.cpp | 39 +- src/ui/settingsdialog.cpp | 102 +- src/ui/settingsdialog.h | 28 +- src/ui/settingspage.cpp | 5 +- src/ui/settingspage.h | 6 +- src/ui/standarditemiconloader.cpp | 50 +- src/ui/standarditemiconloader.h | 16 +- src/ui/systemtrayicon.cpp | 26 +- src/ui/systemtrayicon.h | 4 +- src/ui/trackselectiondialog.cpp | 84 +- src/ui/trackselectiondialog.h | 19 +- src/ui/windows7thumbbar.cpp | 76 +- src/ui/windows7thumbbar.h | 12 +- src/visualisations/projectmpresetmodel.cpp | 82 +- src/visualisations/projectmpresetmodel.h | 30 +- src/visualisations/projectmvisualisation.cpp | 108 +- src/visualisations/projectmvisualisation.h | 25 +- src/visualisations/visualisationcontainer.cpp | 97 +- src/visualisations/visualisationcontainer.h | 26 +- src/visualisations/visualisationoverlay.cpp | 35 +- src/visualisations/visualisationoverlay.h | 18 +- src/visualisations/visualisationselector.cpp | 39 +- src/visualisations/visualisationselector.h | 14 +- src/widgets/autoexpandingtreeview.cpp | 40 +- src/widgets/autoexpandingtreeview.h | 20 +- src/widgets/busyindicator.cpp | 25 +- src/widgets/busyindicator.h | 2 +- src/widgets/clickablelabel.cpp | 5 +- src/widgets/clickablelabel.h | 6 +- src/widgets/didyoumean.cpp | 37 +- src/widgets/didyoumean.h | 12 +- src/widgets/elidedlabel.cpp | 9 +- src/widgets/elidedlabel.h | 12 +- src/widgets/equalizerslider.cpp | 18 +- src/widgets/equalizerslider.h | 6 +- src/widgets/errordialog.cpp | 22 +- src/widgets/errordialog.h | 12 +- src/widgets/fancytabwidget.cpp | 454 +++--- src/widgets/fancytabwidget.h | 147 +- src/widgets/favoritewidget.cpp | 19 +- src/widgets/favoritewidget.h | 4 +- src/widgets/fileview.cpp | 93 +- src/widgets/fileview.h | 4 +- src/widgets/fileviewlist.cpp | 49 +- src/widgets/fileviewlist.h | 4 +- src/widgets/forcescrollperpixel.cpp | 11 +- src/widgets/forcescrollperpixel.h | 8 +- src/widgets/freespacebar.cpp | 52 +- src/widgets/freespacebar.h | 40 +- src/widgets/fullscreenhypnotoad.cpp | 19 +- src/widgets/fullscreenhypnotoad.h | 8 +- src/widgets/groupediconview.cpp | 137 +- src/widgets/groupediconview.h | 26 +- src/widgets/lineedit.cpp | 78 +- src/widgets/lineedit.h | 63 +- src/widgets/linetextedit.cpp | 11 +- src/widgets/linetextedit.h | 6 +- src/widgets/loginstatewidget.cpp | 18 +- src/widgets/loginstatewidget.h | 16 +- src/widgets/multiloadingindicator.cpp | 27 +- src/widgets/multiloadingindicator.h | 10 +- src/widgets/nowplayingwidget.cpp | 249 +-- src/widgets/nowplayingwidget.h | 22 +- src/widgets/osd.cpp | 184 ++- src/widgets/osd.h | 27 +- src/widgets/osd_win.cpp | 15 +- src/widgets/osd_x11.cpp | 44 +- src/widgets/osdpretty.cpp | 158 +- src/widgets/osdpretty.h | 31 +- src/widgets/prettyimage.cpp | 75 +- src/widgets/prettyimage.h | 14 +- src/widgets/prettyimageview.cpp | 62 +- src/widgets/prettyimageview.h | 12 +- src/widgets/progressitemdelegate.cpp | 10 +- src/widgets/progressitemdelegate.h | 7 +- src/widgets/ratingwidget.cpp | 40 +- src/widgets/ratingwidget.h | 14 +- src/widgets/renametablineedit.cpp | 16 +- src/widgets/renametablineedit.h | 8 +- src/widgets/sliderwidget.cpp | 457 +++--- src/widgets/sliderwidget.h | 167 +- src/widgets/stickyslider.cpp | 13 +- src/widgets/stickyslider.h | 5 +- src/widgets/stretchheaderview.cpp | 88 +- src/widgets/stretchheaderview.h | 14 +- src/widgets/stylehelper.cpp | 299 ++-- src/widgets/stylehelper.h | 59 +- src/widgets/trackslider.cpp | 44 +- src/widgets/trackslider.h | 8 +- src/widgets/tracksliderpopup.cpp | 25 +- src/widgets/tracksliderpopup.h | 12 +- src/widgets/tracksliderslider.cpp | 25 +- src/widgets/tracksliderslider.h | 10 +- src/widgets/widgetfadehelper.cpp | 27 +- src/widgets/widgetfadehelper.h | 14 +- src/wiimotedev/consts.h | 290 ++-- src/wiimotedev/shortcuts.cpp | 141 +- src/wiimotedev/shortcuts.h | 16 +- src/wiimotedev/wiimotesettingspage.cpp | 79 +- src/wiimotedev/wiimotesettingspage.h | 8 +- src/wiimotedev/wiimoteshortcutgrabber.cpp | 68 +- src/wiimotedev/wiimoteshortcutgrabber.h | 10 +- 803 files changed, 22699 insertions(+), 22831 deletions(-) diff --git a/ext/clementine-spotifyblob/main.cpp b/ext/clementine-spotifyblob/main.cpp index 238049e04..cce0d106c 100644 --- a/ext/clementine-spotifyblob/main.cpp +++ b/ext/clementine-spotifyblob/main.cpp @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #include #include diff --git a/ext/clementine-spotifyblob/mediapipeline.cpp b/ext/clementine-spotifyblob/mediapipeline.cpp index 859fd28ab..69f4c0d3f 100644 --- a/ext/clementine-spotifyblob/mediapipeline.cpp +++ b/ext/clementine-spotifyblob/mediapipeline.cpp @@ -25,15 +25,13 @@ #include MediaPipeline::MediaPipeline(int port, quint64 length_msec) - : port_(port), - length_msec_(length_msec), - accepting_data_(true), - pipeline_(nullptr), - appsrc_(nullptr), - byte_rate_(1), - offset_bytes_(0) -{ -} + : port_(port), + length_msec_(length_msec), + accepting_data_(true), + pipeline_(nullptr), + appsrc_(nullptr), + byte_rate_(1), + offset_bytes_(0) {} MediaPipeline::~MediaPipeline() { if (pipeline_) { @@ -43,8 +41,7 @@ MediaPipeline::~MediaPipeline() { } bool MediaPipeline::Init(int sample_rate, int channels) { - if (is_initialised()) - return false; + if (is_initialised()) return false; pipeline_ = gst_pipeline_new("pipeline"); @@ -54,10 +51,21 @@ bool MediaPipeline::Init(int sample_rate, int channels) { tcpsink_ = gst_element_factory_make("tcpclientsink", nullptr); if (!pipeline_ || !appsrc_ || !tcpsink_) { - if (pipeline_) { gst_object_unref(GST_OBJECT(pipeline_)); pipeline_ = nullptr; } - if (appsrc_) { gst_object_unref(GST_OBJECT(appsrc_)); appsrc_ = nullptr; } - if (gdppay) { gst_object_unref(GST_OBJECT(gdppay)); } - if (tcpsink_) { gst_object_unref(GST_OBJECT(tcpsink_)); tcpsink_ = nullptr; } + if (pipeline_) { + gst_object_unref(GST_OBJECT(pipeline_)); + pipeline_ = nullptr; + } + if (appsrc_) { + gst_object_unref(GST_OBJECT(appsrc_)); + appsrc_ = nullptr; + } + if (gdppay) { + gst_object_unref(GST_OBJECT(gdppay)); + } + if (tcpsink_) { + gst_object_unref(GST_OBJECT(tcpsink_)); + tcpsink_ = nullptr; + } return false; } @@ -73,7 +81,8 @@ bool MediaPipeline::Init(int sample_rate, int channels) { // Try to send 5 seconds of audio in advance to initially fill Clementine's // buffer. - g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), nullptr); + g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), + nullptr); // We know the time of each buffer g_object_set(G_OBJECT(appsrc_), "format", GST_FORMAT_TIME, nullptr); @@ -97,14 +106,11 @@ bool MediaPipeline::Init(int sample_rate, int channels) { #endif // Set caps - GstCaps* caps = gst_caps_new_simple("audio/x-raw-int", - "endianness", G_TYPE_INT, endianness, - "signed", G_TYPE_BOOLEAN, TRUE, - "width", G_TYPE_INT, 16, - "depth", G_TYPE_INT, 16, - "rate", G_TYPE_INT, sample_rate, - "channels", G_TYPE_INT, channels, - nullptr); + GstCaps* caps = gst_caps_new_simple( + "audio/x-raw-int", "endianness", G_TYPE_INT, endianness, "signed", + G_TYPE_BOOLEAN, TRUE, "width", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, + "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, channels, + nullptr); gst_app_src_set_caps(appsrc_, caps); gst_caps_unref(caps); @@ -115,12 +121,12 @@ bool MediaPipeline::Init(int sample_rate, int channels) { gst_app_src_set_size(appsrc_, bytes); // Ready to go - return gst_element_set_state(pipeline_, GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE; + return gst_element_set_state(pipeline_, GST_STATE_PLAYING) != + GST_STATE_CHANGE_FAILURE; } void MediaPipeline::WriteData(const char* data, qint64 length) { - if (!is_initialised()) - return; + if (!is_initialised()) return; GstBuffer* buffer = gst_buffer_new_and_alloc(length); @@ -137,8 +143,7 @@ void MediaPipeline::WriteData(const char* data, qint64 length) { } void MediaPipeline::EndStream() { - if (!is_initialised()) - return; + if (!is_initialised()) return; gst_app_src_end_of_stream(appsrc_); } @@ -153,8 +158,9 @@ void MediaPipeline::EnoughDataCallback(GstAppSrc* src, void* data) { me->accepting_data_ = false; } -gboolean MediaPipeline::SeekDataCallback(GstAppSrc* src, guint64 offset, void * data) { - //MediaPipeline* me = reinterpret_cast(data); +gboolean MediaPipeline::SeekDataCallback(GstAppSrc* src, guint64 offset, + void* data) { + // MediaPipeline* me = reinterpret_cast(data); qLog(Debug) << "Gstreamer wants seek to" << offset; return false; diff --git a/ext/clementine-spotifyblob/mediapipeline.h b/ext/clementine-spotifyblob/mediapipeline.h index 4e965d376..32c9b0420 100644 --- a/ext/clementine-spotifyblob/mediapipeline.h +++ b/ext/clementine-spotifyblob/mediapipeline.h @@ -27,7 +27,7 @@ #include class MediaPipeline { -public: + public: MediaPipeline(int port, quint64 length_msec); ~MediaPipeline(); @@ -38,12 +38,12 @@ public: void WriteData(const char* data, qint64 length); void EndStream(); -private: + private: static void NeedDataCallback(GstAppSrc* src, guint length, void* data); static void EnoughDataCallback(GstAppSrc* src, void* data); static gboolean SeekDataCallback(GstAppSrc* src, guint64 offset, void* data); -private: + private: Q_DISABLE_COPY(MediaPipeline) const int port_; @@ -59,4 +59,4 @@ private: quint64 offset_bytes_; }; -#endif // MEDIAPIPELINE_H +#endif // MEDIAPIPELINE_H diff --git a/ext/clementine-spotifyblob/spotify_utilities.cpp b/ext/clementine-spotifyblob/spotify_utilities.cpp index d49676c85..cfc077b96 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.cpp +++ b/ext/clementine-spotifyblob/spotify_utilities.cpp @@ -31,7 +31,8 @@ namespace utilities { QString GetCacheDirectory() { QString user_cache = GetUserDataDirectory(); - return user_cache + "/" + QCoreApplication::applicationName() + "/spotify-cache"; + return user_cache + "/" + QCoreApplication::applicationName() + + "/spotify-cache"; } #ifndef Q_OS_DARWIN // See spotify_utilities.mm for Mac implementation. @@ -47,10 +48,11 @@ QString GetSettingsDirectory() { QString ret; #ifdef Q_OS_WIN32 - ret = GetUserDataDirectory() + "/" + QCoreApplication::applicationName() + "/spotify-settings"; + ret = GetUserDataDirectory() + "/" + QCoreApplication::applicationName() + + "/spotify-settings"; #else ret = QFileInfo(QSettings().fileName()).absolutePath() + "/spotify-settings"; -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 // Create the directory QDir dir; @@ -59,6 +61,6 @@ QString GetSettingsDirectory() { return ret; } -#endif // Q_OS_DARWIN +#endif // Q_OS_DARWIN } // namespace utilities diff --git a/ext/clementine-spotifyblob/spotify_utilities.h b/ext/clementine-spotifyblob/spotify_utilities.h index 77481a540..52f103453 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.h +++ b/ext/clementine-spotifyblob/spotify_utilities.h @@ -32,7 +32,6 @@ QString GetUserDataDirectory(); QString GetCacheDirectory(); QString GetSettingsDirectory(); - } #endif diff --git a/ext/clementine-spotifyblob/spotify_utilities.mm b/ext/clementine-spotifyblob/spotify_utilities.mm index dcfad233b..b8a564b9b 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.mm +++ b/ext/clementine-spotifyblob/spotify_utilities.mm @@ -10,10 +10,8 @@ QString GetUserDataDirectory() { NSAutoreleasePool* pool = [NSAutoreleasePool alloc]; [pool init]; - NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSCachesDirectory, - NSUserDomainMask, - YES); + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, + NSUserDomainMask, YES); QString ret; if ([paths count] > 0) { NSString* user_path = [paths objectAtIndex:0]; @@ -28,9 +26,7 @@ QString GetUserDataDirectory() { QString GetSettingsDirectory() { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSApplicationSupportDirectory, - NSUserDomainMask, - YES); + NSApplicationSupportDirectory, NSUserDomainMask, YES); NSString* ret; if ([paths count] > 0) { ret = [paths objectAtIndex:0]; @@ -40,15 +36,13 @@ QString GetSettingsDirectory() { ret = [ret stringByAppendingString:@"/Clementine/spotify-settings"]; NSFileManager* file_manager = [NSFileManager defaultManager]; - [file_manager createDirectoryAtPath: - ret - withIntermediateDirectories:YES - attributes:nil - error:nil]; + [file_manager createDirectoryAtPath:ret + withIntermediateDirectories:YES + attributes:nil + error:nil]; QString path = QString::fromUtf8([ret UTF8String]); [pool drain]; return path; } - } diff --git a/ext/clementine-spotifyblob/spotifyclient.cpp b/ext/clementine-spotifyblob/spotifyclient.cpp index 751d3f8e8..e157d07d9 100644 --- a/ext/clementine-spotifyblob/spotifyclient.cpp +++ b/ext/clementine-spotifyblob/spotifyclient.cpp @@ -36,18 +36,18 @@ const int SpotifyClient::kSpotifyImageIDSize = 20; const int SpotifyClient::kWaveHeaderSize = 44; - SpotifyClient::SpotifyClient(QObject* parent) - : AbstractMessageHandler(nullptr, parent), - api_key_(QByteArray::fromBase64(kSpotifyApiKey)), - protocol_socket_(new QTcpSocket(this)), - session_(nullptr), - events_timer_(new QTimer(this)) { + : AbstractMessageHandler(nullptr, parent), + api_key_(QByteArray::fromBase64(kSpotifyApiKey)), + protocol_socket_(new QTcpSocket(this)), + session_(nullptr), + events_timer_(new QTimer(this)) { SetDevice(protocol_socket_); memset(&spotify_callbacks_, 0, sizeof(spotify_callbacks_)); memset(&spotify_config_, 0, sizeof(spotify_config_)); - memset(&playlistcontainer_callbacks_, 0, sizeof(playlistcontainer_callbacks_)); + memset(&playlistcontainer_callbacks_, 0, + sizeof(playlistcontainer_callbacks_)); memset(&get_playlists_callbacks_, 0, sizeof(get_playlists_callbacks_)); memset(&load_playlist_callbacks_, 0, sizeof(load_playlist_callbacks_)); @@ -64,15 +64,17 @@ SpotifyClient::SpotifyClient(QObject* parent) spotify_callbacks_.start_playback = &StartPlaybackCallback; spotify_callbacks_.stop_playback = &StopPlaybackCallback; - - playlistcontainer_callbacks_.container_loaded = &PlaylistContainerLoadedCallback; + playlistcontainer_callbacks_.container_loaded = + &PlaylistContainerLoadedCallback; playlistcontainer_callbacks_.playlist_added = &PlaylistAddedCallback; playlistcontainer_callbacks_.playlist_moved = &PlaylistMovedCallback; playlistcontainer_callbacks_.playlist_removed = &PlaylistRemovedCallback; - get_playlists_callbacks_.playlist_state_changed = &PlaylistStateChangedForGetPlaylists; + get_playlists_callbacks_.playlist_state_changed = + &PlaylistStateChangedForGetPlaylists; - load_playlist_callbacks_.playlist_state_changed = &PlaylistStateChangedForLoadPlaylist; + load_playlist_callbacks_.playlist_state_changed = + &PlaylistStateChangedForLoadPlaylist; QString cache = utilities::GetCacheDirectory(); qLog(Debug) << "Using:" << cache << "for Spotify cache"; @@ -111,41 +113,43 @@ void SpotifyClient::Init(quint16 port) { } void SpotifyClient::LoggedInCallback(sp_session* session, sp_error error) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); const bool success = error == SP_ERROR_OK; - pb::spotify::LoginResponse_Error error_code = pb::spotify::LoginResponse_Error_Other; + pb::spotify::LoginResponse_Error error_code = + pb::spotify::LoginResponse_Error_Other; if (!success) { qLog(Warning) << "Failed to login" << sp_error_message(error); } switch (error) { - case SP_ERROR_BAD_USERNAME_OR_PASSWORD: - error_code = pb::spotify::LoginResponse_Error_BadUsernameOrPassword; - break; - case SP_ERROR_USER_BANNED: - error_code = pb::spotify::LoginResponse_Error_UserBanned; - break; - case SP_ERROR_USER_NEEDS_PREMIUM : - error_code = pb::spotify::LoginResponse_Error_UserNeedsPremium; - break; - default: - error_code = pb::spotify::LoginResponse_Error_Other; - break; + case SP_ERROR_BAD_USERNAME_OR_PASSWORD: + error_code = pb::spotify::LoginResponse_Error_BadUsernameOrPassword; + break; + case SP_ERROR_USER_BANNED: + error_code = pb::spotify::LoginResponse_Error_UserBanned; + break; + case SP_ERROR_USER_NEEDS_PREMIUM: + error_code = pb::spotify::LoginResponse_Error_UserNeedsPremium; + break; + default: + error_code = pb::spotify::LoginResponse_Error_Other; + break; } me->SendLoginCompleted(success, sp_error_message(error), error_code); if (success) { - sp_playlistcontainer_add_callbacks( - sp_session_playlistcontainer(session), - &me->playlistcontainer_callbacks_, me); + sp_playlistcontainer_add_callbacks(sp_session_playlistcontainer(session), + &me->playlistcontainer_callbacks_, me); sp_session_flush_caches(me->session_); } } void SpotifyClient::NotifyMainThreadCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); QMetaObject::invokeMethod(me, "ProcessEvents", Qt::QueuedConnection); } @@ -160,14 +164,11 @@ void SpotifyClient::LogMessageCallback(sp_session* session, const char* data) { } void SpotifyClient::Search(const pb::spotify::SearchRequest& req) { - sp_search* search = sp_search_create( - session_, req.query().c_str(), - 0, req.limit(), - 0, req.limit_album(), - 0, 0, // artists - 0, 0, // playlists - SP_SEARCH_STANDARD, - &SearchCompleteCallback, this); + sp_search* search = + sp_search_create(session_, req.query().c_str(), 0, req.limit(), 0, + req.limit_album(), 0, 0, // artists + 0, 0, // playlists + SP_SEARCH_STANDARD, &SearchCompleteCallback, this); pending_searches_[search] = req; } @@ -184,10 +185,10 @@ void SpotifyClient::SearchCompleteCallback(sp_search* result, void* userdata) { // we can send our response. const int count = sp_search_num_albums(result); if (count != 0) { - for (int i=0 ; isession_, album, &SearchAlbumBrowseComplete, me); + sp_albumbrowse* browse = sp_albumbrowse_create( + me->session_, album, &SearchAlbumBrowseComplete, me); me->pending_search_album_browse_responses_[browse] = result; } @@ -197,7 +198,8 @@ void SpotifyClient::SearchCompleteCallback(sp_search* result, void* userdata) { me->SendSearchResponse(result); } -void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata) { +void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); if (!me->pending_search_album_browse_responses_.contains(result)) { @@ -208,7 +210,8 @@ void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, void* user sp_search* search = me->pending_search_album_browse_responses_.take(result); me->pending_search_album_browses_[search].append(result); - if (me->pending_search_album_browses_[search].count() >= sp_search_num_albums(search)) { + if (me->pending_search_album_browses_[search].count() >= + sp_search_num_albums(search)) { me->SendSearchResponse(search); } } @@ -235,14 +238,14 @@ void SpotifyClient::SendSearchResponse(sp_search* result) { // Get the list of tracks from the search int count = sp_search_num_tracks(result); - for (int i=0 ; iadd_result()); } // Get the albums from the search. All these should be resolved by now. QList browses = pending_search_album_browses_.take(result); - foreach (sp_albumbrowse* browse, browses) { + foreach(sp_albumbrowse * browse, browses) { sp_album* album = sp_albumbrowse_album(browse); pb::spotify::Album* msg = response->add_album(); @@ -251,7 +254,7 @@ void SpotifyClient::SendSearchResponse(sp_search* result) { // Add all tracks const int tracks = sp_albumbrowse_num_tracks(browse); - for (int i=0 ; iadd_track()); } @@ -290,16 +293,23 @@ void SpotifyClient::MessageArrived(const pb::spotify::Message& message) { } } -void SpotifyClient::SetPlaybackSettings(const pb::spotify::PlaybackSettings& req) { +void SpotifyClient::SetPlaybackSettings( + const pb::spotify::PlaybackSettings& req) { sp_bitrate bitrate = SP_BITRATE_320k; switch (req.bitrate()) { - case pb::spotify::Bitrate96k: bitrate = SP_BITRATE_96k; break; - case pb::spotify::Bitrate160k: bitrate = SP_BITRATE_160k; break; - case pb::spotify::Bitrate320k: bitrate = SP_BITRATE_320k; break; + case pb::spotify::Bitrate96k: + bitrate = SP_BITRATE_96k; + break; + case pb::spotify::Bitrate160k: + bitrate = SP_BITRATE_160k; + break; + case pb::spotify::Bitrate320k: + bitrate = SP_BITRATE_320k; + break; } - qLog(Debug) << "Setting playback settings: bitrate" - << bitrate << "normalisation" << req.volume_normalisation(); + qLog(Debug) << "Setting playback settings: bitrate" << bitrate + << "normalisation" << req.volume_normalisation(); sp_session_preferred_bitrate(session_, bitrate); sp_session_preferred_offline_bitrate(session_, bitrate, false); @@ -310,7 +320,8 @@ void SpotifyClient::Login(const pb::spotify::LoginRequest& req) { sp_error error = sp_session_create(&spotify_config_, &session_); if (error != SP_ERROR_OK) { qLog(Warning) << "Failed to create session" << sp_error_message(error); - SendLoginCompleted(false, sp_error_message(error), pb::spotify::LoginResponse_Error_Other); + SendLoginCompleted(false, sp_error_message(error), + pb::spotify::LoginResponse_Error_Other); return; } @@ -324,16 +335,15 @@ void SpotifyClient::Login(const pb::spotify::LoginRequest& req) { pb::spotify::LoginResponse_Error_ReloginFailed); } } else { - sp_session_login(session_, - req.username().c_str(), - req.password().c_str(), - true, // Remember the password. + sp_session_login(session_, req.username().c_str(), req.password().c_str(), + true, // Remember the password. nullptr); } } -void SpotifyClient::SendLoginCompleted(bool success, const QString& error, - pb::spotify::LoginResponse_Error error_code) { +void SpotifyClient::SendLoginCompleted( + bool success, const QString& error, + pb::spotify::LoginResponse_Error error_code) { pb::spotify::Message message; pb::spotify::LoginResponse* response = message.mutable_login_response(); @@ -347,12 +357,13 @@ void SpotifyClient::SendLoginCompleted(bool success, const QString& error, SendMessage(message); } -void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, void* userdata) { +void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Install callbacks on all the playlists const int count = sp_playlistcontainer_num_playlists(pc); - for (int i=0 ; iget_playlists_callbacks_, me); } @@ -360,7 +371,9 @@ void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, vo me->SendPlaylistList(); } -void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, void* userdata) { +void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Install callbacks on this playlist @@ -369,12 +382,16 @@ void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, sp_playlist* me->SendPlaylistList(); } -void SpotifyClient::PlaylistMovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, int new_position, void* userdata) { +void SpotifyClient::PlaylistMovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + int new_position, void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); me->SendPlaylistList(); } -void SpotifyClient::PlaylistRemovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, void* userdata) { +void SpotifyClient::PlaylistRemovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Remove callbacks from this playlist @@ -395,12 +412,13 @@ void SpotifyClient::SendPlaylistList() { const int count = sp_playlistcontainer_num_playlists(container); - for (int i=0 ; imutable_request() = req; SendMessage(message); return; } - sp_playlist_add_callbacks(pending_load.playlist_, &load_playlist_callbacks_, this); + sp_playlist_add_callbacks(pending_load.playlist_, &load_playlist_callbacks_, + this); pending_load_playlists_ << pending_load; PlaylistStateChangedForLoadPlaylist(pending_load.playlist_, this); } void SpotifyClient::SyncPlaylist(const pb::spotify::SyncPlaylistRequest& req) { - sp_playlist* playlist = GetPlaylist(req.request().type(), req.request().user_playlist_index()); + sp_playlist* playlist = + GetPlaylist(req.request().type(), req.request().user_playlist_index()); // The playlist should already be loaded. sp_playlist_set_offline_mode(session_, playlist, req.offline_sync()); } -void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata) { +void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // If the playlist isn't loaded yet we have to wait @@ -500,7 +524,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // Find this playlist's pending load object int pending_load_index = -1; PendingLoadPlaylist* pending_load = nullptr; - for (int i=0 ; ipending_load_playlists_.count() ; ++i) { + for (int i = 0; i < me->pending_load_playlists_.count(); ++i) { if (me->pending_load_playlists_[i].playlist_ == pl) { pending_load_index = i; pending_load = &me->pending_load_playlists_[i]; @@ -516,7 +540,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // If the playlist was just loaded then get all its tracks and ref them if (pending_load->tracks_.isEmpty()) { const int count = sp_playlist_num_tracks(pl); - for (int i=0 ; itracks_ << track; @@ -524,7 +548,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u } // If any of the tracks aren't loaded yet we have to wait - foreach (sp_track* track, pending_load->tracks_) { + foreach(sp_track * track, pending_load->tracks_) { if (!sp_track_is_loaded(track)) { qLog(Debug) << "One or more tracks aren't loaded yet, waiting"; return; @@ -533,17 +557,17 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // Everything is loaded so send the response protobuf and unref everything. pb::spotify::Message message; - pb::spotify::LoadPlaylistResponse* response = message.mutable_load_playlist_response(); + pb::spotify::LoadPlaylistResponse* response = + message.mutable_load_playlist_response(); // For some reason, we receive the starred tracks in reverse order but not // other playlists. if (pending_load->request_.type() == pb::spotify::Starred) { - std::reverse(pending_load->tracks_.begin(), - pending_load->tracks_.end()); + std::reverse(pending_load->tracks_.begin(), pending_load->tracks_.end()); } *response->mutable_request() = pending_load->request_; - foreach (sp_track* track, pending_load->tracks_) { + foreach(sp_track * track, pending_load->tracks_) { me->ConvertTrack(track, response->add_track()); sp_track_release(track); } @@ -557,7 +581,8 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u me->pending_load_playlists_.removeAt(pending_load_index); } -void SpotifyClient::PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata) { +void SpotifyClient::PlaylistStateChangedForGetPlaylists(sp_playlist* pl, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); me->SendPlaylistList(); @@ -576,15 +601,14 @@ void SpotifyClient::ConvertTrack(sp_track* track, pb::spotify::Track* pb) { pb->set_track(sp_track_index(track)); // Album art - const QByteArray art_id( - reinterpret_cast( - sp_album_cover(sp_track_album(track), SP_IMAGE_SIZE_LARGE)), - kSpotifyImageIDSize); + const QByteArray art_id(reinterpret_cast(sp_album_cover( + sp_track_album(track), SP_IMAGE_SIZE_LARGE)), + kSpotifyImageIDSize); const QString art_id_b64 = QString::fromAscii(art_id.toBase64()); pb->set_album_art_id(DataCommaSizeFromQString(art_id_b64)); // Artists - for (int i=0 ; iadd_artist(sp_artist_name(sp_track_artist(track, i))); } @@ -613,8 +637,8 @@ void SpotifyClient::ConvertAlbum(sp_album* album, pb::spotify::Track* pb) { // Album art const QByteArray art_id( - reinterpret_cast(sp_album_cover(album, SP_IMAGE_SIZE_LARGE)), - kSpotifyImageIDSize); + reinterpret_cast(sp_album_cover(album, SP_IMAGE_SIZE_LARGE)), + kSpotifyImageIDSize); const QString art_id_b64 = QString::fromAscii(art_id.toBase64()); pb->set_album_art_id(DataCommaSizeFromQString(art_id_b64)); @@ -627,25 +651,29 @@ void SpotifyClient::ConvertAlbum(sp_album* album, pb::spotify::Track* pb) { pb->set_uri(uri); } -void SpotifyClient::ConvertAlbumBrowse(sp_albumbrowse* browse, pb::spotify::Track* pb) { +void SpotifyClient::ConvertAlbumBrowse(sp_albumbrowse* browse, + pb::spotify::Track* pb) { pb->set_track(sp_albumbrowse_num_tracks(browse)); } void SpotifyClient::MetadataUpdatedCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); - foreach (const PendingLoadPlaylist& load, me->pending_load_playlists_) { + foreach(const PendingLoadPlaylist & load, me->pending_load_playlists_) { PlaylistStateChangedForLoadPlaylist(load.playlist_, me); } - foreach (const PendingPlaybackRequest& playback, me->pending_playback_requests_) { + foreach(const PendingPlaybackRequest & playback, + me->pending_playback_requests_) { me->TryPlaybackAgain(playback); } } -int SpotifyClient::MusicDeliveryCallback( - sp_session* session, const sp_audioformat* format, - const void* frames, int num_frames) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); +int SpotifyClient::MusicDeliveryCallback(sp_session* session, + const sp_audioformat* format, + const void* frames, int num_frames) { + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); if (!me->media_pipeline_) { return 0; @@ -668,21 +696,23 @@ int SpotifyClient::MusicDeliveryCallback( return 0; } - me->media_pipeline_->WriteData( - reinterpret_cast(frames), - num_frames * format->channels * 2); + me->media_pipeline_->WriteData(reinterpret_cast(frames), + num_frames * format->channels * 2); return num_frames; } void SpotifyClient::EndOfTrackCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); me->media_pipeline_.reset(); } -void SpotifyClient::StreamingErrorCallback(sp_session* session, sp_error error) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); +void SpotifyClient::StreamingErrorCallback(sp_session* session, + sp_error error) { + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); me->media_pipeline_.reset(); @@ -690,11 +720,13 @@ void SpotifyClient::StreamingErrorCallback(sp_session* session, sp_error error) me->SendPlaybackError(QString::fromUtf8(sp_error_message(error))); } -void SpotifyClient::ConnectionErrorCallback(sp_session* session, sp_error error) { +void SpotifyClient::ConnectionErrorCallback(sp_session* session, + sp_error error) { qLog(Debug) << Q_FUNC_INFO << sp_error_message(error); } -void SpotifyClient::UserMessageCallback(sp_session* session, const char* message) { +void SpotifyClient::UserMessageCallback(sp_session* session, + const char* message) { qLog(Debug) << Q_FUNC_INFO << message; } @@ -707,7 +739,8 @@ void SpotifyClient::StopPlaybackCallback(sp_session* session) { } void SpotifyClient::OfflineStatusUpdatedCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); sp_playlistcontainer* container = sp_session_playlistcontainer(session); if (!container) { qLog(Warning) << "sp_session_playlistcontainer returned nullptr"; @@ -716,8 +749,9 @@ void SpotifyClient::OfflineStatusUpdatedCallback(sp_session* session) { const int count = sp_playlistcontainer_num_playlists(container); - for (int i=0 ; imutable_request()->set_type(type); if (index != -1) { progress->mutable_request()->set_user_playlist_index(index); @@ -762,7 +797,7 @@ void SpotifyClient::SendDownloadProgress( int SpotifyClient::GetDownloadProgress(sp_playlist* playlist) { sp_playlist_offline_status status = - sp_playlist_get_offline_status(session_, playlist); + sp_playlist_get_offline_status(session_, playlist); switch (status) { case SP_PLAYLIST_OFFLINE_STATUS_NO: return -1; @@ -864,14 +899,14 @@ void SpotifyClient::LoadImage(const QString& id_b64) { PendingImageRequest pending_load; pending_load.id_ = id; pending_load.id_b64_ = id_b64; - pending_load.image_ = sp_image_create(session_, - reinterpret_cast(id.constData())); + pending_load.image_ = + sp_image_create(session_, reinterpret_cast(id.constData())); pending_image_requests_ << pending_load; if (!image_callbacks_registered_[pending_load.image_]) { sp_image_add_load_callback(pending_load.image_, &ImageLoaded, this); } - image_callbacks_registered_[pending_load.image_] ++; + image_callbacks_registered_[pending_load.image_]++; TryImageAgain(pending_load.image_); } @@ -885,7 +920,7 @@ void SpotifyClient::TryImageAgain(sp_image* image) { // Find the pending request for this image int index = -1; PendingImageRequest* req = nullptr; - for (int i=0 ; i(userdata); - if (!me->pending_album_browses_.contains(result)) - return; + if (!me->pending_album_browses_.contains(result)) return; QString uri = me->pending_album_browses_.take(result); pb::spotify::Message message; - pb::spotify::BrowseAlbumResponse* msg = message.mutable_browse_album_response(); + pb::spotify::BrowseAlbumResponse* msg = + message.mutable_browse_album_response(); msg->set_uri(DataCommaSizeFromQString(uri)); const int count = sp_albumbrowse_num_tracks(result); - for (int i=0 ; iConvertTrack(sp_albumbrowse_track(result, i), msg->add_track()); } @@ -970,32 +1006,32 @@ void SpotifyClient::AlbumBrowseComplete(sp_albumbrowse* result, void* userdata) sp_albumbrowse_release(result); } -void SpotifyClient::BrowseToplist(const pb::spotify::BrowseToplistRequest& req) { +void SpotifyClient::BrowseToplist( + const pb::spotify::BrowseToplistRequest& req) { sp_toplistbrowse* browse = sp_toplistbrowse_create( - session_, - SP_TOPLIST_TYPE_TRACKS, // TODO: Support albums and artists. - SP_TOPLIST_REGION_EVERYWHERE, // TODO: Support other regions. - nullptr, - &ToplistBrowseComplete, - this); + session_, SP_TOPLIST_TYPE_TRACKS, // TODO: Support albums and artists. + SP_TOPLIST_REGION_EVERYWHERE, // TODO: Support other regions. + nullptr, &ToplistBrowseComplete, this); pending_toplist_browses_[browse] = req; } -void SpotifyClient::ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata) { +void SpotifyClient::ToplistBrowseComplete(sp_toplistbrowse* result, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); qLog(Debug) << "Toplist browse request took:" - << sp_toplistbrowse_backend_request_duration(result) - << "ms"; + << sp_toplistbrowse_backend_request_duration(result) << "ms"; if (!me->pending_toplist_browses_.contains(result)) { return; } - const pb::spotify::BrowseToplistRequest& request = me->pending_toplist_browses_.take(result); + const pb::spotify::BrowseToplistRequest& request = + me->pending_toplist_browses_.take(result); pb::spotify::Message message; - pb::spotify::BrowseToplistResponse* msg = message.mutable_browse_toplist_response(); + pb::spotify::BrowseToplistResponse* msg = + message.mutable_browse_toplist_response(); msg->mutable_request()->CopyFrom(request); const int count = sp_toplistbrowse_num_tracks(result); diff --git a/ext/clementine-spotifyblob/spotifyclient.h b/ext/clementine-spotifyblob/spotifyclient.h index 300695aa1..47afbfd3b 100644 --- a/ext/clementine-spotifyblob/spotifyclient.h +++ b/ext/clementine-spotifyblob/spotifyclient.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef SPOTIFYCLIENT_H #define SPOTIFYCLIENT_H @@ -39,7 +38,7 @@ class ResponseMessage; class SpotifyClient : public AbstractMessageHandler { Q_OBJECT -public: + public: SpotifyClient(QObject* parent = 0); ~SpotifyClient(); @@ -48,14 +47,14 @@ public: void Init(quint16 port); -protected: + protected: void MessageArrived(const pb::spotify::Message& message); void DeviceClosed(); -private slots: + private slots: void ProcessEvents(); -private: + private: void SendLoginCompleted(bool success, const QString& error, pb::spotify::LoginResponse_Error error_code); void SendPlaybackError(const QString& error); @@ -64,49 +63,59 @@ private: // Spotify session callbacks. static void SP_CALLCONV LoggedInCallback(sp_session* session, sp_error error); static void SP_CALLCONV NotifyMainThreadCallback(sp_session* session); - static void SP_CALLCONV LogMessageCallback(sp_session* session, const char* data); - static void SP_CALLCONV SearchCompleteCallback(sp_search* result, void* userdata); + static void SP_CALLCONV + LogMessageCallback(sp_session* session, const char* data); + static void SP_CALLCONV + SearchCompleteCallback(sp_search* result, void* userdata); static void SP_CALLCONV MetadataUpdatedCallback(sp_session* session); - static int SP_CALLCONV MusicDeliveryCallback( - sp_session* session, const sp_audioformat* format, - const void* frames, int num_frames); + static int SP_CALLCONV + MusicDeliveryCallback(sp_session* session, const sp_audioformat* format, + const void* frames, int num_frames); static void SP_CALLCONV EndOfTrackCallback(sp_session* session); - static void SP_CALLCONV StreamingErrorCallback(sp_session* session, sp_error error); + static void SP_CALLCONV + StreamingErrorCallback(sp_session* session, sp_error error); static void SP_CALLCONV OfflineStatusUpdatedCallback(sp_session* session); - static void SP_CALLCONV ConnectionErrorCallback(sp_session* session, sp_error error); - static void SP_CALLCONV UserMessageCallback(sp_session* session, const char* message); + static void SP_CALLCONV + ConnectionErrorCallback(sp_session* session, sp_error error); + static void SP_CALLCONV + UserMessageCallback(sp_session* session, const char* message); static void SP_CALLCONV StartPlaybackCallback(sp_session* session); static void SP_CALLCONV StopPlaybackCallback(sp_session* session); // Spotify playlist container callbacks. - static void SP_CALLCONV PlaylistAddedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, void* userdata); - static void SP_CALLCONV PlaylistRemovedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, void* userdata); - static void SP_CALLCONV PlaylistMovedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, int new_position, void* userdata); - static void SP_CALLCONV PlaylistContainerLoadedCallback( - sp_playlistcontainer* pc, void* userdata); + static void SP_CALLCONV PlaylistAddedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, + int position, void* userdata); + static void SP_CALLCONV PlaylistRemovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, + int position, void* userdata); + static void SP_CALLCONV + PlaylistMovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, + int position, int new_position, void* userdata); + static void SP_CALLCONV + PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, void* userdata); // Spotify playlist callbacks - when loading the list of playlists // initially - static void SP_CALLCONV PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata); + static void SP_CALLCONV + PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata); // Spotify playlist callbacks - when loading a playlist - static void SP_CALLCONV PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata); + static void SP_CALLCONV + PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata); // Spotify image callbacks. static void SP_CALLCONV ImageLoaded(sp_image* image, void* userdata); // Spotify album browse callbacks. - static void SP_CALLCONV SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata); - static void SP_CALLCONV AlbumBrowseComplete(sp_albumbrowse* result, void* userdata); + static void SP_CALLCONV + SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata); + static void SP_CALLCONV + AlbumBrowseComplete(sp_albumbrowse* result, void* userdata); // Spotify toplist browse callbacks. - static void SP_CALLCONV ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata); + static void SP_CALLCONV + ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata); // Request handlers. void Login(const pb::spotify::LoginRequest& req); @@ -129,7 +138,7 @@ private: // Gets the appropriate sp_playlist* but does not load it. sp_playlist* GetPlaylist(pb::spotify::PlaylistType type, int user_index); -private: + private: struct PendingLoadPlaylist { pb::spotify::LoadPlaylistRequest request_; sp_playlist* playlist_; @@ -142,7 +151,7 @@ private: sp_link* link_; sp_track* track_; - bool operator ==(const PendingPlaybackRequest& other) const { + bool operator==(const PendingPlaybackRequest& other) const { return request_.track_uri() == other.request_.track_uri() && request_.media_port() == other.request_.media_port(); } @@ -157,7 +166,8 @@ private: void TryPlaybackAgain(const PendingPlaybackRequest& req); void TryImageAgain(sp_image* image); int GetDownloadProgress(sp_playlist* playlist); - void SendDownloadProgress(pb::spotify::PlaylistType type, int index, int download_progress); + void SendDownloadProgress(pb::spotify::PlaylistType type, int index, + int download_progress); QByteArray api_key_; @@ -178,7 +188,8 @@ private: QMap image_callbacks_registered_; QMap pending_searches_; QMap pending_album_browses_; - QMap pending_toplist_browses_; + QMap + pending_toplist_browses_; QMap > pending_search_album_browses_; QMap pending_search_album_browse_responses_; @@ -186,4 +197,4 @@ private: QScopedPointer media_pipeline_; }; -#endif // SPOTIFYCLIENT_H +#endif // SPOTIFYCLIENT_H diff --git a/ext/clementine-spotifyblob/spotifykey.h b/ext/clementine-spotifyblob/spotifykey.h index b4f6c13f4..22bedcb38 100644 --- a/ext/clementine-spotifyblob/spotifykey.h +++ b/ext/clementine-spotifyblob/spotifykey.h @@ -18,16 +18,20 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - // The Spotify terms of service require that application keys are not // accessible to third parties. Therefore this application key is heavily // encrypted here in the source to prevent third parties from viewing it. // It is most definitely not base64 encoded. static const char* kSpotifyApiKey = - "AVlOrvJkKx8T+LEsCk+Kyl24I0MSsjohZAtMFzm2O5Lms1bmAWFWgdZaHkpypzSJPmSd+Wi50wwg" - "JwVCU0sq4Lep1zB4t6Z8h26NK6+z8gmkHVkV9DRPkRgebcUkWTDTflwVPKWF4+gdRjUwprsqBw6O" - "iofRLJzeKaxbmaUGqkSkxVLOiXC9lxylNq6ju7Q7uY8u8XkDUsVM3YIxiWy2+EM7I/lhatzT9xrq" - "rxHe2lg7CzOwF5kuFdwgmi8MQ72xTYXIKnNlOry/hJDlN9lKxkbUBLh+pzbYvO92S2fYKK5PAHvX" - "5+SmSBGbh6dlpHeCGqb8MPdaeZ5I1YxMcDkxa2+tbLA/Muat7gKA9u57TFCtYjun/u/i/ONwdBIQ" - "rePzXZjipO32kYmQAiCkN1p8sgQEcF43QxaVwXGo2X0rRnJf"; + "AVlOrvJkKx8T+LEsCk+Kyl24I0MSsjohZAtMFzm2O5Lms1bmAWFWgdZaHkpypzSJPmSd+" + "Wi50wwg" + "JwVCU0sq4Lep1zB4t6Z8h26NK6+z8gmkHVkV9DRPkRgebcUkWTDTflwVPKWF4+" + "gdRjUwprsqBw6O" + "iofRLJzeKaxbmaUGqkSkxVLOiXC9lxylNq6ju7Q7uY8u8XkDUsVM3YIxiWy2+EM7I/" + "lhatzT9xrq" + "rxHe2lg7CzOwF5kuFdwgmi8MQ72xTYXIKnNlOry/" + "hJDlN9lKxkbUBLh+pzbYvO92S2fYKK5PAHvX" + "5+SmSBGbh6dlpHeCGqb8MPdaeZ5I1YxMcDkxa2+tbLA/Muat7gKA9u57TFCtYjun/u/i/" + "ONwdBIQ" + "rePzXZjipO32kYmQAiCkN1p8sgQEcF43QxaVwXGo2X0rRnJf"; diff --git a/ext/clementine-tagreader/main.cpp b/ext/clementine-tagreader/main.cpp index bebc58e7b..c5e5cfeb1 100644 --- a/ext/clementine-tagreader/main.cpp +++ b/ext/clementine-tagreader/main.cpp @@ -31,15 +31,17 @@ int main(int argc, char** argv) { QStringList args(a.arguments()); if (args.count() != 2) { - std::cerr << "This program is used internally by Clementine to parse tags in music files\n" - "without exposing the whole application to crashes caused by malformed\n" + std::cerr << "This program is used internally by Clementine to parse tags " + "in music files\n" + "without exposing the whole application to crashes caused by " + "malformed\n" "files. It is not meant to be run on its own.\n"; return 1; } // Seed random number generator timeval time; - gettimeofday(&time,nullptr); + gettimeofday(&time, nullptr); qsrand((time.tv_sec * 1000) + (time.tv_usec / 1000)); logging::Init(); diff --git a/ext/clementine-tagreader/tagreaderworker.cpp b/ext/clementine-tagreader/tagreaderworker.cpp index eb19dd1b5..e4b0b2c9b 100644 --- a/ext/clementine-tagreader/tagreaderworker.cpp +++ b/ext/clementine-tagreader/tagreaderworker.cpp @@ -24,11 +24,8 @@ #include #include - TagReaderWorker::TagReaderWorker(QIODevice* socket, QObject* parent) - : AbstractMessageHandler(socket, parent) -{ -} + : AbstractMessageHandler(socket, parent) {} void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { pb::tagreader::Message reply; @@ -42,42 +39,44 @@ void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { #endif if (message.has_read_file_request()) { - tag_reader_.ReadFile(QStringFromStdString(message.read_file_request().filename()), - reply.mutable_read_file_response()->mutable_metadata()); + tag_reader_.ReadFile( + QStringFromStdString(message.read_file_request().filename()), + reply.mutable_read_file_response()->mutable_metadata()); } else if (message.has_save_file_request()) { - reply.mutable_save_file_response()->set_success( - tag_reader_.SaveFile(QStringFromStdString(message.save_file_request().filename()), - message.save_file_request().metadata())); + reply.mutable_save_file_response()->set_success(tag_reader_.SaveFile( + QStringFromStdString(message.save_file_request().filename()), + message.save_file_request().metadata())); } else if (message.has_save_song_statistics_to_file_request()) { reply.mutable_save_song_statistics_to_file_response()->set_success( tag_reader_.SaveSongStatisticsToFile( - QStringFromStdString(message.save_song_statistics_to_file_request().filename()), + QStringFromStdString( + message.save_song_statistics_to_file_request().filename()), message.save_song_statistics_to_file_request().metadata())); } else if (message.has_save_song_rating_to_file_request()) { reply.mutable_save_song_rating_to_file_response()->set_success( tag_reader_.SaveSongRatingToFile( - QStringFromStdString(message.save_song_rating_to_file_request().filename()), + QStringFromStdString( + message.save_song_rating_to_file_request().filename()), message.save_song_rating_to_file_request().metadata())); } else if (message.has_is_media_file_request()) { - reply.mutable_is_media_file_response()->set_success( - tag_reader_.IsMediaFile(QStringFromStdString(message.is_media_file_request().filename()))); + reply.mutable_is_media_file_response()->set_success(tag_reader_.IsMediaFile( + QStringFromStdString(message.is_media_file_request().filename()))); } else if (message.has_load_embedded_art_request()) { QByteArray data = tag_reader_.LoadEmbeddedArt( - QStringFromStdString(message.load_embedded_art_request().filename())); - reply.mutable_load_embedded_art_response()->set_data( - data.constData(), data.size()); + QStringFromStdString(message.load_embedded_art_request().filename())); + reply.mutable_load_embedded_art_response()->set_data(data.constData(), + data.size()); } else if (message.has_read_cloud_file_request()) { #ifdef HAVE_GOOGLE_DRIVE const pb::tagreader::ReadCloudFileRequest& req = message.read_cloud_file_request(); if (!tag_reader_.ReadCloudFile( - QUrl::fromEncoded(QByteArray(req.download_url().data(), - req.download_url().size())), - QStringFromStdString(req.title()), - req.size(), - QStringFromStdString(req.mime_type()), - QStringFromStdString(req.authorisation_header()), - reply.mutable_read_cloud_file_response()->mutable_metadata())) { + QUrl::fromEncoded(QByteArray(req.download_url().data(), + req.download_url().size())), + QStringFromStdString(req.title()), req.size(), + QStringFromStdString(req.mime_type()), + QStringFromStdString(req.authorisation_header()), + reply.mutable_read_cloud_file_response()->mutable_metadata())) { reply.mutable_read_cloud_file_response()->clear_metadata(); } #endif @@ -86,10 +85,8 @@ void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { SendReply(message, &reply); } - void TagReaderWorker::DeviceClosed() { AbstractMessageHandler::DeviceClosed(); qApp->exit(); } - diff --git a/ext/clementine-tagreader/tagreaderworker.h b/ext/clementine-tagreader/tagreaderworker.h index a2e6eea0a..796671d24 100644 --- a/ext/clementine-tagreader/tagreaderworker.h +++ b/ext/clementine-tagreader/tagreaderworker.h @@ -24,15 +24,15 @@ #include "core/messagehandler.h" class TagReaderWorker : public AbstractMessageHandler { -public: + public: TagReaderWorker(QIODevice* socket, QObject* parent = NULL); -protected: + protected: void MessageArrived(const pb::tagreader::Message& message); void DeviceClosed(); -private: + private: TagReader tag_reader_; }; -#endif // TAGREADERWORKER_H +#endif // TAGREADERWORKER_H diff --git a/ext/libclementine-common/core/closure.cpp b/ext/libclementine-common/core/closure.cpp index e2c27c13f..bd943c0eb 100644 --- a/ext/libclementine-common/core/closure.cpp +++ b/ext/libclementine-common/core/closure.cpp @@ -23,34 +23,22 @@ namespace _detail { -ClosureBase::ClosureBase(ObjectHelper* helper) - : helper_(helper) { -} +ClosureBase::ClosureBase(ObjectHelper* helper) : helper_(helper) {} -ClosureBase::~ClosureBase() { -} +ClosureBase::~ClosureBase() {} -CallbackClosure::CallbackClosure( - QObject* sender, - const char* signal, - std::function callback) - : ClosureBase(new ObjectHelper(sender, signal, this)), - callback_(callback) { -} +CallbackClosure::CallbackClosure(QObject* sender, const char* signal, + std::function callback) + : ClosureBase(new ObjectHelper(sender, signal, this)), + callback_(callback) {} -void CallbackClosure::Invoke() { - callback_(); -} +void CallbackClosure::Invoke() { callback_(); } -ObjectHelper* ClosureBase::helper() const { - return helper_; -} +ObjectHelper* ClosureBase::helper() const { return helper_; } -ObjectHelper::ObjectHelper( - QObject* sender, - const char* signal, - ClosureBase* closure) - : closure_(closure) { +ObjectHelper::ObjectHelper(QObject* sender, const char* signal, + ClosureBase* closure) + : closure_(closure) { connect(sender, signal, SLOT(Invoked())); connect(sender, SIGNAL(destroyed()), SLOT(deleteLater())); } @@ -64,12 +52,9 @@ void Unpack(QList*) {} } // namespace _detail -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - std::function callback) { - return new _detail::CallbackClosure( - sender, signal, callback); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback) { + return new _detail::CallbackClosure(sender, signal, callback); } void DoAfter(QObject* receiver, const char* slot, int msec) { diff --git a/ext/libclementine-common/core/closure.h b/ext/libclementine-common/core/closure.h index bb874d05f..9b41a332e 100644 --- a/ext/libclementine-common/core/closure.h +++ b/ext/libclementine-common/core/closure.h @@ -52,10 +52,7 @@ class ClosureBase { class ObjectHelper : public QObject { Q_OBJECT public: - ObjectHelper( - QObject* parent, - const char* signal, - ClosureBase* closure); + ObjectHelper(QObject* parent, const char* signal, ClosureBase* closure); private slots: void Invoked(); @@ -76,7 +73,8 @@ void Unpack(QList* list, const Arg& arg) { } template -void Unpack(QList* list, const Head& head, const Tail&... tail) { +void Unpack(QList* list, const Head& head, + const Tail&... tail) { Unpack(list, head); Unpack(list, tail...); } @@ -84,45 +82,39 @@ void Unpack(QList* list, const Head& head, const Tail&... tail template class Closure : public ClosureBase { public: - Closure( - QObject* sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) - : ClosureBase(new ObjectHelper(sender, signal, this)), - // std::bind is the easiest way to store an argument list. - function_(std::bind(&Closure::Call, this, args...)), - receiver_(receiver) { + Closure(QObject* sender, const char* signal, QObject* receiver, + const char* slot, const Args&... args) + : ClosureBase(new ObjectHelper(sender, signal, this)), + // std::bind is the easiest way to store an argument list. + function_(std::bind(&Closure::Call, this, args...)), + receiver_(receiver) { const QMetaObject* meta_receiver = receiver->metaObject(); QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1); const int index = meta_receiver->indexOfSlot(normalised_slot.constData()); Q_ASSERT(index != -1); slot_ = meta_receiver->method(index); - QObject::connect(receiver_, SIGNAL(destroyed()), helper_, SLOT(deleteLater())); + QObject::connect(receiver_, SIGNAL(destroyed()), helper_, + SLOT(deleteLater())); } - virtual void Invoke() { - function_(); - } + virtual void Invoke() { function_(); } private: void Call(const Args&... args) { QList arg_list; Unpack(&arg_list, args...); - slot_.invoke( - receiver_, - arg_list.size() > 0 ? arg_list[0] : QGenericArgument(), - arg_list.size() > 1 ? arg_list[1] : QGenericArgument(), - arg_list.size() > 2 ? arg_list[2] : QGenericArgument(), - arg_list.size() > 3 ? arg_list[3] : QGenericArgument(), - arg_list.size() > 4 ? arg_list[4] : QGenericArgument(), - arg_list.size() > 5 ? arg_list[5] : QGenericArgument(), - arg_list.size() > 6 ? arg_list[6] : QGenericArgument(), - arg_list.size() > 7 ? arg_list[7] : QGenericArgument(), - arg_list.size() > 8 ? arg_list[8] : QGenericArgument(), - arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); + slot_.invoke(receiver_, + arg_list.size() > 0 ? arg_list[0] : QGenericArgument(), + arg_list.size() > 1 ? arg_list[1] : QGenericArgument(), + arg_list.size() > 2 ? arg_list[2] : QGenericArgument(), + arg_list.size() > 3 ? arg_list[3] : QGenericArgument(), + arg_list.size() > 4 ? arg_list[4] : QGenericArgument(), + arg_list.size() > 5 ? arg_list[5] : QGenericArgument(), + arg_list.size() > 6 ? arg_list[6] : QGenericArgument(), + arg_list.size() > 7 ? arg_list[7] : QGenericArgument(), + arg_list.size() > 8 ? arg_list[8] : QGenericArgument(), + arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); } std::function function_; @@ -133,20 +125,10 @@ class Closure : public ClosureBase { template class SharedClosure : public Closure { public: - SharedClosure( - QSharedPointer sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) - : Closure( - sender.data(), - signal, - receiver, - slot, - args...), - data_(sender) { - } + SharedClosure(QSharedPointer sender, const char* signal, QObject* receiver, + const char* slot, const Args&... args) + : Closure(sender.data(), signal, receiver, slot, args...), + data_(sender) {} private: QSharedPointer data_; @@ -154,10 +136,8 @@ class SharedClosure : public Closure { class CallbackClosure : public ClosureBase { public: - CallbackClosure( - QObject* sender, - const char* signal, - std::function callback); + CallbackClosure(QObject* sender, const char* signal, + std::function callback); virtual void Invoke(); @@ -168,61 +148,45 @@ class CallbackClosure : public ClosureBase { } // namespace _detail template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) { - return new _detail::Closure( - sender, signal, receiver, slot, args...); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + QObject* receiver, const char* slot, + const Args&... args) { + return new _detail::Closure(sender, signal, receiver, slot, args...); } // QSharedPointer variant template -_detail::ClosureBase* NewClosure( - QSharedPointer sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) { - return new _detail::SharedClosure( - sender, signal, receiver, slot, args...); +_detail::ClosureBase* NewClosure(QSharedPointer sender, const char* signal, + QObject* receiver, const char* slot, + const Args&... args) { + return new _detail::SharedClosure(sender, signal, receiver, slot, + args...); } -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - std::function callback); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback); template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - std::function callback, - const Args&... args) { +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback, + const Args&... args) { return NewClosure(sender, signal, std::bind(callback, args...)); } template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - void (*callback)(Args...), - const Args&... args) { +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + void (*callback)(Args...), + const Args&... args) { return NewClosure(sender, signal, std::bind(callback, args...)); } template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - T* receiver, Unused (T::*callback)(Args...), - const Args&... args) { +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + T* receiver, Unused (T::*callback)(Args...), + const Args&... args) { return NewClosure(sender, signal, std::bind(callback, receiver, args...)); } - void DoAfter(QObject* receiver, const char* slot, int msec); void DoInAMinuteOrSo(QObject* receiver, const char* slot); diff --git a/ext/libclementine-common/core/concurrentrun.h b/ext/libclementine-common/core/concurrentrun.h index 58fc05577..81c0d8b7f 100644 --- a/ext/libclementine-common/core/concurrentrun.h +++ b/ext/libclementine-common/core/concurrentrun.h @@ -41,13 +41,13 @@ ThreadFunctor object and start it. */ - /* Base abstract classes ThreadFunctorBase and ThreadFunctor (for void and non-void result): */ -template -class ThreadFunctorBase : public QFutureInterface, public QRunnable { +template +class ThreadFunctorBase : public QFutureInterface, + public QRunnable { public: ThreadFunctorBase() {} @@ -68,10 +68,8 @@ class ThreadFunctorBase : public QFutureInterface, public QRunnable template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(std::function function, - Args... args) - : function_(std::bind(function, args...)) { - } + ThreadFunctor(std::function function, Args... args) + : function_(std::bind(function, args...)) {} virtual void run() { this->reportResult(function_()); @@ -84,12 +82,10 @@ class ThreadFunctor : public ThreadFunctorBase { // Partial specialisation for void return type. template -class ThreadFunctor : public ThreadFunctorBase { +class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(std::function function, - Args... args) - : function_(std::bind(function, args...)) { - } + ThreadFunctor(std::function function, Args... args) + : function_(std::bind(function, args...)) {} virtual void run() { function_(); @@ -100,39 +96,33 @@ class ThreadFunctor : public ThreadFunctorBase { std::function function_; }; - /* Run functions */ namespace ConcurrentRun { - // Empty argument form. - template - QFuture Run( - QThreadPool* threadpool, - std::function function) { - return (new ThreadFunctor(function))->Start(threadpool); - } - - // Function object with arguments form. - template - QFuture Run( - QThreadPool* threadpool, - std::function function, - const Args&... args) { - return (new ThreadFunctor( - function, args...))->Start(threadpool); - } - - // Support passing C function pointers instead of function objects. - template - QFuture Run( - QThreadPool* threadpool, - ReturnType (*function) (Args...), - const Args&... args) { - return Run( - threadpool, std::function(function), args...); - } +// Empty argument form. +template +QFuture Run(QThreadPool* threadpool, + std::function function) { + return (new ThreadFunctor(function))->Start(threadpool); } -#endif // CONCURRENTRUN_H +// Function object with arguments form. +template +QFuture Run(QThreadPool* threadpool, + std::function function, + const Args&... args) { + return (new ThreadFunctor(function, args...)) + ->Start(threadpool); +} + +// Support passing C function pointers instead of function objects. +template +QFuture Run(QThreadPool* threadpool, + ReturnType (*function)(Args...), const Args&... args) { + return Run(threadpool, std::function(function), args...); +} +} + +#endif // CONCURRENTRUN_H diff --git a/ext/libclementine-common/core/logging.cpp b/ext/libclementine-common/core/logging.cpp index 51c4ed4f8..414615a15 100644 --- a/ext/libclementine-common/core/logging.cpp +++ b/ext/libclementine-common/core/logging.cpp @@ -33,7 +33,6 @@ #include "logging.h" - namespace logging { static Level sDefaultLevel = Level_Debug; @@ -46,18 +45,25 @@ static const char* kMessageHandlerMagic = "__logging_message__"; static const int kMessageHandlerMagicLength = strlen(kMessageHandlerMagic); static QtMsgHandler sOriginalMessageHandler = nullptr; - void GLog(const char* domain, int level, const char* message, void* user_data) { switch (level) { case G_LOG_FLAG_RECURSION: case G_LOG_FLAG_FATAL: case G_LOG_LEVEL_ERROR: - case G_LOG_LEVEL_CRITICAL: qLog(Error) << message; break; - case G_LOG_LEVEL_WARNING: qLog(Warning) << message; break; + case G_LOG_LEVEL_CRITICAL: + qLog(Error) << message; + break; + case G_LOG_LEVEL_WARNING: + qLog(Warning) << message; + break; case G_LOG_LEVEL_MESSAGE: - case G_LOG_LEVEL_INFO: qLog(Info) << message; break; + case G_LOG_LEVEL_INFO: + qLog(Info) << message; + break; case G_LOG_LEVEL_DEBUG: - default: qLog(Debug) << message; break; + default: + qLog(Debug) << message; + break; } } @@ -70,13 +76,19 @@ static void MessageHandler(QtMsgType type, const char* message) { Level level = Level_Debug; switch (type) { case QtFatalMsg: - case QtCriticalMsg: level = Level_Error; break; - case QtWarningMsg: level = Level_Warning; break; + case QtCriticalMsg: + level = Level_Error; + break; + case QtWarningMsg: + level = Level_Warning; + break; case QtDebugMsg: - default: level = Level_Debug; break; + default: + level = Level_Debug; + break; } - foreach (const QString& line, QString::fromLocal8Bit(message).split('\n')) { + foreach(const QString & line, QString::fromLocal8Bit(message).split('\n')) { CreateLogger(level, "unknown", -1) << line.toLocal8Bit().constData(); } @@ -85,7 +97,6 @@ static void MessageHandler(QtMsgType type, const char* message) { } } - void Init() { delete sClassLevels; delete sNullDevice; @@ -100,10 +111,9 @@ void Init() { } void SetLevels(const QString& levels) { - if (!sClassLevels) - return; + if (!sClassLevels) return; - foreach (const QString& item, levels.split(',')) { + foreach(const QString & item, levels.split(',')) { const QStringList class_level = item.split(':'); QString class_name; @@ -122,14 +132,14 @@ void SetLevels(const QString& levels) { } if (class_name.isEmpty() || class_name == "*") { - sDefaultLevel = (Level) level; + sDefaultLevel = (Level)level; } else { - sClassLevels->insert(class_name, (Level) level); + sClassLevels->insert(class_name, (Level)level); } } } -QString ParsePrettyFunction(const char * pretty_function) { +QString ParsePrettyFunction(const char* pretty_function) { // Get the class name out of the function name. QString class_name = pretty_function; const int paren = class_name.indexOf('('); @@ -144,7 +154,7 @@ QString ParsePrettyFunction(const char * pretty_function) { const int space = class_name.lastIndexOf(' '); if (space != -1) { - class_name = class_name.mid(space+1); + class_name = class_name.mid(space + 1); } return class_name; @@ -154,11 +164,21 @@ QDebug CreateLogger(Level level, const QString& class_name, int line) { // Map the level to a string const char* level_name = nullptr; switch (level) { - case Level_Debug: level_name = " DEBUG "; break; - case Level_Info: level_name = " INFO "; break; - case Level_Warning: level_name = " WARN "; break; - case Level_Error: level_name = " ERROR "; break; - case Level_Fatal: level_name = " FATAL "; break; + case Level_Debug: + level_name = " DEBUG "; + break; + case Level_Info: + level_name = " INFO "; + break; + case Level_Warning: + level_name = " WARN "; + break; + case Level_Error: + level_name = " ERROR "; + break; + case Level_Fatal: + level_name = " FATAL "; + break; } // Check the settings to see if we're meant to show or hide this message. @@ -182,9 +202,11 @@ QDebug CreateLogger(Level level, const QString& class_name, int line) { } QDebug ret(type); - ret.nospace() << kMessageHandlerMagic - << QDateTime::currentDateTime().toString("hh:mm:ss.zzz").toAscii().constData() - << level_name << function_line.leftJustified(32).toAscii().constData(); + ret.nospace() << kMessageHandlerMagic << QDateTime::currentDateTime() + .toString("hh:mm:ss.zzz") + .toAscii() + .constData() << level_name + << function_line.leftJustified(32).toAscii().constData(); return ret.space(); } @@ -192,10 +214,7 @@ QDebug CreateLogger(Level level, const QString& class_name, int line) { QString CXXDemangle(const QString& mangled_function) { int status; char* demangled_function = abi::__cxa_demangle( - mangled_function.toAscii().constData(), - nullptr, - nullptr, - &status); + mangled_function.toAscii().constData(), nullptr, nullptr, &status); if (status == 0) { QString ret = QString::fromAscii(demangled_function); free(demangled_function); @@ -232,8 +251,10 @@ QString DemangleSymbol(const QString& symbol) { void DumpStackTrace() { #ifdef Q_OS_UNIX void* callstack[128]; - int callstack_size = backtrace(reinterpret_cast(&callstack), sizeof(callstack)); - char** symbols = backtrace_symbols(reinterpret_cast(&callstack), callstack_size); + int callstack_size = + backtrace(reinterpret_cast(&callstack), sizeof(callstack)); + char** symbols = + backtrace_symbols(reinterpret_cast(&callstack), callstack_size); // Start from 1 to skip ourself. for (int i = 1; i < callstack_size; ++i) { qLog(Debug) << DemangleSymbol(QString::fromAscii(symbols[i])); @@ -244,4 +265,4 @@ void DumpStackTrace() { #endif } -} // namespace logging +} // namespace logging diff --git a/ext/libclementine-common/core/logging.h b/ext/libclementine-common/core/logging.h index 3c582cf73..8cba187ea 100644 --- a/ext/libclementine-common/core/logging.h +++ b/ext/libclementine-common/core/logging.h @@ -18,46 +18,47 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef LOGGING_H #define LOGGING_H #include #ifdef QT_NO_DEBUG_STREAM -# define qLog(level) while (false) QNoDebug() +#define qLog(level) \ + while (false) QNoDebug() #else -# define qLog(level) \ - logging::CreateLogger(logging::Level_##level, \ - logging::ParsePrettyFunction(__PRETTY_FUNCTION__), __LINE__) +#define qLog(level) \ + logging::CreateLogger(logging::Level_##level, \ + logging::ParsePrettyFunction(__PRETTY_FUNCTION__), \ + __LINE__) #endif namespace logging { - class NullDevice : public QIODevice { - protected: - qint64 readData(char*, qint64) { return -1; } - qint64 writeData(const char*, qint64 len) { return len; } - }; +class NullDevice : public QIODevice { + protected: + qint64 readData(char*, qint64) { return -1; } + qint64 writeData(const char*, qint64 len) { return len; } +}; - enum Level { - Level_Fatal = -1, - Level_Error = 0, - Level_Warning, - Level_Info, - Level_Debug, - }; +enum Level { + Level_Fatal = -1, + Level_Error = 0, + Level_Warning, + Level_Info, + Level_Debug, +}; - void Init(); - void SetLevels(const QString& levels); +void Init(); +void SetLevels(const QString& levels); - void DumpStackTrace(); +void DumpStackTrace(); - QString ParsePrettyFunction(const char* pretty_function); - QDebug CreateLogger(Level level, const QString& class_name, int line); +QString ParsePrettyFunction(const char* pretty_function); +QDebug CreateLogger(Level level, const QString& class_name, int line); - void GLog(const char* domain, int level, const char* message, void* user_data); +void GLog(const char* domain, int level, const char* message, void* user_data); - extern const char* kDefaultLogLevels; +extern const char* kDefaultLogLevels; } -#endif // LOGGING_H +#endif // LOGGING_H diff --git a/ext/libclementine-common/core/messagehandler.cpp b/ext/libclementine-common/core/messagehandler.cpp index d0de5297e..1ea64929b 100644 --- a/ext/libclementine-common/core/messagehandler.cpp +++ b/ext/libclementine-common/core/messagehandler.cpp @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #include "messagehandler.h" #include "core/logging.h" @@ -26,13 +25,13 @@ #include _MessageHandlerBase::_MessageHandlerBase(QIODevice* device, QObject* parent) - : QObject(parent), - device_(nullptr), - flush_abstract_socket_(nullptr), - flush_local_socket_(nullptr), - reading_protobuf_(false), - expected_length_(0), - is_device_closed_(false) { + : QObject(parent), + device_(nullptr), + flush_abstract_socket_(nullptr), + flush_local_socket_(nullptr), + reading_protobuf_(false), + expected_length_(0), + is_device_closed_(false) { if (device) { SetDevice(device); } diff --git a/ext/libclementine-common/core/messagehandler.h b/ext/libclementine-common/core/messagehandler.h index cd2ec285b..405334147 100644 --- a/ext/libclementine-common/core/messagehandler.h +++ b/ext/libclementine-common/core/messagehandler.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef MESSAGEHANDLER_H #define MESSAGEHANDLER_H @@ -37,11 +36,8 @@ class QAbstractSocket; class QIODevice; class QLocalSocket; -#define QStringFromStdString(x) \ - QString::fromUtf8(x.data(), x.size()) -#define DataCommaSizeFromQString(x) \ - x.toUtf8().constData(), x.toUtf8().length() - +#define QStringFromStdString(x) QString::fromUtf8(x.data(), x.size()) +#define DataCommaSizeFromQString(x) x.toUtf8().constData(), x.toUtf8().length() // Reads and writes uint32 length encoded protobufs to a socket. // This base QObject is separate from AbstractMessageHandler because moc can't @@ -49,7 +45,7 @@ class QLocalSocket; class _MessageHandlerBase : public QObject { Q_OBJECT -public: + public: // device can be NULL, in which case you must call SetDevice before writing // any messages. _MessageHandlerBase(QIODevice* device, QObject* parent); @@ -59,16 +55,16 @@ public: // After this is true, messages cannot be sent to the handler any more. bool is_device_closed() const { return is_device_closed_; } -protected slots: + protected slots: void WriteMessage(const QByteArray& data); void DeviceReadyRead(); virtual void DeviceClosed(); -protected: + protected: virtual bool RawMessageArrived(const QByteArray& data) = 0; virtual void AbortAll() = 0; -protected: + protected: typedef bool (QAbstractSocket::*FlushAbstractSocket)(); typedef bool (QLocalSocket::*FlushLocalSocket)(); @@ -83,13 +79,12 @@ protected: bool is_device_closed_; }; - // Reads and writes uint32 length encoded MessageType messages to a socket. // You should subclass this and implement the MessageArrived(MessageType) // method. template class AbstractMessageHandler : public _MessageHandlerBase { -public: + public: AbstractMessageHandler(QIODevice* device, QObject* parent); ~AbstractMessageHandler() { AbortAll(); } @@ -113,7 +108,7 @@ public: // reply on the socket. Used on the worker side. void SendReply(const MessageType& request, MessageType* reply); -protected: + protected: // Called when a message is received from the socket. virtual void MessageArrived(const MessageType& message) {} @@ -121,19 +116,16 @@ protected: bool RawMessageArrived(const QByteArray& data); void AbortAll(); -private: + private: QMap pending_replies_; }; +template +AbstractMessageHandler::AbstractMessageHandler(QIODevice* device, + QObject* parent) + : _MessageHandlerBase(device, parent) {} -template -AbstractMessageHandler::AbstractMessageHandler( - QIODevice* device, QObject* parent) - : _MessageHandlerBase(device, parent) -{ -} - -template +template void AbstractMessageHandler::SendMessage(const MessageType& message) { Q_ASSERT(QThread::currentThread() == thread()); @@ -141,27 +133,28 @@ void AbstractMessageHandler::SendMessage(const MessageType& message) { WriteMessage(QByteArray(data.data(), data.size())); } -template +template void AbstractMessageHandler::SendMessageAsync(const MessageType& message) { std::string data = message.SerializeAsString(); - metaObject()->invokeMethod(this, "WriteMessage", Qt::QueuedConnection, - Q_ARG(QByteArray, QByteArray(data.data(), data.size()))); + metaObject()->invokeMethod( + this, "WriteMessage", Qt::QueuedConnection, + Q_ARG(QByteArray, QByteArray(data.data(), data.size()))); } -template +template void AbstractMessageHandler::SendRequest(ReplyType* reply) { pending_replies_[reply->id()] = reply; SendMessage(reply->request_message()); } -template +template void AbstractMessageHandler::SendReply(const MessageType& request, MessageType* reply) { reply->set_id(request.id()); SendMessage(*reply); } -template +template bool AbstractMessageHandler::RawMessageArrived(const QByteArray& data) { MessageType message; if (!message.ParseFromArray(data.constData(), data.size())) { @@ -180,14 +173,10 @@ bool AbstractMessageHandler::RawMessageArrived(const QByteArray& data) { return true; } -template +template void AbstractMessageHandler::AbortAll() { - foreach (ReplyType* reply, pending_replies_) { - reply->Abort(); - } + foreach(ReplyType * reply, pending_replies_) { reply->Abort(); } pending_replies_.clear(); } - - -#endif // MESSAGEHANDLER_H +#endif // MESSAGEHANDLER_H diff --git a/ext/libclementine-common/core/messagereply.cpp b/ext/libclementine-common/core/messagereply.cpp index f2e99dc19..305752215 100644 --- a/ext/libclementine-common/core/messagereply.cpp +++ b/ext/libclementine-common/core/messagereply.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2011, David Sansome - + 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 . */ @@ -18,11 +18,7 @@ #include "messagereply.h" _MessageReplyBase::_MessageReplyBase(QObject* parent) - : QObject(parent), - finished_(false), - success_(false) -{ -} + : QObject(parent), finished_(false), success_(false) {} bool _MessageReplyBase::WaitForFinished() { qLog(Debug) << "Waiting on ID" << id(); diff --git a/ext/libclementine-common/core/messagereply.h b/ext/libclementine-common/core/messagereply.h index ead5f38ba..1523709b8 100644 --- a/ext/libclementine-common/core/messagereply.h +++ b/ext/libclementine-common/core/messagereply.h @@ -29,7 +29,7 @@ class _MessageReplyBase : public QObject { Q_OBJECT -public: + public: _MessageReplyBase(QObject* parent = 0); virtual int id() const = 0; @@ -46,19 +46,18 @@ public: signals: void Finished(bool success); -protected: + protected: bool finished_; bool success_; QSemaphore semaphore_; }; - // A reply future class that is returned immediately for requests that will // occur in the background. Similar to QNetworkReply. template class MessageReply : public _MessageReplyBase { -public: + public: MessageReply(const MessageType& request_message, QObject* parent = 0); int id() const { return request_message_.id(); } @@ -67,21 +66,19 @@ public: void SetReply(const MessageType& message); -private: + private: MessageType request_message_; MessageType reply_message_; }; - -template +template MessageReply::MessageReply(const MessageType& request_message, QObject* parent) - : _MessageReplyBase(parent) -{ + : _MessageReplyBase(parent) { request_message_.MergeFrom(request_message); } -template +template void MessageReply::SetReply(const MessageType& message) { Q_ASSERT(!finished_); @@ -94,4 +91,4 @@ void MessageReply::SetReply(const MessageType& message) { semaphore_.release(); } -#endif // MESSAGEREPLY_H +#endif // MESSAGEREPLY_H diff --git a/ext/libclementine-common/core/override.h b/ext/libclementine-common/core/override.h index deeca9a6c..98c2764d5 100644 --- a/ext/libclementine-common/core/override.h +++ b/ext/libclementine-common/core/override.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef OVERRIDE_H #define OVERRIDE_H @@ -26,13 +25,13 @@ // it is available. #ifndef __has_extension - #define __has_extension(x) 0 +#define __has_extension(x) 0 #endif #if __has_extension(cxx_override_control) // Clang feature checking macro. -# define OVERRIDE override +#define OVERRIDE override #else -# define OVERRIDE +#define OVERRIDE #endif #endif // OVERRIDE_H diff --git a/ext/libclementine-common/core/waitforsignal.h b/ext/libclementine-common/core/waitforsignal.h index 4c90c2e68..94e98249e 100644 --- a/ext/libclementine-common/core/waitforsignal.h +++ b/ext/libclementine-common/core/waitforsignal.h @@ -22,4 +22,4 @@ class QObject; void WaitForSignal(QObject* sender, const char* signal); -#endif // WAITFORSIGNAL_H +#endif // WAITFORSIGNAL_H diff --git a/ext/libclementine-common/core/workerpool.cpp b/ext/libclementine-common/core/workerpool.cpp index d3378eb61..2b74328d9 100644 --- a/ext/libclementine-common/core/workerpool.cpp +++ b/ext/libclementine-common/core/workerpool.cpp @@ -17,9 +17,4 @@ #include "workerpool.h" -_WorkerPoolBase::_WorkerPoolBase(QObject* parent) - : QObject(parent) -{ -} - - +_WorkerPoolBase::_WorkerPoolBase(QObject* parent) : QObject(parent) {} diff --git a/ext/libclementine-common/core/workerpool.h b/ext/libclementine-common/core/workerpool.h index 906c8dc73..598f47f13 100644 --- a/ext/libclementine-common/core/workerpool.h +++ b/ext/libclementine-common/core/workerpool.h @@ -32,13 +32,12 @@ #include "core/closure.h" #include "core/logging.h" - // Base class containing signals and slots - required because moc doesn't do // templated objects. class _WorkerPoolBase : public QObject { Q_OBJECT -public: + public: _WorkerPoolBase(QObject* parent = 0); signals: @@ -46,14 +45,13 @@ signals: // worker wasn't found, or couldn't be executed. void WorkerFailedToStart(); -protected slots: + protected slots: virtual void DoStart() {} virtual void NewConnection() {} virtual void ProcessError(QProcess::ProcessError) {} virtual void SendQueuedMessages() {} }; - // Manages a pool of one or more external processes. A local socket server is // started for each process, and the address is passed to the process as // argv[1]. The process is expected to connect back to the socket server, and @@ -61,7 +59,7 @@ protected slots: // Instances of HandlerType are created in the WorkerPool's thread. template class WorkerPool : public _WorkerPoolBase { -public: + public: WorkerPool(QObject* parent = 0); ~WorkerPool(); @@ -90,7 +88,7 @@ public: // worker. Can be called from any thread. ReplyType* SendMessageWithReply(MessageType* message); -protected: + protected: // These are all reimplemented slots, they are called on the WorkerPool's // thread. void DoStart(); @@ -98,10 +96,13 @@ protected: void ProcessError(QProcess::ProcessError error); void SendQueuedMessages(); -private: + private: struct Worker { - Worker() : local_server_(NULL), local_socket_(NULL), process_(NULL), - handler_(NULL) {} + Worker() + : local_server_(NULL), + local_socket_(NULL), + process_(NULL), + handler_(NULL) {} QLocalServer* local_server_; QLocalSocket* local_socket_; @@ -114,8 +115,8 @@ private: template Worker* FindWorker(T Worker::*member, T value) { - for (typename QList::iterator it = workers_.begin() ; - it != workers_.end() ; ++it) { + for (typename QList::iterator it = workers_.begin(); + it != workers_.end(); ++it) { if ((*it).*member == value) { return &(*it); } @@ -140,7 +141,7 @@ private: // my thread. HandlerType* NextHandler() const; -private: + private: QString local_server_name_; QString executable_name_; QString executable_path_; @@ -155,26 +156,21 @@ private: QQueue message_queue_; }; - template WorkerPool::WorkerPool(QObject* parent) - : _WorkerPoolBase(parent), - next_worker_(0), - next_id_(0) -{ + : _WorkerPoolBase(parent), next_worker_(0), next_id_(0) { worker_count_ = qBound(1, QThread::idealThreadCount() / 2, 2); local_server_name_ = qApp->applicationName().toLower(); - if (local_server_name_.isEmpty()) - local_server_name_ = "workerpool"; + if (local_server_name_.isEmpty()) local_server_name_ = "workerpool"; } template WorkerPool::~WorkerPool() { - foreach (const Worker& worker, workers_) { + foreach(const Worker & worker, workers_) { if (worker.local_socket_ && worker.process_) { - disconnect(worker.process_, SIGNAL(error(QProcess::ProcessError)), - this, SLOT(ProcessError(QProcess::ProcessError))); + disconnect(worker.process_, SIGNAL(error(QProcess::ProcessError)), this, + SLOT(ProcessError(QProcess::ProcessError))); // The worker is connected. Close his socket and wait for him to exit. qLog(Debug) << "Closing worker socket"; @@ -192,9 +188,7 @@ WorkerPool::~WorkerPool() { } } - foreach (ReplyType* reply, message_queue_) { - reply->Abort(); - } + foreach(ReplyType * reply, message_queue_) { reply->Abort(); } } template @@ -204,13 +198,15 @@ void WorkerPool::SetWorkerCount(int count) { } template -void WorkerPool::SetLocalServerName(const QString& local_server_name) { +void WorkerPool::SetLocalServerName( + const QString& local_server_name) { Q_ASSERT(workers_.isEmpty()); local_server_name_ = local_server_name; } template -void WorkerPool::SetExecutableName(const QString& executable_name) { +void WorkerPool::SetExecutableName( + const QString& executable_name) { Q_ASSERT(workers_.isEmpty()); executable_name_ = executable_name; } @@ -235,7 +231,7 @@ void WorkerPool::DoStart() { search_path << qApp->applicationDirPath() + "/../PlugIns"; #endif - foreach (const QString& path_prefix, search_path) { + foreach(const QString & path_prefix, search_path) { const QString executable_path = path_prefix + "/" + executable_name_; if (QFile::exists(executable_path)) { executable_path_ = executable_path; @@ -244,7 +240,7 @@ void WorkerPool::DoStart() { } // Start all the workers - for (int i=0 ; i::StartOneWorker(Worker* worker) { worker->local_server_ = new QLocalServer(this); worker->process_ = new QProcess(this); - connect(worker->local_server_, SIGNAL(newConnection()), SLOT(NewConnection())); + connect(worker->local_server_, SIGNAL(newConnection()), + SLOT(NewConnection())); connect(worker->process_, SIGNAL(error(QProcess::ProcessError)), SLOT(ProcessError(QProcess::ProcessError))); // Create a server, find an unused name and start listening forever { const int unique_number = qrand() ^ ((int)(quint64(this) & 0xFFFFFFFF)); - const QString name = QString("%1_%2").arg(local_server_name_).arg(unique_number); + const QString name = + QString("%1_%2").arg(local_server_name_).arg(unique_number); if (worker->local_server_->listen(name)) { break; @@ -284,7 +282,8 @@ void WorkerPool::StartOneWorker(Worker* worker) { // Start the process worker->process_->setProcessChannelMode(QProcess::ForwardedChannels); worker->process_->start(executable_path_, - QStringList() << worker->local_server_->fullServerName()); + QStringList() + << worker->local_server_->fullServerName()); } template @@ -295,10 +294,10 @@ void WorkerPool::NewConnection() { // Find the worker with this server. Worker* worker = FindWorker(&Worker::local_server_, server); - if (!worker) - return; + if (!worker) return; - qLog(Debug) << "Worker" << worker << "connected to" << server->fullServerName(); + qLog(Debug) << "Worker" << worker << "connected to" + << server->fullServerName(); // Accept the connection. worker->local_socket_ = server->nextPendingConnection(); @@ -322,29 +321,29 @@ void WorkerPool::ProcessError(QProcess::ProcessError error) { // Find the worker with this process. Worker* worker = FindWorker(&Worker::process_, process); - if (!worker) - return; + if (!worker) return; switch (error) { - case QProcess::FailedToStart: - // Failed to start errors are bad - it usually means the worker isn't - // installed. Don't restart the process, but tell our owner, who will - // probably want to do something fatal. - qLog(Error) << "Worker failed to start"; - emit WorkerFailedToStart(); - break; + case QProcess::FailedToStart: + // Failed to start errors are bad - it usually means the worker isn't + // installed. Don't restart the process, but tell our owner, who will + // probably want to do something fatal. + qLog(Error) << "Worker failed to start"; + emit WorkerFailedToStart(); + break; - default: - // On any other error we just restart the process. - qLog(Debug) << "Worker" << worker << "failed with error" << error << "- restarting"; - StartOneWorker(worker); - break; + default: + // On any other error we just restart the process. + qLog(Debug) << "Worker" << worker << "failed with error" << error + << "- restarting"; + StartOneWorker(worker); + break; } } template -typename WorkerPool::ReplyType* -WorkerPool::NewReply(MessageType* message) { +typename WorkerPool::ReplyType* WorkerPool::NewReply( + MessageType* message) { const int id = next_id_.fetchAndAddOrdered(1); message->set_id(id); @@ -390,7 +389,7 @@ void WorkerPool::SendQueuedMessages() { template HandlerType* WorkerPool::NextHandler() const { - for (int i=0 ; i::NextHandler() const { return NULL; } -#endif // WORKERPOOL_H +#endif // WORKERPOOL_H diff --git a/ext/libclementine-tagreader/cloudstream.cpp b/ext/libclementine-tagreader/cloudstream.cpp index 100174cca..253c14c95 100644 --- a/ext/libclementine-tagreader/cloudstream.cpp +++ b/ext/libclementine-tagreader/cloudstream.cpp @@ -28,13 +28,13 @@ #include "core/logging.h" namespace { - static const int kTaglibPrefixCacheBytes = 64 * 1024; // Should be enough. - static const int kTaglibSuffixCacheBytes = 8 * 1024; +static const int kTaglibPrefixCacheBytes = 64 * 1024; // Should be enough. +static const int kTaglibSuffixCacheBytes = 8 * 1024; } -CloudStream::CloudStream( - const QUrl& url, const QString& filename, const long length, - const QString& auth, QNetworkAccessManager* network) +CloudStream::CloudStream(const QUrl& url, const QString& filename, + const long length, const QString& auth, + QNetworkAccessManager* network) : url_(url), filename_(filename), encoded_filename_(filename_.toUtf8()), @@ -43,12 +43,9 @@ CloudStream::CloudStream( cursor_(0), network_(network), cache_(length), - num_requests_(0) { -} + num_requests_(0) {} -TagLib::FileName CloudStream::name() const { - return encoded_filename_.data(); -} +TagLib::FileName CloudStream::name() const { return encoded_filename_.data(); } bool CloudStream::CheckCache(int start, int end) { for (int i = start; i <= end; ++i) { @@ -113,8 +110,8 @@ TagLib::ByteVector CloudStream::readBlock(ulong length) { if (!auth_.isEmpty()) { request.setRawHeader("Authorization", auth_.toUtf8()); } - request.setRawHeader( - "Range", QString("bytes=%1-%2").arg(start).arg(end).toUtf8()); + request.setRawHeader("Range", + QString("bytes=%1-%2").arg(start).arg(end).toUtf8()); request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); // The Ubuntu One server applies the byte range to the gzipped data, rather @@ -124,7 +121,8 @@ TagLib::ByteVector CloudStream::readBlock(ulong length) { } QNetworkReply* reply = network_->get(request); - connect(reply, SIGNAL(sslErrors(QList)), SLOT(SSLErrors(QList))); + connect(reply, SIGNAL(sslErrors(QList)), + SLOT(SSLErrors(QList))); ++num_requests_; QEventLoop loop; @@ -163,9 +161,7 @@ bool CloudStream::readOnly() const { return true; } -bool CloudStream::isOpen() const { - return true; -} +bool CloudStream::isOpen() const { return true; } void CloudStream::seek(long offset, TagLib::IOStream::Position p) { switch (p) { @@ -184,24 +180,18 @@ void CloudStream::seek(long offset, TagLib::IOStream::Position p) { } } -void CloudStream::clear() { - cursor_ = 0; -} +void CloudStream::clear() { cursor_ = 0; } -long CloudStream::tell() const { - return cursor_; -} +long CloudStream::tell() const { return cursor_; } -long CloudStream::length() { - return length_; -} +long CloudStream::length() { return length_; } void CloudStream::truncate(long) { qLog(Debug) << Q_FUNC_INFO << "not implemented"; } void CloudStream::SSLErrors(const QList& errors) { - foreach (const QSslError& error, errors) { + foreach(const QSslError & error, errors) { qLog(Debug) << error.error() << error.errorString(); qLog(Debug) << error.certificate(); } diff --git a/ext/libclementine-tagreader/cloudstream.h b/ext/libclementine-tagreader/cloudstream.h index 6905171bd..4c2e1358d 100644 --- a/ext/libclementine-tagreader/cloudstream.h +++ b/ext/libclementine-tagreader/cloudstream.h @@ -31,11 +31,8 @@ class QNetworkAccessManager; class CloudStream : public QObject, public TagLib::IOStream { Q_OBJECT public: - CloudStream(const QUrl& url, - const QString& filename, - const long length, - const QString& auth, - QNetworkAccessManager* network); + CloudStream(const QUrl& url, const QString& filename, const long length, + const QString& auth, QNetworkAccessManager* network); // Taglib::IOStream virtual TagLib::FileName name() const; @@ -55,9 +52,7 @@ class CloudStream : public QObject, public TagLib::IOStream { return cache_.num_nonempty(); } - int num_requests() const { - return num_requests_; - } + int num_requests() const { return num_requests_; } // Use educated guess to request the bytes that TagLib will probably want. void Precache(); @@ -84,4 +79,4 @@ class CloudStream : public QObject, public TagLib::IOStream { int num_requests_; }; -#endif // GOOGLEDRIVESTREAM_H +#endif // GOOGLEDRIVESTREAM_H diff --git a/ext/libclementine-tagreader/fmpsparser.cpp b/ext/libclementine-tagreader/fmpsparser.cpp index 5eca59207..857aa979e 100644 --- a/ext/libclementine-tagreader/fmpsparser.cpp +++ b/ext/libclementine-tagreader/fmpsparser.cpp @@ -25,19 +25,18 @@ using std::placeholders::_1; using std::placeholders::_2; -FMPSParser::FMPSParser() : - // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the way - // up to the end of the value. Without it, it would match a string that - // starts with a number, like "123abc". - float_re_("\\s*([+-]?\\d+(?:\\.\\d+)?)\\s*(?:$|(?=::|;;))"), +FMPSParser::FMPSParser() + : // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the + // way + // up to the end of the value. Without it, it would match a string that + // starts with a number, like "123abc". + float_re_("\\s*([+-]?\\d+(?:\\.\\d+)?)\\s*(?:$|(?=::|;;))"), - // Matches any character except unescaped slashes, colons and semicolons. - string_re_("((?:[^\\\\;:]|(?:\\\\[\\\\:;]))+)(?:$|(?=::|;;))"), + // Matches any character except unescaped slashes, colons and semicolons. + string_re_("((?:[^\\\\;:]|(?:\\\\[\\\\:;]))+)(?:$|(?=::|;;))"), - // Used for replacing escaped characters. - escape_re_("\\\\([\\\\:;])") -{ -} + // Used for replacing escaped characters. + escape_re_("\\\\([\\\\:;])") {} // Parses a list of things (of type T) that are separated by two consecutive // Separator characters. Each individual thing is parsed by the F function. @@ -59,16 +58,16 @@ static int ParseContainer(const QStringRef& data, F f, QList* ret) { int pos = 0; while (pos < data.length()) { const int len = data.length() - pos; - int matched_len = f(QStringRef(data.string(), data.position() + pos, len), &value); - if (matched_len == -1 || matched_len > len) - break; + int matched_len = + f(QStringRef(data.string(), data.position() + pos, len), &value); + if (matched_len == -1 || matched_len > len) break; ret->append(value); pos += matched_len; // Expect two separators in a row - if (pos + 2 <= data.length() && data.at(pos) == Separator - && data.at(pos+1) == Separator) { + if (pos + 2 <= data.length() && data.at(pos) == Separator && + data.at(pos + 1) == Separator) { pos += 2; } else { break; diff --git a/ext/libclementine-tagreader/fmpsparser.h b/ext/libclementine-tagreader/fmpsparser.h index dfe669f14..961f5b4ae 100644 --- a/ext/libclementine-tagreader/fmpsparser.h +++ b/ext/libclementine-tagreader/fmpsparser.h @@ -22,7 +22,7 @@ #include class FMPSParser { -public: + public: FMPSParser(); // A FMPS result is a list of lists of values (where a value is a string or @@ -48,11 +48,11 @@ public: int ParseListList(const QString& data, Result* ret) const; int ParseListListRef(const QStringRef& data, Result* ret) const; -private: + private: QRegExp float_re_; QRegExp string_re_; QRegExp escape_re_; Result result_; }; -#endif // FMPSPARSER_H +#endif // FMPSPARSER_H diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp index 475a2385a..e2f4137d5 100644 --- a/ext/libclementine-tagreader/tagreader.cpp +++ b/ext/libclementine-tagreader/tagreader.cpp @@ -59,15 +59,17 @@ #include "core/timeconstants.h" // Taglib added support for FLAC pictures in 1.7.0 -#if (TAGLIB_MAJOR_VERSION > 1) || (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) -# define TAGLIB_HAS_FLAC_PICTURELIST +#if (TAGLIB_MAJOR_VERSION > 1) || \ + (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) +#define TAGLIB_HAS_FLAC_PICTURELIST #endif #ifdef HAVE_GOOGLE_DRIVE -# include "cloudstream.h" +#include "cloudstream.h" #endif -#define NumberToASFAttribute(x) TagLib::ASF::Attribute(QStringToTaglibString(QString::number(x))) +#define NumberToASFAttribute(x) \ + TagLib::ASF::Attribute(QStringToTaglibString(QString::number(x))) class FileRefFactory { public: @@ -78,11 +80,11 @@ class FileRefFactory { class TagLibFileRefFactory : public FileRefFactory { public: virtual TagLib::FileRef* GetFileRef(const QString& filename) { - #ifdef Q_OS_WIN32 - return new TagLib::FileRef(filename.toStdWString().c_str()); - #else - return new TagLib::FileRef(QFile::encodeName(filename).constData()); - #endif +#ifdef Q_OS_WIN32 + return new TagLib::FileRef(filename.toStdWString().c_str()); +#else + return new TagLib::FileRef(QFile::encodeName(filename).constData()); +#endif } }; @@ -95,21 +97,22 @@ TagLib::String StdStringToTaglibString(const std::string& s) { TagLib::String QStringToTaglibString(const QString& s) { return TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8); } - } -const char* TagReader::kMP4_FMPS_Rating_ID = "----:com.apple.iTunes:FMPS_Rating"; -const char* TagReader::kMP4_FMPS_Playcount_ID = "----:com.apple.iTunes:FMPS_Playcount"; -const char* TagReader::kMP4_FMPS_Score_ID = "----:com.apple.iTunes:FMPS_Rating_Amarok_Score"; +const char* TagReader::kMP4_FMPS_Rating_ID = + "----:com.apple.iTunes:FMPS_Rating"; +const char* TagReader::kMP4_FMPS_Playcount_ID = + "----:com.apple.iTunes:FMPS_Playcount"; +const char* TagReader::kMP4_FMPS_Score_ID = + "----:com.apple.iTunes:FMPS_Rating_Amarok_Score"; TagReader::TagReader() - : factory_(new TagLibFileRefFactory), - network_(new QNetworkAccessManager), - kEmbeddedCover("(embedded)") -{} + : factory_(new TagLibFileRefFactory), + network_(new QNetworkAccessManager), + kEmbeddedCover("(embedded)") {} void TagReader::ReadFile(const QString& filename, - pb::tagreader::SongMetadata* song) const { + pb::tagreader::SongMetadata* song) const { const QByteArray url(QUrl::fromLocalFile(filename).toEncoded()); const QFileInfo info(filename); @@ -122,7 +125,7 @@ void TagReader::ReadFile(const QString& filename, song->set_ctime(info.created().toTime_t()); std::unique_ptr fileref(factory_->GetFileRef(filename)); - if(fileref->isNull()) { + if (fileref->isNull()) { qLog(Info) << "TagLib hasn't been able to read " << filename << " file"; return; } @@ -130,7 +133,7 @@ void TagReader::ReadFile(const QString& filename, TagLib::Tag* tag = fileref->tag(); if (tag) { Decode(tag->title(), nullptr, song->mutable_title()); - Decode(tag->artist(), nullptr, song->mutable_artist()); // TPE1 + Decode(tag->artist(), nullptr, song->mutable_artist()); // TPE1 Decode(tag->album(), nullptr, song->mutable_album()); Decode(tag->genre(), nullptr, song->mutable_genre()); song->set_year(tag->year()); @@ -141,14 +144,17 @@ void TagReader::ReadFile(const QString& filename, QString disc; QString compilation; - // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same way; + // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same + // way; // apart, so we keep specific behavior for some formats by adding another // "else if" block below. - if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { + if (TagLib::Ogg::XiphComment* tag = + dynamic_cast(fileref->file()->tag())) { ParseOggTag(tag->fieldListMap(), nullptr, &disc, &compilation, song); } - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { if (file->ID3v2Tag()) { const TagLib::ID3v2::FrameListMap& map = file->ID3v2Tag()->frameListMap(); @@ -156,27 +162,32 @@ void TagReader::ReadFile(const QString& filename, disc = TStringToQString(map["TPOS"].front()->toString()).trimmed(); if (!map["TBPM"].isEmpty()) - song->set_bpm(TStringToQString(map["TBPM"].front()->toString()).trimmed().toFloat()); + song->set_bpm(TStringToQString(map["TBPM"].front()->toString()) + .trimmed() + .toFloat()); if (!map["TCOM"].isEmpty()) - Decode(map["TCOM"].front()->toString(), nullptr, song->mutable_composer()); + Decode(map["TCOM"].front()->toString(), nullptr, + song->mutable_composer()); - if (!map["TIT1"].isEmpty()) // content group - Decode(map["TIT1"].front()->toString(), nullptr, song->mutable_grouping()); + if (!map["TIT1"].isEmpty()) // content group + Decode(map["TIT1"].front()->toString(), nullptr, + song->mutable_grouping()); // Skip TPE1 (which is the artist) here because we already fetched it - if (!map["TPE2"].isEmpty()) // non-standard: Apple, Microsoft - Decode(map["TPE2"].front()->toString(), nullptr, song->mutable_albumartist()); + if (!map["TPE2"].isEmpty()) // non-standard: Apple, Microsoft + Decode(map["TPE2"].front()->toString(), nullptr, + song->mutable_albumartist()); if (!map["TCMP"].isEmpty()) - compilation = TStringToQString(map["TCMP"].front()->toString()).trimmed(); + compilation = + TStringToQString(map["TCMP"].front()->toString()).trimmed(); - if (!map["APIC"].isEmpty()) - song->set_art_automatic(kEmbeddedCover); + if (!map["APIC"].isEmpty()) song->set_art_automatic(kEmbeddedCover); // Find a suitable comment tag. For now we ignore iTunNORM comments. - for (int i=0 ; i(map["COMM"][i]); @@ -187,14 +198,14 @@ void TagReader::ReadFile(const QString& filename, } // Parse FMPS frames - for (int i=0 ; i(map["TXXX"][i]); + dynamic_cast( + map["TXXX"][i]); if (frame && frame->description().startsWith("FMPS_")) { ParseFMPSFrame(TStringToQString(frame->description()), - TStringToQString(frame->fieldList()[1]), - song); + TStringToQString(frame->fieldList()[1]), song); } } @@ -203,7 +214,8 @@ void TagReader::ReadFile(const QString& filename, // will consider POPM tags iff song has no rating/playcount already set. if (!map["POPM"].isEmpty()) { const TagLib::ID3v2::PopularimeterFrame* frame = - dynamic_cast(map["POPM"].front()); + dynamic_cast( + map["POPM"].front()); if (frame) { // Take a user rating only if there's no rating already set if (song->rating() <= 0 && frame->rating() > 0) { @@ -214,11 +226,12 @@ void TagReader::ReadFile(const QString& filename, } } } - } - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { - if ( file->xiphComment() ) { - ParseOggTag(file->xiphComment()->fieldListMap(), nullptr, &disc, &compilation, song); + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { + if (file->xiphComment()) { + ParseOggTag(file->xiphComment()->fieldListMap(), nullptr, &disc, + &compilation, song); #ifdef TAGLIB_HAS_FLAC_PICTURELIST if (!file->pictureList().isEmpty()) { song->set_art_automatic(kEmbeddedCover); @@ -226,7 +239,8 @@ void TagReader::ReadFile(const QString& filename, #endif } Decode(tag->comment(), nullptr, song->mutable_comment()); - } else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { if (file->tag()) { TagLib::MP4::Tag* mp4_tag = file->tag(); const TagLib::MP4::ItemListMap& items = mp4_tag->itemListMap(); @@ -246,51 +260,67 @@ void TagReader::ReadFile(const QString& filename, } if (items.contains("disk")) { - disc = TStringToQString(TagLib::String::number(items["disk"].toIntPair().first)); + disc = TStringToQString( + TagLib::String::number(items["disk"].toIntPair().first)); } if (items.contains(kMP4_FMPS_Rating_ID)) { - float rating = TStringToQString(items[kMP4_FMPS_Rating_ID].toStringList().toString('\n')).toFloat(); + float rating = + TStringToQString(items[kMP4_FMPS_Rating_ID].toStringList().toString( + '\n')).toFloat(); if (song->rating() <= 0 && rating > 0) { song->set_rating(rating); } } if (items.contains(kMP4_FMPS_Playcount_ID)) { - int playcount = TStringToQString(items[kMP4_FMPS_Playcount_ID].toStringList().toString('\n')).toFloat(); + int playcount = + TStringToQString( + items[kMP4_FMPS_Playcount_ID].toStringList().toString('\n')) + .toFloat(); if (song->playcount() <= 0 && playcount > 0) { song->set_playcount(playcount); } } if (items.contains(kMP4_FMPS_Playcount_ID)) { - int score = TStringToQString(items[kMP4_FMPS_Score_ID].toStringList().toString('\n')).toFloat() * 100; + int score = TStringToQString( + items[kMP4_FMPS_Score_ID].toStringList().toString('\n')) + .toFloat() * + 100; if (song->score() <= 0 && score > 0) { song->set_score(score); } } - if(items.contains("\251wrt")) { - Decode(items["\251wrt"].toStringList().toString(", "), nullptr, song->mutable_composer()); + if (items.contains("\251wrt")) { + Decode(items["\251wrt"].toStringList().toString(", "), nullptr, + song->mutable_composer()); } - if(items.contains("\251grp")) { - Decode(items["\251grp"].toStringList().toString(" "), nullptr, song->mutable_grouping()); + if (items.contains("\251grp")) { + Decode(items["\251grp"].toStringList().toString(" "), nullptr, + song->mutable_grouping()); } Decode(mp4_tag->comment(), nullptr, song->mutable_comment()); } } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { - const TagLib::ASF::AttributeListMap& attributes_map = file->tag()->attributeListMap(); + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { + const TagLib::ASF::AttributeListMap& attributes_map = + file->tag()->attributeListMap(); if (attributes_map.contains("FMPS/Rating")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Rating"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Rating"]; if (!attributes.isEmpty()) { - float rating = TStringToQString(attributes.front().toString()).toFloat(); + float rating = + TStringToQString(attributes.front().toString()).toFloat(); if (song->rating() <= 0 && rating > 0) { song->set_rating(rating); } } } if (attributes_map.contains("FMPS/Playcount")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Playcount"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Playcount"]; if (!attributes.isEmpty()) { int playcount = TStringToQString(attributes.front().toString()).toInt(); if (song->playcount() <= 0 && playcount > 0) { @@ -299,9 +329,11 @@ void TagReader::ReadFile(const QString& filename, } } if (attributes_map.contains("FMPS/Rating_Amarok_Score")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Rating_Amarok_Score"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Rating_Amarok_Score"]; if (!attributes.isEmpty()) { - int score = TStringToQString(attributes.front().toString()).toFloat() * 100; + int score = + TStringToQString(attributes.front().toString()).toFloat() * 100; if (song->score() <= 0 && score > 0) { song->set_score(score); } @@ -316,7 +348,8 @@ void TagReader::ReadFile(const QString& filename, if (!disc.isEmpty()) { const int i = disc.indexOf('/'); if (i != -1) { - // disc.right( i ).toInt() is total number of discs, we don't use this at the moment + // disc.right( i ).toInt() is total number of discs, we don't use this at + // the moment song->set_disc(disc.left(i).toInt()); } else { song->set_disc(disc.toInt()); @@ -335,14 +368,18 @@ void TagReader::ReadFile(const QString& filename, if (fileref->audioProperties()) { song->set_bitrate(fileref->audioProperties()->bitrate()); song->set_samplerate(fileref->audioProperties()->sampleRate()); - song->set_length_nanosec(fileref->audioProperties()->length() * kNsecPerSec); + song->set_length_nanosec(fileref->audioProperties()->length() * + kNsecPerSec); } // Get the filetype if we can song->set_type(GuessFileType(fileref.get())); - // Set integer fields to -1 if they're not valid - #define SetDefault(field) if (song->field() <= 0) { song->set_##field(-1); } +// Set integer fields to -1 if they're not valid +#define SetDefault(field) \ + if (song->field() <= 0) { \ + song->set_##field(-1); \ + } SetDefault(track); SetDefault(disc); SetDefault(bpm); @@ -350,16 +387,16 @@ void TagReader::ReadFile(const QString& filename, SetDefault(bitrate); SetDefault(samplerate); SetDefault(lastplayed); - #undef SetDefault +#undef SetDefault } - void TagReader::Decode(const TagLib::String& tag, const QTextCodec* codec, - std::string* output) { + std::string* output) { QString tmp; if (codec && tag.isLatin1()) { // Never override UTF-8. - const std::string fixed = QString::fromUtf8(tag.toCString(true)).toStdString(); + const std::string fixed = + QString::fromUtf8(tag.toCString(true)).toStdString(); tmp = codec->toUnicode(fixed.c_str()).trimmed(); } else { tmp = TStringToQString(tag).trimmed(); @@ -369,7 +406,7 @@ void TagReader::Decode(const TagLib::String& tag, const QTextCodec* codec, } void TagReader::Decode(const QString& tag, const QTextCodec* codec, - std::string* output) { + std::string* output) { if (!codec) { output->assign(DataCommaSizeFromQString(tag)); } else { @@ -379,11 +416,10 @@ void TagReader::Decode(const QString& tag, const QTextCodec* codec, } void TagReader::ParseFMPSFrame(const QString& name, const QString& value, - pb::tagreader::SongMetadata* song) const { + pb::tagreader::SongMetadata* song) const { qLog(Debug) << "Parsing FMPSFrame" << name << ", " << value; FMPSParser parser; - if (!parser.Parse(value) || parser.is_empty()) - return; + if (!parser.Parse(value) || parser.is_empty()) return; QVariant var; if (name == "FMPS_Rating") { @@ -421,9 +457,9 @@ void TagReader::ParseFMPSFrame(const QString& name, const QString& value, } void TagReader::ParseOggTag(const TagLib::Ogg::FieldListMap& map, - const QTextCodec* codec, - QString* disc, QString* compilation, - pb::tagreader::SongMetadata* song) const { + const QTextCodec* codec, QString* disc, + QString* compilation, + pb::tagreader::SongMetadata* song) const { if (!map["COMPOSER"].isEmpty()) Decode(map["COMPOSER"].front(), codec, song->mutable_composer()); if (!map["PERFORMER"].isEmpty()) @@ -437,52 +473,76 @@ void TagReader::ParseOggTag(const TagLib::Ogg::FieldListMap& map, Decode(map["ALBUM ARTIST"].front(), codec, song->mutable_albumartist()); } - if (!map["BPM"].isEmpty() ) - song->set_bpm(TStringToQString( map["BPM"].front() ).trimmed().toFloat()); + if (!map["BPM"].isEmpty()) + song->set_bpm(TStringToQString(map["BPM"].front()).trimmed().toFloat()); - if (!map["DISCNUMBER"].isEmpty() ) - *disc = TStringToQString( map["DISCNUMBER"].front() ).trimmed(); + if (!map["DISCNUMBER"].isEmpty()) + *disc = TStringToQString(map["DISCNUMBER"].front()).trimmed(); - if (!map["COMPILATION"].isEmpty() ) - *compilation = TStringToQString( map["COMPILATION"].front() ).trimmed(); + if (!map["COMPILATION"].isEmpty()) + *compilation = TStringToQString(map["COMPILATION"].front()).trimmed(); - if (!map["COVERART"].isEmpty()) - song->set_art_automatic(kEmbeddedCover); + if (!map["COVERART"].isEmpty()) song->set_art_automatic(kEmbeddedCover); if (!map["METADATA_BLOCK_PICTURE"].isEmpty()) song->set_art_automatic(kEmbeddedCover); if (!map["FMPS_RATING"].isEmpty() && song->rating() <= 0) - song->set_rating(TStringToQString( map["FMPS_RATING"].front() ).trimmed().toFloat()); + song->set_rating( + TStringToQString(map["FMPS_RATING"].front()).trimmed().toFloat()); if (!map["FMPS_PLAYCOUNT"].isEmpty() && song->playcount() <= 0) - song->set_playcount(TStringToQString( map["FMPS_PLAYCOUNT"].front() ).trimmed().toFloat()); + song->set_playcount( + TStringToQString(map["FMPS_PLAYCOUNT"].front()).trimmed().toFloat()); if (!map["FMPS_RATING_AMAROK_SCORE"].isEmpty() && song->score() <= 0) - song->set_score(TStringToQString( map["FMPS_RATING_AMAROK_SCORE"].front() ).trimmed().toFloat() * 100); + song->set_score(TStringToQString(map["FMPS_RATING_AMAROK_SCORE"].front()) + .trimmed() + .toFloat() * + 100); } void TagReader::SetVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { + const pb::tagreader::SongMetadata& song) + const { - vorbis_comments->addField("COMPOSER", StdStringToTaglibString(song.composer()), true); - vorbis_comments->addField("PERFORMER", StdStringToTaglibString(song.performer()), true); - vorbis_comments->addField("CONTENT GROUP", StdStringToTaglibString(song.grouping()), true); - vorbis_comments->addField("BPM", QStringToTaglibString(song.bpm() <= 0 -1 ? QString() : QString::number(song.bpm())), true); - vorbis_comments->addField("DISCNUMBER", QStringToTaglibString(song.disc() <= 0 -1 ? QString() : QString::number(song.disc())), true); - vorbis_comments->addField("COMPILATION", StdStringToTaglibString(song.compilation() ? "1" : "0"), true); + vorbis_comments->addField("COMPOSER", + StdStringToTaglibString(song.composer()), true); + vorbis_comments->addField("PERFORMER", + StdStringToTaglibString(song.performer()), true); + vorbis_comments->addField("CONTENT GROUP", + StdStringToTaglibString(song.grouping()), true); + vorbis_comments->addField( + "BPM", QStringToTaglibString( + song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm())), + true); + vorbis_comments->addField( + "DISCNUMBER", + QStringToTaglibString( + song.disc() <= 0 - 1 ? QString() : QString::number(song.disc())), + true); + vorbis_comments->addField( + "COMPILATION", StdStringToTaglibString(song.compilation() ? "1" : "0"), + true); } -void TagReader::SetFMPSStatisticsVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { - vorbis_comments->addField("FMPS_PLAYCOUNT", QStringToTaglibString(QString::number(song.playcount()))); - vorbis_comments->addField("FMPS_RATING_AMAROK_SCORE", QStringToTaglibString(QString::number(song.score() / 100.0))); +void TagReader::SetFMPSStatisticsVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const { + vorbis_comments->addField( + "FMPS_PLAYCOUNT", + QStringToTaglibString(QString::number(song.playcount()))); + vorbis_comments->addField( + "FMPS_RATING_AMAROK_SCORE", + QStringToTaglibString(QString::number(song.score() / 100.0))); } -void TagReader::SetFMPSRatingVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { +void TagReader::SetFMPSRatingVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const { - vorbis_comments->addField("FMPS_RATING", QStringToTaglibString(QString::number(song.rating()))); + vorbis_comments->addField( + "FMPS_RATING", QStringToTaglibString(QString::number(song.rating()))); } pb::tagreader::SongMetadata_Type TagReader::GuessFileType( @@ -522,135 +582,155 @@ pb::tagreader::SongMetadata_Type TagReader::GuessFileType( } bool TagReader::SaveFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; + const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving tags to" << filename; std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; fileref->tag()->setTitle(StdStringToTaglibString(song.title())); - fileref->tag()->setArtist(StdStringToTaglibString(song.artist())); // TPE1 + fileref->tag()->setArtist(StdStringToTaglibString(song.artist())); // TPE1 fileref->tag()->setAlbum(StdStringToTaglibString(song.album())); fileref->tag()->setGenre(StdStringToTaglibString(song.genre())); fileref->tag()->setComment(StdStringToTaglibString(song.comment())); fileref->tag()->setYear(song.year()); fileref->tag()->setTrack(song.track()); - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); - SetTextFrame("TPOS", song.disc() <= 0 -1 ? QString() : QString::number(song.disc()), tag); - SetTextFrame("TBPM", song.bpm() <= 0 -1 ? QString() : QString::number(song.bpm()), tag); + SetTextFrame( + "TPOS", song.disc() <= 0 - 1 ? QString() : QString::number(song.disc()), + tag); + SetTextFrame("TBPM", + song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm()), + tag); SetTextFrame("TCOM", song.composer(), tag); SetTextFrame("TIT1", song.grouping(), tag); // Skip TPE1 (which is the artist) here because we already set it SetTextFrame("TPE2", song.albumartist(), tag); SetTextFrame("TCMP", std::string(song.compilation() ? "1" : "0"), tag); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* tag = file->xiphComment(); SetVorbisComments(tag, song); - } else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()["disk"] = TagLib::MP4::Item(song.disc() <= 0 -1 ? 0 : song.disc(), 0); - tag->itemListMap()["tmpo"] = TagLib::StringList(song.bpm() <= 0 -1 ? "0" : TagLib::String::number(song.bpm())); + tag->itemListMap()["disk"] = + TagLib::MP4::Item(song.disc() <= 0 - 1 ? 0 : song.disc(), 0); + tag->itemListMap()["tmpo"] = TagLib::StringList( + song.bpm() <= 0 - 1 ? "0" : TagLib::String::number(song.bpm())); tag->itemListMap()["\251wrt"] = TagLib::StringList(song.composer()); tag->itemListMap()["\251grp"] = TagLib::StringList(song.grouping()); - tag->itemListMap()["aART"] = TagLib::StringList(song.albumartist()); - tag->itemListMap()["cpil"] = TagLib::StringList(song.compilation() ? "1" : "0"); + tag->itemListMap()["aART"] = TagLib::StringList(song.albumartist()); + tag->itemListMap()["cpil"] = + TagLib::StringList(song.compilation() ? "1" : "0"); } - // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same way; + // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same + // way; // apart, so we keep specific behavior for some formats by adding another // "else if" block above. - if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { - SetVorbisComments(tag, song); + if (TagLib::Ogg::XiphComment* tag = + dynamic_cast(fileref->file()->tag())) { + SetVorbisComments(tag, song); } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -bool TagReader::SaveSongStatisticsToFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; +bool TagReader::SaveSongStatisticsToFile( + const QString& filename, const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving song statistics tags to" << filename; std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); // Save as FMPS SetUserTextFrame("FMPS_PlayCount", QString::number(song.playcount()), tag); - SetUserTextFrame("FMPS_Rating_Amarok_Score", QString::number(song.score() / 100.0), tag); + SetUserTextFrame("FMPS_Rating_Amarok_Score", + QString::number(song.score() / 100.0), tag); // Also save as POPM TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag); frame->setCounter(song.playcount()); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* vorbis_comments = file->xiphComment(true); SetFMPSStatisticsVorbisComments(vorbis_comments, song); - } else if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { + } else if (TagLib::Ogg::XiphComment* tag = + dynamic_cast( + fileref->file()->tag())) { SetFMPSStatisticsVorbisComments(tag, song); } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { TagLib::ASF::Tag* tag = file->tag(); tag->addAttribute("FMPS/Playcount", NumberToASFAttribute(song.playcount())); - tag->addAttribute("FMPS/Rating_Amarok_Score", NumberToASFAttribute(song.score() / 100.0)); + tag->addAttribute("FMPS/Rating_Amarok_Score", + NumberToASFAttribute(song.score() / 100.0)); } #endif - else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::StringList(QStringToTaglibString(QString::number(song.score() / 100.0))); - tag->itemListMap()[kMP4_FMPS_Playcount_ID] = TagLib::StringList(TagLib::String::number(song.playcount())); + tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::StringList( + QStringToTaglibString(QString::number(song.score() / 100.0))); + tag->itemListMap()[kMP4_FMPS_Playcount_ID] = + TagLib::StringList(TagLib::String::number(song.playcount())); } else { // Nothing to save: stop now return true; } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -bool TagReader::SaveSongRatingToFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; +bool TagReader::SaveSongRatingToFile( + const QString& filename, const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving song rating tags to" << filename; std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); // Save as FMPS @@ -660,38 +740,45 @@ bool TagReader::SaveSongRatingToFile(const QString& filename, TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag); frame->setRating(ConvertToPOPMRating(song.rating())); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* vorbis_comments = file->xiphComment(true); SetFMPSRatingVorbisComments(vorbis_comments, song); - } else if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { + } else if (TagLib::Ogg::XiphComment* tag = + dynamic_cast( + fileref->file()->tag())) { SetFMPSRatingVorbisComments(tag, song); } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { TagLib::ASF::Tag* tag = file->tag(); - tag->addAttribute("FMPS/Rating", NumberToASFAttribute(song.rating())); + tag->addAttribute("FMPS/Rating", NumberToASFAttribute(song.rating())); } #endif - else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()[kMP4_FMPS_Rating_ID] = TagLib::StringList(QStringToTaglibString(QString::number(song.rating()))); + tag->itemListMap()[kMP4_FMPS_Rating_ID] = TagLib::StringList( + QStringToTaglibString(QString::number(song.rating()))); } else { // Nothing to save: stop now return true; } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -void TagReader::SetUserTextFrame(const QString& description, const QString& value, +void TagReader::SetUserTextFrame(const QString& description, + const QString& value, TagLib::ID3v2::Tag* tag) const { const QByteArray descr_utf8(description.toUtf8()); const QByteArray value_utf8(value.toUtf8()); @@ -721,13 +808,13 @@ void TagReader::SetUserTextFrame(const std::string& description, } void TagReader::SetTextFrame(const char* id, const QString& value, - TagLib::ID3v2::Tag* tag) const { + TagLib::ID3v2::Tag* tag) const { const QByteArray utf8(value.toUtf8()); SetTextFrame(id, std::string(utf8.constData(), utf8.length()), tag); } void TagReader::SetTextFrame(const char* id, const std::string& value, - TagLib::ID3v2::Tag* tag) const { + TagLib::ID3v2::Tag* tag) const { TagLib::ByteVector id_vector(id); // Remove the frame if it already exists @@ -752,8 +839,7 @@ bool TagReader::IsMediaFile(const QString& filename) const { } QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { - if (filename.isEmpty()) - return QByteArray(); + if (filename.isEmpty()) return QByteArray(); qLog(Debug) << "Loading art from" << filename; @@ -763,20 +849,20 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { TagLib::FileRef ref(QFile::encodeName(filename).constData()); #endif - if (ref.isNull() || !ref.file()) - return QByteArray(); + if (ref.isNull() || !ref.file()) return QByteArray(); // MP3 TagLib::MPEG::File* file = dynamic_cast(ref.file()); if (file && file->ID3v2Tag()) { - TagLib::ID3v2::FrameList apic_frames = file->ID3v2Tag()->frameListMap()["APIC"]; - if (apic_frames.isEmpty()) - return QByteArray(); + TagLib::ID3v2::FrameList apic_frames = + file->ID3v2Tag()->frameListMap()["APIC"]; + if (apic_frames.isEmpty()) return QByteArray(); TagLib::ID3v2::AttachedPictureFrame* pic = static_cast(apic_frames.front()); - return QByteArray((const char*) pic->picture().data(), pic->picture().size()); + return QByteArray((const char*)pic->picture().data(), + pic->picture().size()); } // Ogg vorbis/speex @@ -786,12 +872,14 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { if (xiph_comment) { TagLib::Ogg::FieldListMap map = xiph_comment->fieldListMap(); - // Other than the below mentioned non-standard COVERART, METADATA_BLOCK_PICTURE + // Other than the below mentioned non-standard COVERART, + // METADATA_BLOCK_PICTURE // is the proposed tag for cover pictures. // (see http://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE) if (map.contains("METADATA_BLOCK_PICTURE")) { TagLib::StringList pict_list = map["METADATA_BLOCK_PICTURE"]; - for(std::list::iterator it = pict_list.begin(); it != pict_list.end(); ++it) { + for (std::list::iterator it = pict_list.begin(); + it != pict_list.end(); ++it) { QByteArray data(QByteArray::fromBase64(it->toCString())); TagLib::ByteVector tdata(data.data(), data.size()); TagLib::FLAC::Picture p(tdata); @@ -799,7 +887,8 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { return QByteArray(p.data().data(), p.data().size()); } // If there was no specific front cover, just take the first picture - QByteArray data(QByteArray::fromBase64(map["METADATA_BLOCK_PICTURE"].front().toCString())); + QByteArray data(QByteArray::fromBase64( + map["METADATA_BLOCK_PICTURE"].front().toCString())); TagLib::ByteVector tdata(data.data(), data.size()); TagLib::FLAC::Picture p(tdata); return QByteArray(p.data().data(), p.data().size()); @@ -807,8 +896,7 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { // Ogg lacks a definitive standard for embedding cover art, but it seems // b64 encoding a field called COVERART is the general convention - if (!map.contains("COVERART")) - return QByteArray(); + if (!map.contains("COVERART")) return QByteArray(); return QByteArray::fromBase64(map["COVERART"].toString().toCString()); } @@ -850,62 +938,45 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { return QByteArray(); } - #ifdef HAVE_GOOGLE_DRIVE -bool TagReader::ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& authorisation_header, - pb::tagreader::SongMetadata* song) const { +bool TagReader::ReadCloudFile(const QUrl& download_url, const QString& title, + int size, const QString& mime_type, + const QString& authorisation_header, + pb::tagreader::SongMetadata* song) const { qLog(Debug) << "Loading tags from" << title; - CloudStream* stream = new CloudStream( - download_url, title, size, authorisation_header, network_); + CloudStream* stream = new CloudStream(download_url, title, size, + authorisation_header, network_); stream->Precache(); std::unique_ptr tag; if (mime_type == "audio/mpeg" && title.endsWith(".mp3")) { - tag.reset(new TagLib::MPEG::File( - stream, // Takes ownership. - TagLib::ID3v2::FrameFactory::instance(), - TagLib::AudioProperties::Accurate)); + tag.reset(new TagLib::MPEG::File(stream, // Takes ownership. + TagLib::ID3v2::FrameFactory::instance(), + TagLib::AudioProperties::Accurate)); } else if (mime_type == "audio/mp4" || (mime_type == "audio/mpeg" && title.endsWith(".m4a"))) { - tag.reset(new TagLib::MP4::File( - stream, - true, - TagLib::AudioProperties::Accurate)); - } + tag.reset( + new TagLib::MP4::File(stream, true, TagLib::AudioProperties::Accurate)); + } #ifdef TAGLIB_HAS_OPUS - else if ((mime_type == "application/opus" || - mime_type == "audio/opus" || - mime_type == "application/ogg" || - mime_type == "audio/ogg") && title.endsWith(".opus")) { - tag.reset(new TagLib::Ogg::Opus::File( - stream, - true, - TagLib::AudioProperties::Accurate)); + else if ((mime_type == "application/opus" || mime_type == "audio/opus" || + mime_type == "application/ogg" || mime_type == "audio/ogg") && + title.endsWith(".opus")) { + tag.reset(new TagLib::Ogg::Opus::File(stream, true, + TagLib::AudioProperties::Accurate)); } #endif - else if (mime_type == "application/ogg" || - mime_type == "audio/ogg") { - tag.reset(new TagLib::Ogg::Vorbis::File( - stream, - true, - TagLib::AudioProperties::Accurate)); - } else if (mime_type == "application/x-flac" || - mime_type == "audio/flac" || - mime_type == "audio/x-flac") { - tag.reset(new TagLib::FLAC::File( - stream, - TagLib::ID3v2::FrameFactory::instance(), - true, - TagLib::AudioProperties::Accurate)); + else if (mime_type == "application/ogg" || mime_type == "audio/ogg") { + tag.reset(new TagLib::Ogg::Vorbis::File(stream, true, + TagLib::AudioProperties::Accurate)); + } else if (mime_type == "application/x-flac" || mime_type == "audio/flac" || + mime_type == "audio/x-flac") { + tag.reset(new TagLib::FLAC::File(stream, + TagLib::ID3v2::FrameFactory::instance(), + true, TagLib::AudioProperties::Accurate)); } else if (mime_type == "audio/x-ms-wma") { - tag.reset(new TagLib::ASF::File( - stream, - true, - TagLib::AudioProperties::Accurate)); + tag.reset( + new TagLib::ASF::File(stream, true, TagLib::AudioProperties::Accurate)); } else { qLog(Debug) << "Unknown mime type for tagging:" << mime_type; return false; @@ -914,8 +985,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, if (stream->num_requests() > 2) { // Warn if pre-caching failed. qLog(Warning) << "Total requests for file:" << title - << stream->num_requests() - << stream->cached_bytes(); + << stream->num_requests() << stream->cached_bytes(); } if (tag->tag() && !tag->tag()->isEmpty()) { @@ -941,14 +1011,16 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, return false; } -#endif // HAVE_GOOGLE_DRIVE +#endif // HAVE_GOOGLE_DRIVE -TagLib::ID3v2::PopularimeterFrame* TagReader::GetPOPMFrameFromTag(TagLib::ID3v2::Tag* tag) { +TagLib::ID3v2::PopularimeterFrame* TagReader::GetPOPMFrameFromTag( + TagLib::ID3v2::Tag* tag) { TagLib::ID3v2::PopularimeterFrame* frame = nullptr; const TagLib::ID3v2::FrameListMap& map = tag->frameListMap(); if (!map["POPM"].isEmpty()) { - frame = dynamic_cast(map["POPM"].front()); + frame = + dynamic_cast(map["POPM"].front()); } if (!frame) { @@ -962,15 +1034,15 @@ float TagReader::ConvertPOPMRating(const int POPM_rating) { if (POPM_rating < 0x01) { return 0.0; } else if (POPM_rating < 0x40) { - return 0.20; // 1 star + return 0.20; // 1 star } else if (POPM_rating < 0x80) { - return 0.40; // 2 stars + return 0.40; // 2 stars } else if (POPM_rating < 0xC0) { - return 0.60; // 3 stars - } else if (POPM_rating < 0xFC) { // some players store 5 stars as 0xFC - return 0.80; // 4 stars + return 0.60; // 3 stars + } else if (POPM_rating < 0xFC) { // some players store 5 stars as 0xFC + return 0.80; // 4 stars } - return 1.0; // 5 stars + return 1.0; // 5 stars } int TagReader::ConvertToPOPMRating(const float rating) { diff --git a/ext/libclementine-tagreader/tagreader.h b/ext/libclementine-tagreader/tagreader.h index 7dafd25c0..28d989803 100644 --- a/ext/libclementine-tagreader/tagreader.h +++ b/ext/libclementine-tagreader/tagreader.h @@ -30,15 +30,14 @@ class QString; class QTextCodec; class QUrl; - namespace TagLib { - class FileRef; - class String; +class FileRef; +class String; - namespace ID3v2 { - class Tag; - class PopularimeterFrame; - } +namespace ID3v2 { +class Tag; +class PopularimeterFrame; +} } class FileRefFactory; @@ -52,25 +51,26 @@ class TagReader { public: TagReader(); - void ReadFile(const QString& filename, pb::tagreader::SongMetadata* song) const; - bool SaveFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; + void ReadFile(const QString& filename, + pb::tagreader::SongMetadata* song) const; + bool SaveFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; // Returns false if something went wrong; returns true otherwise (might // returns true if the file exists but nothing has been written inside because // statistics tag format is not supported for this kind of file) - bool SaveSongStatisticsToFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; - bool SaveSongRatingToFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; + bool SaveSongStatisticsToFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; + bool SaveSongRatingToFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; bool IsMediaFile(const QString& filename) const; QByteArray LoadEmbeddedArt(const QString& filename) const; - #ifdef HAVE_GOOGLE_DRIVE - bool ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& access_token, +#ifdef HAVE_GOOGLE_DRIVE + bool ReadCloudFile(const QUrl& download_url, const QString& title, int size, + const QString& mime_type, const QString& access_token, pb::tagreader::SongMetadata* song) const; - #endif // HAVE_GOOGLE_DRIVE +#endif // HAVE_GOOGLE_DRIVE static void Decode(const TagLib::String& tag, const QTextCodec* codec, std::string* output); @@ -80,21 +80,24 @@ class TagReader { void ParseFMPSFrame(const QString& name, const QString& value, pb::tagreader::SongMetadata* song) const; void ParseOggTag(const TagLib::Ogg::FieldListMap& map, - const QTextCodec* codec, - QString* disc, QString* compilation, + const QTextCodec* codec, QString* disc, QString* compilation, pb::tagreader::SongMetadata* song) const; void SetVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, const pb::tagreader::SongMetadata& song) const; - void SetFMPSStatisticsVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const; + void SetFMPSStatisticsVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const; void SetFMPSRatingVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const; + const pb::tagreader::SongMetadata& song) + const; - pb::tagreader::SongMetadata_Type GuessFileType(TagLib::FileRef* fileref) const; + pb::tagreader::SongMetadata_Type GuessFileType(TagLib::FileRef* fileref) + const; void SetUserTextFrame(const QString& description, const QString& value, TagLib::ID3v2::Tag* tag) const; - void SetUserTextFrame(const std::string& description, const std::string& value, + void SetUserTextFrame(const std::string& description, + const std::string& value, TagLib::ID3v2::Tag* tag) const; void SetTextFrame(const char* id, const QString& value, @@ -102,15 +105,17 @@ class TagReader { void SetTextFrame(const char* id, const std::string& value, TagLib::ID3v2::Tag* tag) const; -private: + private: static const char* kMP4_FMPS_Rating_ID; static const char* kMP4_FMPS_Playcount_ID; static const char* kMP4_FMPS_Score_ID; - // Returns a float in [0.0..1.0] corresponding to the rating range we use in Clementine + // Returns a float in [0.0..1.0] corresponding to the rating range we use in + // Clementine static float ConvertPOPMRating(const int POPM_rating); // Reciprocal static int ConvertToPOPMRating(const float rating); - static TagLib::ID3v2::PopularimeterFrame* GetPOPMFrameFromTag(TagLib::ID3v2::Tag* tag); + static TagLib::ID3v2::PopularimeterFrame* GetPOPMFrameFromTag( + TagLib::ID3v2::Tag* tag); FileRefFactory* factory_; QNetworkAccessManager* network_; @@ -118,4 +123,4 @@ private: const std::string kEmbeddedCover; }; -#endif // TAGREADER_H +#endif // TAGREADER_H diff --git a/src/analyzers/analyzer.cpp b/src/analyzers/analyzer.cpp index 1a6e1dda1..54d0667a0 100644 --- a/src/analyzers/analyzer.cpp +++ b/src/analyzers/analyzer.cpp @@ -3,15 +3,13 @@ #include "engines/enginebase.h" AnalyzerBase::AnalyzerBase(QWidget* parent) - : QGLWidget(parent), - engine_(nullptr) { -} + : QGLWidget(parent), engine_(nullptr) {} void AnalyzerBase::set_engine(Engine::Base* engine) { disconnect(engine_); engine_ = engine; if (engine_) { connect(engine_, SIGNAL(SpectrumAvailable(const QVector&)), - SLOT(SpectrumAvailable(const QVector&))); + SLOT(SpectrumAvailable(const QVector&))); } } diff --git a/src/analyzers/analyzerbase.cpp b/src/analyzers/analyzerbase.cpp index b4e12b91b..f0ca647b1 100644 --- a/src/analyzers/analyzerbase.cpp +++ b/src/analyzers/analyzerbase.cpp @@ -17,9 +17,9 @@ #include "analyzerbase.h" -#include //interpolate() +#include //interpolate() -#include //event() +#include //event() #include #include #include @@ -27,205 +27,186 @@ #include "engines/enginebase.h" // INSTRUCTIONS Base2D -// 1. do anything that depends on height() in init(), Base2D will call it before you are shown +// 1. do anything that depends on height() in init(), Base2D will call it before +// you are shown // 2. otherwise you can use the constructor to initialise things -// 3. reimplement analyze(), and paint to canvas(), Base2D will update the widget when you return control to it +// 3. reimplement analyze(), and paint to canvas(), Base2D will update the +// widget when you return control to it // 4. if you want to manipulate the scope, reimplement transform() // 5. for convenience are pre-included // TODO make an INSTRUCTIONS file -//can't mod scope in analyze you have to use transform +// can't mod scope in analyze you have to use transform - -//TODO for 2D use setErasePixmap Qt function insetead of m_background +// TODO for 2D use setErasePixmap Qt function insetead of m_background // make the linker happy only for gcc < 4.0 -#if !( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 0 ) ) && !defined(Q_OS_WIN32) +#if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 0)) && \ + !defined(Q_OS_WIN32) template class Analyzer::Base; #endif +Analyzer::Base::Base(QWidget* parent, uint scopeSize) + : QWidget(parent), + m_timeout(40) // msec + , + m_fht(new FHT(scopeSize)), + m_engine(nullptr), + m_lastScope(512), + new_frame_(false), + is_playing_(false) {} -Analyzer::Base::Base( QWidget *parent, uint scopeSize ) - : QWidget( parent ) - , m_timeout( 40 ) // msec - , m_fht( new FHT(scopeSize) ) - , m_engine(nullptr) - , m_lastScope(512) - , new_frame_(false) - , is_playing_(false) +void Analyzer::Base::hideEvent(QHideEvent*) { m_timer.stop(); } + +void Analyzer::Base::showEvent(QShowEvent*) { m_timer.start(timeout(), this); } + +void Analyzer::Base::transform(Scope& scope) // virtual { + // this is a standard transformation that should give + // an FFT scope that has bands for pretty analyzers + + // NOTE resizing here is redundant as FHT routines only calculate FHT::size() + // values + // scope.resize( m_fht->size() ); + + float* front = static_cast(&scope.front()); + + float* f = new float[m_fht->size()]; + m_fht->copy(&f[0], front); + m_fht->logSpectrum(front, &f[0]); + m_fht->scale(front, 1.0 / 20); + + scope.resize(m_fht->size() / 2); // second half of values are rubbish + delete[] f; } -void Analyzer::Base::hideEvent(QHideEvent *) { - m_timer.stop(); -} +void Analyzer::Base::paintEvent(QPaintEvent* e) { + QPainter p(this); + p.fillRect(e->rect(), palette().color(QPalette::Window)); -void Analyzer::Base::showEvent(QShowEvent *) { - m_timer.start(timeout(), this); -} + switch (m_engine->state()) { + case Engine::Playing: { + const Engine::Scope& thescope = m_engine->scope(); + int i = 0; -void Analyzer::Base::transform( Scope &scope ) //virtual -{ - //this is a standard transformation that should give - //an FFT scope that has bands for pretty analyzers + // convert to mono here - our built in analyzers need mono, but we the + // engines provide interleaved pcm + for (uint x = 0; (int)x < m_fht->size(); ++x) { + m_lastScope[x] = + double(thescope[i] + thescope[i + 1]) / (2 * (1 << 15)); + i += 2; + } - //NOTE resizing here is redundant as FHT routines only calculate FHT::size() values - //scope.resize( m_fht->size() ); + is_playing_ = true; + transform(m_lastScope); + analyze(p, m_lastScope, new_frame_); - float *front = static_cast( &scope.front() ); + // scope.resize( m_fht->size() ); - float* f = new float[ m_fht->size() ]; - m_fht->copy( &f[0], front ); - m_fht->logSpectrum( front, &f[0] ); - m_fht->scale( front, 1.0 / 20 ); - - scope.resize( m_fht->size() / 2 ); //second half of values are rubbish - delete [] f; -} - -void Analyzer::Base::paintEvent(QPaintEvent * e) -{ - QPainter p(this); - p.fillRect(e->rect(), palette().color(QPalette::Window)); - - switch( m_engine->state() ) - { - case Engine::Playing: - { - const Engine::Scope &thescope = m_engine->scope(); - int i = 0; - - // convert to mono here - our built in analyzers need mono, but we the engines provide interleaved pcm - for( uint x = 0; (int)x < m_fht->size(); ++x ) - { - m_lastScope[x] = double(thescope[i] + thescope[i+1]) / (2*(1<<15)); - i += 2; - } - - is_playing_ = true; - transform( m_lastScope ); - analyze( p, m_lastScope, new_frame_ ); - - //scope.resize( m_fht->size() ); - - break; + break; } case Engine::Paused: - is_playing_ = false; - analyze(p, m_lastScope, new_frame_); - break; + is_playing_ = false; + analyze(p, m_lastScope, new_frame_); + break; default: - is_playing_ = false; - demo(p); - } + is_playing_ = false; + demo(p); + } - - new_frame_ = false; + new_frame_ = false; } -int Analyzer::Base::resizeExponent( int exp ) -{ - if ( exp < 3 ) - exp = 3; - else if ( exp > 9 ) - exp = 9; +int Analyzer::Base::resizeExponent(int exp) { + if (exp < 3) + exp = 3; + else if (exp > 9) + exp = 9; - if ( exp != m_fht->sizeExp() ) { - delete m_fht; - m_fht = new FHT( exp ); - } - return exp; + if (exp != m_fht->sizeExp()) { + delete m_fht; + m_fht = new FHT(exp); + } + return exp; } -int Analyzer::Base::resizeForBands( int bands ) -{ - int exp; - if ( bands <= 8 ) - exp = 4; - else if ( bands <= 16 ) - exp = 5; - else if ( bands <= 32 ) - exp = 6; - else if ( bands <= 64 ) - exp = 7; - else if ( bands <= 128 ) - exp = 8; - else - exp = 9; +int Analyzer::Base::resizeForBands(int bands) { + int exp; + if (bands <= 8) + exp = 4; + else if (bands <= 16) + exp = 5; + else if (bands <= 32) + exp = 6; + else if (bands <= 64) + exp = 7; + else if (bands <= 128) + exp = 8; + else + exp = 9; - resizeExponent( exp ); - return m_fht->size() / 2; + resizeExponent(exp); + return m_fht->size() / 2; } -void Analyzer::Base::demo(QPainter& p) //virtual +void Analyzer::Base::demo(QPainter& p) // virtual { - static int t = 201; //FIXME make static to namespace perhaps + static int t = 201; // FIXME make static to namespace perhaps - if( t > 999 ) t = 1; //0 = wasted calculations - if( t < 201 ) - { - Scope s( 32 ); + if (t > 999) t = 1; // 0 = wasted calculations + if (t < 201) { + Scope s(32); - const double dt = double(t) / 200; - for( uint i = 0; i < s.size(); ++i ) - s[i] = dt * (sin( M_PI + (i * M_PI) / s.size() ) + 1.0); + const double dt = double(t) / 200; + for (uint i = 0; i < s.size(); ++i) + s[i] = dt * (sin(M_PI + (i * M_PI) / s.size()) + 1.0); - analyze( p, s, new_frame_ ); - } - else analyze( p, Scope( 32, 0 ), new_frame_ ); + analyze(p, s, new_frame_); + } else + analyze(p, Scope(32, 0), new_frame_); - ++t; + ++t; } - -void Analyzer::Base::polishEvent() -{ - init(); //virtual +void Analyzer::Base::polishEvent() { + init(); // virtual } -void -Analyzer::interpolate( const Scope &inVec, Scope &outVec ) //static +void Analyzer::interpolate(const Scope& inVec, Scope& outVec) // static { - double pos = 0.0; - const double step = (double)inVec.size() / outVec.size(); + double pos = 0.0; + const double step = (double)inVec.size() / outVec.size(); - for ( uint i = 0; i < outVec.size(); ++i, pos += step ) - { - const double error = pos - std::floor( pos ); - const unsigned long offset = (unsigned long)pos; + for (uint i = 0; i < outVec.size(); ++i, pos += step) { + const double error = pos - std::floor(pos); + const unsigned long offset = (unsigned long)pos; - unsigned long indexLeft = offset + 0; + unsigned long indexLeft = offset + 0; - if ( indexLeft >= inVec.size() ) - indexLeft = inVec.size() - 1; + if (indexLeft >= inVec.size()) indexLeft = inVec.size() - 1; - unsigned long indexRight = offset + 1; + unsigned long indexRight = offset + 1; - if ( indexRight >= inVec.size() ) - indexRight = inVec.size() - 1; + if (indexRight >= inVec.size()) indexRight = inVec.size() - 1; - outVec[i] = inVec[indexLeft ] * ( 1.0 - error ) + - inVec[indexRight] * error; - } + outVec[i] = inVec[indexLeft] * (1.0 - error) + inVec[indexRight] * error; + } } -void -Analyzer::initSin( Scope &v, const uint size ) //static +void Analyzer::initSin(Scope& v, const uint size) // static { - double step = ( M_PI * 2 ) / size; - double radian = 0; + double step = (M_PI * 2) / size; + double radian = 0; - for ( uint i = 0; i < size; i++ ) - { - v.push_back( sin( radian ) ); - radian += step; - } + for (uint i = 0; i < size; i++) { + v.push_back(sin(radian)); + radian += step; + } } void Analyzer::Base::timerEvent(QTimerEvent* e) { QWidget::timerEvent(e); - if (e->timerId() != m_timer.timerId()) - return; + if (e->timerId() != m_timer.timerId()) return; new_frame_ = true; update(); diff --git a/src/analyzers/analyzerbase.h b/src/analyzers/analyzerbase.h index dc79af002..f6c7eebfd 100644 --- a/src/analyzers/analyzerbase.h +++ b/src/analyzers/analyzerbase.h @@ -4,19 +4,18 @@ #ifndef ANALYZERBASE_H #define ANALYZERBASE_H - #ifdef __FreeBSD__ #include #endif -#include "core/fht.h" //stack allocated and convenience +#include "core/fht.h" //stack allocated and convenience #include "engines/engine_fwd.h" -#include //stack allocated and convenience +#include //stack allocated and convenience #include //stack allocated -#include //baseclass -#include //included for convenience +#include //baseclass +#include //included for convenience -#include //baseclass +#include //baseclass #ifdef Q_WS_MACX #include //included for convenience #include //included for convenience @@ -29,63 +28,60 @@ class QEvent; class QPaintEvent; class QResizeEvent; - namespace Analyzer { typedef std::vector Scope; -class Base : public QWidget -{ +class Base : public QWidget { Q_OBJECT -public: - ~Base() { delete m_fht; } + public: + ~Base() { delete m_fht; } - uint timeout() const { return m_timeout; } + uint timeout() const { return m_timeout; } - void set_engine(EngineBase* engine) { m_engine = engine; } + void set_engine(EngineBase* engine) { m_engine = engine; } - void changeTimeout( uint newTimeout ) { - m_timeout = newTimeout; - if (m_timer.isActive()) { - m_timer.stop(); - m_timer.start(m_timeout, this); - } + void changeTimeout(uint newTimeout) { + m_timeout = newTimeout; + if (m_timer.isActive()) { + m_timer.stop(); + m_timer.start(m_timeout, this); } + } -protected: - Base( QWidget*, uint scopeSize = 7 ); + protected: + Base(QWidget*, uint scopeSize = 7); - void hideEvent(QHideEvent *); - void showEvent(QShowEvent *); - void paintEvent( QPaintEvent* ); - void timerEvent(QTimerEvent *); + void hideEvent(QHideEvent*); + void showEvent(QShowEvent*); + void paintEvent(QPaintEvent*); + void timerEvent(QTimerEvent*); - void polishEvent(); + void polishEvent(); - int resizeExponent( int ); - int resizeForBands( int ); - virtual void init() {} - virtual void transform( Scope& ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame) = 0; - virtual void demo(QPainter& p); + int resizeExponent(int); + int resizeForBands(int); + virtual void init() {} + virtual void transform(Scope&); + virtual void analyze(QPainter& p, const Scope&, bool new_frame) = 0; + virtual void demo(QPainter& p); -protected: - QBasicTimer m_timer; - uint m_timeout; - FHT *m_fht; - EngineBase* m_engine; - Scope m_lastScope; + protected: + QBasicTimer m_timer; + uint m_timeout; + FHT* m_fht; + EngineBase* m_engine; + Scope m_lastScope; - bool new_frame_; - bool is_playing_; + bool new_frame_; + bool is_playing_; }; +void interpolate(const Scope&, Scope&); +void initSin(Scope&, const uint = 6000); -void interpolate( const Scope&, Scope& ); -void initSin( Scope&, const uint = 6000 ); - -} //END namespace Analyzer +} // END namespace Analyzer using Analyzer::Scope; diff --git a/src/analyzers/analyzercontainer.cpp b/src/analyzers/analyzercontainer.cpp index e3478a3b8..e6bd00ec1 100644 --- a/src/analyzers/analyzercontainer.cpp +++ b/src/analyzers/analyzercontainer.cpp @@ -39,21 +39,20 @@ const int AnalyzerContainer::kMediumFramerate = 25; const int AnalyzerContainer::kHighFramerate = 30; const int AnalyzerContainer::kSuperHighFramerate = 60; -AnalyzerContainer::AnalyzerContainer(QWidget *parent) - : QWidget(parent), - current_framerate_(kMediumFramerate), - context_menu_(new QMenu(this)), - context_menu_framerate_(new QMenu(tr("Framerate"), this)), - group_(new QActionGroup(this)), - group_framerate_(new QActionGroup(this)), - mapper_(new QSignalMapper(this)), - mapper_framerate_(new QSignalMapper(this)), - visualisation_action_(nullptr), - double_click_timer_(new QTimer(this)), - ignore_next_click_(false), - current_analyzer_(nullptr), - engine_(nullptr) -{ +AnalyzerContainer::AnalyzerContainer(QWidget* parent) + : QWidget(parent), + current_framerate_(kMediumFramerate), + context_menu_(new QMenu(this)), + context_menu_framerate_(new QMenu(tr("Framerate"), this)), + group_(new QActionGroup(this)), + group_framerate_(new QActionGroup(this)), + mapper_(new QSignalMapper(this)), + mapper_framerate_(new QSignalMapper(this)), + visualisation_action_(nullptr), + double_click_timer_(new QTimer(this)), + ignore_next_click_(false), + current_analyzer_(nullptr), + engine_(nullptr) { QHBoxLayout* layout = new QHBoxLayout(this); setLayout(layout); layout->setContentsMargins(0, 0, 0, 0); @@ -62,7 +61,8 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent) AddFramerate(tr("Low (%1 fps)").arg(kLowFramerate), kLowFramerate); AddFramerate(tr("Medium (%1 fps)").arg(kMediumFramerate), kMediumFramerate); AddFramerate(tr("High (%1 fps)").arg(kHighFramerate), kHighFramerate); - AddFramerate(tr("Super high (%1 fps)").arg(kSuperHighFramerate), kSuperHighFramerate); + AddFramerate(tr("Super high (%1 fps)").arg(kSuperHighFramerate), + kSuperHighFramerate); connect(mapper_framerate_, SIGNAL(mapped(int)), SLOT(ChangeFramerate(int))); context_menu_->addMenu(context_menu_framerate_); @@ -76,8 +76,8 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent) AddAnalyzerType(); connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int))); - disable_action_ = - context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer())); + disable_action_ = context_menu_->addAction(tr("No analyzer"), this, + SLOT(DisableAnalyzer())); disable_action_->setCheckable(true); group_->addAction(disable_action_); @@ -115,12 +115,11 @@ void AnalyzerContainer::ShowPopupMenu() { context_menu_->popup(last_click_pos_); } -void AnalyzerContainer::mouseDoubleClickEvent(QMouseEvent *) { +void AnalyzerContainer::mouseDoubleClickEvent(QMouseEvent*) { double_click_timer_->stop(); ignore_next_click_ = true; - if (visualisation_action_) - visualisation_action_->trigger(); + if (visualisation_action_) visualisation_action_->trigger(); } void AnalyzerContainer::wheelEvent(QWheelEvent* e) { @@ -128,8 +127,7 @@ void AnalyzerContainer::wheelEvent(QWheelEvent* e) { } void AnalyzerContainer::SetEngine(EngineBase* engine) { - if (current_analyzer_) - current_analyzer_->set_engine(engine); + if (current_analyzer_) current_analyzer_->set_engine(engine); engine_ = engine; } @@ -144,7 +142,8 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { QObject* instance = analyzer_types_[id]->newInstance(Q_ARG(QWidget*, this)); if (!instance) { - qLog(Warning) << "Couldn't intialise a new" << analyzer_types_[id]->className(); + qLog(Warning) << "Couldn't intialise a new" + << analyzer_types_[id]->className(); return; } @@ -152,7 +151,8 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { current_analyzer_ = qobject_cast(instance); current_analyzer_->set_engine(engine_); // Even if it is not supposed to happen, I don't want to get a dbz error - current_framerate_ = current_framerate_ == 0 ? kMediumFramerate : current_framerate_; + current_framerate_ = + current_framerate_ == 0 ? kMediumFramerate : current_framerate_; current_analyzer_->changeTimeout(1000 / current_framerate_); layout()->addWidget(current_analyzer_); @@ -161,7 +161,7 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { } void AnalyzerContainer::ChangeFramerate(int new_framerate) { - if(current_analyzer_) { + if (current_analyzer_) { // Even if it is not supposed to happen, I don't want to get a dbz error new_framerate = new_framerate == 0 ? kMediumFramerate : new_framerate; current_analyzer_->changeTimeout(1000 / new_framerate); @@ -179,7 +179,7 @@ void AnalyzerContainer::Load() { DisableAnalyzer(); disable_action_->setChecked(true); } else { - for (int i=0 ; iclassName()) { ChangeAnalyzer(i); actions_[i]->setChecked(true); @@ -190,8 +190,8 @@ void AnalyzerContainer::Load() { // Framerate current_framerate_ = s.value(kSettingsFramerate, kMediumFramerate).toInt(); - for (int i=0 ; iactions()[i]->setChecked(true); break; @@ -200,8 +200,8 @@ void AnalyzerContainer::Load() { } void AnalyzerContainer::SaveFramerate(int framerate) { -// For now, framerate is common for all analyzers. Maybe each analyzer should -// have its own framerate? + // For now, framerate is common for all analyzers. Maybe each analyzer should + // have its own framerate? current_framerate_ = framerate; QSettings s; s.beginGroup(kSettingsGroup); @@ -212,13 +212,14 @@ void AnalyzerContainer::Save() { QSettings s; s.beginGroup(kSettingsGroup); - s.setValue("type", current_analyzer_ ? - current_analyzer_->metaObject()->className() : - QVariant()); + s.setValue("type", current_analyzer_ + ? current_analyzer_->metaObject()->className() + : QVariant()); } void AnalyzerContainer::AddFramerate(const QString& name, int framerate) { - QAction *action = context_menu_framerate_->addAction(name, mapper_framerate_, SLOT(map())); + QAction* action = + context_menu_framerate_->addAction(name, mapper_framerate_, SLOT(map())); mapper_framerate_->setMapping(action, framerate); group_framerate_->addAction(action); framerate_list_ << framerate; diff --git a/src/analyzers/analyzercontainer.h b/src/analyzers/analyzercontainer.h index 20035798e..b9405d325 100644 --- a/src/analyzers/analyzercontainer.h +++ b/src/analyzers/analyzercontainer.h @@ -28,7 +28,7 @@ class AnalyzerContainer : public QWidget { Q_OBJECT -public: + public: AnalyzerContainer(QWidget* parent); void SetEngine(EngineBase* engine); @@ -40,18 +40,18 @@ public: signals: void WheelEvent(int delta); -protected: - void mouseReleaseEvent(QMouseEvent *); - void mouseDoubleClickEvent(QMouseEvent *); + protected: + void mouseReleaseEvent(QMouseEvent*); + void mouseDoubleClickEvent(QMouseEvent*); void wheelEvent(QWheelEvent* e); -private slots: + private slots: void ChangeAnalyzer(int id); void ChangeFramerate(int new_framerate); void DisableAnalyzer(); void ShowPopupMenu(); -private: + private: static const int kLowFramerate; static const int kMediumFramerate; static const int kHighFramerate; @@ -61,11 +61,11 @@ private: void Save(); void SaveFramerate(int framerate); template - void AddAnalyzerType(); + void AddAnalyzerType(); void AddFramerate(const QString& name, int framerate); -private: - int current_framerate_; // fps + private: + int current_framerate_; // fps QMenu* context_menu_; QMenu* context_menu_framerate_; QActionGroup* group_; @@ -88,11 +88,12 @@ private: }; template - void AnalyzerContainer::AddAnalyzerType() { +void AnalyzerContainer::AddAnalyzerType() { int id = analyzer_types_.count(); analyzer_types_ << &T::staticMetaObject; - QAction* action = context_menu_->addAction(tr(T::kName), mapper_, SLOT(map())); + QAction* action = + context_menu_->addAction(tr(T::kName), mapper_, SLOT(map())); group_->addAction(action); mapper_->setMapping(action, id); action->setCheckable(true); @@ -100,4 +101,3 @@ template } #endif - diff --git a/src/analyzers/baranalyzer.cpp b/src/analyzers/baranalyzer.cpp index 1e9844289..c4a39bc54 100644 --- a/src/analyzers/baranalyzer.cpp +++ b/src/analyzers/baranalyzer.cpp @@ -12,155 +12,150 @@ // #include "baranalyzer.h" -#include //log10(), etc. +#include //log10(), etc. #include #include -const char* BarAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Bar analyzer"); +const char* BarAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Bar analyzer"); - -BarAnalyzer::BarAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 8 ) - //, m_bands( BAND_COUNT ) - //, barVector( BAND_COUNT, 0 ) - //, roofVector( BAND_COUNT, 50 ) - //, roofVelocityVector( BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR ) +BarAnalyzer::BarAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 8) + //, m_bands( BAND_COUNT ) + //, barVector( BAND_COUNT, 0 ) + //, roofVector( BAND_COUNT, 50 ) + //, roofVelocityVector( BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR ) { - //roof pixmaps don't depend on size() so we do in the ctor - m_bg = parent->palette().color(QPalette::Background); + // roof pixmaps don't depend on size() so we do in the ctor + m_bg = parent->palette().color(QPalette::Background); - QColor fg( 0xff, 0x50, 0x70 ); + QColor fg(0xff, 0x50, 0x70); - double dr = double(m_bg.red() - fg.red()) / (NUM_ROOFS-1); //-1 because we start loop below at 0 - double dg = double(m_bg.green() - fg.green()) / (NUM_ROOFS-1); - double db = double(m_bg.blue() - fg.blue()) / (NUM_ROOFS-1); - - for ( uint i = 0; i < NUM_ROOFS; ++i ) - { - m_pixRoof[i] = QPixmap( COLUMN_WIDTH, 1 ); - m_pixRoof[i].fill( QColor( fg.red()+int(dr*i), fg.green()+int(dg*i), fg.blue()+int(db*i) ) ); - } + double dr = double(m_bg.red() - fg.red()) / + (NUM_ROOFS - 1); //-1 because we start loop below at 0 + double dg = double(m_bg.green() - fg.green()) / (NUM_ROOFS - 1); + double db = double(m_bg.blue() - fg.blue()) / (NUM_ROOFS - 1); + for (uint i = 0; i < NUM_ROOFS; ++i) { + m_pixRoof[i] = QPixmap(COLUMN_WIDTH, 1); + m_pixRoof[i].fill(QColor(fg.red() + int(dr * i), fg.green() + int(dg * i), + fg.blue() + int(db * i))); + } } -void BarAnalyzer::resizeEvent( QResizeEvent * e ) -{ - init(); -} +void BarAnalyzer::resizeEvent(QResizeEvent* e) { init(); } // METHODS ===================================================== -void BarAnalyzer::init() -{ - const double MAX_AMPLITUDE = 1.0; - const double F = double(height() - 2) / (log10( 255 ) * MAX_AMPLITUDE ); +void BarAnalyzer::init() { + const double MAX_AMPLITUDE = 1.0; + const double F = double(height() - 2) / (log10(255) * MAX_AMPLITUDE); + BAND_COUNT = width() / 5; + MAX_DOWN = int(0 - (qMax(1, height() / 50))); + MAX_UP = int(qMax(1, height() / 25)); - BAND_COUNT = width() / 5; - MAX_DOWN = int(0 -(qMax(1, height() / 50))); - MAX_UP = int(qMax(1, height() / 25)); + barVector.resize(BAND_COUNT, 0); + roofVector.resize(BAND_COUNT, height() - 5); + roofVelocityVector.resize(BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR); + m_roofMem.resize(BAND_COUNT); + m_scope.resize(BAND_COUNT); - barVector.resize( BAND_COUNT, 0 ); - roofVector.resize( BAND_COUNT, height() -5 ); - roofVelocityVector.resize( BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR ); - m_roofMem.resize(BAND_COUNT); - m_scope.resize(BAND_COUNT); + // generate a list of values that express amplitudes in range 0-MAX_AMP as + // ints from 0-height() on log scale + for (uint x = 0; x < 256; ++x) { + m_lvlMapper[x] = uint(F * log10(x + 1)); + } - //generate a list of values that express amplitudes in range 0-MAX_AMP as ints from 0-height() on log scale - for ( uint x = 0; x < 256; ++x ) - { - m_lvlMapper[x] = uint( F * log10( x+1 ) ); + m_pixBarGradient = QPixmap(height() * COLUMN_WIDTH, height()); + m_pixCompose = QPixmap(size()); + + QPainter p(&m_pixBarGradient); + for (int x = 0, r = 0x40, g = 0x30, b = 0xff, r2 = 255 - r; x < height(); + ++x) { + for (int y = x; y > 0; --y) { + const double fraction = (double)y / height(); + + // p.setPen( QColor( r + (int)(r2 * fraction), g, b - (int)(255 * + // fraction) ) ); + p.setPen(QColor(r + (int)(r2 * fraction), g, b)); + p.drawLine(x * COLUMN_WIDTH, height() - y, (x + 1) * COLUMN_WIDTH, + height() - y); } + } - m_pixBarGradient = QPixmap( height()*COLUMN_WIDTH, height() ); - m_pixCompose = QPixmap( size() ); - - QPainter p( &m_pixBarGradient ); - for ( int x=0, r=0x40, g=0x30, b=0xff, r2=255-r; - x < height(); ++x ) - { - for ( int y = x; y > 0; --y ) - { - const double fraction = (double)y / height(); - -// p.setPen( QColor( r + (int)(r2 * fraction), g, b - (int)(255 * fraction) ) ); - p.setPen( QColor( r + (int)(r2 * fraction), g, b ) ); - p.drawLine( x*COLUMN_WIDTH, height() - y, (x+1)*COLUMN_WIDTH, height() - y ); - } - } - - - setMinimumSize( QSize( BAND_COUNT * COLUMN_WIDTH, 10 ) ); + setMinimumSize(QSize(BAND_COUNT * COLUMN_WIDTH, 10)); } +void BarAnalyzer::analyze(QPainter& p, const Scope& s, bool new_frame) { + // Analyzer::interpolate( s, m_bands ); -void BarAnalyzer::analyze( QPainter& p, const Scope &s, bool new_frame) -{ - //Analyzer::interpolate( s, m_bands ); + Scope& v = m_scope; + Analyzer::interpolate(s, v); - Scope &v = m_scope; - Analyzer::interpolate( s, v ); + for (uint i = 0, x = 0, y2; i < v.size(); ++i, x += COLUMN_WIDTH + 1) { + // assign pre[log10]'d value + y2 = uint(v[i] * + 256); // 256 will be optimised to a bitshift //no, it's a float + y2 = m_lvlMapper[(y2 > 255) ? 255 : y2]; // lvlMapper is array of ints with + // values 0 to height() - for ( uint i = 0, x = 0, y2; i < v.size(); ++i, x+=COLUMN_WIDTH+1 ) - { - //assign pre[log10]'d value - y2 = uint(v[i] * 256); //256 will be optimised to a bitshift //no, it's a float - y2 = m_lvlMapper[ (y2 > 255) ? 255 : y2 ]; //lvlMapper is array of ints with values 0 to height() + int change = y2 - barVector[i]; - int change = y2 - barVector[i]; + // using the best of Markey's, piggz and Max's ideas on the way to shift the + // bars + // we have the following: + // 1. don't adjust shift when doing small up movements + // 2. shift large upwards with a bias towards last value + // 3. fall downwards at a constant pace - //using the best of Markey's, piggz and Max's ideas on the way to shift the bars - //we have the following: - // 1. don't adjust shift when doing small up movements - // 2. shift large upwards with a bias towards last value - // 3. fall downwards at a constant pace - - /*if ( change > MAX_UP ) //anything too much greater than 2 gives "jitter" + /*if ( change > MAX_UP ) //anything too much greater than 2 gives "jitter" //add some dynamics - makes the value slightly closer to what it was last time y2 = ( barVector[i] + MAX_UP ); //y2 = ( barVector[i] * 2 + y2 ) / 3; - else*/ if ( change < MAX_DOWN ) - y2 = barVector[i] + MAX_DOWN; + else*/ if (change < + MAX_DOWN) + y2 = barVector[i] + MAX_DOWN; - - if ( (int)y2 > roofVector[i] ) - { - roofVector[i] = (int)y2; - roofVelocityVector[i] = 1; - } - - //remember where we are - barVector[i] = y2; - - if ( m_roofMem[i].size() > NUM_ROOFS ) - m_roofMem[i].erase( m_roofMem[i].begin() ); - - //blt last n roofs, a.k.a motion blur - for ( uint c = 0; c < m_roofMem[i].size(); ++c ) - //bitBlt( m_pComposePixmap, x, m_roofMem[i]->at( c ), m_roofPixmaps[ c ] ); - //bitBlt( canvas(), x, m_roofMem[i][c], &m_pixRoof[ NUM_ROOFS - 1 - c ] ); - p.drawPixmap(x, m_roofMem[i][c], m_pixRoof[ NUM_ROOFS - 1 - c ]); - - //blt the bar - p.drawPixmap(x, height() - y2, - *gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2); - /*bitBlt( canvas(), x, height() - y2, - gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2, Qt::CopyROP );*/ - - m_roofMem[i].push_back( height() - roofVector[i] - 2 ); - - //set roof parameters for the NEXT draw - if ( roofVelocityVector[i] != 0 ) - { - if ( roofVelocityVector[i] > 32 ) //no reason to do == 32 - roofVector[i] -= (roofVelocityVector[i] - 32) / 20; //trivial calculation - - if ( roofVector[i] < 0 ) - { - roofVector[i] = 0; //not strictly necessary - roofVelocityVector[i] = 0; - } - else ++roofVelocityVector[i]; - } + if ((int)y2 > roofVector[i]) { + roofVector[i] = (int)y2; + roofVelocityVector[i] = 1; } + + // remember where we are + barVector[i] = y2; + + if (m_roofMem[i].size() > NUM_ROOFS) + m_roofMem[i].erase(m_roofMem[i].begin()); + + // blt last n roofs, a.k.a motion blur + for (uint c = 0; c < m_roofMem[i].size(); ++c) + // bitBlt( m_pComposePixmap, x, m_roofMem[i]->at( c ), m_roofPixmaps[ c ] + // ); + // bitBlt( canvas(), x, m_roofMem[i][c], &m_pixRoof[ NUM_ROOFS - 1 - c ] + // ); + p.drawPixmap(x, m_roofMem[i][c], m_pixRoof[NUM_ROOFS - 1 - c]); + + // blt the bar + p.drawPixmap(x, height() - y2, *gradient(), y2 * COLUMN_WIDTH, + height() - y2, COLUMN_WIDTH, y2); + /*bitBlt( canvas(), x, height() - y2, + gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2, + Qt::CopyROP );*/ + + m_roofMem[i].push_back(height() - roofVector[i] - 2); + + // set roof parameters for the NEXT draw + if (roofVelocityVector[i] != 0) { + if (roofVelocityVector[i] > 32) // no reason to do == 32 + roofVector[i] -= + (roofVelocityVector[i] - 32) / 20; // trivial calculation + + if (roofVector[i] < 0) { + roofVector[i] = 0; // not strictly necessary + roofVelocityVector[i] = 0; + } else + ++roofVelocityVector[i]; + } + } } diff --git a/src/analyzers/baranalyzer.h b/src/analyzers/baranalyzer.h index e3d8fdc75..d56fc4dee 100644 --- a/src/analyzers/baranalyzer.h +++ b/src/analyzers/baranalyzer.h @@ -10,51 +10,50 @@ typedef std::vector aroofMemVec; - -class BarAnalyzer : public Analyzer::Base -{ +class BarAnalyzer : public Analyzer::Base { Q_OBJECT - public: - Q_INVOKABLE BarAnalyzer( QWidget* ); + public: + Q_INVOKABLE BarAnalyzer(QWidget*); - void init(); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); - //virtual void transform( Scope& ); + void init(); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); + // virtual void transform( Scope& ); - /** - * Resizes the widget to a new geometry according to @p e - * @param e The resize-event - */ - void resizeEvent( QResizeEvent * e); + /** + * Resizes the widget to a new geometry according to @p e + * @param e The resize-event + */ + void resizeEvent(QResizeEvent* e); - uint BAND_COUNT; - int MAX_DOWN; - int MAX_UP; - static const uint ROOF_HOLD_TIME = 48; - static const int ROOF_VELOCITY_REDUCTION_FACTOR = 32; - static const uint NUM_ROOFS = 16; - static const uint COLUMN_WIDTH = 4; + uint BAND_COUNT; + int MAX_DOWN; + int MAX_UP; + static const uint ROOF_HOLD_TIME = 48; + static const int ROOF_VELOCITY_REDUCTION_FACTOR = 32; + static const uint NUM_ROOFS = 16; + static const uint COLUMN_WIDTH = 4; - static const char* kName; + static const char* kName; - protected: - QPixmap m_pixRoof[NUM_ROOFS]; - //vector m_roofMem[BAND_COUNT]; + protected: + QPixmap m_pixRoof[NUM_ROOFS]; + // vector m_roofMem[BAND_COUNT]; - //Scope m_bands; //copy of the Scope to prevent creating/destroying a Scope every iteration - uint m_lvlMapper[256]; - std::vector m_roofMem; - std::vector barVector; //positions of bars - std::vector roofVector; //positions of roofs - std::vector roofVelocityVector; //speed that roofs falls + // Scope m_bands; //copy of the Scope to prevent creating/destroying a Scope + // every iteration + uint m_lvlMapper[256]; + std::vector m_roofMem; + std::vector barVector; // positions of bars + std::vector roofVector; // positions of roofs + std::vector roofVelocityVector; // speed that roofs falls - const QPixmap *gradient() const { return &m_pixBarGradient; } + const QPixmap* gradient() const { return &m_pixBarGradient; } - private: - QPixmap m_pixBarGradient; - QPixmap m_pixCompose; - Scope m_scope; //so we don't create a vector every frame - QColor m_bg; + private: + QPixmap m_pixBarGradient; + QPixmap m_pixCompose; + Scope m_scope; // so we don't create a vector every frame + QColor m_bg; }; #endif diff --git a/src/analyzers/blockanalyzer.cpp b/src/analyzers/blockanalyzer.cpp index c36e3f032..f308c11ee 100644 --- a/src/analyzers/blockanalyzer.cpp +++ b/src/analyzers/blockanalyzer.cpp @@ -12,389 +12,392 @@ #include #include -const uint BlockAnalyzer::HEIGHT = 2; -const uint BlockAnalyzer::WIDTH = 4; -const uint BlockAnalyzer::MIN_ROWS = 3; //arbituary -const uint BlockAnalyzer::MIN_COLUMNS = 32; //arbituary -const uint BlockAnalyzer::MAX_COLUMNS = 256; //must be 2**n -const uint BlockAnalyzer::FADE_SIZE = 90; +const uint BlockAnalyzer::HEIGHT = 2; +const uint BlockAnalyzer::WIDTH = 4; +const uint BlockAnalyzer::MIN_ROWS = 3; // arbituary +const uint BlockAnalyzer::MIN_COLUMNS = 32; // arbituary +const uint BlockAnalyzer::MAX_COLUMNS = 256; // must be 2**n +const uint BlockAnalyzer::FADE_SIZE = 90; -const char* BlockAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Block analyzer"); +const char* BlockAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Block analyzer"); -BlockAnalyzer::BlockAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 9 ) - , m_columns( 0 ) //uint - , m_rows( 0 ) //uint - , m_y( 0 ) //uint - , m_barPixmap( 1, 1 ) //null qpixmaps cause crashes - , m_topBarPixmap( WIDTH, HEIGHT ) - , m_scope( MIN_COLUMNS ) //Scope - , m_store( 1 << 8, 0 ) //vector - , m_fade_bars( FADE_SIZE ) //vector - , m_fade_pos( 1 << 8, 50 ) //vector - , m_fade_intensity( 1 << 8, 32 ) //vector +BlockAnalyzer::BlockAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 9), + m_columns(0) // uint + , + m_rows(0) // uint + , + m_y(0) // uint + , + m_barPixmap(1, 1) // null qpixmaps cause crashes + , + m_topBarPixmap(WIDTH, HEIGHT), + m_scope(MIN_COLUMNS) // Scope + , + m_store(1 << 8, 0) // vector + , + m_fade_bars(FADE_SIZE) // vector + , + m_fade_pos(1 << 8, 50) // vector + , + m_fade_intensity(1 << 8, 32) // vector { - setMinimumSize( MIN_COLUMNS*(WIDTH+1) -1, MIN_ROWS*(HEIGHT+1) -1 ); //-1 is padding, no drawing takes place there - setMaximumWidth( MAX_COLUMNS*(WIDTH+1) -1 ); + setMinimumSize(MIN_COLUMNS * (WIDTH + 1) - 1, + MIN_ROWS * (HEIGHT + 1) - + 1); //-1 is padding, no drawing takes place there + setMaximumWidth(MAX_COLUMNS * (WIDTH + 1) - 1); - // mxcl says null pixmaps cause crashes, so let's play it safe - for ( uint i = 0; i < FADE_SIZE; ++i ) - m_fade_bars[i] = QPixmap( 1, 1 ); + // mxcl says null pixmaps cause crashes, so let's play it safe + for (uint i = 0; i < FADE_SIZE; ++i) m_fade_bars[i] = QPixmap(1, 1); } -BlockAnalyzer::~BlockAnalyzer() -{ +BlockAnalyzer::~BlockAnalyzer() {} + +void BlockAnalyzer::resizeEvent(QResizeEvent* e) { + QWidget::resizeEvent(e); + + m_background = QPixmap(size()); + + const uint oldRows = m_rows; + + // all is explained in analyze().. + //+1 to counter -1 in maxSizes, trust me we need this! + m_columns = qMax(uint(double(width() + 1) / (WIDTH + 1)), MAX_COLUMNS); + m_rows = uint(double(height() + 1) / (HEIGHT + 1)); + + // this is the y-offset for drawing from the top of the widget + m_y = (height() - (m_rows * (HEIGHT + 1)) + 2) / 2; + + m_scope.resize(m_columns); + + if (m_rows != oldRows) { + m_barPixmap = QPixmap(WIDTH, m_rows * (HEIGHT + 1)); + + for (uint i = 0; i < FADE_SIZE; ++i) + m_fade_bars[i] = QPixmap(WIDTH, m_rows * (HEIGHT + 1)); + + m_yscale.resize(m_rows + 1); + + const uint PRE = 1, + PRO = 1; // PRE and PRO allow us to restrict the range somewhat + + for (uint z = 0; z < m_rows; ++z) + m_yscale[z] = 1 - (log10(PRE + z) / log10(PRE + m_rows + PRO)); + + m_yscale[m_rows] = 0; + + determineStep(); + paletteChange(palette()); + } + + drawBackground(); } -void -BlockAnalyzer::resizeEvent( QResizeEvent *e ) -{ - QWidget::resizeEvent( e ); +void BlockAnalyzer::determineStep() { + // falltime is dependent on rowcount due to our digital resolution (ie we have + // boxes/blocks of pixels) + // I calculated the value 30 based on some trial and error - m_background = QPixmap(size()); - - const uint oldRows = m_rows; - - //all is explained in analyze().. - //+1 to counter -1 in maxSizes, trust me we need this! - m_columns = qMax( uint(double(width()+1) / (WIDTH+1)), MAX_COLUMNS ); - m_rows = uint(double(height()+1) / (HEIGHT+1)); - - //this is the y-offset for drawing from the top of the widget - m_y = (height() - (m_rows * (HEIGHT+1)) + 2) / 2; - - m_scope.resize( m_columns ); - - if( m_rows != oldRows ) { - m_barPixmap = QPixmap( WIDTH, m_rows*(HEIGHT+1) ); - - for ( uint i = 0; i < FADE_SIZE; ++i ) - m_fade_bars[i] = QPixmap( WIDTH, m_rows*(HEIGHT+1) ); - - m_yscale.resize( m_rows + 1 ); - - const uint PRE = 1, PRO = 1; //PRE and PRO allow us to restrict the range somewhat - - for( uint z = 0; z < m_rows; ++z ) - m_yscale[z] = 1 - (log10( PRE+z ) / log10( PRE+m_rows+PRO )); - - m_yscale[m_rows] = 0; - - determineStep(); - paletteChange( palette() ); - } - - - drawBackground(); + const double fallTime = 30 * m_rows; + m_step = double(m_rows * timeout()) / fallTime; } -void -BlockAnalyzer::determineStep() +void BlockAnalyzer::transform(Analyzer::Scope& s) // pure virtual { - // falltime is dependent on rowcount due to our digital resolution (ie we have boxes/blocks of pixels) - // I calculated the value 30 based on some trial and error + for (uint x = 0; x < s.size(); ++x) s[x] *= 2; - const double fallTime = 30 * m_rows; - m_step = double(m_rows * timeout()) / fallTime; + float* front = static_cast(&s.front()); + + m_fht->spectrum(front); + m_fht->scale(front, 1.0 / 20); + + // the second half is pretty dull, so only show it if the user has a large + // analyzer + // by setting to m_scope.size() if large we prevent interpolation of large + // analyzers, this is good! + s.resize(m_scope.size() <= MAX_COLUMNS / 2 ? MAX_COLUMNS / 2 + : m_scope.size()); } -void -BlockAnalyzer::transform( Analyzer::Scope &s ) //pure virtual -{ - for( uint x = 0; x < s.size(); ++x ) - s[x] *= 2; +void BlockAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, + bool new_frame) { + // y = 2 3 2 1 0 2 + // . . . . # . + // . . . # # . + // # . # # # # + // # # # # # # + // + // visual aid for how this analyzer works. + // y represents the number of blanks + // y starts from the top and increases in units of blocks - float *front = static_cast( &s.front() ); + // m_yscale looks similar to: { 0.7, 0.5, 0.25, 0.15, 0.1, 0 } + // if it contains 6 elements there are 5 rows in the analyzer - m_fht->spectrum( front ); - m_fht->scale( front, 1.0 / 20 ); + Analyzer::interpolate(s, m_scope); - //the second half is pretty dull, so only show it if the user has a large analyzer - //by setting to m_scope.size() if large we prevent interpolation of large analyzers, this is good! - s.resize( m_scope.size() <= MAX_COLUMNS/2 ? MAX_COLUMNS/2 : m_scope.size() ); -} + // Paint the background + p.drawPixmap(0, 0, m_background); -void -BlockAnalyzer::analyze( QPainter& p, const Analyzer::Scope &s, bool new_frame) -{ - // y = 2 3 2 1 0 2 - // . . . . # . - // . . . # # . - // # . # # # # - // # # # # # # - // - // visual aid for how this analyzer works. - // y represents the number of blanks - // y starts from the top and increases in units of blocks + for (uint y, x = 0; x < m_scope.size(); ++x) { + // determine y + for (y = 0; m_scope[x] < m_yscale[y]; ++y) + ; - // m_yscale looks similar to: { 0.7, 0.5, 0.25, 0.15, 0.1, 0 } - // if it contains 6 elements there are 5 rows in the analyzer + // this is opposite to what you'd think, higher than y + // means the bar is lower than y (physically) + if ((float)y > m_store[x]) + y = int(m_store[x] += m_step); + else + m_store[x] = y; - Analyzer::interpolate( s, m_scope ); - - // Paint the background - p.drawPixmap(0, 0, m_background); - - for( uint y, x = 0; x < m_scope.size(); ++x ) - { - // determine y - for( y = 0; m_scope[x] < m_yscale[y]; ++y ) - ; - - // this is opposite to what you'd think, higher than y - // means the bar is lower than y (physically) - if( (float)y > m_store[x] ) - y = int(m_store[x] += m_step); - else - m_store[x] = y; - - // if y is lower than m_fade_pos, then the bar has exceeded the height of the fadeout - // if the fadeout is quite faded now, then display the new one - if( y <= m_fade_pos[x] /*|| m_fade_intensity[x] < FADE_SIZE / 3*/ ) { - m_fade_pos[x] = y; - m_fade_intensity[x] = FADE_SIZE; - } - - if( m_fade_intensity[x] > 0 ) { - const uint offset = --m_fade_intensity[x]; - const uint y = m_y + (m_fade_pos[x] * (HEIGHT+1)); - p.drawPixmap(x*(WIDTH+1), y, m_fade_bars[offset], 0, 0, WIDTH, height() - y); - } - - if( m_fade_intensity[x] == 0 ) - m_fade_pos[x] = m_rows; - - //REMEMBER: y is a number from 0 to m_rows, 0 means all blocks are glowing, m_rows means none are - p.drawPixmap( x*(WIDTH+1), y*(HEIGHT+1) + m_y, *bar(), 0, y*(HEIGHT+1), bar()->width(), bar()->height() ); - } - - for( uint x = 0; x < m_store.size(); ++x ) - p.drawPixmap(x*(WIDTH+1), int(m_store[x])*(HEIGHT+1) + m_y, m_topBarPixmap ); -} - - - - - -static inline void -adjustToLimits( int &b, int &f, uint &amount ) -{ - // with a range of 0-255 and maximum adjustment of amount, - // maximise the difference between f and b - - if( b < f ) { - if( b > 255 - f ) { - amount -= f; - f = 0; - } else { - amount -= (255 - f); - f = 255; - } + // if y is lower than m_fade_pos, then the bar has exceeded the height of + // the fadeout + // if the fadeout is quite faded now, then display the new one + if (y <= m_fade_pos[x] /*|| m_fade_intensity[x] < FADE_SIZE / 3*/) { + m_fade_pos[x] = y; + m_fade_intensity[x] = FADE_SIZE; } - else { - if( f > 255 - b ) { - amount -= f; - f = 0; - } else { - amount -= (255 - f); - f = 255; - } + + if (m_fade_intensity[x] > 0) { + const uint offset = --m_fade_intensity[x]; + const uint y = m_y + (m_fade_pos[x] * (HEIGHT + 1)); + p.drawPixmap(x * (WIDTH + 1), y, m_fade_bars[offset], 0, 0, WIDTH, + height() - y); } + + if (m_fade_intensity[x] == 0) m_fade_pos[x] = m_rows; + + // REMEMBER: y is a number from 0 to m_rows, 0 means all blocks are glowing, + // m_rows means none are + p.drawPixmap(x * (WIDTH + 1), y * (HEIGHT + 1) + m_y, *bar(), 0, + y * (HEIGHT + 1), bar()->width(), bar()->height()); + } + + for (uint x = 0; x < m_store.size(); ++x) + p.drawPixmap(x * (WIDTH + 1), int(m_store[x]) * (HEIGHT + 1) + m_y, + m_topBarPixmap); +} + +static inline void adjustToLimits(int& b, int& f, uint& amount) { + // with a range of 0-255 and maximum adjustment of amount, + // maximise the difference between f and b + + if (b < f) { + if (b > 255 - f) { + amount -= f; + f = 0; + } else { + amount -= (255 - f); + f = 255; + } + } else { + if (f > 255 - b) { + amount -= f; + f = 0; + } else { + amount -= (255 - f); + f = 255; + } + } } /** * Clever contrast function * - * It will try to adjust the foreground color such that it contrasts well with the background + * It will try to adjust the foreground color such that it contrasts well with + *the background * It won't modify the hue of fg unless absolutely necessary * @return the adjusted form of fg */ -QColor -ensureContrast( const QColor &bg, const QColor &fg, uint _amount = 150 ) -{ - class OutputOnExit { - public: - OutputOnExit( const QColor &color ) : c( color ) {} - ~OutputOnExit() { int h,s,v; c.getHsv( &h, &s, &v ); } - private: - const QColor &c; - }; - - // hack so I don't have to cast everywhere - #define amount static_cast(_amount) -// #define STAMP debug() << (QValueList() << fh << fs << fv) << endl; -// #define STAMP1( string ) debug() << string << ": " << (QValueList() << fh << fs << fv) << endl; -// #define STAMP2( string, value ) debug() << string << "=" << value << ": " << (QValueList() << fh << fs << fv) << endl; - - OutputOnExit allocateOnTheStack( fg ); - - int bh, bs, bv; - int fh, fs, fv; - - bg.getHsv( &bh, &bs, &bv ); - fg.getHsv( &fh, &fs, &fv ); - - int dv = abs( bv - fv ); - -// STAMP2( "DV", dv ); - - // value is the best measure of contrast - // if there is enough difference in value already, return fg unchanged - if( dv > amount ) - return fg; - - int ds = abs( bs - fs ); - -// STAMP2( "DS", ds ); - - // saturation is good enough too. But not as good. TODO adapt this a little - if( ds > amount ) - return fg; - - int dh = abs( bh - fh ); - -// STAMP2( "DH", dh ); - - if( dh > 120 ) { - // a third of the colour wheel automatically guarentees contrast - // but only if the values are high enough and saturations significant enough - // to allow the colours to be visible and not be shades of grey or black - - // check the saturation for the two colours is sufficient that hue alone can - // provide sufficient contrast - if( ds > amount / 2 && (bs > 125 && fs > 125) ) -// STAMP1( "Sufficient saturation difference, and hues are compliemtary" ); - return fg; - else if( dv > amount / 2 && (bv > 125 && fv > 125) ) -// STAMP1( "Sufficient value difference, and hues are compliemtary" ); - return fg; - -// STAMP1( "Hues are complimentary but we must modify the value or saturation of the contrasting colour" ); - - //but either the colours are two desaturated, or too dark - //so we need to adjust the system, although not as much - ///_amount /= 2; +QColor ensureContrast(const QColor& bg, const QColor& fg, uint _amount = 150) { + class OutputOnExit { + public: + OutputOnExit(const QColor& color) : c(color) {} + ~OutputOnExit() { + int h, s, v; + c.getHsv(&h, &s, &v); } - if( fs < 50 && ds < 40 ) { - // low saturation on a low saturation is sad - const int tmp = 50 - fs; - fs = 50; - if( amount > tmp ) - _amount -= tmp; - else - _amount = 0; - } + private: + const QColor& c; + }; - // test that there is available value to honor our contrast requirement - if( 255 - dv < amount ) - { - // we have to modify the value and saturation of fg - //adjustToLimits( bv, fv, amount ); +// hack so I don't have to cast everywhere +#define amount static_cast(_amount) + // #define STAMP debug() << (QValueList() << fh << fs << fv) << endl; + // #define STAMP1( string ) debug() << string << ": " << + // (QValueList() << fh << fs << fv) << endl; + // #define STAMP2( string, value ) debug() << string << "=" << value << ": + // " << (QValueList() << fh << fs << fv) << endl; -// STAMP + OutputOnExit allocateOnTheStack(fg); - // see if we need to adjust the saturation - if( amount > 0 ) - adjustToLimits( bs, fs, _amount ); + int bh, bs, bv; + int fh, fs, fv; -// STAMP + bg.getHsv(&bh, &bs, &bv); + fg.getHsv(&fh, &fs, &fv); - // see if we need to adjust the hue - if( amount > 0 ) - fh += amount; // cycles around; + int dv = abs(bv - fv); -// STAMP + // STAMP2( "DV", dv ); - return QColor::fromHsv(fh, fs, fv); - } + // value is the best measure of contrast + // if there is enough difference in value already, return fg unchanged + if (dv > amount) return fg; -// STAMP + int ds = abs(bs - fs); - if( fv > bv && bv > amount ) - return QColor::fromHsv( fh, fs, bv - amount); + // STAMP2( "DS", ds ); -// STAMP + // saturation is good enough too. But not as good. TODO adapt this a little + if (ds > amount) return fg; - if( fv < bv && fv > amount ) - return QColor::fromHsv( fh, fs, fv - amount); + int dh = abs(bh - fh); -// STAMP + // STAMP2( "DH", dh ); - if( fv > bv && (255 - fv > amount) ) - return QColor::fromHsv( fh, fs, fv + amount); + if (dh > 120) { + // a third of the colour wheel automatically guarentees contrast + // but only if the values are high enough and saturations significant enough + // to allow the colours to be visible and not be shades of grey or black -// STAMP + // check the saturation for the two colours is sufficient that hue alone can + // provide sufficient contrast + if (ds > amount / 2 && (bs > 125 && fs > 125)) + // STAMP1( "Sufficient saturation difference, and hues are + // compliemtary" ); + return fg; + else if (dv > amount / 2 && (bv > 125 && fv > 125)) + // STAMP1( "Sufficient value difference, and hues are + // compliemtary" ); + return fg; - if( fv < bv && (255 - bv > amount ) ) - return QColor::fromHsv( fh, fs, bv + amount); + // STAMP1( "Hues are complimentary but we must modify the value or + // saturation of the contrasting colour" ); -// STAMP -// debug() << "Something went wrong!\n"; + // but either the colours are two desaturated, or too dark + // so we need to adjust the system, although not as much + ///_amount /= 2; + } - return Qt::blue; + if (fs < 50 && ds < 40) { + // low saturation on a low saturation is sad + const int tmp = 50 - fs; + fs = 50; + if (amount > tmp) + _amount -= tmp; + else + _amount = 0; + } - #undef amount -// #undef STAMP + // test that there is available value to honor our contrast requirement + if (255 - dv < amount) { + // we have to modify the value and saturation of fg + // adjustToLimits( bv, fv, amount ); + + // STAMP + + // see if we need to adjust the saturation + if (amount > 0) adjustToLimits(bs, fs, _amount); + + // STAMP + + // see if we need to adjust the hue + if (amount > 0) fh += amount; // cycles around; + + // STAMP + + return QColor::fromHsv(fh, fs, fv); + } + + // STAMP + + if (fv > bv && bv > amount) return QColor::fromHsv(fh, fs, bv - amount); + + // STAMP + + if (fv < bv && fv > amount) return QColor::fromHsv(fh, fs, fv - amount); + + // STAMP + + if (fv > bv && (255 - fv > amount)) + return QColor::fromHsv(fh, fs, fv + amount); + + // STAMP + + if (fv < bv && (255 - bv > amount)) + return QColor::fromHsv(fh, fs, bv + amount); + + // STAMP + // debug() << "Something went wrong!\n"; + + return Qt::blue; + +#undef amount + // #undef STAMP } -void -BlockAnalyzer::paletteChange( const QPalette& ) //virtual +void BlockAnalyzer::paletteChange(const QPalette&) // virtual { - const QColor bg = palette().color(QPalette::Background); - const QColor fg = ensureContrast( bg, palette().color(QPalette::Highlight) ); + const QColor bg = palette().color(QPalette::Background); + const QColor fg = ensureContrast(bg, palette().color(QPalette::Highlight)); - m_topBarPixmap.fill( fg ); + m_topBarPixmap.fill(fg); - const double dr = 15*double(bg.red() - fg.red()) / (m_rows*16); - const double dg = 15*double(bg.green() - fg.green()) / (m_rows*16); - const double db = 15*double(bg.blue() - fg.blue()) / (m_rows*16); - const int r = fg.red(), g = fg.green(), b = fg.blue(); + const double dr = 15 * double(bg.red() - fg.red()) / (m_rows * 16); + const double dg = 15 * double(bg.green() - fg.green()) / (m_rows * 16); + const double db = 15 * double(bg.blue() - fg.blue()) / (m_rows * 16); + const int r = fg.red(), g = fg.green(), b = fg.blue(); - bar()->fill( bg ); + bar()->fill(bg); - QPainter p( bar() ); - for( int y = 0; (uint)y < m_rows; ++y ) - //graduate the fg color - p.fillRect( 0, y*(HEIGHT+1), WIDTH, HEIGHT, QColor( r+int(dr*y), g+int(dg*y), b+int(db*y) ) ); + QPainter p(bar()); + for (int y = 0; (uint)y < m_rows; ++y) + // graduate the fg color + p.fillRect(0, y * (HEIGHT + 1), WIDTH, HEIGHT, + QColor(r + int(dr * y), g + int(dg * y), b + int(db * y))); - { - const QColor bg = palette().color(QPalette::Background).dark( 112 ); + { + const QColor bg = palette().color(QPalette::Background).dark(112); - //make a complimentary fadebar colour - //TODO dark is not always correct, dumbo! - int h,s,v; palette().color(QPalette::Background).dark( 150 ).getHsv( &h, &s, &v ); - const QColor fg( QColor::fromHsv(h + 120, s, v)); + // make a complimentary fadebar colour + // TODO dark is not always correct, dumbo! + int h, s, v; + palette().color(QPalette::Background).dark(150).getHsv(&h, &s, &v); + const QColor fg(QColor::fromHsv(h + 120, s, v)); - const double dr = fg.red() - bg.red(); - const double dg = fg.green() - bg.green(); - const double db = fg.blue() - bg.blue(); - const int r = bg.red(), g = bg.green(), b = bg.blue(); + const double dr = fg.red() - bg.red(); + const double dg = fg.green() - bg.green(); + const double db = fg.blue() - bg.blue(); + const int r = bg.red(), g = bg.green(), b = bg.blue(); - // Precalculate all fade-bar pixmaps - for( uint y = 0; y < FADE_SIZE; ++y ) { - m_fade_bars[y].fill( palette().color(QPalette::Background) ); - QPainter f( &m_fade_bars[y] ); - for( int z = 0; (uint)z < m_rows; ++z ) { - const double Y = 1.0 - (log10( FADE_SIZE - y ) / log10( FADE_SIZE )); - f.fillRect( 0, z*(HEIGHT+1), WIDTH, HEIGHT, QColor( r+int(dr*Y), g+int(dg*Y), b+int(db*Y) ) ); - } + // Precalculate all fade-bar pixmaps + for (uint y = 0; y < FADE_SIZE; ++y) { + m_fade_bars[y].fill(palette().color(QPalette::Background)); + QPainter f(&m_fade_bars[y]); + for (int z = 0; (uint)z < m_rows; ++z) { + const double Y = 1.0 - (log10(FADE_SIZE - y) / log10(FADE_SIZE)); + f.fillRect(0, z * (HEIGHT + 1), WIDTH, HEIGHT, + QColor(r + int(dr * Y), g + int(dg * Y), b + int(db * Y))); } - } + } + } - drawBackground(); + drawBackground(); } -void -BlockAnalyzer::drawBackground() -{ - const QColor bg = palette().color(QPalette::Background); - const QColor bgdark = bg.dark( 112 ); +void BlockAnalyzer::drawBackground() { + const QColor bg = palette().color(QPalette::Background); + const QColor bgdark = bg.dark(112); - m_background.fill( bg ); + m_background.fill(bg); - QPainter p( &m_background ); - for( int x = 0; (uint)x < m_columns; ++x ) - for( int y = 0; (uint)y < m_rows; ++y ) - p.fillRect( x*(WIDTH+1), y*(HEIGHT+1) + m_y, WIDTH, HEIGHT, bgdark ); + QPainter p(&m_background); + for (int x = 0; (uint)x < m_columns; ++x) + for (int y = 0; (uint)y < m_rows; ++y) + p.fillRect(x * (WIDTH + 1), y * (HEIGHT + 1) + m_y, WIDTH, HEIGHT, + bgdark); } diff --git a/src/analyzers/blockanalyzer.h b/src/analyzers/blockanalyzer.h index 5894844f3..55f4b3a56 100644 --- a/src/analyzers/blockanalyzer.h +++ b/src/analyzers/blockanalyzer.h @@ -12,54 +12,52 @@ class QResizeEvent; class QMouseEvent; class QPalette; - /** * @author Max Howell */ -class BlockAnalyzer : public Analyzer::Base -{ +class BlockAnalyzer : public Analyzer::Base { Q_OBJECT -public: - Q_INVOKABLE BlockAnalyzer( QWidget* ); - ~BlockAnalyzer(); + public: + Q_INVOKABLE BlockAnalyzer(QWidget*); + ~BlockAnalyzer(); - static const uint HEIGHT; - static const uint WIDTH; - static const uint MIN_ROWS; - static const uint MIN_COLUMNS; - static const uint MAX_COLUMNS; - static const uint FADE_SIZE; + static const uint HEIGHT; + static const uint WIDTH; + static const uint MIN_ROWS; + static const uint MIN_COLUMNS; + static const uint MAX_COLUMNS; + static const uint FADE_SIZE; - static const char* kName; + static const char* kName; -protected: - virtual void transform( Scope& ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); - virtual void resizeEvent( QResizeEvent* ); - virtual void paletteChange( const QPalette& ); + protected: + virtual void transform(Scope&); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); + virtual void resizeEvent(QResizeEvent*); + virtual void paletteChange(const QPalette&); - void drawBackground(); - void determineStep(); + void drawBackground(); + void determineStep(); -private: - QPixmap* bar() { return &m_barPixmap; } + private: + QPixmap* bar() { return &m_barPixmap; } - uint m_columns, m_rows; //number of rows and columns of blocks - uint m_y; //y-offset from top of widget - QPixmap m_barPixmap; - QPixmap m_topBarPixmap; - QPixmap m_background; - Scope m_scope; //so we don't create a vector every frame - std::vector m_store; //current bar heights - std::vector m_yscale; + uint m_columns, m_rows; // number of rows and columns of blocks + uint m_y; // y-offset from top of widget + QPixmap m_barPixmap; + QPixmap m_topBarPixmap; + QPixmap m_background; + Scope m_scope; // so we don't create a vector every frame + std::vector m_store; // current bar heights + std::vector m_yscale; - //FIXME why can't I namespace these? c++ issue? - std::vector m_fade_bars; - std::vector m_fade_pos; - std::vector m_fade_intensity; + // FIXME why can't I namespace these? c++ issue? + std::vector m_fade_bars; + std::vector m_fade_pos; + std::vector m_fade_intensity; - float m_step; //rows to fall per frame + float m_step; // rows to fall per frame }; #endif diff --git a/src/analyzers/boomanalyzer.cpp b/src/analyzers/boomanalyzer.cpp index 6a8455312..07a40e24a 100644 --- a/src/analyzers/boomanalyzer.cpp +++ b/src/analyzers/boomanalyzer.cpp @@ -5,131 +5,110 @@ #include #include -const char* BoomAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Boom analyzer"); +const char* BoomAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Boom analyzer"); -BoomAnalyzer::BoomAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 9 ) - , K_barHeight( 1.271 )//1.471 - , F_peakSpeed( 1.103 )//1.122 - , F( 1.0 ) - , bar_height( BAND_COUNT, 0 ) - , peak_height( BAND_COUNT, 0 ) - , peak_speed( BAND_COUNT, 0.01 ) - , barPixmap( COLUMN_WIDTH, 50 ) -{ +BoomAnalyzer::BoomAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 9), + K_barHeight(1.271) // 1.471 + , + F_peakSpeed(1.103) // 1.122 + , + F(1.0), + bar_height(BAND_COUNT, 0), + peak_height(BAND_COUNT, 0), + peak_speed(BAND_COUNT, 0.01), + barPixmap(COLUMN_WIDTH, 50) {} + +void BoomAnalyzer::changeK_barHeight(int newValue) { + K_barHeight = (double)newValue / 1000; } -void -BoomAnalyzer::changeK_barHeight( int newValue ) -{ - K_barHeight = (double)newValue / 1000; +void BoomAnalyzer::changeF_peakSpeed(int newValue) { + F_peakSpeed = (double)newValue / 1000; } -void -BoomAnalyzer::changeF_peakSpeed( int newValue ) -{ - F_peakSpeed = (double)newValue / 1000; +void BoomAnalyzer::resizeEvent(QResizeEvent*) { init(); } + +void BoomAnalyzer::init() { + const uint HEIGHT = height() - 2; + const double h = 1.2 / HEIGHT; + + F = double(HEIGHT) / (log10(256) * 1.1 /*<- max. amplitude*/); + + barPixmap = QPixmap(COLUMN_WIDTH - 2, HEIGHT); + + QPainter p(&barPixmap); + for (uint y = 0; y < HEIGHT; ++y) { + const double F = (double)y * h; + + p.setPen(QColor(qMax(0, 255 - int(229.0 * F)), + qMax(0, 255 - int(229.0 * F)), + qMax(0, 255 - int(191.0 * F)))); + p.drawLine(0, y, COLUMN_WIDTH - 2, y); + } } -void BoomAnalyzer::resizeEvent(QResizeEvent *) { - init(); +void BoomAnalyzer::transform(Scope& s) { + float* front = static_cast(&s.front()); + + m_fht->spectrum(front); + m_fht->scale(front, 1.0 / 60); + + Scope scope(32, 0); + + const uint xscale[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 19, 24, 29, 36, + 43, 52, 63, 76, 91, 108, 129, 153, 182, 216, 255}; + + for (uint j, i = 0; i < 32; i++) + for (j = xscale[i]; j < xscale[i + 1]; j++) + if (s[j] > scope[i]) scope[i] = s[j]; + + s = scope; } -void -BoomAnalyzer::init() -{ - const uint HEIGHT = height() - 2; - const double h = 1.2 / HEIGHT; +void BoomAnalyzer::analyze(QPainter& p, const Scope& scope, bool new_frame) { + float h; + const uint MAX_HEIGHT = height() - 1; - F = double(HEIGHT) / (log10( 256 ) * 1.1 /*<- max. amplitude*/); + for (uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH + 1) { + h = log10(scope[i] * 256.0) * F; - barPixmap = QPixmap( COLUMN_WIDTH-2, HEIGHT ); + if (h > MAX_HEIGHT) h = MAX_HEIGHT; - QPainter p( &barPixmap ); - for( uint y = 0; y < HEIGHT; ++y ) - { - const double F = (double)y * h; + if (h > bar_height[i]) { + bar_height[i] = h; - p.setPen(QColor( - qMax(0, 255 - int(229.0 * F)), - qMax(0, 255 - int(229.0 * F)), - qMax(0, 255 - int(191.0 * F)))); - p.drawLine( 0, y, COLUMN_WIDTH-2, y ); - } -} - -void -BoomAnalyzer::transform( Scope &s ) -{ - float *front = static_cast( &s.front() ); - - m_fht->spectrum( front ); - m_fht->scale( front, 1.0 / 60 ); - - Scope scope( 32, 0 ); - - const uint xscale[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,24,29,36,43,52,63,76,91,108,129,153,182,216,255 }; - - for( uint j, i = 0; i < 32; i++ ) - for( j = xscale[i]; j < xscale[i + 1]; j++ ) - if ( s[j] > scope[i] ) - scope[i] = s[j]; - - s = scope; -} - -void -BoomAnalyzer::analyze( QPainter& p, const Scope& scope, bool new_frame) -{ - float h; - const uint MAX_HEIGHT = height() - 1; - - for( uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH+1 ) - { - h = log10( scope[i]*256.0 ) * F; - - if( h > MAX_HEIGHT ) - h = MAX_HEIGHT; - - if( h > bar_height[i] ) - { - bar_height[i] = h; - - if( h > peak_height[i] ) - { - peak_height[i] = h; - peak_speed[i] = 0.01; - } - else goto peak_handling; - } - else - { - if( bar_height[i] > 0.0 ) - { - bar_height[i] -= K_barHeight; //1.4 - if( bar_height[i] < 0.0 ) bar_height[i] = 0.0; - } - - peak_handling: - - if( peak_height[i] > 0.0 ) - { - peak_height[i] -= peak_speed[i]; - peak_speed[i] *= F_peakSpeed; //1.12 - - if( peak_height[i] < bar_height[i] ) peak_height[i] = bar_height[i]; - if( peak_height[i] < 0.0 ) peak_height[i] = 0.0; - } - } - - y = height() - uint(bar_height[i]); - p.drawPixmap(x+1, y, barPixmap, 0, y, -1, -1); - p.setPen( palette().color(QPalette::Highlight) ); - if (bar_height[i] > 0) - p.drawRect( x, y, COLUMN_WIDTH - 1, height() - y - 1 ); - - y = height() - uint(peak_height[i]); - p.setPen( palette().color(QPalette::Base) ); - p.drawLine( x, y, x+COLUMN_WIDTH-1, y ); + if (h > peak_height[i]) { + peak_height[i] = h; + peak_speed[i] = 0.01; + } else + goto peak_handling; + } else { + if (bar_height[i] > 0.0) { + bar_height[i] -= K_barHeight; // 1.4 + if (bar_height[i] < 0.0) bar_height[i] = 0.0; + } + + peak_handling: + + if (peak_height[i] > 0.0) { + peak_height[i] -= peak_speed[i]; + peak_speed[i] *= F_peakSpeed; // 1.12 + + if (peak_height[i] < bar_height[i]) peak_height[i] = bar_height[i]; + if (peak_height[i] < 0.0) peak_height[i] = 0.0; + } } + + y = height() - uint(bar_height[i]); + p.drawPixmap(x + 1, y, barPixmap, 0, y, -1, -1); + p.setPen(palette().color(QPalette::Highlight)); + if (bar_height[i] > 0) p.drawRect(x, y, COLUMN_WIDTH - 1, height() - y - 1); + + y = height() - uint(peak_height[i]); + p.setPen(palette().color(QPalette::Base)); + p.drawLine(x, y, x + COLUMN_WIDTH - 1, y); + } } diff --git a/src/analyzers/boomanalyzer.h b/src/analyzers/boomanalyzer.h index a45007a75..e93b68d12 100644 --- a/src/analyzers/boomanalyzer.h +++ b/src/analyzers/boomanalyzer.h @@ -11,35 +11,34 @@ @author Max Howell */ -class BoomAnalyzer : public Analyzer::Base -{ -Q_OBJECT -public: - Q_INVOKABLE BoomAnalyzer( QWidget* ); +class BoomAnalyzer : public Analyzer::Base { + Q_OBJECT + public: + Q_INVOKABLE BoomAnalyzer(QWidget*); - static const char* kName; + static const char* kName; - virtual void init(); - virtual void transform( Scope &s ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); + virtual void init(); + virtual void transform(Scope& s); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); -public slots: - void changeK_barHeight( int ); - void changeF_peakSpeed( int ); + public slots: + void changeK_barHeight(int); + void changeF_peakSpeed(int); -protected: - void resizeEvent( QResizeEvent * e); + protected: + void resizeEvent(QResizeEvent* e); - static const uint COLUMN_WIDTH = 4; - static const uint BAND_COUNT = 32; + static const uint COLUMN_WIDTH = 4; + static const uint BAND_COUNT = 32; - double K_barHeight, F_peakSpeed, F; + double K_barHeight, F_peakSpeed, F; - std::vector bar_height; - std::vector peak_height; - std::vector peak_speed; + std::vector bar_height; + std::vector peak_height; + std::vector peak_speed; - QPixmap barPixmap; + QPixmap barPixmap; }; #endif diff --git a/src/analyzers/glanalyzer.cpp b/src/analyzers/glanalyzer.cpp index ec8a6bc4f..32c0a5474 100644 --- a/src/analyzers/glanalyzer.cpp +++ b/src/analyzers/glanalyzer.cpp @@ -23,320 +23,295 @@ #include "glanalyzer.h" #include +GLAnalyzer::GLAnalyzer(QWidget* parent) + : Analyzer::Base3D(parent, 15), m_oldy(32, -10.0f), m_peaks(32) {} -GLAnalyzer::GLAnalyzer( QWidget *parent ) - : Analyzer::Base3D(parent, 15) - , m_oldy(32, -10.0f) - , m_peaks(32) -{} - -GLAnalyzer::~GLAnalyzer() -{} +GLAnalyzer::~GLAnalyzer() {} // METHODS ===================================================== -void GLAnalyzer::analyze( const Scope &s ) -{ - //kdDebug() << "Scope Size: " << s.size() << endl; - /* Scope t(32); - if (s.size() != 32) - { - Analyzer::interpolate(s, t); - } - else - { - t = s; - }*/ - uint offset = 0; - static float peak; - float mfactor = 0.0; - static int drawcount; +void GLAnalyzer::analyze(const Scope& s) { + // kdDebug() << "Scope Size: " << s.size() << endl; + /* Scope t(32); + if (s.size() != 32) + { + Analyzer::interpolate(s, t); + } + else + { + t = s; + }*/ + uint offset = 0; + static float peak; + float mfactor = 0.0; + static int drawcount; - if (s.size() == 64) - { - offset=8; - } + if (s.size() == 64) { + offset = 8; + } - glRotatef(0.25f, 0.0f, 1.0f, 0.5f); //Rotate the scene - drawFloor(); - drawcount++; - if (drawcount > 25) - { - drawcount = 0; - peak = 0.0; - } + glRotatef(0.25f, 0.0f, 1.0f, 0.5f); // Rotate the scene + drawFloor(); + drawcount++; + if (drawcount > 25) { + drawcount = 0; + peak = 0.0; + } - for ( uint i = 0; i < 32; i++ ) - { - if (s[i] > peak) - { - peak = s[i]; - } - } + for (uint i = 0; i < 32; i++) { + if (s[i] > peak) { + peak = s[i]; + } + } - mfactor = 20 / peak; - for ( uint i = 0; i < 32; i++ ) - { + mfactor = 20 / peak; + for (uint i = 0; i < 32; i++) { - //kdDebug() << "Scope item " << i << " value: " << s[i] << endl; + // kdDebug() << "Scope item " << i << " value: " << s[i] << endl; - // Calculate new horizontal position (x) depending on number of samples - x = -16.0f + i; + // Calculate new horizontal position (x) depending on number of samples + x = -16.0f + i; - // Calculating new vertical position (y) depending on the data passed by amarok - y = float(s[i+offset] * mfactor); //This make it kinda dynamically resize depending on the data + // Calculating new vertical position (y) depending on the data passed by + // amarok + y = float(s[i + offset] * mfactor); // This make it kinda dynamically + // resize depending on the data - //Some basic bounds checking - if (y > 30) - y = 30; - else if (y < 0) - y = 0; + // Some basic bounds checking + if (y > 30) + y = 30; + else if (y < 0) + y = 0; - if((y - m_oldy[i]) < -0.6f) // Going Down Too Much - { - y = m_oldy[i] - 0.7f; - } - if (y < 0.0f) - { - y = 0.0f; - } + if ((y - m_oldy[i]) < -0.6f) // Going Down Too Much + { + y = m_oldy[i] - 0.7f; + } + if (y < 0.0f) { + y = 0.0f; + } - m_oldy[i] = y; //Save value as last value + m_oldy[i] = y; // Save value as last value - //Peak Code - if (m_oldy[i] > m_peaks[i].level) - { - m_peaks[i].level = m_oldy[i]; - m_peaks[i].delay = 30; - } + // Peak Code + if (m_oldy[i] > m_peaks[i].level) { + m_peaks[i].level = m_oldy[i]; + m_peaks[i].delay = 30; + } - if (m_peaks[i].delay > 0) - { - m_peaks[i].delay--; - } + if (m_peaks[i].delay > 0) { + m_peaks[i].delay--; + } - if (m_peaks[i].level > 1.0f) - { - if (m_peaks[i].delay <= 0) - { - m_peaks[i].level-=0.4f; - } - } - // Draw the bar - drawBar(x,y); - drawPeak(x, m_peaks[i].level); + if (m_peaks[i].level > 1.0f) { + if (m_peaks[i].delay <= 0) { + m_peaks[i].level -= 0.4f; + } + } + // Draw the bar + drawBar(x, y); + drawPeak(x, m_peaks[i].level); + } - } - - updateGL(); + updateGL(); } -void GLAnalyzer::initializeGL() -{ - // Clear frame (next fading will be preferred to clearing) - glClearColor(0.0f, 0.0f, 0.0f, 1.0f);// Set clear color to black - glClear( GL_COLOR_BUFFER_BIT ); +void GLAnalyzer::initializeGL() { + // Clear frame (next fading will be preferred to clearing) + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color to black + glClear(GL_COLOR_BUFFER_BIT); - // Set the shading model - glShadeModel(GL_SMOOTH); + // Set the shading model + glShadeModel(GL_SMOOTH); - // Set the polygon mode to fill - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + // Set the polygon mode to fill + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - // Enable depth testing for hidden line removal - glEnable(GL_DEPTH_TEST); + // Enable depth testing for hidden line removal + glEnable(GL_DEPTH_TEST); - // Set blend parameters for 'composting alpha' - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + // Set blend parameters for 'composting alpha' + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } -void GLAnalyzer::resizeGL( int w, int h ) -{ - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-16.0f, 16.0f, -10.0f, 10.0f, -50.0f, 100.0f); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); +void GLAnalyzer::resizeGL(int w, int h) { + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-16.0f, 16.0f, -10.0f, 10.0f, -50.0f, 100.0f); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); } -void GLAnalyzer::paintGL() -{ - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer::paintGL() { + glMatrixMode(GL_MODELVIEW); #if 0 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); #else - glEnable( GL_DEPTH_TEST ); - glEnable( GL_BLEND ); - glPushMatrix(); - glLoadIdentity(); - glBegin( GL_TRIANGLE_STRIP ); - glColor4f( 0.0f, 0.0f, 0.1f, 0.08f ); - glVertex2f( 20.0f, 10.0f ); - glVertex2f( -20.0f, 10.0f ); - glVertex2f( 20.0f, -10.0f ); - glVertex2f( -20.0f, -10.0f ); - glEnd(); - glPopMatrix(); - glDisable( GL_BLEND ); - glEnable( GL_DEPTH_TEST ); - glClear( GL_DEPTH_BUFFER_BIT ); + glEnable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glPushMatrix(); + glLoadIdentity(); + glBegin(GL_TRIANGLE_STRIP); + glColor4f(0.0f, 0.0f, 0.1f, 0.08f); + glVertex2f(20.0f, 10.0f); + glVertex2f(-20.0f, 10.0f); + glVertex2f(20.0f, -10.0f); + glVertex2f(-20.0f, -10.0f); + glEnd(); + glPopMatrix(); + glDisable(GL_BLEND); + glEnable(GL_DEPTH_TEST); + glClear(GL_DEPTH_BUFFER_BIT); #endif - //swapBuffers(); - - glFlush(); + // swapBuffers(); + glFlush(); } -void GLAnalyzer::drawBar(float xPos, float height) -{ - glPushMatrix(); +void GLAnalyzer::drawBar(float xPos, float height) { + glPushMatrix(); - //Sets color to blue - //Set the colour depending on the height of the bar - glColor3f((height/40) + 0.5f, (height/40) + 0.625f, 1.0f); - glTranslatef(xPos, -10.0f, 0.0f); + // Sets color to blue + // Set the colour depending on the height of the bar + glColor3f((height / 40) + 0.5f, (height / 40) + 0.625f, 1.0f); + glTranslatef(xPos, -10.0f, 0.0f); - glScalef(1.0f, height, 3.0f); - drawCube(); + glScalef(1.0f, height, 3.0f); + drawCube(); - //Set colour to full blue - //glColor3f(0.0f, 0.0f, 1.0f); - //drawFrame(); - glPopMatrix(); + // Set colour to full blue + // glColor3f(0.0f, 0.0f, 1.0f); + // drawFrame(); + glPopMatrix(); } -void GLAnalyzer::drawFloor() -{ - glPushMatrix(); +void GLAnalyzer::drawFloor() { + glPushMatrix(); - //Sets color to amarok blue - glColor3f( 0.5f, 0.625f, 1.0f); - glTranslatef(-16.0f,-11.0f, -4.0f); + // Sets color to amarok blue + glColor3f(0.5f, 0.625f, 1.0f); + glTranslatef(-16.0f, -11.0f, -4.0f); - glScalef(32.0f, 1.0f, 10.0f); - drawCube(); + glScalef(32.0f, 1.0f, 10.0f); + drawCube(); - //Set colour to full blue - glColor3f(0.0f, 0.0f, 1.0f); - drawFrame(); - glPopMatrix(); + // Set colour to full blue + glColor3f(0.0f, 0.0f, 1.0f); + drawFrame(); + glPopMatrix(); } -void GLAnalyzer::drawPeak(float xPos, float ypos) -{ - glPushMatrix(); +void GLAnalyzer::drawPeak(float xPos, float ypos) { + glPushMatrix(); - //Set the colour to red - glColor3f(1.0f, 0.0f, 0.0f); - glTranslatef(xPos, ypos - 10.0f, 0.0f); + // Set the colour to red + glColor3f(1.0f, 0.0f, 0.0f); + glTranslatef(xPos, ypos - 10.0f, 0.0f); - glScalef(1.0f, 1.0f, 3.0f); - drawCube(); + glScalef(1.0f, 1.0f, 3.0f); + drawCube(); - glPopMatrix(); + glPopMatrix(); } -void GLAnalyzer::drawCube() -{ - glPushMatrix(); - glBegin(GL_POLYGON); +void GLAnalyzer::drawCube() { + glPushMatrix(); + glBegin(GL_POLYGON); - //This is the top face - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); + // This is the top face + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); - //This is the front face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the front face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the right face - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); + // This is the right face + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); - //This is the left face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the left face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the bottom face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the bottom face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the back face - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); + // This is the back face + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); - glEnd(); - glPopMatrix(); + glEnd(); + glPopMatrix(); } -void GLAnalyzer::drawFrame() -{ - glPushMatrix(); - glBegin(GL_LINES); +void GLAnalyzer::drawFrame() { + glPushMatrix(); + glBegin(GL_LINES); + // This is the top face + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); - //This is the top face - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); + // This is the front face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the front face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the right face + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); - //This is the right face - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); + // This is the left face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the left face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the bottom face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the bottom face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the back face + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); - //This is the back face - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - - glEnd(); - glPopMatrix(); + glEnd(); + glPopMatrix(); } #endif diff --git a/src/analyzers/glanalyzer.h b/src/analyzers/glanalyzer.h index 394c46384..3e8e29695 100644 --- a/src/analyzers/glanalyzer.h +++ b/src/analyzers/glanalyzer.h @@ -27,16 +27,13 @@ *@author piggz */ -typedef struct -{ +typedef struct { float level; uint delay; -} -peak_tx; +} peak_tx; -class GLAnalyzer : public Analyzer::Base3D -{ -private: +class GLAnalyzer : public Analyzer::Base3D { + private: std::vector m_oldy; std::vector m_peaks; @@ -47,14 +44,15 @@ private: void drawFloor(); GLfloat x, y; -public: - GLAnalyzer(QWidget *); + + public: + GLAnalyzer(QWidget*); ~GLAnalyzer(); - void analyze( const Scope & ); - -protected: + void analyze(const Scope&); + + protected: void initializeGL(); - void resizeGL( int w, int h ); + void resizeGL(int w, int h); void paintGL(); }; diff --git a/src/analyzers/glanalyzer2.cpp b/src/analyzers/glanalyzer2.cpp index 00c3095e4..7d76d1cc8 100644 --- a/src/analyzers/glanalyzer2.cpp +++ b/src/analyzers/glanalyzer2.cpp @@ -27,307 +27,267 @@ #include #include +GLAnalyzer2::GLAnalyzer2(QWidget* parent) : Analyzer::Base3D(parent, 15) { + // initialize openGL context before managing GL calls + makeCurrent(); + loadTexture(locate("data", "amarok/data/dot.png"), dotTexture); + loadTexture(locate("data", "amarok/data/wirl1.png"), w1Texture); + loadTexture(locate("data", "amarok/data/wirl2.png"), w2Texture); -GLAnalyzer2::GLAnalyzer2( QWidget *parent ): -Analyzer::Base3D(parent, 15) -{ - //initialize openGL context before managing GL calls - makeCurrent(); - loadTexture( locate("data","amarok/data/dot.png"), dotTexture ); - loadTexture( locate("data","amarok/data/wirl1.png"), w1Texture ); - loadTexture( locate("data","amarok/data/wirl2.png"), w2Texture ); - - show.paused = true; - show.pauseTimer = 0.0; - show.rotDegrees = 0.0; - frame.rotDegrees = 0.0; + show.paused = true; + show.pauseTimer = 0.0; + show.rotDegrees = 0.0; + frame.rotDegrees = 0.0; } -GLAnalyzer2::~GLAnalyzer2() -{ - freeTexture( dotTexture ); - freeTexture( w1Texture ); - freeTexture( w2Texture ); +GLAnalyzer2::~GLAnalyzer2() { + freeTexture(dotTexture); + freeTexture(w1Texture); + freeTexture(w2Texture); } -void GLAnalyzer2::initializeGL() -{ - // Set a smooth shade model - glShadeModel(GL_SMOOTH); +void GLAnalyzer2::initializeGL() { + // Set a smooth shade model + glShadeModel(GL_SMOOTH); - // Disable depth test (all is drawn on a 2d plane) - glDisable(GL_DEPTH_TEST); + // Disable depth test (all is drawn on a 2d plane) + glDisable(GL_DEPTH_TEST); - // Set blend parameters for 'composting alpha' - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); //superpose - //glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); //fade - glEnable( GL_BLEND ); + // Set blend parameters for 'composting alpha' + glBlendFunc(GL_SRC_ALPHA, GL_ONE); // superpose + // glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); //fade + glEnable(GL_BLEND); - // Clear frame with a black background - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear( GL_COLOR_BUFFER_BIT ); + // Clear frame with a black background + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); } -void GLAnalyzer2::resizeGL( int w, int h ) -{ - // Setup screen. We're going to manually do the perspective projection - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( -10.0f, 10.0f, -10.0f, 10.0f, -5.0f, 5.0f ); +void GLAnalyzer2::resizeGL(int w, int h) { + // Setup screen. We're going to manually do the perspective projection + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -5.0f, 5.0f); - // Get the aspect ratio of the screen to draw 'cicular' particles - float ratio = (float)w / (float)h, - eqPixH = 60, - eqPixW = 80; - if ( ratio >= (4.0/3.0) ) { - unitX = 10.0 / (eqPixH * ratio); - unitY = 10.0 / eqPixH; - } else { - unitX = 10.0 / eqPixW; - unitY = 10.0 / (eqPixW / ratio); + // Get the aspect ratio of the screen to draw 'cicular' particles + float ratio = (float)w / (float)h, eqPixH = 60, eqPixW = 80; + if (ratio >= (4.0 / 3.0)) { + unitX = 10.0 / (eqPixH * ratio); + unitY = 10.0 / eqPixH; + } else { + unitX = 10.0 / eqPixW; + unitY = 10.0 / (eqPixW / ratio); + } + + // Get current timestamp. + timeval tv; + gettimeofday(&tv, nullptr); + show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; +} + +void GLAnalyzer2::paused() { analyze(Scope()); } + +void GLAnalyzer2::analyze(const Scope& s) { + bool haveNoData = s.empty(); + + // if we're going into pause mode, clear timers. + if (!show.paused && haveNoData) show.pauseTimer = 0.0; + + // if we have got data, interpolate it (asking myself why I'm doing it here..) + if (!(show.paused = haveNoData)) { + int bands = s.size(), lowbands = bands / 4, hibands = bands / 3, + midbands = bands - lowbands - hibands; + Q_UNUSED(midbands); + float currentEnergy = 0, currentMeanBand = 0, maxValue = 0; + for (int i = 0; i < bands; i++) { + float value = s[i]; + currentEnergy += value; + currentMeanBand += (float)i * value; + if (value > maxValue) maxValue = value; } - - // Get current timestamp. - timeval tv; - gettimeofday( &tv, nullptr ); - show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; -} - -void GLAnalyzer2::paused() -{ - analyze( Scope() ); -} - -void GLAnalyzer2::analyze( const Scope &s ) -{ - bool haveNoData = s.empty(); - - // if we're going into pause mode, clear timers. - if ( !show.paused && haveNoData ) - show.pauseTimer = 0.0; - - // if we have got data, interpolate it (asking myself why I'm doing it here..) - if ( !(show.paused = haveNoData) ) - { - int bands = s.size(), - lowbands = bands / 4, - hibands = bands / 3, - midbands = bands - lowbands - hibands; Q_UNUSED( midbands ); - float currentEnergy = 0, - currentMeanBand = 0, - maxValue = 0; - for ( int i = 0; i < bands; i++ ) - { - float value = s[i]; - currentEnergy += value; - currentMeanBand += (float)i * value; - if ( value > maxValue ) - maxValue = value; - } - frame.silence = currentEnergy < 0.001; - if ( !frame.silence ) - { - frame.meanBand = 100.0 * currentMeanBand / (currentEnergy * bands); - currentEnergy = 100.0 * currentEnergy / (float)bands; - frame.dEnergy = currentEnergy - frame.energy; - frame.energy = currentEnergy; -// printf( "%d [%f :: %f ]\t%f \n", bands, frame.energy, frame.meanBand, maxValue ); - } else - frame.energy = 0.0; - } - - // update the frame - updateGL(); -} - -void GLAnalyzer2::paintGL() -{ - // Compute the dT since the last call to paintGL and update timings - timeval tv; - gettimeofday( &tv, nullptr ); - double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; - show.dT = currentTime - show.timeStamp; - show.timeStamp = currentTime; - - // Clear frame - glClear( GL_COLOR_BUFFER_BIT ); - - // Shitch to MODEL matrix and reset it to default - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - - // Fade the previous drawings. -/* glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glBegin( GL_TRIANGLE_STRIP ); - glColor4f( 0.0f, 0.0f, 0.0f, 0.2f ); - glVertex2f( 10.0f, 10.0f ); - glVertex2f( -10.0f, 10.0f ); - glVertex2f( 10.0f, -10.0f ); - glVertex2f( -10.0f, -10.0f ); - glEnd();*/ - - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glEnable( GL_TEXTURE_2D ); - float alphaN = show.paused ? 0.2 : (frame.energy / 10.0), - alphaP = show.paused ? 1.0 : (1 - frame.energy / 20.0); - if ( alphaN > 1.0 ) - alphaN = 1.0; - if ( alphaP < 0.1 ) - alphaP = 0.1; - glBindTexture( GL_TEXTURE_2D, w2Texture ); - setTextureMatrix( show.rotDegrees, 0.707*alphaP ); - glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - glBindTexture( GL_TEXTURE_2D, w1Texture ); - setTextureMatrix( -show.rotDegrees * 2, 0.707 ); - glColor4f( 1.0f, 1.0f, 1.0f, alphaN ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - setTextureMatrix( 0.0, 0.0 ); - glDisable( GL_TEXTURE_2D ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); - - // Here begins the real draw loop - // some updates to the show - show.rotDegrees += 40.0 * show.dT; - frame.rotDegrees += 80.0 * show.dT; - - // handle the 'pause' status - if ( show.paused ) - { - if ( show.pauseTimer > 0.5 ) - { - if ( show.pauseTimer > 0.6 ) - show.pauseTimer -= 0.6; - drawFullDot( 0.0f, 0.4f, 0.8f, 1.0f ); - drawFullDot( 0.0f, 0.4f, 0.8f, 1.0f ); - } - show.pauseTimer += show.dT; - return; - } - - if ( dotTexture ) { - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, dotTexture ); + frame.silence = currentEnergy < 0.001; + if (!frame.silence) { + frame.meanBand = 100.0 * currentMeanBand / (currentEnergy * bands); + currentEnergy = 100.0 * currentEnergy / (float)bands; + frame.dEnergy = currentEnergy - frame.energy; + frame.energy = currentEnergy; + // printf( "%d [%f :: %f ]\t%f \n", bands, frame.energy, + // frame.meanBand, maxValue ); } else - glDisable( GL_TEXTURE_2D ); + frame.energy = 0.0; + } - glLoadIdentity(); -// glRotatef( -frame.rotDegrees, 0,0,1 ); - glBegin( GL_QUADS ); -// Particle * particle = particleList.first(); -// for (; particle; particle = particleList.next()) - { - glColor4f( 0.0f, 1.0f, 0.0f, 1.0f ); - drawDot( 0, 0, kMax(10.0,(10.0 * frame.energy)) ); - glColor4f( 1.0f, 0.0f, 0.0f, 1.0f ); - drawDot( 6, 0, kMax(10.0, (5.0 * frame.energy)) ); - glColor4f( 0.0f, 0.4f, 1.0f, 1.0f ); - drawDot( -6, 0, kMax(10.0, (5.0 * frame.energy)) ); + // update the frame + updateGL(); +} + +void GLAnalyzer2::paintGL() { + // Compute the dT since the last call to paintGL and update timings + timeval tv; + gettimeofday(&tv, nullptr); + double currentTime = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; + show.dT = currentTime - show.timeStamp; + show.timeStamp = currentTime; + + // Clear frame + glClear(GL_COLOR_BUFFER_BIT); + + // Shitch to MODEL matrix and reset it to default + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + // Fade the previous drawings. + /* glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + glBegin( GL_TRIANGLE_STRIP ); + glColor4f( 0.0f, 0.0f, 0.0f, 0.2f ); + glVertex2f( 10.0f, 10.0f ); + glVertex2f( -10.0f, 10.0f ); + glVertex2f( 10.0f, -10.0f ); + glVertex2f( -10.0f, -10.0f ); + glEnd();*/ + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_TEXTURE_2D); + float alphaN = show.paused ? 0.2 : (frame.energy / 10.0), + alphaP = show.paused ? 1.0 : (1 - frame.energy / 20.0); + if (alphaN > 1.0) alphaN = 1.0; + if (alphaP < 0.1) alphaP = 0.1; + glBindTexture(GL_TEXTURE_2D, w2Texture); + setTextureMatrix(show.rotDegrees, 0.707 * alphaP); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + glBindTexture(GL_TEXTURE_2D, w1Texture); + setTextureMatrix(-show.rotDegrees * 2, 0.707); + glColor4f(1.0f, 1.0f, 1.0f, alphaN); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + setTextureMatrix(0.0, 0.0); + glDisable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + // Here begins the real draw loop + // some updates to the show + show.rotDegrees += 40.0 * show.dT; + frame.rotDegrees += 80.0 * show.dT; + + // handle the 'pause' status + if (show.paused) { + if (show.pauseTimer > 0.5) { + if (show.pauseTimer > 0.6) show.pauseTimer -= 0.6; + drawFullDot(0.0f, 0.4f, 0.8f, 1.0f); + drawFullDot(0.0f, 0.4f, 0.8f, 1.0f); } - glEnd(); + show.pauseTimer += show.dT; + return; + } + + if (dotTexture) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, dotTexture); + } else + glDisable(GL_TEXTURE_2D); + + glLoadIdentity(); + // glRotatef( -frame.rotDegrees, 0,0,1 ); + glBegin(GL_QUADS); + // Particle * particle = particleList.first(); + // for (; particle; particle = particleList.next()) + { + glColor4f(0.0f, 1.0f, 0.0f, 1.0f); + drawDot(0, 0, kMax(10.0, (10.0 * frame.energy))); + glColor4f(1.0f, 0.0f, 0.0f, 1.0f); + drawDot(6, 0, kMax(10.0, (5.0 * frame.energy))); + glColor4f(0.0f, 0.4f, 1.0f, 1.0f); + drawDot(-6, 0, kMax(10.0, (5.0 * frame.energy))); + } + glEnd(); } -void GLAnalyzer2::drawDot( float x, float y, float size ) -{ - float sizeX = size * unitX, - sizeY = size * unitY, - pLeft = x - sizeX, - pTop = y + sizeY, - pRight = x + sizeX, - pBottom = y - sizeY; - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex2f( pLeft, pBottom ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex2f( pLeft, pTop ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex2f( pRight, pTop ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex2f( pRight, pBottom ); +void GLAnalyzer2::drawDot(float x, float y, float size) { + float sizeX = size * unitX, sizeY = size * unitY, pLeft = x - sizeX, + pTop = y + sizeY, pRight = x + sizeX, pBottom = y - sizeY; + glTexCoord2f(0, 0); // Bottom Left + glVertex2f(pLeft, pBottom); + glTexCoord2f(0, 1); // Top Left + glVertex2f(pLeft, pTop); + glTexCoord2f(1, 1); // Top Right + glVertex2f(pRight, pTop); + glTexCoord2f(1, 0); // Bottom Right + glVertex2f(pRight, pBottom); } -void GLAnalyzer2::drawFullDot( float r, float g, float b, float a ) -{ - glBindTexture( GL_TEXTURE_2D, dotTexture ); - glEnable( GL_TEXTURE_2D ); - glColor4f( r, g, b, a ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - glDisable( GL_TEXTURE_2D ); +void GLAnalyzer2::drawFullDot(float r, float g, float b, float a) { + glBindTexture(GL_TEXTURE_2D, dotTexture); + glEnable(GL_TEXTURE_2D); + glColor4f(r, g, b, a); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + glDisable(GL_TEXTURE_2D); } - -void GLAnalyzer2::setTextureMatrix( float rot, float scale ) -{ - glMatrixMode( GL_TEXTURE); - glLoadIdentity(); - if ( rot != 0.0 || scale != 0.0 ) - { - glTranslatef( 0.5f, 0.5f, 0.0f ); - glRotatef( rot, 0.0f, 0.0f, 1.0f ); - glScalef( scale, scale, 1.0f ); - glTranslatef( -0.5f, -0.5f, 0.0f ); - } - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer2::setTextureMatrix(float rot, float scale) { + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + if (rot != 0.0 || scale != 0.0) { + glTranslatef(0.5f, 0.5f, 0.0f); + glRotatef(rot, 0.0f, 0.0f, 1.0f); + glScalef(scale, scale, 1.0f); + glTranslatef(-0.5f, -0.5f, 0.0f); + } + glMatrixMode(GL_MODELVIEW); } -bool GLAnalyzer2::loadTexture( QString fileName, GLuint& textureID ) -{ - //reset texture ID to the default EMPTY value - textureID = 0; +bool GLAnalyzer2::loadTexture(QString fileName, GLuint& textureID) { + // reset texture ID to the default EMPTY value + textureID = 0; - //load image - QImage tmp; - if ( !tmp.load( fileName ) ) - return false; + // load image + QImage tmp; + if (!tmp.load(fileName)) return false; - //convert it to suitable format (flipped RGBA) - QImage texture = QGLWidget::convertToGLFormat( tmp ); - if ( texture.isNull() ) - return false; + // convert it to suitable format (flipped RGBA) + QImage texture = QGLWidget::convertToGLFormat(tmp); + if (texture.isNull()) return false; - //get texture number and bind loaded image to that texture - glGenTextures( 1, &textureID ); - glBindTexture( GL_TEXTURE_2D, textureID ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexImage2D( GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), - 0, GL_RGBA, GL_UNSIGNED_BYTE, texture.bits() ); - return true; + // get texture number and bind loaded image to that texture + glGenTextures(1, &textureID); + glBindTexture(GL_TEXTURE_2D, textureID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture.bits()); + return true; } - -void GLAnalyzer2::freeTexture( GLuint & textureID ) -{ - if ( textureID > 0 ) - glDeleteTextures( 1, &textureID ); - textureID = 0; +void GLAnalyzer2::freeTexture(GLuint& textureID) { + if (textureID > 0) glDeleteTextures(1, &textureID); + textureID = 0; } #endif diff --git a/src/analyzers/glanalyzer2.h b/src/analyzers/glanalyzer2.h index 3aeb98ae6..d97886990 100644 --- a/src/analyzers/glanalyzer2.h +++ b/src/analyzers/glanalyzer2.h @@ -25,48 +25,46 @@ #include #include +class GLAnalyzer2 : public Analyzer::Base3D { + public: + GLAnalyzer2(QWidget*); + ~GLAnalyzer2(); + void analyze(const Scope&); + void paused(); -class GLAnalyzer2 : public Analyzer::Base3D -{ -public: - GLAnalyzer2(QWidget *); - ~GLAnalyzer2(); - void analyze( const Scope & ); - void paused(); + protected: + void initializeGL(); + void resizeGL(int w, int h); + void paintGL(); -protected: - void initializeGL(); - void resizeGL( int w, int h ); - void paintGL(); - -private: - struct ShowProperties { + private: + struct ShowProperties { bool paused; double timeStamp; double dT; double pauseTimer; float rotDegrees; - } show; + } show; - struct FrameProperties { + struct FrameProperties { float energy; float dEnergy; float meanBand; float rotDegrees; bool silence; - } frame; + } frame; - GLuint dotTexture; - GLuint w1Texture; - GLuint w2Texture; - float unitX, unitY; + GLuint dotTexture; + GLuint w1Texture; + GLuint w2Texture; + float unitX, unitY; - void drawDot( float x, float y, float size ); - void drawFullDot( float r, float g, float b, float a ); - void setTextureMatrix( float rot, float scale ); + void drawDot(float x, float y, float size); + void drawFullDot(float r, float g, float b, float a); + void setTextureMatrix(float rot, float scale); - bool loadTexture(QString file, GLuint& textureID); - void freeTexture(GLuint& textureID); + bool loadTexture(QString file, GLuint& textureID); + void freeTexture(GLuint& textureID); }; #endif diff --git a/src/analyzers/glanalyzer3.cpp b/src/analyzers/glanalyzer3.cpp index 0892f4d88..7a5947ed2 100644 --- a/src/analyzers/glanalyzer3.cpp +++ b/src/analyzers/glanalyzer3.cpp @@ -28,453 +28,400 @@ #include #ifndef HAVE_FABSF -inline float fabsf(float f) -{ - return f < 0.f ? -f : f; -} +inline float fabsf(float f) { return f < 0.f ? -f : f; } #endif - -class Ball -{ - public: - Ball() : x( drand48() - drand48() ), y( 1 - 2.0 * drand48() ), - z( drand48() ), vx( 0.0 ), vy( 0.0 ), vz( 0.0 ), - mass( 0.01 + drand48()/10.0 ) +class Ball { + public: + Ball() + : x(drand48() - drand48()), + y(1 - 2.0 * drand48()), + z(drand48()), + vx(0.0), + vy(0.0), + vz(0.0), + mass(0.01 + drand48() / 10.0) //,color( (float[3]) { 0.0, drand48()*0.5, 0.7 + drand48() * 0.3 } ) - { - //this is because GCC < 3.3 can't compile the above line, we aren't sure why though - color[0] = 0.0; color[1] = drand48()*0.5; color[2] = 0.7 + drand48() * 0.3; - }; + { + // this is because GCC < 3.3 can't compile the above line, we aren't sure + // why though + color[0] = 0.0; + color[1] = drand48() * 0.5; + color[2] = 0.7 + drand48() * 0.3; + }; - float x, y, z, vx, vy, vz, mass; - float color[3]; + float x, y, z, vx, vy, vz, mass; + float color[3]; - void updatePhysics( float dT ) - { - x += vx * dT; // position - y += vy * dT; // position - z += vz * dT; // position - if ( y < -0.8 ) vy = fabsf( vy ); - if ( y > 0.8 ) vy = -fabsf( vy ); - if ( z < 0.1 ) vz = fabsf( vz ); - if ( z > 0.9 ) vz = -fabsf( vz ); - vx += (( x > 0 ) ? 4.94 : -4.94) * dT; // G-force - vx *= (1 - 2.9 * dT); // air friction - vy *= (1 - 2.9 * dT); // air friction - vz *= (1 - 2.9 * dT); // air friction - } + void updatePhysics(float dT) { + x += vx * dT; // position + y += vy * dT; // position + z += vz * dT; // position + if (y < -0.8) vy = fabsf(vy); + if (y > 0.8) vy = -fabsf(vy); + if (z < 0.1) vz = fabsf(vz); + if (z > 0.9) vz = -fabsf(vz); + vx += ((x > 0) ? 4.94 : -4.94) * dT; // G-force + vx *= (1 - 2.9 * dT); // air friction + vy *= (1 - 2.9 * dT); // air friction + vz *= (1 - 2.9 * dT); // air friction + } }; -class Paddle -{ - public: - Paddle( float xPos ) : onLeft( xPos < 0 ), mass( 1.0 ), - X( xPos ), x( xPos ), vx( 0.0 ) {}; +class Paddle { + public: + Paddle(float xPos) + : onLeft(xPos < 0), mass(1.0), X(xPos), x(xPos), vx(0.0) {}; - void updatePhysics( float dT ) - { - x += vx * dT; // posision - vx += (1300 * (X - x) / mass) * dT; // elasticity - vx *= (1 - 4.0 * dT); // air friction + void updatePhysics(float dT) { + x += vx * dT; // posision + vx += (1300 * (X - x) / mass) * dT; // elasticity + vx *= (1 - 4.0 * dT); // air friction + } + + void renderGL() { + glBegin(GL_TRIANGLE_STRIP); + glColor3f(0.0f, 0.1f, 0.3f); + glVertex3f(x, -1.0f, 0.0); + glVertex3f(x, 1.0f, 0.0); + glColor3f(0.1f, 0.2f, 0.6f); + glVertex3f(x, -1.0f, 1.0); + glVertex3f(x, 1.0f, 1.0); + glEnd(); + } + + void bounce(Ball* ball) { + if (onLeft && ball->x < x) { + ball->vx = vx * mass / (mass + ball->mass) + fabsf(ball->vx); + ball->vy = (drand48() - drand48()) * 1.8; + ball->vz = (drand48() - drand48()) * 0.9; + ball->x = x; + } else if (!onLeft && ball->x > x) { + ball->vx = vx * mass / (mass + ball->mass) - fabsf(ball->vx); + ball->vy = (drand48() - drand48()) * 1.8; + ball->vz = (drand48() - drand48()) * 0.9; + ball->x = x; } + } - void renderGL() - { - glBegin( GL_TRIANGLE_STRIP ); - glColor3f( 0.0f, 0.1f, 0.3f ); - glVertex3f( x, -1.0f, 0.0 ); - glVertex3f( x, 1.0f, 0.0 ); - glColor3f( 0.1f, 0.2f, 0.6f ); - glVertex3f( x, -1.0f, 1.0 ); - glVertex3f( x, 1.0f, 1.0 ); - glEnd(); - } + void impulse(float strength) { + if ((onLeft && strength > vx) || (!onLeft && strength < vx)) vx += strength; + } - void bounce( Ball * ball ) - { - if ( onLeft && ball->x < x ) - { - ball->vx = vx * mass / (mass + ball->mass) + fabsf( ball->vx ); - ball->vy = (drand48() - drand48()) * 1.8; - ball->vz = (drand48() - drand48()) * 0.9; - ball->x = x; - } - else if ( !onLeft && ball->x > x ) - { - ball->vx = vx * mass / (mass + ball->mass) - fabsf( ball->vx ); - ball->vy = (drand48() - drand48()) * 1.8; - ball->vz = (drand48() - drand48()) * 0.9; - ball->x = x; - } - } - - void impulse( float strength ) - { - if ( (onLeft && strength > vx) || (!onLeft && strength < vx) ) - vx += strength; - } - - private: - bool onLeft; - float mass, X, x, vx; + private: + bool onLeft; + float mass, X, x, vx; }; +GLAnalyzer3::GLAnalyzer3(QWidget* parent) : Analyzer::Base3D(parent, 15) { + // initialize openGL context before managing GL calls + makeCurrent(); + loadTexture(locate("data", "amarok/data/ball.png"), ballTexture); + loadTexture(locate("data", "amarok/data/grid.png"), gridTexture); -GLAnalyzer3::GLAnalyzer3( QWidget *parent ): -Analyzer::Base3D(parent, 15) -{ - //initialize openGL context before managing GL calls - makeCurrent(); - loadTexture( locate("data","amarok/data/ball.png"), ballTexture ); - loadTexture( locate("data","amarok/data/grid.png"), gridTexture ); + balls.setAutoDelete(true); + leftPaddle = new Paddle(-1.0); + rightPaddle = new Paddle(1.0); + for (int i = 0; i < NUMBER_OF_BALLS; i++) balls.append(new Ball()); - balls.setAutoDelete( true ); - leftPaddle = new Paddle( -1.0 ); - rightPaddle = new Paddle( 1.0 ); - for ( int i = 0; i < NUMBER_OF_BALLS; i++ ) - balls.append( new Ball() ); - - show.colorK = 0.0; - show.gridScrollK = 0.0; - show.gridEnergyK = 0.0; - show.camRot = 0.0; - show.camRoll = 0.0; - show.peakEnergy = 1.0; - frame.silence = true; - frame.energy = 0.0; - frame.dEnergy = 0.0; + show.colorK = 0.0; + show.gridScrollK = 0.0; + show.gridEnergyK = 0.0; + show.camRot = 0.0; + show.camRoll = 0.0; + show.peakEnergy = 1.0; + frame.silence = true; + frame.energy = 0.0; + frame.dEnergy = 0.0; } -GLAnalyzer3::~GLAnalyzer3() -{ - freeTexture( ballTexture ); - freeTexture( gridTexture ); - delete leftPaddle; - delete rightPaddle; - balls.clear(); +GLAnalyzer3::~GLAnalyzer3() { + freeTexture(ballTexture); + freeTexture(gridTexture); + delete leftPaddle; + delete rightPaddle; + balls.clear(); } -void GLAnalyzer3::initializeGL() -{ - // Set a smooth shade model - glShadeModel(GL_SMOOTH); +void GLAnalyzer3::initializeGL() { + // Set a smooth shade model + glShadeModel(GL_SMOOTH); - // Disable depth test (all is drawn 'z-sorted') - glDisable( GL_DEPTH_TEST ); + // Disable depth test (all is drawn 'z-sorted') + glDisable(GL_DEPTH_TEST); - // Set blending function (Alpha addition) - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); + // Set blending function (Alpha addition) + glBlendFunc(GL_SRC_ALPHA, GL_ONE); - // Clear frame with a black background - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + // Clear frame with a black background + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } -void GLAnalyzer3::resizeGL( int w, int h ) -{ - // Setup screen. We're going to manually do the perspective projection - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 4.5f ); +void GLAnalyzer3::resizeGL(int w, int h) { + // Setup screen. We're going to manually do the perspective projection + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 4.5f); - // Get the aspect ratio of the screen to draw 'circular' particles - float ratio = (float)w / (float)h; - if ( ratio >= 1.0 ) { + // Get the aspect ratio of the screen to draw 'circular' particles + float ratio = (float)w / (float)h; + if (ratio >= 1.0) { unitX = 0.34 / ratio; unitY = 0.34; - } else { + } else { unitX = 0.34; unitY = 0.34 * ratio; - } + } - // Get current timestamp. - timeval tv; - gettimeofday( &tv, nullptr ); - show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; + // Get current timestamp. + timeval tv; + gettimeofday(&tv, nullptr); + show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; } -void GLAnalyzer3::paused() -{ - analyze( Scope() ); -} +void GLAnalyzer3::paused() { analyze(Scope()); } -void GLAnalyzer3::analyze( const Scope &s ) -{ - // compute the dTime since the last call - timeval tv; - gettimeofday( &tv, nullptr ); - double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; - show.dT = currentTime - show.timeStamp; - show.timeStamp = currentTime; +void GLAnalyzer3::analyze(const Scope& s) { + // compute the dTime since the last call + timeval tv; + gettimeofday(&tv, nullptr); + double currentTime = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; + show.dT = currentTime - show.timeStamp; + show.timeStamp = currentTime; - // compute energy integrating frame's spectrum - if ( !s.empty() ) - { + // compute energy integrating frame's spectrum + if (!s.empty()) { int bands = s.size(); - float currentEnergy = 0, - maxValue = 0; + float currentEnergy = 0, maxValue = 0; // integrate spectrum -> energy - for ( int i = 0; i < bands; i++ ) - { - float value = s[i]; - currentEnergy += value; - if ( value > maxValue ) - maxValue = value; + for (int i = 0; i < bands; i++) { + float value = s[i]; + currentEnergy += value; + if (value > maxValue) maxValue = value; } currentEnergy *= 100.0 / (float)bands; // emulate a peak detector: currentEnergy -> peakEnergy (3tau = 30 seconds) - show.peakEnergy = 1.0 + ( show.peakEnergy - 1.0 ) * exp( - show.dT / 10.0 ); - if ( currentEnergy > show.peakEnergy ) - show.peakEnergy = currentEnergy; + show.peakEnergy = 1.0 + (show.peakEnergy - 1.0) * exp(-show.dT / 10.0); + if (currentEnergy > show.peakEnergy) show.peakEnergy = currentEnergy; // check for silence frame.silence = currentEnergy < 0.001; // normalize frame energy against peak energy and compute frame stats currentEnergy /= show.peakEnergy; frame.dEnergy = currentEnergy - frame.energy; frame.energy = currentEnergy; - } else + } else frame.silence = true; - // update the frame - updateGL(); + // update the frame + updateGL(); } -void GLAnalyzer3::paintGL() -{ - // limit max dT to 0.05 and update color and scroll constants - if ( show.dT > 0.05 ) - show.dT = 0.05; - show.colorK += show.dT * 0.4; - if ( show.colorK > 3.0 ) - show.colorK -= 3.0; - show.gridScrollK += 0.2 * show.peakEnergy * show.dT; +void GLAnalyzer3::paintGL() { + // limit max dT to 0.05 and update color and scroll constants + if (show.dT > 0.05) show.dT = 0.05; + show.colorK += show.dT * 0.4; + if (show.colorK > 3.0) show.colorK -= 3.0; + show.gridScrollK += 0.2 * show.peakEnergy * show.dT; - // Switch to MODEL matrix and clear screen - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glClear( GL_COLOR_BUFFER_BIT ); + // Switch to MODEL matrix and clear screen + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glClear(GL_COLOR_BUFFER_BIT); - // Draw scrolling grid - if ( (show.gridEnergyK > 0.05) || (!frame.silence && frame.dEnergy < -0.3) ) - { - show.gridEnergyK *= exp( -show.dT / 0.1 ); - if ( -frame.dEnergy > show.gridEnergyK ) - show.gridEnergyK = -frame.dEnergy*2.0; - float gridColor[4] = { 0.0, 1.0, 0.6, show.gridEnergyK }; - drawScrollGrid( show.gridScrollK, gridColor ); - } + // Draw scrolling grid + if ((show.gridEnergyK > 0.05) || (!frame.silence && frame.dEnergy < -0.3)) { + show.gridEnergyK *= exp(-show.dT / 0.1); + if (-frame.dEnergy > show.gridEnergyK) + show.gridEnergyK = -frame.dEnergy * 2.0; + float gridColor[4] = {0.0, 1.0, 0.6, show.gridEnergyK}; + drawScrollGrid(show.gridScrollK, gridColor); + } - // Roll camera up/down handling the beat - show.camRot += show.camRoll * show.dT; // posision - show.camRoll -= 400 * show.camRot * show.dT; // elasticity - show.camRoll *= (1 - 2.0 * show.dT); // friction - if ( !frame.silence && frame.dEnergy > 0.4 ) - show.camRoll += show.peakEnergy*2.0; - glRotatef( show.camRoll / 2.0, 1,0,0 ); + // Roll camera up/down handling the beat + show.camRot += show.camRoll * show.dT; // posision + show.camRoll -= 400 * show.camRot * show.dT; // elasticity + show.camRoll *= (1 - 2.0 * show.dT); // friction + if (!frame.silence && frame.dEnergy > 0.4) + show.camRoll += show.peakEnergy * 2.0; + glRotatef(show.camRoll / 2.0, 1, 0, 0); - // Translate the drawing plane - glTranslatef( 0.0f, 0.0f, -1.8f ); + // Translate the drawing plane + glTranslatef(0.0f, 0.0f, -1.8f); - // Draw upper/lower planes and paddles - drawHFace( -1.0 ); - drawHFace( 1.0 ); - leftPaddle->renderGL(); - rightPaddle->renderGL(); + // Draw upper/lower planes and paddles + drawHFace(-1.0); + drawHFace(1.0); + leftPaddle->renderGL(); + rightPaddle->renderGL(); - // Draw Balls - if ( ballTexture ) { - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, ballTexture ); - } else - glDisable( GL_TEXTURE_2D ); - glEnable( GL_BLEND ); - Ball * ball = balls.first(); - for ( ; ball; ball = balls.next() ) - { - float color[3], - angle = show.colorK; + // Draw Balls + if (ballTexture) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, ballTexture); + } else + glDisable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + Ball* ball = balls.first(); + for (; ball; ball = balls.next()) { + float color[3], angle = show.colorK; // Rotate the color based on 'angle' value [0,3) - if ( angle < 1.0 ) - { - color[ 0 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - color[ 1 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; - color[ 2 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - } - else if ( angle < 2.0 ) - { - angle -= 1.0; - color[ 0 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; - color[ 1 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - color[ 2 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - } - else - { - angle -= 2.0; - color[ 0 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - color[ 1 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - color[ 2 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; + if (angle < 1.0) { + color[0] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + color[1] = ball->color[1] * (1 - angle) + ball->color[2] * angle; + color[2] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + } else if (angle < 2.0) { + angle -= 1.0; + color[0] = ball->color[1] * (1 - angle) + ball->color[2] * angle; + color[1] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + color[2] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + } else { + angle -= 2.0; + color[0] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + color[1] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + color[2] = ball->color[1] * (1 - angle) + ball->color[2] * angle; } // Draw the dot and update its physics also checking at bounces - glColor3fv( color ); - drawDot3s( ball->x, ball->y, ball->z, 1.0 ); - ball->updatePhysics( show.dT ); - if ( ball->x < 0 ) - leftPaddle->bounce( ball ); + glColor3fv(color); + drawDot3s(ball->x, ball->y, ball->z, 1.0); + ball->updatePhysics(show.dT); + if (ball->x < 0) + leftPaddle->bounce(ball); else - rightPaddle->bounce( ball ); - } - glDisable( GL_BLEND ); - glDisable( GL_TEXTURE_2D ); + rightPaddle->bounce(ball); + } + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); - // Update physics of paddles - leftPaddle->updatePhysics( show.dT ); - rightPaddle->updatePhysics( show.dT ); - if ( !frame.silence ) - { - leftPaddle->impulse( frame.energy*3.0 + frame.dEnergy*6.0 ); - rightPaddle->impulse( -frame.energy*3.0 - frame.dEnergy*6.0 ); - } + // Update physics of paddles + leftPaddle->updatePhysics(show.dT); + rightPaddle->updatePhysics(show.dT); + if (!frame.silence) { + leftPaddle->impulse(frame.energy * 3.0 + frame.dEnergy * 6.0); + rightPaddle->impulse(-frame.energy * 3.0 - frame.dEnergy * 6.0); + } } -void GLAnalyzer3::drawDot3s( float x, float y, float z, float size ) -{ - // Circular XY dot drawing functions - float sizeX = size * unitX, - sizeY = size * unitY, - pXm = x - sizeX, - pXM = x + sizeX, - pYm = y - sizeY, - pYM = y + sizeY; - // Draw the Dot - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, pYm, z ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, pYM, z ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, pYM, z ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, pYm, z ); - glEnd(); +void GLAnalyzer3::drawDot3s(float x, float y, float z, float size) { + // Circular XY dot drawing functions + float sizeX = size * unitX, sizeY = size * unitY, pXm = x - sizeX, + pXM = x + sizeX, pYm = y - sizeY, pYM = y + sizeY; + // Draw the Dot + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, pYm, z); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, pYM, z); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, pYM, z); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, pYm, z); + glEnd(); - // Shadow XZ drawing functions - float sizeZ = size / 10.0, - pZm = z - sizeZ, - pZM = z + sizeZ, - currentColor[4]; - glGetFloatv( GL_CURRENT_COLOR, currentColor ); - float alpha = currentColor[3], - topSide = (y + 1) / 4, - bottomSide = (1 - y) / 4; - // Draw the top shadow - currentColor[3] = topSide * topSide * alpha; - glColor4fv( currentColor ); - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, 1, pZm ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, 1, pZM ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, 1, pZM ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, 1, pZm ); - glEnd(); - // Draw the bottom shadow - currentColor[3] = bottomSide * bottomSide * alpha; - glColor4fv( currentColor ); - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, -1, pZm ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, -1, pZM ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, -1, pZM ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, -1, pZm ); - glEnd(); + // Shadow XZ drawing functions + float sizeZ = size / 10.0, pZm = z - sizeZ, pZM = z + sizeZ, currentColor[4]; + glGetFloatv(GL_CURRENT_COLOR, currentColor); + float alpha = currentColor[3], topSide = (y + 1) / 4, + bottomSide = (1 - y) / 4; + // Draw the top shadow + currentColor[3] = topSide * topSide * alpha; + glColor4fv(currentColor); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, 1, pZm); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, 1, pZM); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, 1, pZM); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, 1, pZm); + glEnd(); + // Draw the bottom shadow + currentColor[3] = bottomSide * bottomSide * alpha; + glColor4fv(currentColor); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, -1, pZm); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, -1, pZM); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, -1, pZM); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, -1, pZm); + glEnd(); } -void GLAnalyzer3::drawHFace( float y ) -{ - glBegin( GL_TRIANGLE_STRIP ); - glColor3f( 0.0f, 0.1f, 0.2f ); - glVertex3f( -1.0f, y, 0.0 ); - glVertex3f( 1.0f, y, 0.0 ); - glColor3f( 0.1f, 0.6f, 0.5f ); - glVertex3f( -1.0f, y, 2.0 ); - glVertex3f( 1.0f, y, 2.0 ); - glEnd(); +void GLAnalyzer3::drawHFace(float y) { + glBegin(GL_TRIANGLE_STRIP); + glColor3f(0.0f, 0.1f, 0.2f); + glVertex3f(-1.0f, y, 0.0); + glVertex3f(1.0f, y, 0.0); + glColor3f(0.1f, 0.6f, 0.5f); + glVertex3f(-1.0f, y, 2.0); + glVertex3f(1.0f, y, 2.0); + glEnd(); } -void GLAnalyzer3::drawScrollGrid( float scroll, float color[4] ) -{ - if ( !gridTexture ) - return; - glMatrixMode( GL_TEXTURE ); - glLoadIdentity(); - glTranslatef( 0.0, -scroll, 0.0 ); - glMatrixMode( GL_MODELVIEW ); - float backColor[4] = { 1.0, 1.0, 1.0, 0.0 }; - for ( int i = 0; i < 3; i++ ) - backColor[ i ] = color[ i ]; - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, gridTexture ); - glEnable( GL_BLEND ); - glBegin( GL_TRIANGLE_STRIP ); - glColor4fv( color ); // top face - glTexCoord2f( 0.0f, 1.0f ); - glVertex3f( -1.0f, 1.0f, -1.0f ); - glTexCoord2f( 1.0f, 1.0f ); - glVertex3f( 1.0f, 1.0f, -1.0f ); - glColor4fv( backColor ); // central points - glTexCoord2f( 0.0f, 0.0f ); - glVertex3f( -1.0f, 0.0f, -3.0f ); - glTexCoord2f( 1.0f, 0.0f ); - glVertex3f( 1.0f, 0.0f, -3.0f ); - glColor4fv( color ); // bottom face - glTexCoord2f( 0.0f, 1.0f ); - glVertex3f( -1.0f, -1.0f, -1.0f ); - glTexCoord2f( 1.0f, 1.0f ); - glVertex3f( 1.0f, -1.0f, -1.0f ); - glEnd(); - glDisable( GL_BLEND ); - glDisable( GL_TEXTURE_2D ); - glMatrixMode( GL_TEXTURE ); - glLoadIdentity(); - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer3::drawScrollGrid(float scroll, float color[4]) { + if (!gridTexture) return; + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glTranslatef(0.0, -scroll, 0.0); + glMatrixMode(GL_MODELVIEW); + float backColor[4] = {1.0, 1.0, 1.0, 0.0}; + for (int i = 0; i < 3; i++) backColor[i] = color[i]; + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, gridTexture); + glEnable(GL_BLEND); + glBegin(GL_TRIANGLE_STRIP); + glColor4fv(color); // top face + glTexCoord2f(0.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, -1.0f); + glColor4fv(backColor); // central points + glTexCoord2f(0.0f, 0.0f); + glVertex3f(-1.0f, 0.0f, -3.0f); + glTexCoord2f(1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, -3.0f); + glColor4fv(color); // bottom face + glTexCoord2f(0.0f, 1.0f); + glVertex3f(-1.0f, -1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); + glVertex3f(1.0f, -1.0f, -1.0f); + glEnd(); + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); } -bool GLAnalyzer3::loadTexture( QString fileName, GLuint& textureID ) -{ - //reset texture ID to the default EMPTY value - textureID = 0; +bool GLAnalyzer3::loadTexture(QString fileName, GLuint& textureID) { + // reset texture ID to the default EMPTY value + textureID = 0; - //load image - QImage tmp; - if ( !tmp.load( fileName ) ) - return false; + // load image + QImage tmp; + if (!tmp.load(fileName)) return false; - //convert it to suitable format (flipped RGBA) - QImage texture = QGLWidget::convertToGLFormat( tmp ); - if ( texture.isNull() ) - return false; + // convert it to suitable format (flipped RGBA) + QImage texture = QGLWidget::convertToGLFormat(tmp); + if (texture.isNull()) return false; - //get texture number and bind loaded image to that texture - glGenTextures( 1, &textureID ); - glBindTexture( GL_TEXTURE_2D, textureID ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexImage2D( GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), - 0, GL_RGBA, GL_UNSIGNED_BYTE, texture.bits() ); - return true; + // get texture number and bind loaded image to that texture + glGenTextures(1, &textureID); + glBindTexture(GL_TEXTURE_2D, textureID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture.bits()); + return true; } -void GLAnalyzer3::freeTexture( GLuint& textureID ) -{ - if ( textureID > 0 ) - glDeleteTextures( 1, &textureID ); - textureID = 0; +void GLAnalyzer3::freeTexture(GLuint& textureID) { + if (textureID > 0) glDeleteTextures(1, &textureID); + textureID = 0; } #endif diff --git a/src/analyzers/glanalyzer3.h b/src/analyzers/glanalyzer3.h index 7abd7614b..643d01dea 100644 --- a/src/analyzers/glanalyzer3.h +++ b/src/analyzers/glanalyzer3.h @@ -1,9 +1,9 @@ /*************************************************************************** - glanalyzer3.h - description - ------------------- - begin : Feb 16 2004 - copyright : (C) 2004 by Enrico Ros - email : eros.kde@email.it + glanalyzer3.h - description + ------------------- + begin : Feb 16 2004 + copyright : (C) 2004 by Enrico Ros + email : eros.kde@email.it ***************************************************************************/ /*************************************************************************** @@ -29,51 +29,50 @@ class QWidget; class Ball; class Paddle; -class GLAnalyzer3 : public Analyzer::Base3D -{ -public: - GLAnalyzer3(QWidget *); - ~GLAnalyzer3(); - void analyze( const Scope & ); - void paused(); +class GLAnalyzer3 : public Analyzer::Base3D { + public: + GLAnalyzer3(QWidget*); + ~GLAnalyzer3(); + void analyze(const Scope&); + void paused(); -protected: - void initializeGL(); - void resizeGL( int w, int h ); - void paintGL(); + protected: + void initializeGL(); + void resizeGL(int w, int h); + void paintGL(); -private: - struct ShowProperties { - double timeStamp; - double dT; - float colorK; - float gridScrollK; - float gridEnergyK; - float camRot; - float camRoll; - float peakEnergy; - } show; + private: + struct ShowProperties { + double timeStamp; + double dT; + float colorK; + float gridScrollK; + float gridEnergyK; + float camRot; + float camRoll; + float peakEnergy; + } show; - struct FrameProperties { - bool silence; - float energy; - float dEnergy; - } frame; - - static const int NUMBER_OF_BALLS = 16; - - QPtrList balls; - Paddle * leftPaddle, * rightPaddle; - float unitX, unitY; - GLuint ballTexture; - GLuint gridTexture; + struct FrameProperties { + bool silence; + float energy; + float dEnergy; + } frame; - void drawDot3s( float x, float y, float z, float size ); - void drawHFace( float y ); - void drawScrollGrid( float scroll, float color[4] ); + static const int NUMBER_OF_BALLS = 16; - bool loadTexture(QString file, GLuint& textureID); - void freeTexture(GLuint& textureID); + QPtrList balls; + Paddle* leftPaddle, *rightPaddle; + float unitX, unitY; + GLuint ballTexture; + GLuint gridTexture; + + void drawDot3s(float x, float y, float z, float size); + void drawHFace(float y); + void drawScrollGrid(float scroll, float color[4]); + + bool loadTexture(QString file, GLuint& textureID); + void freeTexture(GLuint& textureID); }; #endif diff --git a/src/analyzers/nyancatanalyzer.cpp b/src/analyzers/nyancatanalyzer.cpp index 39ea101a0..760e97fb6 100644 --- a/src/analyzers/nyancatanalyzer.cpp +++ b/src/analyzers/nyancatanalyzer.cpp @@ -26,34 +26,31 @@ const char* NyanCatAnalyzer::kName = "Nyanalyzer cat"; const float NyanCatAnalyzer::kPixelScale = 0.02f; - NyanCatAnalyzer::NyanCatAnalyzer(QWidget* parent) - : Analyzer::Base(parent, 9), - cat_(":/nyancat.png"), - timer_id_(startTimer(kFrameIntervalMs)), - frame_(0), - current_buffer_(0), - available_rainbow_width_(0), - px_per_frame_(0), - x_offset_(0), - background_brush_(QColor(0x0f, 0x43, 0x73)) -{ + : Analyzer::Base(parent, 9), + cat_(":/nyancat.png"), + timer_id_(startTimer(kFrameIntervalMs)), + frame_(0), + current_buffer_(0), + available_rainbow_width_(0), + px_per_frame_(0), + x_offset_(0), + background_brush_(QColor(0x0f, 0x43, 0x73)) { memset(history_, 0, sizeof(history_)); - for (int i=0 ; ispectrum(&s.front()); -} +void NyanCatAnalyzer::transform(Scope& s) { m_fht->spectrum(&s.front()); } void NyanCatAnalyzer::timerEvent(QTimerEvent* e) { if (e->timerId() == timer_id_) { @@ -70,18 +67,19 @@ void NyanCatAnalyzer::resizeEvent(QResizeEvent* e) { buffer_[1] = QPixmap(); available_rainbow_width_ = width() - kCatWidth + kRainbowOverlap; - px_per_frame_ = float(available_rainbow_width_) / (kHistorySize-1) + 1; - x_offset_ = px_per_frame_ * (kHistorySize-1) - available_rainbow_width_; + px_per_frame_ = float(available_rainbow_width_) / (kHistorySize - 1) + 1; + x_offset_ = px_per_frame_ * (kHistorySize - 1) - available_rainbow_width_; } -void NyanCatAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, bool new_frame) { +void NyanCatAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, + bool new_frame) { // Discard the second half of the transform const int scope_size = s.size() / 2; if ((new_frame && is_playing_) || (buffer_[0].isNull() && buffer_[1].isNull())) { // Transform the music into rainbows! - for (int band=0 ; band=0 ; --band) { + for (int band = kRainbowBands - 1; band >= 0; --band) { buffer_painter.setPen(colors_[band]); - buffer_painter.drawPolyline(&polyline[band*kHistorySize], kHistorySize); - buffer_painter.drawPolyline(&polyline[band*kHistorySize], kHistorySize); + buffer_painter.drawPolyline(&polyline[band * kHistorySize], + kHistorySize); + buffer_painter.drawPolyline(&polyline[band * kHistorySize], + kHistorySize); } } else { const int last_buffer = current_buffer_; current_buffer_ = (current_buffer_ + 1) % 2; - // We can just shuffle the buffer along a bit and draw the new frame's data. + // We can just shuffle the buffer along a bit and draw the new frame's + // data. QPainter buffer_painter(&buffer_[current_buffer_]); buffer_painter.setRenderHint(QPainter::Antialiasing); - buffer_painter.drawPixmap(0, 0, buffer_[last_buffer], - px_per_frame_, 0, - x_offset_ + available_rainbow_width_ - px_per_frame_, 0); - buffer_painter.fillRect(x_offset_ + available_rainbow_width_ - px_per_frame_, 0, - kCatWidth - kRainbowOverlap + px_per_frame_, height(), - background_brush_); + buffer_painter.drawPixmap( + 0, 0, buffer_[last_buffer], px_per_frame_, 0, + x_offset_ + available_rainbow_width_ - px_per_frame_, 0); + buffer_painter.fillRect( + x_offset_ + available_rainbow_width_ - px_per_frame_, 0, + kCatWidth - kRainbowOverlap + px_per_frame_, height(), + background_brush_); - for (int band=kRainbowBands-1 ; band>=0 ; --band) { + for (int band = kRainbowBands - 1; band >= 0; --band) { buffer_painter.setPen(colors_[band]); - buffer_painter.drawPolyline(&polyline[(band+1)*kHistorySize - 3], 3); + buffer_painter.drawPolyline(&polyline[(band + 1) * kHistorySize - 3], + 3); } } } diff --git a/src/analyzers/nyancatanalyzer.h b/src/analyzers/nyancatanalyzer.h index afe6eec0b..8b16527b8 100644 --- a/src/analyzers/nyancatanalyzer.h +++ b/src/analyzers/nyancatanalyzer.h @@ -25,19 +25,19 @@ class NyanCatAnalyzer : public Analyzer::Base { Q_OBJECT -public: + public: Q_INVOKABLE NyanCatAnalyzer(QWidget* parent); static const char* kName; -protected: + protected: void transform(Scope&); void analyze(QPainter& p, const Analyzer::Scope&, bool new_frame); void timerEvent(QTimerEvent* e); void resizeEvent(QResizeEvent* e); -private: + private: static const int kCatHeight = 21; static const int kCatWidth = 34; static const int kCatFrameCount = 6; @@ -50,7 +50,7 @@ private: static const int kFrameIntervalMs = 150; -private: + private: inline QRect CatSourceRect() const { return QRect(0, kCatHeight * frame_, kCatWidth, kCatHeight); } @@ -60,8 +60,8 @@ private: } inline QRect CatDestRect() const { - return QRect(width() - kCatWidth, (height() - kCatHeight) / 2, - kCatWidth, kCatHeight); + return QRect(width() - kCatWidth, (height() - kCatHeight) / 2, kCatWidth, + kCatHeight); } inline QRect SleepingCatDestRect() const { @@ -69,7 +69,7 @@ private: kCatWidth, kSleepingCatHeight); } -private: + private: // "constants" that get initialised in the constructor float band_scale_[kRainbowBands]; QPen colors_[kRainbowBands]; @@ -102,4 +102,4 @@ private: QBrush background_brush_; }; -#endif // NYANCATANALYZER_H +#endif // NYANCATANALYZER_H diff --git a/src/analyzers/sonogram.cpp b/src/analyzers/sonogram.cpp index fbc99ecef..e067d32f6 100644 --- a/src/analyzers/sonogram.cpp +++ b/src/analyzers/sonogram.cpp @@ -15,76 +15,61 @@ #include -const char* Sonogram::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Sonogram"); +const char* Sonogram::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Sonogram"); -Sonogram::Sonogram(QWidget *parent) : - Analyzer::Base(parent, 9) -{ -} +Sonogram::Sonogram(QWidget* parent) : Analyzer::Base(parent, 9) {} +Sonogram::~Sonogram() {} -Sonogram::~Sonogram() -{ -} +void Sonogram::resizeEvent(QResizeEvent* e) { + QWidget::resizeEvent(e); - -void Sonogram::resizeEvent(QResizeEvent *e) -{ - QWidget::resizeEvent(e); - -//only for gcc < 4.0 -#if !( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 0 ) ) - resizeForBands(height() < 128 ? 128 : height()); +// only for gcc < 4.0 +#if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 0)) + resizeForBands(height() < 128 ? 128 : height()); #endif - canvas_ = QPixmap(size()); - canvas_.fill(palette().color(QPalette::Background)); + canvas_ = QPixmap(size()); + canvas_.fill(palette().color(QPalette::Background)); } +void Sonogram::analyze(QPainter& p, const Scope& s, bool new_frame) { + int x = width() - 1; + QColor c; -void Sonogram::analyze(QPainter& p, const Scope &s, bool new_frame) -{ - int x = width() - 1; - QColor c; + QPainter canvas_painter(&canvas_); + canvas_painter.drawPixmap(0, 0, canvas_, 1, 0, x, -1); - QPainter canvas_painter(&canvas_); - canvas_painter.drawPixmap(0, 0, canvas_, 1, 0, x, -1); + Scope::const_iterator it = s.begin(), end = s.end(); + for (int y = height() - 1; y;) { + if (it >= end || *it < .005) + c = palette().color(QPalette::Background); + else if (*it < .05) + c.setHsv(95, 255, 255 - int(*it * 4000.0)); + else if (*it < 1.0) + c.setHsv(95 - int(*it * 90.0), 255, 255); + else + c = Qt::red; - Scope::const_iterator it = s.begin(), end = s.end(); - for (int y = height() - 1; y;) { - if (it >= end || *it < .005) - c = palette().color(QPalette::Background); - else if (*it < .05) - c.setHsv(95, 255, 255 - int(*it * 4000.0)); - else if (*it < 1.0) - c.setHsv(95 - int(*it * 90.0), 255, 255); - else - c = Qt::red; + canvas_painter.setPen(c); + canvas_painter.drawPoint(x, y--); - canvas_painter.setPen(c); - canvas_painter.drawPoint(x, y--); + if (it < end) ++it; + } - if (it < end) - ++it; - } + canvas_painter.end(); - canvas_painter.end(); - - p.drawPixmap(0, 0, canvas_); + p.drawPixmap(0, 0, canvas_); } - -void Sonogram::transform(Scope &scope) -{ - float *front = static_cast(&scope.front()); - m_fht->power2(front); - m_fht->scale(front, 1.0 / 256); - scope.resize( m_fht->size() / 2 ); +void Sonogram::transform(Scope& scope) { + float* front = static_cast(&scope.front()); + m_fht->power2(front); + m_fht->scale(front, 1.0 / 256); + scope.resize(m_fht->size() / 2); } - -void Sonogram::demo(QPainter& p) -{ - analyze(p, Scope(m_fht->size(), 0), new_frame_); +void Sonogram::demo(QPainter& p) { + analyze(p, Scope(m_fht->size(), 0), new_frame_); } - diff --git a/src/analyzers/sonogram.h b/src/analyzers/sonogram.h index dbd2a984a..35ce753cc 100644 --- a/src/analyzers/sonogram.h +++ b/src/analyzers/sonogram.h @@ -20,22 +20,21 @@ @author Melchior FRANZ */ -class Sonogram : public Analyzer::Base -{ +class Sonogram : public Analyzer::Base { Q_OBJECT -public: - Q_INVOKABLE Sonogram(QWidget*); - ~Sonogram(); + public: + Q_INVOKABLE Sonogram(QWidget*); + ~Sonogram(); - static const char* kName; + static const char* kName; -protected: - void analyze(QPainter& p, const Scope&, bool new_frame); - void transform(Scope&); - void demo(QPainter& p); - void resizeEvent(QResizeEvent*); + protected: + void analyze(QPainter& p, const Scope&, bool new_frame); + void transform(Scope&); + void demo(QPainter& p); + void resizeEvent(QResizeEvent*); - QPixmap canvas_; + QPixmap canvas_; }; #endif diff --git a/src/analyzers/turbine.cpp b/src/analyzers/turbine.cpp index ea45de137..63a7d0309 100644 --- a/src/analyzers/turbine.cpp +++ b/src/analyzers/turbine.cpp @@ -12,66 +12,57 @@ #include "turbine.h" -const char* TurbineAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Turbine"); +const char* TurbineAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Turbine"); -void TurbineAnalyzer::analyze( QPainter& p, const Scope &scope, bool new_frame) -{ - float h; - const uint hd2 = height() / 2; - const uint MAX_HEIGHT = hd2 - 1; +void TurbineAnalyzer::analyze(QPainter& p, const Scope& scope, bool new_frame) { + float h; + const uint hd2 = height() / 2; + const uint MAX_HEIGHT = hd2 - 1; - for( uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH+1 ) - { - h = log10( scope[i]*256.0 ) * F * 0.5; + for (uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH + 1) { + h = log10(scope[i] * 256.0) * F * 0.5; - if( h > MAX_HEIGHT ) - h = MAX_HEIGHT; + if (h > MAX_HEIGHT) h = MAX_HEIGHT; - if( h > bar_height[i] ) - { - bar_height[i] = h; + if (h > bar_height[i]) { + bar_height[i] = h; - if( h > peak_height[i] ) - { - peak_height[i] = h; - peak_speed[i] = 0.01; - } - else goto peak_handling; - } - else - { - if( bar_height[i] > 0.0 ) - { - bar_height[i] -= K_barHeight; //1.4 - if( bar_height[i] < 0.0 ) bar_height[i] = 0.0; - } + if (h > peak_height[i]) { + peak_height[i] = h; + peak_speed[i] = 0.01; + } else + goto peak_handling; + } else { + if (bar_height[i] > 0.0) { + bar_height[i] -= K_barHeight; // 1.4 + if (bar_height[i] < 0.0) bar_height[i] = 0.0; + } - peak_handling: + peak_handling: - if( peak_height[i] > 0.0 ) - { - peak_height[i] -= peak_speed[i]; - peak_speed[i] *= F_peakSpeed; //1.12 + if (peak_height[i] > 0.0) { + peak_height[i] -= peak_speed[i]; + peak_speed[i] *= F_peakSpeed; // 1.12 - if( peak_height[i] < bar_height[i] ) peak_height[i] = bar_height[i]; - if( peak_height[i] < 0.0 ) peak_height[i] = 0.0; - } - } - - - y = hd2 - uint(bar_height[i]); - p.drawPixmap(x+1, y, barPixmap, 0, y, -1, -1); - p.drawPixmap(x+1, hd2, barPixmap, 0, int(bar_height[i]), -1, -1); - - p.setPen( palette().color(QPalette::Highlight) ); - if (bar_height[i] > 0) - p.drawRect( x, y, COLUMN_WIDTH-1, (int)bar_height[i]*2 -1 ); - - const uint x2 = x+COLUMN_WIDTH-1; - p.setPen( palette().color(QPalette::Base) ); - y = hd2 - uint(peak_height[i]); - p.drawLine( x, y, x2, y ); - y = hd2 + uint(peak_height[i]); - p.drawLine( x, y, x2, y ); + if (peak_height[i] < bar_height[i]) peak_height[i] = bar_height[i]; + if (peak_height[i] < 0.0) peak_height[i] = 0.0; + } } + + y = hd2 - uint(bar_height[i]); + p.drawPixmap(x + 1, y, barPixmap, 0, y, -1, -1); + p.drawPixmap(x + 1, hd2, barPixmap, 0, int(bar_height[i]), -1, -1); + + p.setPen(palette().color(QPalette::Highlight)); + if (bar_height[i] > 0) + p.drawRect(x, y, COLUMN_WIDTH - 1, (int)bar_height[i] * 2 - 1); + + const uint x2 = x + COLUMN_WIDTH - 1; + p.setPen(palette().color(QPalette::Base)); + y = hd2 - uint(peak_height[i]); + p.drawLine(x, y, x2, y); + y = hd2 + uint(peak_height[i]); + p.drawLine(x, y, x2, y); + } } diff --git a/src/analyzers/turbine.h b/src/analyzers/turbine.h index 819f1dd54..1175bff1f 100644 --- a/src/analyzers/turbine.h +++ b/src/analyzers/turbine.h @@ -11,15 +11,14 @@ #include "boomanalyzer.h" -class TurbineAnalyzer : public BoomAnalyzer -{ +class TurbineAnalyzer : public BoomAnalyzer { Q_OBJECT - public: - Q_INVOKABLE TurbineAnalyzer( QWidget *parent ) : BoomAnalyzer( parent ) {} + public: + Q_INVOKABLE TurbineAnalyzer(QWidget* parent) : BoomAnalyzer(parent) {} - void analyze( QPainter& p, const Scope&, bool new_frame); + void analyze(QPainter& p, const Scope&, bool new_frame); - static const char* kName; + static const char* kName; }; #endif diff --git a/src/core/appearance.cpp b/src/core/appearance.cpp index f9afdf9de..13c1c7525 100644 --- a/src/core/appearance.cpp +++ b/src/core/appearance.cpp @@ -27,24 +27,21 @@ const char* Appearance::kBackgroundColor = "background-color"; const QPalette Appearance::kDefaultPalette = QPalette(); -Appearance::Appearance(QObject* parent) - : QObject(parent) -{ +Appearance::Appearance(QObject* parent) : QObject(parent) { QSettings s; s.beginGroup(kSettingsGroup); QPalette p = QApplication::palette(); - background_color_ = s.value(kBackgroundColor, - p.color(QPalette::WindowText)).value(); - foreground_color_ = s.value(kForegroundColor, - p.color(QPalette::Window)).value(); + background_color_ = + s.value(kBackgroundColor, p.color(QPalette::WindowText)).value(); + foreground_color_ = + s.value(kForegroundColor, p.color(QPalette::Window)).value(); } void Appearance::LoadUserTheme() { QSettings s; s.beginGroup(kSettingsGroup); bool use_a_custom_color_set = s.value(kUseCustomColorSet).toBool(); - if (!use_a_custom_color_set) - return; + if (!use_a_custom_color_set) return; ChangeForegroundColor(foreground_color_); ChangeBackgroundColor(background_color_); diff --git a/src/core/appearance.h b/src/core/appearance.h index 31fffc677..7b44b83e3 100644 --- a/src/core/appearance.h +++ b/src/core/appearance.h @@ -22,24 +22,24 @@ #include class Appearance : public QObject { - public: - Appearance(QObject* parent = NULL); - // Load the user preferred theme, which could the default system theme or a - // custom set of colors that user has chosen - void LoadUserTheme(); - void ResetToSystemDefaultTheme(); - void ChangeForegroundColor(const QColor& color); - void ChangeBackgroundColor(const QColor& color); + public: + Appearance(QObject* parent = NULL); + // Load the user preferred theme, which could the default system theme or a + // custom set of colors that user has chosen + void LoadUserTheme(); + void ResetToSystemDefaultTheme(); + void ChangeForegroundColor(const QColor& color); + void ChangeBackgroundColor(const QColor& color); - static const char* kSettingsGroup; - static const char* kUseCustomColorSet; - static const char* kForegroundColor; - static const char* kBackgroundColor; - static const QPalette kDefaultPalette; + static const char* kSettingsGroup; + static const char* kUseCustomColorSet; + static const char* kForegroundColor; + static const char* kBackgroundColor; + static const QPalette kDefaultPalette; - private: - QColor foreground_color_; - QColor background_color_; + private: + QColor foreground_color_; + QColor background_color_; }; -#endif // APPEARANCE_H +#endif // APPEARANCE_H diff --git a/src/core/application.cpp b/src/core/application.cpp index 60238a63e..c8bf62d50 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -40,37 +40,36 @@ #include "podcasts/podcastupdater.h" #ifdef HAVE_MOODBAR -# include "moodbar/moodbarcontroller.h" -# include "moodbar/moodbarloader.h" +#include "moodbar/moodbarcontroller.h" +#include "moodbar/moodbarloader.h" #endif bool Application::kIsPortable = false; Application::Application(QObject* parent) - : QObject(parent), - tag_reader_client_(nullptr), - database_(nullptr), - album_cover_loader_(nullptr), - playlist_backend_(nullptr), - podcast_backend_(nullptr), - appearance_(nullptr), - cover_providers_(nullptr), - task_manager_(nullptr), - player_(nullptr), - playlist_manager_(nullptr), - current_art_loader_(nullptr), - global_search_(nullptr), - internet_model_(nullptr), - library_(nullptr), - device_manager_(nullptr), - podcast_updater_(nullptr), - podcast_downloader_(nullptr), - gpodder_sync_(nullptr), - moodbar_loader_(nullptr), - moodbar_controller_(nullptr), - network_remote_(nullptr), - network_remote_helper_(nullptr) -{ + : QObject(parent), + tag_reader_client_(nullptr), + database_(nullptr), + album_cover_loader_(nullptr), + playlist_backend_(nullptr), + podcast_backend_(nullptr), + appearance_(nullptr), + cover_providers_(nullptr), + task_manager_(nullptr), + player_(nullptr), + playlist_manager_(nullptr), + current_art_loader_(nullptr), + global_search_(nullptr), + internet_model_(nullptr), + library_(nullptr), + device_manager_(nullptr), + podcast_updater_(nullptr), + podcast_downloader_(nullptr), + gpodder_sync_(nullptr), + moodbar_loader_(nullptr), + moodbar_controller_(nullptr), + network_remote_(nullptr), + network_remote_helper_(nullptr) { tag_reader_client_ = new TagReaderClient(this); MoveToNewThread(tag_reader_client_); tag_reader_client_->Start(); @@ -111,7 +110,8 @@ Application::Application(QObject* parent) MoveToNewThread(network_remote_); // This must be before libraray_->Init(); - // In the constructor the helper waits for the signal PlaylistManagerInitialized + // In the constructor the helper waits for the signal + // PlaylistManagerInitialized // to start the remote. Without the playlist manager clementine can // crash when a client connects before the manager is initialized! network_remote_helper_ = new NetworkRemoteHelper(this); @@ -125,19 +125,14 @@ Application::~Application() { // It's important that the device manager is deleted before the database. // Deleting the database deletes all objects that have been created in its // thread, including some device library backends. - delete device_manager_; device_manager_ = nullptr; + delete device_manager_; + device_manager_ = nullptr; - foreach (QObject* object, objects_in_threads_) { - object->deleteLater(); - } + foreach(QObject * object, objects_in_threads_) { object->deleteLater(); } - foreach (QThread* thread, threads_) { - thread->quit(); - } + foreach(QThread * thread, threads_) { thread->quit(); } - foreach (QThread* thread, threads_) { - thread->wait(); - } + foreach(QThread * thread, threads_) { thread->wait(); } } void Application::MoveToNewThread(QObject* object) { @@ -155,9 +150,7 @@ void Application::MoveToThread(QObject* object, QThread* thread) { objects_in_threads_ << object; } -void Application::AddError(const QString& message) { - emit ErrorAdded(message); -} +void Application::AddError(const QString& message) { emit ErrorAdded(message); } QString Application::language_without_region() const { const int underscore = language_name_.indexOf('_'); @@ -171,13 +164,9 @@ LibraryBackend* Application::library_backend() const { return library()->backend(); } -LibraryModel* Application::library_model() const { - return library()->model(); -} +LibraryModel* Application::library_model() const { return library()->model(); } -void Application::ReloadSettings() { - emit SettingsChanged(); -} +void Application::ReloadSettings() { emit SettingsChanged(); } void Application::OpenSettingsDialogAtPage(SettingsDialog::Page page) { emit SettingsDialogRequested(page); diff --git a/src/core/application.h b/src/core/application.h index f414b12b5..c95543a9f 100644 --- a/src/core/application.h +++ b/src/core/application.h @@ -47,18 +47,18 @@ class PodcastUpdater; class TagReaderClient; class TaskManager; - class Application : public QObject { Q_OBJECT -public: + public: static bool kIsPortable; Application(QObject* parent = NULL); ~Application(); const QString& language_name() const { return language_name_; } - // Same as language_name, but remove the region code at the end if there is one + // Same as language_name, but remove the region code at the end if there is + // one QString language_without_region() const; void set_language_name(const QString& name) { language_name_ = name; } @@ -83,7 +83,9 @@ public: MoodbarLoader* moodbar_loader() const { return moodbar_loader_; } MoodbarController* moodbar_controller() const { return moodbar_controller_; } NetworkRemote* network_remote() const { return network_remote_; } - NetworkRemoteHelper* network_remote_helper() const { return network_remote_helper_; } + NetworkRemoteHelper* network_remote_helper() const { + return network_remote_helper_; + } LibraryBackend* library_backend() const; LibraryModel* library_model() const; @@ -91,7 +93,7 @@ public: void MoveToNewThread(QObject* object); void MoveToThread(QObject* object, QThread* thread); -public slots: + public slots: void AddError(const QString& message); void ReloadSettings(); void OpenSettingsDialogAtPage(SettingsDialog::Page page); @@ -101,7 +103,7 @@ signals: void SettingsChanged(); void SettingsDialogRequested(SettingsDialog::Page page); -private: + private: QString language_name_; TagReaderClient* tag_reader_client_; @@ -131,4 +133,4 @@ private: QList threads_; }; -#endif // APPLICATION_H +#endif // APPLICATION_H diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp index a61ee3744..7e79df4bd 100644 --- a/src/core/backgroundstreams.cpp +++ b/src/core/backgroundstreams.cpp @@ -9,17 +9,14 @@ const char* BackgroundStreams::kSettingsGroup = "BackgroundStreams"; const char* BackgroundStreams::kHypnotoadUrl = "hypnotoad:///"; -const char* BackgroundStreams::kRainUrl = "http://data.clementine-player.org/rainymood"; +const char* BackgroundStreams::kRainUrl = + "http://data.clementine-player.org/rainymood"; const char* BackgroundStreams::kEnterpriseUrl = "enterprise:///"; BackgroundStreams::BackgroundStreams(EngineBase* engine, QObject* parent) - : QObject(parent), - engine_(engine) { -} + : QObject(parent), engine_(engine) {} -BackgroundStreams::~BackgroundStreams() { - SaveStreams(); -} +BackgroundStreams::~BackgroundStreams() { SaveStreams(); } void BackgroundStreams::LoadStreams() { QSettings s; @@ -39,8 +36,7 @@ void BackgroundStreams::LoadStreams() { int size = s.beginReadArray("streams"); for (int i = 0; i < size; ++i) { s.setArrayIndex(i); - AddStream(s.value("name").toString(), - s.value("url").toUrl(), + AddStream(s.value("name").toString(), s.value("url").toUrl(), s.value("volume").toInt()); } @@ -63,8 +59,7 @@ void BackgroundStreams::SaveStreams() { s.endArray(); } -void BackgroundStreams::AddStream(const QString& name, - const QUrl& url, +void BackgroundStreams::AddStream(const QString& name, const QUrl& url, int volume) { if (streams_.contains(name)) { return; @@ -134,7 +129,8 @@ bool BackgroundStreams::IsPlaying(const QString& name) const { void BackgroundStreams::AddAction(const QString& name, QAction* action) { if (!streams_.contains(name)) { - qLog(Error) << "Tried to add action for stream" << name << "which doesn't exist"; + qLog(Error) << "Tried to add action for stream" << name + << "which doesn't exist"; return; } @@ -156,7 +152,7 @@ void BackgroundStreams::StreamActionDestroyed() { return; } - foreach (Stream* stream, streams_.values()) { + foreach(Stream * stream, streams_.values()) { if (stream->action == action) { stream->action = nullptr; } @@ -169,7 +165,7 @@ void BackgroundStreams::StreamActionToggled(bool checked) { return; } - foreach (Stream* stream, streams_.values()) { + foreach(Stream * stream, streams_.values()) { if (stream->action == action) { EnableStream(stream->name, checked); } diff --git a/src/core/backgroundstreams.h b/src/core/backgroundstreams.h index 942f40dfa..208fe3c10 100644 --- a/src/core/backgroundstreams.h +++ b/src/core/backgroundstreams.h @@ -29,7 +29,7 @@ class BackgroundStreams : public QObject { void AddAction(const QString& name, QAction* action); - signals: +signals: void StreamStarted(const QString& name); void StreamStopped(const QString& name); diff --git a/src/core/boundfuturewatcher.h b/src/core/boundfuturewatcher.h index cd0a60d7a..5c68a06b3 100644 --- a/src/core/boundfuturewatcher.h +++ b/src/core/boundfuturewatcher.h @@ -9,12 +9,9 @@ template class BoundFutureWatcher : public QFutureWatcher, boost::noncopyable { public: BoundFutureWatcher(const D& data, QObject* parent = 0) - : QFutureWatcher(parent), - data_(data) { - } + : QFutureWatcher(parent), data_(data) {} - ~BoundFutureWatcher() { - } + ~BoundFutureWatcher() {} const D& data() const { return data_; } diff --git a/src/core/cachedlist.h b/src/core/cachedlist.h index 9f0c4c828..ca81c184e 100644 --- a/src/core/cachedlist.h +++ b/src/core/cachedlist.h @@ -23,7 +23,7 @@ template class CachedList { -public: + public: // Use a CachedList when you want to download and save a list of things from a // remote service, updating it only periodically. // T must be a registered metatype and must support being stored in @@ -34,10 +34,9 @@ public: CachedList(const QString& settings_group, const QString& name, int cache_duration_secs) - : settings_group_(settings_group), - name_(name), - cache_duration_secs_(cache_duration_secs) { - } + : settings_group_(settings_group), + name_(name), + cache_duration_secs_(cache_duration_secs) {} void Load() { QSettings s; @@ -47,7 +46,7 @@ public: data_.clear(); const int count = s.beginReadArray(name_ + "_data"); - for (int i=0 ; i(); } @@ -61,7 +60,7 @@ public: s.setValue("last_refreshed_" + name_, last_updated_); s.beginWriteArray(name_ + "_data", data_.size()); - for (int i=0 ; i cache_duration_secs_; + last_updated_.secsTo(QDateTime::currentDateTime()) > + cache_duration_secs_; } - void Sort() { - qSort(data_); - } + void Sort() { qSort(data_); } const ListType& Data() const { return data_; } operator ListType() const { return data_; } @@ -91,7 +89,7 @@ public: const_iterator begin() const { return data_.begin(); } const_iterator end() const { return data_.end(); } -private: + private: const QString settings_group_; const QString name_; const int cache_duration_secs_; @@ -100,4 +98,4 @@ private: ListType data_; }; -#endif // CACHEDLIST_H +#endif // CACHEDLIST_H diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index ae24a19fb..5869e6e40 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -28,7 +28,6 @@ #include #include - const char* CommandlineOptions::kHelpText = "%1: clementine [%2] [%3]\n" "\n" @@ -62,23 +61,21 @@ const char* CommandlineOptions::kHelpText = " --log-levels %29\n" " --version %30\n"; -const char* CommandlineOptions::kVersionText = - "Clementine %1"; +const char* CommandlineOptions::kVersionText = "Clementine %1"; CommandlineOptions::CommandlineOptions(int argc, char** argv) - : argc_(argc), - argv_(argv), - url_list_action_(UrlList_Append), - player_action_(Player_None), - set_volume_(-1), - volume_modifier_(0), - seek_to_(-1), - seek_by_(0), - play_track_at_(-1), - show_osd_(false), - toggle_pretty_osd_(false), - log_levels_(logging::kDefaultLogLevels) -{ + : argc_(argc), + argv_(argv), + url_list_action_(UrlList_Append), + player_action_(Player_None), + set_volume_(-1), + volume_modifier_(0), + seek_to_(-1), + seek_by_(0), + play_track_at_(-1), + show_osd_(false), + toggle_pretty_osd_(false), + log_levels_(logging::kDefaultLogLevels) { #ifdef Q_OS_DARWIN // Remove -psn_xxx option that Mac passes when opened from Finder. RemoveArg("-psn", 1); @@ -93,7 +90,7 @@ void CommandlineOptions::RemoveArg(const QString& starts_with, int count) { QString opt(argv_[i]); if (opt.startsWith(starts_with)) { for (int j = i; j < argc_ - count + 1; ++j) { - argv_[j] = argv_[j+count]; + argv_[j] = argv_[j + count]; } argc_ -= count; break; @@ -103,37 +100,32 @@ void CommandlineOptions::RemoveArg(const QString& starts_with, int count) { bool CommandlineOptions::Parse() { static const struct option kOptions[] = { - {"help", no_argument, 0, 'h'}, - - {"play", no_argument, 0, 'p'}, - {"play-pause", no_argument, 0, 't'}, - {"pause", no_argument, 0, 'u'}, - {"stop", no_argument, 0, 's'}, - {"previous", no_argument, 0, 'r'}, - {"next", no_argument, 0, 'f'}, - {"volume", required_argument, 0, 'v'}, - {"volume-up", no_argument, 0, VolumeUp}, - - {"volume-down", no_argument, 0, VolumeDown}, - {"volume-increase-by", required_argument, 0, VolumeIncreaseBy}, - {"volume-decrease-by", required_argument, 0, VolumeDecreaseBy}, - {"seek-to", required_argument, 0, SeekTo}, - {"seek-by", required_argument, 0, SeekBy}, - {"restart-or-previous", no_argument, 0, RestartOrPrevious}, - - {"append", no_argument, 0, 'a'}, - {"load", no_argument, 0, 'l'}, - {"play-track", required_argument, 0, 'k'}, - {"show-osd", no_argument, 0, 'o'}, - {"toggle-pretty-osd", no_argument, 0, 'y'}, - {"language", required_argument, 0, 'g'}, - {"quiet", no_argument, 0, Quiet}, - {"verbose", no_argument, 0, Verbose}, - {"log-levels", required_argument, 0, LogLevels}, - {"version", no_argument, 0, Version}, - - {0, 0, 0, 0} - }; + {"help", no_argument, 0, 'h'}, + {"play", no_argument, 0, 'p'}, + {"play-pause", no_argument, 0, 't'}, + {"pause", no_argument, 0, 'u'}, + {"stop", no_argument, 0, 's'}, + {"previous", no_argument, 0, 'r'}, + {"next", no_argument, 0, 'f'}, + {"volume", required_argument, 0, 'v'}, + {"volume-up", no_argument, 0, VolumeUp}, + {"volume-down", no_argument, 0, VolumeDown}, + {"volume-increase-by", required_argument, 0, VolumeIncreaseBy}, + {"volume-decrease-by", required_argument, 0, VolumeDecreaseBy}, + {"seek-to", required_argument, 0, SeekTo}, + {"seek-by", required_argument, 0, SeekBy}, + {"restart-or-previous", no_argument, 0, RestartOrPrevious}, + {"append", no_argument, 0, 'a'}, + {"load", no_argument, 0, 'l'}, + {"play-track", required_argument, 0, 'k'}, + {"show-osd", no_argument, 0, 'o'}, + {"toggle-pretty-osd", no_argument, 0, 'y'}, + {"language", required_argument, 0, 'g'}, + {"quiet", no_argument, 0, Quiet}, + {"verbose", no_argument, 0, Verbose}, + {"log-levels", required_argument, 0, LogLevels}, + {"version", no_argument, 0, Version}, + {0, 0, 0, 0}}; // Parse the arguments bool ok = false; @@ -141,62 +133,97 @@ bool CommandlineOptions::Parse() { int c = getopt_long(argc_, argv_, "hptusrfv:alk:oyg:", kOptions, nullptr); // End of the options - if (c == -1) - break; + if (c == -1) break; switch (c) { case 'h': { - QString translated_help_text = QString(kHelpText).arg( - tr("Usage"), tr("options"), tr("URL(s)"), tr("Player options"), - tr("Start the playlist currently playing"), - tr("Play if stopped, pause if playing"), - tr("Pause playback"), - tr("Stop playback"), - tr("Skip backwards in playlist")).arg( - tr("Skip forwards in playlist"), - tr("Set the volume to percent"), - tr("Increase the volume by 4%"), - tr("Decrease the volume by 4%"), - tr("Increase the volume by percent"), - tr("Decrease the volume by percent")).arg( - tr("Seek the currently playing track to an absolute position"), - tr("Seek the currently playing track by a relative amount"), - tr("Restart the track, or play the previous track if within 8 seconds of start."), - tr("Playlist options"), - tr("Append files/URLs to the playlist"), - tr("Loads files/URLs, replacing current playlist"), - tr("Play the th track in the playlist")).arg( - tr("Other options"), - tr("Display the on-screen-display"), - tr("Toggle visibility for the pretty on-screen-display"), - tr("Change the language"), - tr("Equivalent to --log-levels *:1"), - tr("Equivalent to --log-levels *:3"), - tr("Comma separated list of class:level, level is 0-3")).arg( - tr("Print out version information")); + QString translated_help_text = + QString(kHelpText) + .arg(tr("Usage"), tr("options"), tr("URL(s)"), + tr("Player options"), + tr("Start the playlist currently playing"), + tr("Play if stopped, pause if playing"), + tr("Pause playback"), tr("Stop playback"), + tr("Skip backwards in playlist")) + .arg(tr("Skip forwards in playlist"), + tr("Set the volume to percent"), + tr("Increase the volume by 4%"), + tr("Decrease the volume by 4%"), + tr("Increase the volume by percent"), + tr("Decrease the volume by percent")) + .arg(tr("Seek the currently playing track to an absolute " + "position"), + tr("Seek the currently playing track by a relative " + "amount"), + tr("Restart the track, or play the previous track if " + "within 8 seconds of start."), + tr("Playlist options"), + tr("Append files/URLs to the playlist"), + tr("Loads files/URLs, replacing current playlist"), + tr("Play the th track in the playlist")) + .arg(tr("Other options"), tr("Display the on-screen-display"), + tr("Toggle visibility for the pretty on-screen-display"), + tr("Change the language"), + tr("Equivalent to --log-levels *:1"), + tr("Equivalent to --log-levels *:3"), + tr("Comma separated list of class:level, level is 0-3")) + .arg(tr("Print out version information")); std::cout << translated_help_text.toLocal8Bit().constData(); return false; } - case 'p': player_action_ = Player_Play; break; - case 't': player_action_ = Player_PlayPause; break; - case 'u': player_action_ = Player_Pause; break; - case 's': player_action_ = Player_Stop; break; - case 'r': player_action_ = Player_Previous; break; - case 'f': player_action_ = Player_Next; break; - case 'a': url_list_action_ = UrlList_Append; break; - case 'l': url_list_action_ = UrlList_Load; break; - case 'o': show_osd_ = true; break; - case 'y': toggle_pretty_osd_ = true; break; - case 'g': language_ = QString(optarg); break; - case VolumeUp: volume_modifier_ = +4; break; - case VolumeDown: volume_modifier_ = -4; break; - case Quiet: log_levels_ = "1"; break; - case Verbose: log_levels_ = "3"; break; - case LogLevels: log_levels_ = QString(optarg); break; + case 'p': + player_action_ = Player_Play; + break; + case 't': + player_action_ = Player_PlayPause; + break; + case 'u': + player_action_ = Player_Pause; + break; + case 's': + player_action_ = Player_Stop; + break; + case 'r': + player_action_ = Player_Previous; + break; + case 'f': + player_action_ = Player_Next; + break; + case 'a': + url_list_action_ = UrlList_Append; + break; + case 'l': + url_list_action_ = UrlList_Load; + break; + case 'o': + show_osd_ = true; + break; + case 'y': + toggle_pretty_osd_ = true; + break; + case 'g': + language_ = QString(optarg); + break; + case VolumeUp: + volume_modifier_ = +4; + break; + case VolumeDown: + volume_modifier_ = -4; + break; + case Quiet: + log_levels_ = "1"; + break; + case Verbose: + log_levels_ = "3"; + break; + case LogLevels: + log_levels_ = QString(optarg); + break; case Version: { - QString version_text = QString(kVersionText).arg(CLEMENTINE_VERSION_DISPLAY); + QString version_text = + QString(kVersionText).arg(CLEMENTINE_VERSION_DISPLAY); std::cout << version_text.toLocal8Bit().constData() << std::endl; std::exit(0); } @@ -241,7 +268,7 @@ bool CommandlineOptions::Parse() { } // Get any filenames or URLs following the arguments - for (int i=optind ; i> *this; } -QString CommandlineOptions::tr(const char *source_text) { +QString CommandlineOptions::tr(const char* source_text) { return QObject::tr(source_text); } QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a) { - s << qint32(a.player_action_) - << qint32(a.url_list_action_) - << a.set_volume_ - << a.volume_modifier_ - << a.seek_to_ - << a.seek_by_ - << a.play_track_at_ - << a.show_osd_ - << a.urls_ - << a.log_levels_ - << a.toggle_pretty_osd_; + s << qint32(a.player_action_) << qint32(a.url_list_action_) << a.set_volume_ + << a.volume_modifier_ << a.seek_to_ << a.seek_by_ << a.play_track_at_ + << a.show_osd_ << a.urls_ << a.log_levels_ << a.toggle_pretty_osd_; return s; } @@ -308,17 +322,9 @@ QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a) { QDataStream& operator>>(QDataStream& s, CommandlineOptions& a) { quint32 player_action = 0; quint32 url_list_action = 0; - s >> player_action - >> url_list_action - >> a.set_volume_ - >> a.volume_modifier_ - >> a.seek_to_ - >> a.seek_by_ - >> a.play_track_at_ - >> a.show_osd_ - >> a.urls_ - >> a.log_levels_ - >> a.toggle_pretty_osd_; + s >> player_action >> url_list_action >> a.set_volume_ >> + a.volume_modifier_ >> a.seek_to_ >> a.seek_by_ >> a.play_track_at_ >> + a.show_osd_ >> a.urls_ >> a.log_levels_ >> a.toggle_pretty_osd_; a.player_action_ = CommandlineOptions::PlayerAction(player_action); a.url_list_action_ = CommandlineOptions::UrlListAction(url_list_action); diff --git a/src/core/commandlineoptions.h b/src/core/commandlineoptions.h index f6f72bc77..c03fcba76 100644 --- a/src/core/commandlineoptions.h +++ b/src/core/commandlineoptions.h @@ -27,17 +27,14 @@ class CommandlineOptions { friend QDataStream& operator>>(QDataStream& s, CommandlineOptions& a); public: - CommandlineOptions(int argc = 0, char** argv = NULL); + CommandlineOptions(int argc = 0, char* *argv = NULL); static const char* kHelpText; static const char* kVersionText; // Don't change the values or order, these get serialised and sent to // possibly a different version of Clementine - enum UrlListAction { - UrlList_Append = 0, - UrlList_Load = 1, - }; + enum UrlListAction { UrlList_Append = 0, UrlList_Load = 1, }; enum PlayerAction { Player_None = 0, Player_Play = 1, @@ -90,7 +87,6 @@ class CommandlineOptions { void RemoveArg(const QString& starts_with, int count); private: - int argc_; char** argv_; @@ -114,4 +110,4 @@ class CommandlineOptions { QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a); QDataStream& operator>>(QDataStream& s, CommandlineOptions& a); -#endif // COMMANDLINEOPTIONS_H +#endif // COMMANDLINEOPTIONS_H diff --git a/src/core/crashreporting.cpp b/src/core/crashreporting.cpp index fb761e139..e461d91ec 100644 --- a/src/core/crashreporting.cpp +++ b/src/core/crashreporting.cpp @@ -31,25 +31,23 @@ #include #if defined(HAVE_BREAKPAD) and defined(Q_OS_LINUX) -# include "client/linux/handler/exception_handler.h" -# include "third_party/lss/linux_syscall_support.h" +#include "client/linux/handler/exception_handler.h" +#include "third_party/lss/linux_syscall_support.h" #endif - -const char* CrashSender::kUploadURL = "http://crashes.clementine-player.org/getuploadurl"; +const char* CrashSender::kUploadURL = + "http://crashes.clementine-player.org/getuploadurl"; const char* CrashReporting::kSendCrashReportOption = "--send-crash-report"; char* CrashReporting::sPath = nullptr; #if defined(HAVE_BREAKPAD) and defined(Q_OS_LINUX) CrashReporting::CrashReporting() - : handler_(new google_breakpad::ExceptionHandler( - QDir::tempPath().toLocal8Bit().constData(), nullptr, - CrashReporting::Handler, this, true)) { -} + : handler_(new google_breakpad::ExceptionHandler( + QDir::tempPath().toLocal8Bit().constData(), nullptr, + CrashReporting::Handler, this, true)) {} -CrashReporting::~CrashReporting() { -} +CrashReporting::~CrashReporting() {} bool CrashReporting::SendCrashReport(int argc, char** argv) { if (argc != 4 || strcmp(argv[1], kSendCrashReportOption) != 0) { @@ -76,21 +74,21 @@ void CrashReporting::Print(const char* message) { } } -bool CrashReporting::Handler(const char* dump_path, - const char* minidump_id, - void* context, - bool succeeded) { +bool CrashReporting::Handler(const char* dump_path, const char* minidump_id, + void* context, bool succeeded) { Print("Clementine has crashed! A crash report has been saved to:\n "); Print(dump_path); Print("/"); Print(minidump_id); - Print("\n\nPlease send this to the developers so they can fix the problem:\n" - " http://code.google.com/p/clementine-player/issues/entry\n\n"); + Print( + "\n\nPlease send this to the developers so they can fix the problem:\n" + " http://code.google.com/p/clementine-player/issues/entry\n\n"); if (sPath) { // We know the path to clementine, so exec it again to prompt the user to // upload the report. - const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, nullptr}; + const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, + nullptr}; sys_execv(sPath, argv); } @@ -99,11 +97,10 @@ bool CrashReporting::Handler(const char* dump_path, } CrashSender::CrashSender(const QString& path) - : network_(new QNetworkAccessManager(this)), - path_(path), - file_(new QFile(path_, this)), - progress_(nullptr) { -} + : network_(new QNetworkAccessManager(this)), + path_(path), + file_(new QFile(path_, this)), + progress_(nullptr) {} bool CrashSender::Start() { if (!file_->open(QIODevice::ReadOnly)) { @@ -112,10 +109,13 @@ bool CrashSender::Start() { } // No tr() here. - QMessageBox prompt(QMessageBox::Critical, "Clementine has crashed!", QString( - "A crash report has been created and saved to '%1'. With your permission " - "it can be automatically sent to our server so the developers can find " - "out what happened.").arg(path_)); + QMessageBox prompt(QMessageBox::Critical, "Clementine has crashed!", + QString( + "A crash report has been created and saved to '%1'. " + "With your permission " + "it can be automatically sent to our server so the " + "developers can find " + "out what happened.").arg(path_)); prompt.addButton("Don't send", QMessageBox::RejectRole); prompt.addButton("Send crash report", QMessageBox::AcceptRole); if (prompt.exec() == QDialog::Rejected) { @@ -141,7 +141,8 @@ void CrashSender::RedirectFinished() { reply->deleteLater(); - QUrl url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + QUrl url = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); if (!url.isValid()) { progress_->close(); return; @@ -160,14 +161,17 @@ void CrashSender::RedirectFinished() { } QNetworkRequest req(url); - req.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary); + req.setHeader(QNetworkRequest::ContentTypeHeader, + "multipart/form-data; boundary=" + boundary); // Construct the multipart/form-data QByteArray form_data; form_data.reserve(file_data.size() + 1024); form_data.append("--"); form_data.append(boundary); - form_data.append("\nContent-Disposition: form-data; name=\"data\"; filename=\"data.dmp\"\n"); + form_data.append( + "\nContent-Disposition: form-data; name=\"data\"; " + "filename=\"data.dmp\"\n"); form_data.append("Content-Type: application/octet-stream\n\n"); form_data.append(file_data); form_data.append("\n--"); @@ -178,31 +182,25 @@ void CrashSender::RedirectFinished() { // Upload the data reply = network_->post(req, form_data); - connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SLOT(UploadProgress(qint64))); + connect(reply, SIGNAL(uploadProgress(qint64, qint64)), + SLOT(UploadProgress(qint64))); connect(reply, SIGNAL(finished()), progress_, SLOT(close())); } -void CrashSender::UploadProgress(qint64 bytes) { - progress_->setValue(bytes); -} +void CrashSender::UploadProgress(qint64 bytes) { progress_->setValue(bytes); } -#else // HAVE_BREAKPAD +#else // HAVE_BREAKPAD namespace google_breakpad { - class ExceptionHandler {}; +class ExceptionHandler {}; } -CrashReporting::CrashReporting() { -} +CrashReporting::CrashReporting() {} -CrashReporting::~CrashReporting() { -} +CrashReporting::~CrashReporting() {} -bool CrashReporting::SendCrashReport(int, char**) { - return false; -} +bool CrashReporting::SendCrashReport(int, char**) { return false; } -void CrashReporting::SetApplicationPath(const QString&) { -} +void CrashReporting::SetApplicationPath(const QString&) {} -#endif // HAVE_BREAKPAD +#endif // HAVE_BREAKPAD diff --git a/src/core/crashreporting.h b/src/core/crashreporting.h index a627d0bb0..ec36d9bc5 100644 --- a/src/core/crashreporting.h +++ b/src/core/crashreporting.h @@ -27,14 +27,13 @@ class QNetworkAccessManager; class QProgressDialog; namespace google_breakpad { - class ExceptionHandler; +class ExceptionHandler; } - // Wraps google_breakpad::ExceptionHandler - while an instance of this class // is alive crashes will be handled. class CrashReporting { -public: + public: CrashReporting(); ~CrashReporting(); @@ -48,17 +47,15 @@ public: // --send-crash-report when a crash happens. static void SetApplicationPath(const QString& path); -private: + private: // Prints the message to stdout without using libc. static void Print(const char* message); // Breakpad callback. - static bool Handler(const char* dump_path, - const char* minidump_id, - void* context, - bool succeeded); + static bool Handler(const char* dump_path, const char* minidump_id, + void* context, bool succeeded); -private: + private: Q_DISABLE_COPY(CrashReporting); static const char* kSendCrashReportOption; @@ -67,24 +64,23 @@ private: std::unique_ptr handler_; }; - // Asks the user if he wants to send a crash report, and displays a progress // dialog while uploading it if he does. class CrashSender : public QObject { Q_OBJECT -public: + public: CrashSender(const QString& path); // Returns false if the user doesn't want to send the crash report (caller // should exit), or true if he does (caller should start the Qt event loop). bool Start(); -private slots: + private slots: void RedirectFinished(); void UploadProgress(qint64 bytes); -private: + private: static const char* kUploadURL; QNetworkAccessManager* network_; @@ -94,4 +90,4 @@ private: QProgressDialog* progress_; }; -#endif // CRASHREPORTING_H +#endif // CRASHREPORTING_H diff --git a/src/core/database.cpp b/src/core/database.cpp index a8183dce9..36821fb2d 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -46,65 +46,59 @@ int Database::sNextConnectionId = 1; QMutex Database::sNextConnectionIdMutex; Database::Token::Token(const QString& token, int start, int end) - : token(token), - start_offset(start), - end_offset(end) { -} + : token(token), start_offset(start), end_offset(end) {} struct sqlite3_tokenizer_module { int iVersion; - int (*xCreate)( - int argc, /* Size of argv array */ - const char *const*argv, /* Tokenizer argument strings */ - sqlite3_tokenizer **ppTokenizer); /* OUT: Created tokenizer */ + int (*xCreate)(int argc, /* Size of argv array */ + const char* const* argv, /* Tokenizer argument strings */ + sqlite3_tokenizer** ppTokenizer); /* OUT: Created tokenizer */ - int (*xDestroy)(sqlite3_tokenizer *pTokenizer); + int (*xDestroy)(sqlite3_tokenizer* pTokenizer); int (*xOpen)( - sqlite3_tokenizer *pTokenizer, /* Tokenizer object */ - const char *pInput, int nBytes, /* Input buffer */ - sqlite3_tokenizer_cursor **ppCursor);/* OUT: Created tokenizer cursor */ + sqlite3_tokenizer* pTokenizer, /* Tokenizer object */ + const char* pInput, int nBytes, /* Input buffer */ + sqlite3_tokenizer_cursor** ppCursor); /* OUT: Created tokenizer cursor */ - int (*xClose)(sqlite3_tokenizer_cursor *pCursor); + int (*xClose)(sqlite3_tokenizer_cursor* pCursor); int (*xNext)( - sqlite3_tokenizer_cursor *pCursor, /* Tokenizer cursor */ - const char **ppToken, int *pnBytes, /* OUT: Normalized text for token */ - int *piStartOffset, /* OUT: Byte offset of token in input buffer */ - int *piEndOffset, /* OUT: Byte offset of end of token in input buffer */ - int *piPosition); /* OUT: Number of tokens returned before this one */ + sqlite3_tokenizer_cursor* pCursor, /* Tokenizer cursor */ + const char** ppToken, int* pnBytes, /* OUT: Normalized text for token */ + int* piStartOffset, /* OUT: Byte offset of token in input buffer */ + int* piEndOffset, /* OUT: Byte offset of end of token in input buffer */ + int* piPosition); /* OUT: Number of tokens returned before this one */ }; struct sqlite3_tokenizer { - const sqlite3_tokenizer_module *pModule; /* The module for this tokenizer */ + const sqlite3_tokenizer_module* pModule; /* The module for this tokenizer */ /* Tokenizer implementations will typically add additional fields */ }; struct sqlite3_tokenizer_cursor { - sqlite3_tokenizer *pTokenizer; /* Tokenizer for this cursor. */ + sqlite3_tokenizer* pTokenizer; /* Tokenizer for this cursor. */ /* Tokenizer implementations will typically add additional fields */ }; sqlite3_tokenizer_module* Database::sFTSTokenizer = nullptr; - -int Database::FTSCreate(int argc, const char* const* argv, sqlite3_tokenizer** tokenizer) { +int Database::FTSCreate(int argc, const char* const* argv, + sqlite3_tokenizer** tokenizer) { *tokenizer = reinterpret_cast(new UnicodeTokenizer); return SQLITE_OK; } int Database::FTSDestroy(sqlite3_tokenizer* tokenizer) { - UnicodeTokenizer* real_tokenizer = reinterpret_cast(tokenizer); + UnicodeTokenizer* real_tokenizer = + reinterpret_cast(tokenizer); delete real_tokenizer; return SQLITE_OK; } -int Database::FTSOpen( - sqlite3_tokenizer* pTokenizer, - const char* input, - int bytes, - sqlite3_tokenizer_cursor** cursor) { +int Database::FTSOpen(sqlite3_tokenizer* pTokenizer, const char* input, + int bytes, sqlite3_tokenizer_cursor** cursor) { UnicodeTokenizerCursor* new_cursor = new UnicodeTokenizerCursor; new_cursor->pTokenizer = pTokenizer; new_cursor->position = 0; @@ -163,20 +157,18 @@ int Database::FTSOpen( } int Database::FTSClose(sqlite3_tokenizer_cursor* cursor) { - UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); + UnicodeTokenizerCursor* real_cursor = + reinterpret_cast(cursor); delete real_cursor; return SQLITE_OK; } -int Database::FTSNext( - sqlite3_tokenizer_cursor* cursor, - const char** token, - int* bytes, - int* start_offset, - int* end_offset, - int* position) { - UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); +int Database::FTSNext(sqlite3_tokenizer_cursor* cursor, const char** token, + int* bytes, int* start_offset, int* end_offset, + int* position) { + UnicodeTokenizerCursor* real_cursor = + reinterpret_cast(cursor); QList tokens = real_cursor->tokens; if (real_cursor->position >= tokens.size()) { @@ -196,7 +188,6 @@ int Database::FTSNext( return SQLITE_OK; } - void Database::StaticInit() { sFTSTokenizer = new sqlite3_tokenizer_module; sFTSTokenizer->iVersion = 0; @@ -208,24 +199,24 @@ void Database::StaticInit() { return; } -Database::Database(Application* app, QObject* parent, const QString& database_name) - : QObject(parent), - app_(app), - mutex_(QMutex::Recursive), - injected_database_name_(database_name), - query_hash_(0), - startup_schema_version_(-1) -{ +Database::Database(Application* app, QObject* parent, + const QString& database_name) + : QObject(parent), + app_(app), + mutex_(QMutex::Recursive), + injected_database_name_(database_name), + query_hash_(0), + startup_schema_version_(-1) { { QMutexLocker l(&sNextConnectionIdMutex); connection_id_ = sNextConnectionId++; } - directory_ = QDir::toNativeSeparators( - Utilities::GetConfigPath(Utilities::Path_Root)); + directory_ = + QDir::toNativeSeparators(Utilities::GetConfigPath(Utilities::Path_Root)); attached_databases_["jamendo"] = AttachedDatabase( - directory_ + "/jamendo.db", ":/schema/jamendo.sql", false); + directory_ + "/jamendo.db", ":/schema/jamendo.sql", false); QMutexLocker l(&mutex_); Connect(); @@ -241,9 +232,8 @@ QSqlDatabase Database::Connect() { } } - const QString connection_id = - QString("%1_thread_%2").arg(connection_id_).arg( - reinterpret_cast(QThread::currentThread())); + const QString connection_id = QString("%1_thread_%2").arg(connection_id_).arg( + reinterpret_cast(QThread::currentThread())); // Try to find an existing connection for this thread QSqlDatabase db = QSqlDatabase::database(connection_id); @@ -269,8 +259,9 @@ QSqlDatabase Database::Connect() { { QSqlQuery set_fts_tokenizer("SELECT fts3_tokenizer(:name, :pointer)", db); set_fts_tokenizer.bindValue(":name", "unicode"); - set_fts_tokenizer.bindValue(":pointer", QByteArray( - reinterpret_cast(&sFTSTokenizer), sizeof(&sFTSTokenizer))); + set_fts_tokenizer.bindValue( + ":pointer", QByteArray(reinterpret_cast(&sFTSTokenizer), + sizeof(&sFTSTokenizer))); if (!set_fts_tokenizer.exec()) { qLog(Warning) << "Couldn't register FTS3 tokenizer"; } @@ -288,15 +279,15 @@ QSqlDatabase Database::Connect() { for (const QString& key : attached_databases_.keys()) { QString filename = attached_databases_[key].filename_; - if (!injected_database_name_.isNull()) - filename = injected_database_name_; + if (!injected_database_name_.isNull()) filename = injected_database_name_; // Attach the db QSqlQuery q("ATTACH DATABASE :filename AS :alias", db); q.bindValue(":filename", filename); q.bindValue(":alias", key); if (!q.exec()) { - qFatal("Couldn't attach external database '%s'", key.toAscii().constData()); + qFatal("Couldn't attach external database '%s'", + key.toAscii().constData()); } } @@ -311,8 +302,10 @@ QSqlDatabase Database::Connect() { attached_databases_[key].schema_.isEmpty()) continue; // Find out if there are any tables in this database - QSqlQuery q(QString("SELECT ROWID FROM %1.sqlite_master" - " WHERE type='table'").arg(key), db); + QSqlQuery q(QString( + "SELECT ROWID FROM %1.sqlite_master" + " WHERE type='table'").arg(key), + db); if (!q.exec() || !q.next()) { q.finish(); ExecSchemaCommandsFromFile(db, attached_databases_[key].schema_, 0); @@ -327,8 +320,7 @@ void Database::UpdateMainSchema(QSqlDatabase* db) { int schema_version = 0; { QSqlQuery q("SELECT version FROM schema_version", *db); - if (q.next()) - schema_version = q.value(0).toInt(); + if (q.next()) schema_version = q.value(0).toInt(); // Implicit invocation of ~QSqlQuery() when leaving the scope // to release any remaining database locks! } @@ -336,12 +328,13 @@ void Database::UpdateMainSchema(QSqlDatabase* db) { startup_schema_version_ = schema_version; if (schema_version > kSchemaVersion) { - qLog(Warning) << "The database schema (version" << schema_version << ") is newer than I was expecting"; + qLog(Warning) << "The database schema (version" << schema_version + << ") is newer than I was expecting"; return; } if (schema_version < kSchemaVersion) { // Update the schema - for (int v = schema_version+1; v <= kSchemaVersion; ++v) { + for (int v = schema_version + 1; v <= kSchemaVersion; ++v) { UpdateDatabaseSchema(v, *db); } } @@ -384,8 +377,8 @@ void Database::AttachDatabase(const QString& database_name, attached_databases_[database_name] = database; } -void Database::AttachDatabaseOnDbConnection(const QString &database_name, - const AttachedDatabase &database, +void Database::AttachDatabaseOnDbConnection(const QString& database_name, + const AttachedDatabase& database, QSqlDatabase& db) { AttachDatabase(database_name, database); @@ -394,7 +387,8 @@ void Database::AttachDatabaseOnDbConnection(const QString &database_name, q.bindValue(":filename", database.filename_); q.bindValue(":alias", database_name); if (!q.exec()) { - qFatal("Couldn't attach external database '%s'", database_name.toAscii().constData()); + qFatal("Couldn't attach external database '%s'", + database_name.toAscii().constData()); } } @@ -414,7 +408,7 @@ void Database::DetachDatabase(const QString& database_name) { attached_databases_.remove(database_name); } -void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { +void Database::UpdateDatabaseSchema(int version, QSqlDatabase& db) { QString filename; if (version == 0) filename = ":/schema/schema.sql"; @@ -434,20 +428,22 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { UrlEncodeFilenameColumn(table, db); } } - qLog(Debug) << "Applying database schema update" << version - << "from" << filename; + qLog(Debug) << "Applying database schema update" << version << "from" + << filename; ExecSchemaCommandsFromFile(db, filename, version - 1, true); t.Commit(); } else { - qLog(Debug) << "Applying database schema update" << version - << "from" << filename; + qLog(Debug) << "Applying database schema update" << version << "from" + << filename; ExecSchemaCommandsFromFile(db, filename, version - 1); } } void Database::UrlEncodeFilenameColumn(const QString& table, QSqlDatabase& db) { QSqlQuery select(QString("SELECT ROWID, filename FROM %1").arg(table), db); - QSqlQuery update(QString("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table), db); + QSqlQuery update( + QString("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table), + db); select.exec(); if (CheckErrors(select)) return; while (select.next()) { @@ -475,16 +471,12 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase& db, QFile schema_file(filename); if (!schema_file.open(QIODevice::ReadOnly)) qFatal("Couldn't open schema file %s", filename.toUtf8().constData()); - ExecSchemaCommands(db, - QString::fromUtf8(schema_file.readAll()), - schema_version, - in_transaction); + ExecSchemaCommands(db, QString::fromUtf8(schema_file.readAll()), + schema_version, in_transaction); } -void Database::ExecSchemaCommands(QSqlDatabase& db, - const QString& schema, - int schema_version, - bool in_transaction) { +void Database::ExecSchemaCommands(QSqlDatabase& db, const QString& schema, + int schema_version, bool in_transaction) { // Run each command const QStringList commands(schema.split(QRegExp("; *\n\n"))); @@ -530,8 +522,7 @@ void Database::ExecSongTablesCommands(QSqlDatabase& db, } } else { QSqlQuery query(db.exec(command)); - if (CheckErrors(query)) - qFatal("Unable to update music library database"); + if (CheckErrors(query)) qFatal("Unable to update music library database"); } } } @@ -541,14 +532,17 @@ QStringList Database::SongsTables(QSqlDatabase& db, int schema_version) const { // look for the tables in the main db for (const QString& table : db.tables()) { - if (table == "songs" || table.endsWith("_songs")) - ret << table; + if (table == "songs" || table.endsWith("_songs")) ret << table; } // look for the tables in attached dbs for (const QString& key : attached_databases_.keys()) { - QSqlQuery q(QString("SELECT NAME FROM %1.sqlite_master" - " WHERE type='table' AND name='songs' OR name LIKE '%songs'").arg(key), db); + QSqlQuery q( + QString( + "SELECT NAME FROM %1.sqlite_master" + " WHERE type='table' AND name='songs' OR name LIKE '%songs'") + .arg(key), + db); if (q.exec()) { while (q.next()) { QString tab_name = key + "." + q.value(0).toString(); @@ -595,9 +589,11 @@ bool Database::IntegrityCheck(QSqlDatabase db) { break; } else { if (!error_reported) { - app_->AddError(tr("Database corruption detected. Please read " - "https://code.google.com/p/clementine-player/wiki/DatabaseCorruption " - "for instructions on how to recover your database")); + app_->AddError( + tr("Database corruption detected. Please read " + "https://code.google.com/p/clementine-player/wiki/" + "DatabaseCorruption " + "for instructions on how to recover your database")); } app_->AddError("Database: " + message); error_reported = true; @@ -621,17 +617,16 @@ void Database::DoBackup() { } } -bool Database::OpenDatabase(const QString& filename, sqlite3** connection) const { +bool Database::OpenDatabase(const QString& filename, + sqlite3** connection) const { int ret = sqlite3_open(filename.toUtf8(), connection); if (ret != 0) { if (*connection) { const char* error_message = sqlite3_errmsg(*connection); - qLog(Error) << "Failed to open database for backup:" - << filename + qLog(Error) << "Failed to open database for backup:" << filename << error_message; } else { - qLog(Error) << "Failed to open database for backup:" - << filename; + qLog(Error) << "Failed to open database for backup:" << filename; } return false; } @@ -641,7 +636,8 @@ bool Database::OpenDatabase(const QString& filename, sqlite3** connection) const void Database::BackupFile(const QString& filename) { qLog(Debug) << "Starting database backup"; QString dest_filename = QString("%1.bak").arg(filename); - const int task_id = app_->task_manager()->StartTask(tr("Backing up database")); + const int task_id = + app_->task_manager()->StartTask(tr("Backing up database")); sqlite3* source_connection = nullptr; sqlite3* dest_connection = nullptr; @@ -651,7 +647,8 @@ void Database::BackupFile(const QString& filename) { sqlite3_close(source_connection); sqlite3_close(dest_connection); app_->task_manager()->SetTaskFinished(task_id); - } BOOST_SCOPE_EXIT_END + } + BOOST_SCOPE_EXIT_END bool success = OpenDatabase(filename, &source_connection); if (!success) { @@ -663,9 +660,8 @@ void Database::BackupFile(const QString& filename) { return; } - sqlite3_backup* backup = sqlite3_backup_init( - dest_connection, "main", - source_connection, "main"); + sqlite3_backup* backup = + sqlite3_backup_init(dest_connection, "main", source_connection, "main"); if (!backup) { const char* error_message = sqlite3_errmsg(dest_connection); qLog(Error) << "Failed to start database backup:" << error_message; diff --git a/src/core/database.h b/src/core/database.h index a3fc8bcc0..36a6a9714 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -34,7 +34,6 @@ extern "C" { struct sqlite3_tokenizer; struct sqlite3_tokenizer_cursor; struct sqlite3_tokenizer_module; - } class Application; @@ -48,8 +47,9 @@ class Database : public QObject { struct AttachedDatabase { AttachedDatabase() {} - AttachedDatabase(const QString& filename, const QString& schema, bool is_temporary) - : filename_(filename), schema_(schema), is_temporary_(is_temporary) {} + AttachedDatabase(const QString& filename, const QString& schema, + bool is_temporary) + : filename_(filename), schema_(schema), is_temporary_(is_temporary) {} QString filename_; QString schema_; @@ -65,21 +65,20 @@ class Database : public QObject { QMutex* Mutex() { return &mutex_; } void RecreateAttachedDb(const QString& database_name); - void ExecSchemaCommands(QSqlDatabase& db, - const QString& schema, - int schema_version, - bool in_transaction = false); + void ExecSchemaCommands(QSqlDatabase& db, const QString& schema, + int schema_version, bool in_transaction = false); int startup_schema_version() const { return startup_schema_version_; } int current_schema_version() const { return kSchemaVersion; } - void AttachDatabase(const QString& database_name, const AttachedDatabase& database); + void AttachDatabase(const QString& database_name, + const AttachedDatabase& database); void AttachDatabaseOnDbConnection(const QString& database_name, const AttachedDatabase& database, QSqlDatabase& db); void DetachDatabase(const QString& database_name); - signals: +signals: void Error(const QString& message); public slots: @@ -88,12 +87,10 @@ class Database : public QObject { private: void UpdateMainSchema(QSqlDatabase* db); - void ExecSchemaCommandsFromFile(QSqlDatabase& db, - const QString& filename, + void ExecSchemaCommandsFromFile(QSqlDatabase& db, const QString& filename, int schema_version, bool in_transaction = false); - void ExecSongTablesCommands(QSqlDatabase& db, - const QStringList& song_tables, + void ExecSongTablesCommands(QSqlDatabase& db, const QStringList& song_tables, const QStringList& commands); void UpdateDatabaseSchema(int version, QSqlDatabase& db); @@ -137,26 +134,23 @@ class Database : public QObject { // Do static initialisation like loading sqlite functions. static void StaticInit(); - typedef int (*Sqlite3CreateFunc) ( - sqlite3*, const char*, int, int, void*, - void (*) (sqlite3_context*, int, sqlite3_value**), - void (*) (sqlite3_context*, int, sqlite3_value**), - void (*) (sqlite3_context*)); + typedef int (*Sqlite3CreateFunc)(sqlite3*, const char*, int, int, void*, + void (*)(sqlite3_context*, int, + sqlite3_value**), + void (*)(sqlite3_context*, int, + sqlite3_value**), + void (*)(sqlite3_context*)); static sqlite3_tokenizer_module* sFTSTokenizer; - static int FTSCreate(int argc, const char* const* argv, sqlite3_tokenizer** tokenizer); + static int FTSCreate(int argc, const char* const* argv, + sqlite3_tokenizer** tokenizer); static int FTSDestroy(sqlite3_tokenizer* tokenizer); - static int FTSOpen(sqlite3_tokenizer* tokenizer, - const char* input, - int bytes, + static int FTSOpen(sqlite3_tokenizer* tokenizer, const char* input, int bytes, sqlite3_tokenizer_cursor** cursor); static int FTSClose(sqlite3_tokenizer_cursor* cursor); - static int FTSNext(sqlite3_tokenizer_cursor* cursor, - const char** token, - int* bytes, - int* start_offset, - int* end_offset, + static int FTSNext(sqlite3_tokenizer_cursor* cursor, const char** token, + int* bytes, int* start_offset, int* end_offset, int* position); struct Token { Token(const QString& token, int start, int end); @@ -182,11 +176,11 @@ class Database : public QObject { class MemoryDatabase : public Database { public: MemoryDatabase(Application* app, QObject* parent = 0) - : Database(app, parent, ":memory:") {} + : Database(app, parent, ":memory:") {} ~MemoryDatabase() { // Make sure Qt doesn't reuse the same database QSqlDatabase::removeDatabase(Connect().connectionName()); } }; -#endif // DATABASE_H +#endif // DATABASE_H diff --git a/src/core/deletefiles.cpp b/src/core/deletefiles.cpp index 45db3f260..46d8e29f5 100644 --- a/src/core/deletefiles.cpp +++ b/src/core/deletefiles.cpp @@ -29,22 +29,19 @@ const int DeleteFiles::kBatchSize = 50; DeleteFiles::DeleteFiles(TaskManager* task_manager, std::shared_ptr storage) - : thread_(nullptr), - task_manager_(task_manager), - storage_(storage), - started_(false), - task_id_(0), - progress_(0) -{ + : thread_(nullptr), + task_manager_(task_manager), + storage_(storage), + started_(false), + task_id_(0), + progress_(0) { original_thread_ = thread(); } -DeleteFiles::~DeleteFiles() { -} +DeleteFiles::~DeleteFiles() {} void DeleteFiles::Start(const SongList& songs) { - if (thread_) - return; + if (thread_) return; songs_ = songs; @@ -60,7 +57,7 @@ void DeleteFiles::Start(const SongList& songs) { void DeleteFiles::Start(const QStringList& filenames) { SongList songs; - foreach (const QString& filename, filenames) { + foreach(const QString & filename, filenames) { Song song; song.set_url(QUrl::fromLocalFile(filename)); songs << song; @@ -98,7 +95,7 @@ void DeleteFiles::ProcessSomeFiles() { // We process files in batches so we can be cancelled part-way through. const int n = qMin(songs_.count(), progress_ + kBatchSize); - for ( ; progress_SetTaskProgress(task_id_, progress_, songs_.count()); const Song& song = songs_[progress_]; diff --git a/src/core/deletefiles.h b/src/core/deletefiles.h index 142c5a7b5..ddef77797 100644 --- a/src/core/deletefiles.h +++ b/src/core/deletefiles.h @@ -30,7 +30,7 @@ class TaskManager; class DeleteFiles : public QObject { Q_OBJECT -public: + public: DeleteFiles(TaskManager* task_manager, std::shared_ptr storage); ~DeleteFiles(); @@ -42,10 +42,10 @@ public: signals: void Finished(const SongList& songs_with_errors); -private slots: + private slots: void ProcessSomeFiles(); -private: + private: QThread* thread_; QThread* original_thread_; TaskManager* task_manager_; @@ -61,4 +61,4 @@ private: SongList songs_with_errors_; }; -#endif // DELETEFILES_H +#endif // DELETEFILES_H diff --git a/src/core/fht.cpp b/src/core/fht.cpp index 36d276edf..7f8d84759 100644 --- a/src/core/fht.cpp +++ b/src/core/fht.cpp @@ -22,221 +22,182 @@ #include #include "fht.h" +FHT::FHT(int n) : m_buf(0), m_tab(0), m_log(0) { + if (n < 3) { + m_num = 0; + m_exp2 = -1; + return; + } + m_exp2 = n; + m_num = 1 << n; + if (n > 3) { + m_buf = new float[m_num]; + m_tab = new float[m_num * 2]; + makeCasTable(); + } +} -FHT::FHT(int n) : - m_buf(0), - m_tab(0), - m_log(0) -{ - if (n < 3) { - m_num = 0; - m_exp2 = -1; - return; +FHT::~FHT() { + delete[] m_buf; + delete[] m_tab; + delete[] m_log; +} + +void FHT::makeCasTable(void) { + float d, *costab, *sintab; + int ul, ndiv2 = m_num / 2; + + for (costab = m_tab, sintab = m_tab + m_num / 2 + 1, ul = 0; ul < m_num; + ul++) { + d = M_PI * ul / ndiv2; + *costab = *sintab = cos(d); + + costab += 2, sintab += 2; + if (sintab > m_tab + m_num * 2) sintab = m_tab + 1; + } +} + +float* FHT::copy(float* d, float* s) { + return (float*)memcpy(d, s, m_num * sizeof(float)); +} + +float* FHT::clear(float* d) { + return (float*)memset(d, 0, m_num * sizeof(float)); +} + +void FHT::scale(float* p, float d) { + for (int i = 0; i < (m_num / 2); i++) *p++ *= d; +} + +void FHT::ewma(float* d, float* s, float w) { + for (int i = 0; i < (m_num / 2); i++, d++, s++) *d = *d * w + *s * (1 - w); +} + +void FHT::logSpectrum(float* out, float* p) { + int n = m_num / 2, i, j, k, *r; + if (!m_log) { + m_log = new int[n]; + float f = n / log10((double)n); + for (i = 0, r = m_log; i < n; i++, r++) { + j = int(rint(log10(i + 1.0) * f)); + *r = j >= n ? n - 1 : j; } - m_exp2 = n; - m_num = 1 << n; - if (n > 3) { - m_buf = new float[m_num]; - m_tab = new float[m_num * 2]; - makeCasTable(); + } + semiLogSpectrum(p); + *out++ = *p = *p / 100; + for (k = i = 1, r = m_log; i < n; i++) { + j = *r++; + if (i == j) + *out++ = p[i]; + else { + float base = p[k - 1]; + float step = (p[j] - base) / (j - (k - 1)); + for (float corr = 0; k <= j; k++, corr += step) *out++ = base + corr; } + } } - -FHT::~FHT() -{ - delete[] m_buf; - delete[] m_tab; - delete[] m_log; +void FHT::semiLogSpectrum(float* p) { + float e; + power2(p); + for (int i = 0; i < (m_num / 2); i++, p++) { + e = 10.0 * log10(sqrt(*p * .5)); + *p = e < 0 ? 0 : e; + } } - -void FHT::makeCasTable(void) -{ - float d, *costab, *sintab; - int ul, ndiv2 = m_num / 2; - - for (costab = m_tab, sintab = m_tab + m_num / 2 + 1, ul = 0; ul < m_num; ul++) { - d = M_PI * ul / ndiv2; - *costab = *sintab = cos(d); - - costab += 2, sintab += 2; - if (sintab > m_tab + m_num * 2) - sintab = m_tab + 1; - } +void FHT::spectrum(float* p) { + power2(p); + for (int i = 0; i < (m_num / 2); i++, p++) *p = (float)sqrt(*p * .5); } - -float* FHT::copy(float *d, float *s) -{ - return (float *)memcpy(d, s, m_num * sizeof(float)); +void FHT::power(float* p) { + power2(p); + for (int i = 0; i < (m_num / 2); i++) *p++ *= .5; } +void FHT::power2(float* p) { + int i; + float* q; + _transform(p, m_num, 0); -float* FHT::clear(float *d) -{ - return (float *)memset(d, 0, m_num * sizeof(float)); + *p = (*p * *p), *p += *p, p++; + + for (i = 1, q = p + m_num - 2; i < (m_num / 2); i++, --q) + *p = (*p * *p) + (*q * *q), p++; } - -void FHT::scale(float *p, float d) -{ - for (int i = 0; i < (m_num / 2); i++) - *p++ *= d; -} - - -void FHT::ewma(float *d, float *s, float w) -{ - for (int i = 0; i < (m_num / 2); i++, d++, s++) - *d = *d * w + *s * (1 - w); -} - - -void FHT::logSpectrum(float *out, float *p) -{ - int n = m_num / 2, i, j, k, *r; - if (!m_log) { - m_log = new int[n]; - float f = n / log10((double)n); - for (i = 0, r = m_log; i < n; i++, r++) { - j = int(rint(log10(i + 1.0) * f)); - *r = j >= n ? n - 1 : j; - } - } - semiLogSpectrum(p); - *out++ = *p = *p / 100; - for (k = i = 1, r = m_log; i < n; i++) { - j = *r++; - if (i == j) - *out++ = p[i]; - else { - float base = p[k - 1]; - float step = (p[j] - base) / (j - (k - 1)); - for (float corr = 0; k <= j; k++, corr += step) - *out++ = base + corr; - } - } -} - - -void FHT::semiLogSpectrum(float *p) -{ - float e; - power2(p); - for (int i = 0; i < (m_num / 2); i++, p++) { - e = 10.0 * log10(sqrt(*p * .5)); - *p = e < 0 ? 0 : e; - } -} - - -void FHT::spectrum(float *p) -{ - power2(p); - for (int i = 0; i < (m_num / 2); i++, p++) - *p = (float)sqrt(*p * .5); -} - - -void FHT::power(float *p) -{ - power2(p); - for (int i = 0; i < (m_num / 2); i++) - *p++ *= .5; -} - - -void FHT::power2(float *p) -{ - int i; - float *q; +void FHT::transform(float* p) { + if (m_num == 8) + transform8(p); + else _transform(p, m_num, 0); - - *p = (*p * *p), *p += *p, p++; - - for (i = 1, q = p + m_num - 2; i < (m_num / 2); i++, --q) - *p = (*p * *p) + (*q * *q), p++; } +void FHT::transform8(float* p) { + float a, b, c, d, e, f, g, h, b_f2, d_h2; + float a_c_eg, a_ce_g, ac_e_g, aceg, b_df_h, bdfh; -void FHT::transform(float *p) -{ - if (m_num == 8) - transform8(p); - else - _transform(p, m_num, 0); + a = *p++, b = *p++, c = *p++, d = *p++; + e = *p++, f = *p++, g = *p++, h = *p; + b_f2 = (b - f) * M_SQRT2; + d_h2 = (d - h) * M_SQRT2; + + a_c_eg = a - c - e + g; + a_ce_g = a - c + e - g; + ac_e_g = a + c - e - g; + aceg = a + c + e + g; + + b_df_h = b - d + f - h; + bdfh = b + d + f + h; + + *p = a_c_eg - d_h2; + *--p = a_ce_g - b_df_h; + *--p = ac_e_g - b_f2; + *--p = aceg - bdfh; + *--p = a_c_eg + d_h2; + *--p = a_ce_g + b_df_h; + *--p = ac_e_g + b_f2; + *--p = aceg + bdfh; } +void FHT::_transform(float* p, int n, int k) { + if (n == 8) { + transform8(p + k); + return; + } -void FHT::transform8(float *p) -{ - float a, b, c, d, e, f, g, h, b_f2, d_h2; - float a_c_eg, a_ce_g, ac_e_g, aceg, b_df_h, bdfh; + int i, j, ndiv2 = n / 2; + float a, *t1, *t2, *t3, *t4, *ptab, *pp; - a = *p++, b = *p++, c = *p++, d = *p++; - e = *p++, f = *p++, g = *p++, h = *p; - b_f2 = (b - f) * M_SQRT2; - d_h2 = (d - h) * M_SQRT2; + for (i = 0, t1 = m_buf, t2 = m_buf + ndiv2, pp = &p[k]; i < ndiv2; i++) + *t1++ = *pp++, *t2++ = *pp++; - a_c_eg = a - c - e + g; - a_ce_g = a - c + e - g; - ac_e_g = a + c - e - g; - aceg = a + c + e + g; + memcpy(p + k, m_buf, sizeof(float) * n); - b_df_h = b - d + f - h; - bdfh = b + d + f + h; + _transform(p, ndiv2, k); + _transform(p, ndiv2, k + ndiv2); - *p = a_c_eg - d_h2; - *--p = a_ce_g - b_df_h; - *--p = ac_e_g - b_f2; - *--p = aceg - bdfh; - *--p = a_c_eg + d_h2; - *--p = a_ce_g + b_df_h; - *--p = ac_e_g + b_f2; - *--p = aceg + bdfh; -} + j = m_num / ndiv2 - 1; + t1 = m_buf; + t2 = t1 + ndiv2; + t3 = p + k + ndiv2; + ptab = m_tab; + pp = p + k; + a = *ptab++ * *t3++; + a += *ptab * *pp; + ptab += j; -void FHT::_transform(float *p, int n, int k) -{ - if (n == 8) { - transform8(p + k); - return; - } - - int i, j, ndiv2 = n / 2; - float a, *t1, *t2, *t3, *t4, *ptab, *pp; - - for (i = 0, t1 = m_buf, t2 = m_buf + ndiv2, pp = &p[k]; i < ndiv2; i++) - *t1++ = *pp++, *t2++ = *pp++; - - memcpy(p + k, m_buf, sizeof(float) * n); - - _transform(p, ndiv2, k); - _transform(p, ndiv2, k + ndiv2); - - j = m_num / ndiv2 - 1; - t1 = m_buf; - t2 = t1 + ndiv2; - t3 = p + k + ndiv2; - ptab = m_tab; - pp = p + k; + *t1++ = *pp + a; + *t2++ = *pp++ - a; + for (i = 1, t4 = p + k + n; i < ndiv2; i++, ptab += j) { a = *ptab++ * *t3++; - a += *ptab * *pp; - ptab += j; + a += *ptab * *--t4; *t1++ = *pp + a; *t2++ = *pp++ - a; - - for (i = 1, t4 = p + k + n; i < ndiv2; i++, ptab += j) { - a = *ptab++ * *t3++; - a += *ptab * *--t4; - - *t1++ = *pp + a; - *t2++ = *pp++ - a; - } - memcpy(p + k, m_buf, sizeof(float) * n); + } + memcpy(p + k, m_buf, sizeof(float) * n); } - diff --git a/src/core/fht.h b/src/core/fht.h index 059fb4299..73c5daa6a 100644 --- a/src/core/fht.h +++ b/src/core/fht.h @@ -29,91 +29,90 @@ * * [1] Computer in Physics, Vol. 9, No. 4, Jul/Aug 1995 pp 373-379 */ -class FHT -{ - int m_exp2; - int m_num; - float *m_buf; - float *m_tab; - int *m_log; +class FHT { + int m_exp2; + int m_num; + float* m_buf; + float* m_tab; + int* m_log; - /** - * Create a table of "cas" (cosine and sine) values. - * Has only to be done in the constructor and saves from - * calculating the same values over and over while transforming. - */ - void makeCasTable(); + /** + * Create a table of "cas" (cosine and sine) values. + * Has only to be done in the constructor and saves from + * calculating the same values over and over while transforming. + */ + void makeCasTable(); - /** - * Recursive in-place Hartley transform. For internal use only! - */ - void _transform(float *, int, int); + /** + * Recursive in-place Hartley transform. For internal use only! + */ + void _transform(float*, int, int); - public: - /** - * Prepare transform for data sets with @f$2^n@f$ numbers, whereby @f$n@f$ - * should be at least 3. Values of more than 3 need a trigonometry table. - * @see makeCasTable() - */ - FHT(int); + public: + /** + * Prepare transform for data sets with @f$2^n@f$ numbers, whereby @f$n@f$ + * should be at least 3. Values of more than 3 need a trigonometry table. + * @see makeCasTable() + */ + FHT(int); - ~FHT(); - inline int sizeExp() const { return m_exp2; } - inline int size() const { return m_num; } - float *copy(float *, float *); - float *clear(float *); - void scale(float *, float); + ~FHT(); + inline int sizeExp() const { return m_exp2; } + inline int size() const { return m_num; } + float* copy(float*, float*); + float* clear(float*); + void scale(float*, float); - /** - * Exponentially Weighted Moving Average (EWMA) filter. - * @param d is the filtered data. - * @param s is fresh input. - * @param w is the weighting factor. - */ - void ewma(float *d, float *s, float w); + /** + * Exponentially Weighted Moving Average (EWMA) filter. + * @param d is the filtered data. + * @param s is fresh input. + * @param w is the weighting factor. + */ + void ewma(float* d, float* s, float w); - /** - * Logarithmic audio spectrum. Maps semi-logarithmic spectrum - * to logarithmic frequency scale, interpolates missing values. - * A logarithmic index map is calculated at the first run only. - * @param p is the input array. - * @param out is the spectrum. - */ - void logSpectrum(float *out, float *p); + /** + * Logarithmic audio spectrum. Maps semi-logarithmic spectrum + * to logarithmic frequency scale, interpolates missing values. + * A logarithmic index map is calculated at the first run only. + * @param p is the input array. + * @param out is the spectrum. + */ + void logSpectrum(float* out, float* p); - /** - * Semi-logarithmic audio spectrum. - */ - void semiLogSpectrum(float *); + /** + * Semi-logarithmic audio spectrum. + */ + void semiLogSpectrum(float*); - /** - * Fourier spectrum. - */ - void spectrum(float *); + /** + * Fourier spectrum. + */ + void spectrum(float*); - /** - * Calculates a mathematically correct FFT power spectrum. - * If further scaling is applied later, use power2 instead - * and factor the 0.5 in the final scaling factor. - * @see FHT::power2() - */ - void power(float *); + /** + * Calculates a mathematically correct FFT power spectrum. + * If further scaling is applied later, use power2 instead + * and factor the 0.5 in the final scaling factor. + * @see FHT::power2() + */ + void power(float*); - /** - * Calculates an FFT power spectrum with doubled values as a - * result. The values need to be multiplied by 0.5 to be exact. - * Note that you only get @f$2^{n-1}@f$ power values for a data set - * of @f$2^n@f$ input values. This is the fastest transform. - * @see FHT::power() - */ - void power2(float *); + /** + * Calculates an FFT power spectrum with doubled values as a + * result. The values need to be multiplied by 0.5 to be exact. + * Note that you only get @f$2^{n-1}@f$ power values for a data set + * of @f$2^n@f$ input values. This is the fastest transform. + * @see FHT::power() + */ + void power2(float*); - /** - * Discrete Hartley transform of data sets with 8 values. - */ - void transform8(float *); + /** + * Discrete Hartley transform of data sets with 8 values. + */ + void transform8(float*); - void transform(float *); + void transform(float*); }; #endif diff --git a/src/core/filesystemmusicstorage.cpp b/src/core/filesystemmusicstorage.cpp index 968134483..1c7213f5c 100644 --- a/src/core/filesystemmusicstorage.cpp +++ b/src/core/filesystemmusicstorage.cpp @@ -23,17 +23,14 @@ #include FilesystemMusicStorage::FilesystemMusicStorage(const QString& root) - : root_(root) -{ -} + : root_(root) {} bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { const QFileInfo src = QFileInfo(job.source_); - const QFileInfo dest = QFileInfo(root_ + "/" + job.destination_ ); + const QFileInfo dest = QFileInfo(root_ + "/" + job.destination_); // Don't do anything if the destination is the same as the source - if (src == dest) - return true; + if (src == dest) return true; // Create directories as required QDir dir; @@ -43,8 +40,7 @@ bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { } // Remove the destination file if it exists and we want to overwrite - if (job.overwrite_ && dest.exists()) - QFile::remove(dest.absoluteFilePath()); + if (job.overwrite_ && dest.exists()) QFile::remove(dest.absoluteFilePath()); // Copy or move if (job.remove_original_) diff --git a/src/core/filesystemmusicstorage.h b/src/core/filesystemmusicstorage.h index 9c7ee20d8..71cae43dc 100644 --- a/src/core/filesystemmusicstorage.h +++ b/src/core/filesystemmusicstorage.h @@ -21,7 +21,7 @@ #include "musicstorage.h" class FilesystemMusicStorage : public virtual MusicStorage { -public: + public: FilesystemMusicStorage(const QString& root); ~FilesystemMusicStorage() {} @@ -30,8 +30,8 @@ public: bool CopyToStorage(const CopyJob& job); bool DeleteFromStorage(const DeleteJob& job); -private: + private: QString root_; }; -#endif // FILESYSTEMMUSICSTORAGE_H +#endif // FILESYSTEMMUSICSTORAGE_H diff --git a/src/core/filesystemwatcherinterface.cpp b/src/core/filesystemwatcherinterface.cpp index b6afcb0af..29d8f0cbd 100644 --- a/src/core/filesystemwatcherinterface.cpp +++ b/src/core/filesystemwatcherinterface.cpp @@ -24,10 +24,10 @@ #endif FileSystemWatcherInterface::FileSystemWatcherInterface(QObject* parent) - : QObject(parent) { -} + : QObject(parent) {} -FileSystemWatcherInterface* FileSystemWatcherInterface::Create(QObject* parent) { +FileSystemWatcherInterface* FileSystemWatcherInterface::Create( + QObject* parent) { FileSystemWatcherInterface* ret; #ifdef Q_OS_DARWIN ret = new MacFSListener(parent); diff --git a/src/core/filesystemwatcherinterface.h b/src/core/filesystemwatcherinterface.h index f451f2644..78bacf055 100644 --- a/src/core/filesystemwatcherinterface.h +++ b/src/core/filesystemwatcherinterface.h @@ -31,7 +31,7 @@ class FileSystemWatcherInterface : public QObject { static FileSystemWatcherInterface* Create(QObject* parent = 0); - signals: +signals: void PathChanged(const QString& path); }; diff --git a/src/core/globalshortcutbackend.cpp b/src/core/globalshortcutbackend.cpp index 80086ed59..b06d9d70c 100644 --- a/src/core/globalshortcutbackend.cpp +++ b/src/core/globalshortcutbackend.cpp @@ -20,16 +20,11 @@ #include "globalshortcuts.h" GlobalShortcutBackend::GlobalShortcutBackend(GlobalShortcuts* parent) - : QObject(parent), - manager_(parent), - active_(false) -{ -} + : QObject(parent), manager_(parent), active_(false) {} bool GlobalShortcutBackend::Register() { bool ret = DoRegister(); - if (ret) - active_ = true; + if (ret) active_ = true; return ret; } diff --git a/src/core/globalshortcutbackend.h b/src/core/globalshortcutbackend.h index 5666dca17..96a305633 100644 --- a/src/core/globalshortcutbackend.h +++ b/src/core/globalshortcutbackend.h @@ -25,7 +25,7 @@ class GlobalShortcuts; class GlobalShortcutBackend : public QObject { Q_OBJECT -public: + public: GlobalShortcutBackend(GlobalShortcuts* parent = 0); virtual ~GlobalShortcutBackend() {} @@ -37,7 +37,7 @@ public: signals: void RegisterFinished(bool success); -protected: + protected: virtual bool DoRegister() = 0; virtual void DoUnregister() = 0; @@ -45,4 +45,4 @@ protected: bool active_; }; -#endif // GLOBALSHORTCUTBACKEND_H +#endif // GLOBALSHORTCUTBACKEND_H diff --git a/src/core/globalshortcuts.cpp b/src/core/globalshortcuts.cpp index 42bec58d7..596a6d5bf 100644 --- a/src/core/globalshortcuts.cpp +++ b/src/core/globalshortcuts.cpp @@ -28,28 +28,32 @@ #include #ifdef QT_DBUS_LIB -# include +#include #endif const char* GlobalShortcuts::kSettingsGroup = "Shortcuts"; -GlobalShortcuts::GlobalShortcuts(QWidget *parent) - : QWidget(parent), - gnome_backend_(nullptr), - system_backend_(nullptr), - use_gnome_(false), - rating_signals_mapper_(new QSignalMapper(this)) -{ +GlobalShortcuts::GlobalShortcuts(QWidget* parent) + : QWidget(parent), + gnome_backend_(nullptr), + system_backend_(nullptr), + use_gnome_(false), + rating_signals_mapper_(new QSignalMapper(this)) { settings_.beginGroup(kSettingsGroup); // Create actions AddShortcut("play", tr("Play"), SIGNAL(Play())); AddShortcut("pause", tr("Pause"), SIGNAL(Pause())); - AddShortcut("play_pause", tr("Play/Pause"), SIGNAL(PlayPause()), QKeySequence(Qt::Key_MediaPlay)); - AddShortcut("stop", tr("Stop"), SIGNAL(Stop()), QKeySequence(Qt::Key_MediaStop)); - AddShortcut("stop_after", tr("Stop playing after current track"), SIGNAL(StopAfter())); - AddShortcut("next_track", tr("Next track"), SIGNAL(Next()), QKeySequence(Qt::Key_MediaNext)); - AddShortcut("prev_track", tr("Previous track"), SIGNAL(Previous()), QKeySequence(Qt::Key_MediaPrevious)); + AddShortcut("play_pause", tr("Play/Pause"), SIGNAL(PlayPause()), + QKeySequence(Qt::Key_MediaPlay)); + AddShortcut("stop", tr("Stop"), SIGNAL(Stop()), + QKeySequence(Qt::Key_MediaStop)); + AddShortcut("stop_after", tr("Stop playing after current track"), + SIGNAL(StopAfter())); + AddShortcut("next_track", tr("Next track"), SIGNAL(Next()), + QKeySequence(Qt::Key_MediaNext)); + AddShortcut("prev_track", tr("Previous track"), SIGNAL(Previous()), + QKeySequence(Qt::Key_MediaPrevious)); AddShortcut("inc_volume", tr("Increase volume"), SIGNAL(IncVolume())); AddShortcut("dec_volume", tr("Decrease volume"), SIGNAL(DecVolume())); AddShortcut("mute", tr("Mute"), SIGNAL(Mute())); @@ -57,19 +61,32 @@ GlobalShortcuts::GlobalShortcuts(QWidget *parent) AddShortcut("seek_backward", tr("Seek backward"), SIGNAL(SeekBackward())); AddShortcut("show_hide", tr("Show/Hide"), SIGNAL(ShowHide())); AddShortcut("show_osd", tr("Show OSD"), SIGNAL(ShowOSD())); - AddShortcut("toggle_pretty_osd", tr("Toggle Pretty OSD"), SIGNAL(TogglePrettyOSD())); // Toggling possible only for pretty OSD - AddShortcut("shuffle_mode", tr("Change shuffle mode"), SIGNAL(CycleShuffleMode())); - AddShortcut("repeat_mode", tr("Change repeat mode"), SIGNAL(CycleRepeatMode())); - AddShortcut("toggle_last_fm_scrobbling", tr("Enable/disable Last.fm scrobbling"), SIGNAL(ToggleScrobbling())); + AddShortcut( + "toggle_pretty_osd", tr("Toggle Pretty OSD"), + SIGNAL(TogglePrettyOSD())); // Toggling possible only for pretty OSD + AddShortcut("shuffle_mode", tr("Change shuffle mode"), + SIGNAL(CycleShuffleMode())); + AddShortcut("repeat_mode", tr("Change repeat mode"), + SIGNAL(CycleRepeatMode())); + AddShortcut("toggle_last_fm_scrobbling", + tr("Enable/disable Last.fm scrobbling"), + SIGNAL(ToggleScrobbling())); - AddRatingShortcut("rate_zero_star", tr("Rate the current song 0 stars"), rating_signals_mapper_, 0); - AddRatingShortcut("rate_one_star", tr("Rate the current song 1 star"), rating_signals_mapper_, 1); - AddRatingShortcut("rate_two_star", tr("Rate the current song 2 stars"), rating_signals_mapper_, 2); - AddRatingShortcut("rate_three_star", tr("Rate the current song 3 stars"), rating_signals_mapper_, 3); - AddRatingShortcut("rate_four_star", tr("Rate the current song 4 stars"), rating_signals_mapper_, 4); - AddRatingShortcut("rate_five_star", tr("Rate the current song 5 stars"), rating_signals_mapper_, 5); + AddRatingShortcut("rate_zero_star", tr("Rate the current song 0 stars"), + rating_signals_mapper_, 0); + AddRatingShortcut("rate_one_star", tr("Rate the current song 1 star"), + rating_signals_mapper_, 1); + AddRatingShortcut("rate_two_star", tr("Rate the current song 2 stars"), + rating_signals_mapper_, 2); + AddRatingShortcut("rate_three_star", tr("Rate the current song 3 stars"), + rating_signals_mapper_, 3); + AddRatingShortcut("rate_four_star", tr("Rate the current song 4 stars"), + rating_signals_mapper_, 4); + AddRatingShortcut("rate_five_star", tr("Rate the current song 5 stars"), + rating_signals_mapper_, 5); - connect(rating_signals_mapper_, SIGNAL(mapped(int)), SIGNAL(RateCurrentSong(int))); + connect(rating_signals_mapper_, SIGNAL(mapped(int)), + SIGNAL(RateCurrentSong(int))); // Create backends - these do the actual shortcut registration gnome_backend_ = new GnomeGlobalShortcutBackend(this); @@ -98,8 +115,8 @@ void GlobalShortcuts::AddRatingShortcut(const QString& id, const QString& name, mapper->setMapping(shortcut.action, rating); } -GlobalShortcuts::Shortcut GlobalShortcuts::AddShortcut(const QString& id, const QString& name, - const QKeySequence& default_key) { +GlobalShortcuts::Shortcut GlobalShortcuts::AddShortcut( + const QString& id, const QString& name, const QKeySequence& default_key) { Shortcut shortcut; shortcut.action = new QAction(name, this); QKeySequence key_sequence = QKeySequence::fromString( @@ -122,7 +139,7 @@ bool GlobalShortcuts::IsGsdAvailable() const { #ifdef QT_DBUS_LIB return QDBusConnection::sessionBus().interface()->isServiceRegistered( GnomeGlobalShortcutBackend::kGsdService); -#else // QT_DBUS_LIB +#else // QT_DBUS_LIB return false; #endif } @@ -137,21 +154,19 @@ void GlobalShortcuts::ReloadSettings() { } void GlobalShortcuts::Unregister() { - if (gnome_backend_->is_active()) - gnome_backend_->Unregister(); - if (system_backend_->is_active()) - system_backend_->Unregister(); + if (gnome_backend_->is_active()) gnome_backend_->Unregister(); + if (system_backend_->is_active()) system_backend_->Unregister(); } void GlobalShortcuts::Register() { - if (use_gnome_ && gnome_backend_->Register()) - return; + if (use_gnome_ && gnome_backend_->Register()) return; system_backend_->Register(); } bool GlobalShortcuts::IsMacAccessibilityEnabled() const { #ifdef Q_OS_MAC - return static_cast(system_backend_)->IsAccessibilityEnabled(); + return static_cast(system_backend_) + ->IsAccessibilityEnabled(); #else return true; #endif @@ -159,6 +174,7 @@ bool GlobalShortcuts::IsMacAccessibilityEnabled() const { void GlobalShortcuts::ShowMacAccessibilityDialog() { #ifdef Q_OS_MAC - static_cast(system_backend_)->ShowAccessibilityDialog(); + static_cast(system_backend_) + ->ShowAccessibilityDialog(); #endif } diff --git a/src/core/globalshortcuts.h b/src/core/globalshortcuts.h index ff6f97563..1dcaf9d3c 100644 --- a/src/core/globalshortcuts.h +++ b/src/core/globalshortcuts.h @@ -32,7 +32,7 @@ class QSignalMapper; class GlobalShortcuts : public QWidget { Q_OBJECT -public: + public: GlobalShortcuts(QWidget* parent = 0); static const char* kSettingsGroup; @@ -48,7 +48,7 @@ public: bool IsGsdAvailable() const; bool IsMacAccessibilityEnabled() const; -public slots: + public slots: void ReloadSettings(); void ShowMacAccessibilityDialog(); @@ -76,14 +76,16 @@ signals: void CycleRepeatMode(); void ToggleScrobbling(); -private: + private: void AddShortcut(const QString& id, const QString& name, const char* signal, const QKeySequence& default_key = QKeySequence(0)); - void AddRatingShortcut(const QString& id, const QString& name, QSignalMapper* mapper, - int rating, const QKeySequence& default_key = QKeySequence(0)); - Shortcut AddShortcut(const QString& id, const QString& name, const QKeySequence& default_key); + void AddRatingShortcut(const QString& id, const QString& name, + QSignalMapper* mapper, int rating, + const QKeySequence& default_key = QKeySequence(0)); + Shortcut AddShortcut(const QString& id, const QString& name, + const QKeySequence& default_key); -private: + private: GlobalShortcutBackend* gnome_backend_; GlobalShortcutBackend* system_backend_; diff --git a/src/core/gnomeglobalshortcutbackend.cpp b/src/core/gnomeglobalshortcutbackend.cpp index 9bd68a3ee..46f924516 100644 --- a/src/core/gnomeglobalshortcutbackend.cpp +++ b/src/core/gnomeglobalshortcutbackend.cpp @@ -21,7 +21,7 @@ #include "core/logging.h" #ifdef QT_DBUS_LIB -# include "dbus/gnomesettingsdaemon.h" +#include "dbus/gnomesettingsdaemon.h" #endif #include @@ -30,26 +30,27 @@ #include #ifdef QT_DBUS_LIB -# include +#include #endif -const char* GnomeGlobalShortcutBackend::kGsdService = "org.gnome.SettingsDaemon"; -const char* GnomeGlobalShortcutBackend::kGsdPath = "/org/gnome/SettingsDaemon/MediaKeys"; -const char* GnomeGlobalShortcutBackend::kGsdInterface = "org.gnome.SettingsDaemon.MediaKeys"; +const char* GnomeGlobalShortcutBackend::kGsdService = + "org.gnome.SettingsDaemon"; +const char* GnomeGlobalShortcutBackend::kGsdPath = + "/org/gnome/SettingsDaemon/MediaKeys"; +const char* GnomeGlobalShortcutBackend::kGsdInterface = + "org.gnome.SettingsDaemon.MediaKeys"; GnomeGlobalShortcutBackend::GnomeGlobalShortcutBackend(GlobalShortcuts* parent) - : GlobalShortcutBackend(parent), - interface_(nullptr), - is_connected_(false) -{ -} - + : GlobalShortcutBackend(parent), + interface_(nullptr), + is_connected_(false) {} bool GnomeGlobalShortcutBackend::DoRegister() { #ifdef QT_DBUS_LIB qLog(Debug) << "registering"; // Check if the GSD service is available - if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(kGsdService)) { + if (!QDBusConnection::sessionBus().interface()->isServiceRegistered( + kGsdService)) { qLog(Warning) << "gnome settings daemon not registered"; return false; } @@ -64,56 +65,57 @@ bool GnomeGlobalShortcutBackend::DoRegister() { QDateTime::currentDateTime().toTime_t()); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); - NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SLOT(RegisterFinished(QDBusPendingCallWatcher*)), - watcher); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, + SLOT(RegisterFinished(QDBusPendingCallWatcher*)), watcher); return true; -#else // QT_DBUS_LIB +#else // QT_DBUS_LIB qLog(Warning) << "dbus not available"; return false; #endif } -void GnomeGlobalShortcutBackend::RegisterFinished(QDBusPendingCallWatcher* watcher) { +void GnomeGlobalShortcutBackend::RegisterFinished( + QDBusPendingCallWatcher* watcher) { #ifdef QT_DBUS_LIB QDBusMessage reply = watcher->reply(); watcher->deleteLater(); if (reply.type() == QDBusMessage::ErrorMessage) { - qLog(Warning) << "Failed to grab media keys" - << reply.errorName() <isServiceRegistered(kGsdService)) - return; - if (!interface_ || !is_connected_) + if (!QDBusConnection::sessionBus().interface()->isServiceRegistered( + kGsdService)) return; + if (!interface_ || !is_connected_) return; is_connected_ = false; interface_->ReleaseMediaPlayerKeys(QCoreApplication::applicationName()); - disconnect(interface_, SIGNAL(MediaPlayerKeyPressed(QString,QString)), - this, SLOT(GnomeMediaKeyPressed(QString,QString))); + disconnect(interface_, SIGNAL(MediaPlayerKeyPressed(QString, QString)), this, + SLOT(GnomeMediaKeyPressed(QString, QString))); #endif } -void GnomeGlobalShortcutBackend::GnomeMediaKeyPressed(const QString&, const QString& key) { - if (key == "Play") manager_->shortcuts()["play_pause"].action->trigger(); - if (key == "Stop") manager_->shortcuts()["stop"].action->trigger(); - if (key == "Next") manager_->shortcuts()["next_track"].action->trigger(); +void GnomeGlobalShortcutBackend::GnomeMediaKeyPressed(const QString&, + const QString& key) { + if (key == "Play") manager_->shortcuts()["play_pause"].action->trigger(); + if (key == "Stop") manager_->shortcuts()["stop"].action->trigger(); + if (key == "Next") manager_->shortcuts()["next_track"].action->trigger(); if (key == "Previous") manager_->shortcuts()["prev_track"].action->trigger(); } diff --git a/src/core/gnomeglobalshortcutbackend.h b/src/core/gnomeglobalshortcutbackend.h index eec34fe5e..6127648bb 100644 --- a/src/core/gnomeglobalshortcutbackend.h +++ b/src/core/gnomeglobalshortcutbackend.h @@ -27,26 +27,26 @@ class QDBusPendingCallWatcher; class GnomeGlobalShortcutBackend : public GlobalShortcutBackend { Q_OBJECT -public: + public: GnomeGlobalShortcutBackend(GlobalShortcuts* parent); static const char* kGsdService; static const char* kGsdPath; static const char* kGsdInterface; -protected: + protected: bool RegisterInNewThread() const { return true; } bool DoRegister(); void DoUnregister(); -private slots: + private slots: void RegisterFinished(QDBusPendingCallWatcher* watcher); void GnomeMediaKeyPressed(const QString& application, const QString& key); -private: + private: OrgGnomeSettingsDaemonMediaKeysInterface* interface_; bool is_connected_; }; -#endif // GNOMEGLOBALSHORTCUTBACKEND_H +#endif // GNOMEGLOBALSHORTCUTBACKEND_H diff --git a/src/core/mac_delegate.h b/src/core/mac_delegate.h index f646cf1c1..8a5aaf5a5 100644 --- a/src/core/mac_delegate.h +++ b/src/core/mac_delegate.h @@ -7,11 +7,10 @@ #import #endif - class PlatformInterface; @class SPMediaKeyTap; -@interface AppDelegate :NSObject { +@interface AppDelegate : NSObject { PlatformInterface* application_handler_; NSMenu* dock_menu_; MacGlobalShortcutBackend* shortcut_handler_; @@ -22,21 +21,23 @@ class PlatformInterface; #endif } -- (id) initWithHandler: (PlatformInterface*)handler; +- (id)initWithHandler:(PlatformInterface*)handler; // NSApplicationDelegate -- (BOOL) applicationShouldHandleReopen: (NSApplication*)app hasVisibleWindows:(BOOL)flag; -- (NSMenu*) applicationDockMenu: (NSApplication*)sender; +- (BOOL)applicationShouldHandleReopen:(NSApplication*)app + hasVisibleWindows:(BOOL)flag; +- (NSMenu*)applicationDockMenu:(NSApplication*)sender; - (void)applicationDidFinishLaunching:(NSNotification*)aNotification; -- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication*)sender; +- (NSApplicationTerminateReply)applicationShouldTerminate: + (NSApplication*)sender; // NSUserNotificationCenterDelegate -- (BOOL) userNotificationCenter: (id)center - shouldPresentNotification: (id)notification; +- (BOOL)userNotificationCenter:(id)center + shouldPresentNotification:(id)notification; -- (void) setDockMenu: (NSMenu*)menu; -- (MacGlobalShortcutBackend*) shortcut_handler; -- (void) setShortcutHandler: (MacGlobalShortcutBackend*)backend; -- (void) mediaKeyTap: (SPMediaKeyTap*)keyTap receivedMediaKeyEvent:(NSEvent*)event; +- (void)setDockMenu:(NSMenu*)menu; +- (MacGlobalShortcutBackend*)shortcut_handler; +- (void)setShortcutHandler:(MacGlobalShortcutBackend*)backend; +- (void)mediaKeyTap:(SPMediaKeyTap*)keyTap + receivedMediaKeyEvent:(NSEvent*)event; @end - diff --git a/src/core/mac_utilities.h b/src/core/mac_utilities.h index fadaab0fd..21df859cf 100644 --- a/src/core/mac_utilities.h +++ b/src/core/mac_utilities.h @@ -30,5 +30,4 @@ namespace mac { QKeySequence KeySequenceFromNSEvent(NSEvent* event); void DumpDictionary(CFDictionaryRef dict); float GetDevicePixelRatio(QWidget* widget); - } diff --git a/src/core/macfslistener.h b/src/core/macfslistener.h index be83de5dd..327fa0c09 100644 --- a/src/core/macfslistener.h +++ b/src/core/macfslistener.h @@ -36,7 +36,7 @@ class MacFSListener : public FileSystemWatcherInterface { void RemovePath(const QString& path); void Clear(); - signals: +signals: void PathChanged(const QString& path); private slots: @@ -45,13 +45,10 @@ class MacFSListener : public FileSystemWatcherInterface { private: void UpdateStreamAsync(); - static void EventStreamCallback( - ConstFSEventStreamRef stream, - void* user_data, - size_t num_events, - void* event_paths, - const FSEventStreamEventFlags event_flags[], - const FSEventStreamEventId event_ids[]); + static void EventStreamCallback(ConstFSEventStreamRef stream, void* user_data, + size_t num_events, void* event_paths, + const FSEventStreamEventFlags event_flags[], + const FSEventStreamEventId event_ids[]); CFRunLoopRef run_loop_; FSEventStreamRef stream_; diff --git a/src/core/macglobalshortcutbackend.h b/src/core/macglobalshortcutbackend.h index 9abcf8e98..49ef44aac 100644 --- a/src/core/macglobalshortcutbackend.h +++ b/src/core/macglobalshortcutbackend.h @@ -31,7 +31,7 @@ class QAction; class MacGlobalShortcutBackend : public GlobalShortcutBackend { Q_OBJECT -public: + public: MacGlobalShortcutBackend(GlobalShortcuts* parent); virtual ~MacGlobalShortcutBackend(); @@ -40,11 +40,11 @@ public: void MacMediaKeyPressed(int key); -protected: + protected: bool DoRegister(); void DoUnregister(); -private: + private: bool KeyPressed(const QKeySequence& sequence); QMap shortcuts_; @@ -53,4 +53,4 @@ private: std::unique_ptr p_; }; -#endif // MACGLOBALSHORTCUTBACKEND_H +#endif // MACGLOBALSHORTCUTBACKEND_H diff --git a/src/core/mergedproxymodel.cpp b/src/core/mergedproxymodel.cpp index 8c7578a6d..fd3b77fe9 100644 --- a/src/core/mergedproxymodel.cpp +++ b/src/core/mergedproxymodel.cpp @@ -39,15 +39,12 @@ using boost::multi_index::multi_index_container; using boost::multi_index::ordered_unique; using boost::multi_index::tag; -std::size_t hash_value(const QModelIndex& index) { - return qHash(index); -} +std::size_t hash_value(const QModelIndex& index) { return qHash(index); } namespace { struct Mapping { - Mapping(const QModelIndex& _source_index) - : source_index(_source_index) {} + Mapping(const QModelIndex& _source_index) : source_index(_source_index) {} QModelIndex source_index; }; @@ -60,28 +57,23 @@ struct tag_by_pointer {}; class MergedProxyModelPrivate { private: typedef multi_index_container< - Mapping*, - indexed_by< - hashed_unique, - member >, - ordered_unique, - identity > - > - > MappingContainer; + Mapping*, + indexed_by< + hashed_unique, + member >, + ordered_unique, identity > > > + MappingContainer; public: MappingContainer mappings_; }; MergedProxyModel::MergedProxyModel(QObject* parent) - : QAbstractProxyModel(parent), - resetting_model_(nullptr), - p_(new MergedProxyModelPrivate) { -} + : QAbstractProxyModel(parent), + resetting_model_(nullptr), + p_(new MergedProxyModelPrivate) {} -MergedProxyModel::~MergedProxyModel() { - DeleteAllMappings(); -} +MergedProxyModel::~MergedProxyModel() { DeleteAllMappings(); } void MergedProxyModel::DeleteAllMappings() { const auto& begin = p_->mappings_.get().begin(); @@ -92,30 +84,28 @@ void MergedProxyModel::DeleteAllMappings() { void MergedProxyModel::AddSubModel(const QModelIndex& source_parent, QAbstractItemModel* submodel) { connect(submodel, SIGNAL(modelReset()), this, SLOT(SubModelReset())); - connect(submodel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - connect(submodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); + connect(submodel, SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + connect(submodel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(DataChanged(QModelIndex, QModelIndex))); QModelIndex proxy_parent = mapFromSource(source_parent); const int rows = submodel->rowCount(); - if (rows) - beginInsertRows(proxy_parent, 0, rows-1); + if (rows) beginInsertRows(proxy_parent, 0, rows - 1); merge_points_.insert(submodel, source_parent); - if (rows) - endInsertRows(); + if (rows) endInsertRows(); } -void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { +void MergedProxyModel::RemoveSubModel(const QModelIndex& source_parent) { // Find the submodel that the parent corresponded to QAbstractItemModel* submodel = merge_points_.key(source_parent); merge_points_.remove(submodel); @@ -147,40 +137,42 @@ void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { void MergedProxyModel::setSourceModel(QAbstractItemModel* source_model) { if (sourceModel()) { - disconnect(sourceModel(), SIGNAL(modelReset()), this, SLOT(SourceModelReset())); - disconnect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); - disconnect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(LayoutAboutToBeChanged())); - disconnect(sourceModel(), SIGNAL(layoutChanged()), - this, SLOT(LayoutChanged())); + disconnect(sourceModel(), SIGNAL(modelReset()), this, + SLOT(SourceModelReset())); + disconnect(sourceModel(), + SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + disconnect(sourceModel(), + SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), + this, SLOT(DataChanged(QModelIndex, QModelIndex))); + disconnect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(LayoutAboutToBeChanged())); + disconnect(sourceModel(), SIGNAL(layoutChanged()), this, + SLOT(LayoutChanged())); } QAbstractProxyModel::setSourceModel(source_model); connect(sourceModel(), SIGNAL(modelReset()), this, SLOT(SourceModelReset())); - connect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); - connect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(LayoutAboutToBeChanged())); - connect(sourceModel(), SIGNAL(layoutChanged()), - this, SLOT(LayoutChanged())); + connect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), + this, SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + this, SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(DataChanged(QModelIndex, QModelIndex))); + connect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(LayoutAboutToBeChanged())); + connect(sourceModel(), SIGNAL(layoutChanged()), this, SLOT(LayoutChanged())); } void MergedProxyModel::SourceModelReset() { @@ -227,15 +219,15 @@ void MergedProxyModel::SubModelReset() { // "Insert" items from the newly reset submodel int count = submodel->rowCount(); if (count) { - beginInsertRows(proxy_parent, 0, count-1); + beginInsertRows(proxy_parent, 0, count - 1); endInsertRows(); } emit SubModelReset(proxy_parent, submodel); } -QModelIndex MergedProxyModel::GetActualSourceParent(const QModelIndex& source_parent, - QAbstractItemModel* model) const { +QModelIndex MergedProxyModel::GetActualSourceParent( + const QModelIndex& source_parent, QAbstractItemModel* model) const { if (!source_parent.isValid() && model != sourceModel()) return merge_points_.value(model); return source_parent; @@ -243,8 +235,9 @@ QModelIndex MergedProxyModel::GetActualSourceParent(const QModelIndex& source_pa void MergedProxyModel::RowsAboutToBeInserted(const QModelIndex& source_parent, int start, int end) { - beginInsertRows(mapFromSource(GetActualSourceParent( - source_parent, static_cast(sender()))), + beginInsertRows( + mapFromSource(GetActualSourceParent( + source_parent, static_cast(sender()))), start, end); } @@ -254,8 +247,9 @@ void MergedProxyModel::RowsInserted(const QModelIndex&, int, int) { void MergedProxyModel::RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, int end) { - beginRemoveRows(mapFromSource(GetActualSourceParent( - source_parent, static_cast(sender()))), + beginRemoveRows( + mapFromSource(GetActualSourceParent( + source_parent, static_cast(sender()))), start, end); } @@ -263,29 +257,26 @@ void MergedProxyModel::RowsRemoved(const QModelIndex&, int, int) { endRemoveRows(); } -QModelIndex MergedProxyModel::mapToSource(const QModelIndex& proxy_index) const { - if (!proxy_index.isValid()) - return QModelIndex(); +QModelIndex MergedProxyModel::mapToSource(const QModelIndex& proxy_index) + const { + if (!proxy_index.isValid()) return QModelIndex(); Mapping* mapping = static_cast(proxy_index.internalPointer()); if (p_->mappings_.get().find(mapping) == p_->mappings_.get().end()) return QModelIndex(); - if (mapping->source_index.model() == resetting_model_) - return QModelIndex(); + if (mapping->source_index.model() == resetting_model_) return QModelIndex(); return mapping->source_index; } -QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) const { - if (!source_index.isValid()) - return QModelIndex(); - if (source_index.model() == resetting_model_) - return QModelIndex(); +QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) + const { + if (!source_index.isValid()) return QModelIndex(); + if (source_index.model() == resetting_model_) return QModelIndex(); // Add a mapping if we don't have one already - const auto& it = - p_->mappings_.get().find(source_index); + const auto& it = p_->mappings_.get().find(source_index); Mapping* mapping; if (it != p_->mappings_.get().end()) { mapping = *it; @@ -297,7 +288,8 @@ QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) con return createIndex(source_index.row(), source_index.column(), mapping); } -QModelIndex MergedProxyModel::index(int row, int column, const QModelIndex &parent) const { +QModelIndex MergedProxyModel::index(int row, int column, + const QModelIndex& parent) const { QModelIndex source_index; if (!parent.isValid()) { @@ -315,26 +307,23 @@ QModelIndex MergedProxyModel::index(int row, int column, const QModelIndex &pare return mapFromSource(source_index); } -QModelIndex MergedProxyModel::parent(const QModelIndex &child) const { +QModelIndex MergedProxyModel::parent(const QModelIndex& child) const { QModelIndex source_child = mapToSource(child); if (source_child.model() == sourceModel()) return mapFromSource(source_child.parent()); - if (!IsKnownModel(source_child.model())) - return QModelIndex(); + if (!IsKnownModel(source_child.model())) return QModelIndex(); if (!source_child.parent().isValid()) return mapFromSource(merge_points_.value(GetModel(source_child))); return mapFromSource(source_child.parent()); } -int MergedProxyModel::rowCount(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->rowCount(QModelIndex()); +int MergedProxyModel::rowCount(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->rowCount(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return 0; + if (!IsKnownModel(source_parent.model())) return 0; const QAbstractItemModel* child_model = merge_points_.key(source_parent); if (child_model) { @@ -348,27 +337,22 @@ int MergedProxyModel::rowCount(const QModelIndex &parent) const { return source_parent.model()->rowCount(source_parent); } -int MergedProxyModel::columnCount(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->columnCount(QModelIndex()); +int MergedProxyModel::columnCount(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->columnCount(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return 0; + if (!IsKnownModel(source_parent.model())) return 0; const QAbstractItemModel* child_model = merge_points_.key(source_parent); - if (child_model) - return child_model->columnCount(QModelIndex()); + if (child_model) return child_model->columnCount(QModelIndex()); return source_parent.model()->columnCount(source_parent); } -bool MergedProxyModel::hasChildren(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->hasChildren(QModelIndex()); +bool MergedProxyModel::hasChildren(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->hasChildren(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return false; + if (!IsKnownModel(source_parent.model())) return false; const QAbstractItemModel* child_model = merge_points_.key(source_parent); @@ -380,29 +364,27 @@ bool MergedProxyModel::hasChildren(const QModelIndex &parent) const { QVariant MergedProxyModel::data(const QModelIndex& proxyIndex, int role) const { QModelIndex source_index = mapToSource(proxyIndex); - if (!IsKnownModel(source_index.model())) - return QVariant(); + if (!IsKnownModel(source_index.model())) return QVariant(); return source_index.model()->data(source_index, role); } -QMap MergedProxyModel::itemData(const QModelIndex& proxy_index) const { +QMap MergedProxyModel::itemData(const QModelIndex& proxy_index) + const { QModelIndex source_index = mapToSource(proxy_index); - if (!source_index.isValid()) - return sourceModel()->itemData(QModelIndex()); + if (!source_index.isValid()) return sourceModel()->itemData(QModelIndex()); return source_index.model()->itemData(source_index); } -Qt::ItemFlags MergedProxyModel::flags(const QModelIndex &index) const { +Qt::ItemFlags MergedProxyModel::flags(const QModelIndex& index) const { QModelIndex source_index = mapToSource(index); - if (!source_index.isValid()) - return sourceModel()->flags(QModelIndex()); + if (!source_index.isValid()) return sourceModel()->flags(QModelIndex()); return source_index.model()->flags(source_index); } -bool MergedProxyModel::setData(const QModelIndex &index, const QVariant &value, +bool MergedProxyModel::setData(const QModelIndex& index, const QVariant& value, int role) { QModelIndex source_index = mapToSource(index); @@ -415,16 +397,15 @@ QStringList MergedProxyModel::mimeTypes() const { QStringList ret; ret << sourceModel()->mimeTypes(); - foreach (const QAbstractItemModel* model, merge_points_.keys()) { + foreach(const QAbstractItemModel * model, merge_points_.keys()) { ret << model->mimeTypes(); } return ret; } -QMimeData* MergedProxyModel::mimeData(const QModelIndexList &indexes) const { - if (indexes.isEmpty()) - return 0; +QMimeData* MergedProxyModel::mimeData(const QModelIndexList& indexes) const { + if (indexes.isEmpty()) return 0; // Only ask the first index's model const QAbstractItemModel* model = mapToSource(indexes[0]).model(); @@ -435,17 +416,18 @@ QMimeData* MergedProxyModel::mimeData(const QModelIndexList &indexes) const { // Only ask about the indexes that are actually in that model QModelIndexList indexes_in_model; - foreach (const QModelIndex& proxy_index, indexes) { + foreach(const QModelIndex & proxy_index, indexes) { QModelIndex source_index = mapToSource(proxy_index); - if (source_index.model() != model) - continue; + if (source_index.model() != model) continue; indexes_in_model << source_index; } return model->mimeData(indexes_in_model); } -bool MergedProxyModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { +bool MergedProxyModel::dropMimeData(const QMimeData* data, + Qt::DropAction action, int row, int column, + const QModelIndex& parent) { if (!parent.isValid()) { return false; } @@ -453,17 +435,16 @@ bool MergedProxyModel::dropMimeData(const QMimeData* data, Qt::DropAction action return sourceModel()->dropMimeData(data, action, row, column, parent); } -QModelIndex MergedProxyModel::FindSourceParent(const QModelIndex& proxy_index) const { - if (!proxy_index.isValid()) - return QModelIndex(); +QModelIndex MergedProxyModel::FindSourceParent(const QModelIndex& proxy_index) + const { + if (!proxy_index.isValid()) return QModelIndex(); QModelIndex source_index = mapToSource(proxy_index); - if (source_index.model() == sourceModel()) - return source_index; + if (source_index.model() == sourceModel()) return source_index; return merge_points_.value(GetModel(source_index)); } -bool MergedProxyModel::canFetchMore(const QModelIndex &parent) const { +bool MergedProxyModel::canFetchMore(const QModelIndex& parent) const { QModelIndex source_index = mapToSource(parent); if (!source_index.isValid()) @@ -480,34 +461,33 @@ void MergedProxyModel::fetchMore(const QModelIndex& parent) { GetModel(source_index)->fetchMore(source_index); } -QAbstractItemModel* MergedProxyModel::GetModel(const QModelIndex& source_index) const { +QAbstractItemModel* MergedProxyModel::GetModel(const QModelIndex& source_index) + const { // This is essentially const_cast(source_index.model()), // but without the const_cast const QAbstractItemModel* const_model = source_index.model(); - if (const_model == sourceModel()) - return sourceModel(); - foreach (QAbstractItemModel* submodel, merge_points_.keys()) { - if (submodel == const_model) - return submodel; + if (const_model == sourceModel()) return sourceModel(); + foreach(QAbstractItemModel * submodel, merge_points_.keys()) { + if (submodel == const_model) return submodel; } return nullptr; } -void MergedProxyModel::DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right) { +void MergedProxyModel::DataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right) { emit dataChanged(mapFromSource(top_left), mapFromSource(bottom_right)); } void MergedProxyModel::LayoutAboutToBeChanged() { old_merge_points_.clear(); - foreach (QAbstractItemModel* key, merge_points_.keys()) { + foreach(QAbstractItemModel * key, merge_points_.keys()) { old_merge_points_[key] = merge_points_.value(key); } } void MergedProxyModel::LayoutChanged() { - foreach (QAbstractItemModel* key, merge_points_.keys()) { - if (!old_merge_points_.contains(key)) - continue; + foreach(QAbstractItemModel * key, merge_points_.keys()) { + if (!old_merge_points_.contains(key)) continue; const int old_row = old_merge_points_[key].row(); const int new_row = merge_points_[key].row(); @@ -526,17 +506,19 @@ bool MergedProxyModel::IsKnownModel(const QAbstractItemModel* model) const { return false; } -QModelIndexList MergedProxyModel::mapFromSource(const QModelIndexList& source_indexes) const { +QModelIndexList MergedProxyModel::mapFromSource( + const QModelIndexList& source_indexes) const { QModelIndexList ret; - foreach (const QModelIndex& index, source_indexes) { + foreach(const QModelIndex & index, source_indexes) { ret << mapFromSource(index); } return ret; } -QModelIndexList MergedProxyModel::mapToSource(const QModelIndexList& proxy_indexes) const { +QModelIndexList MergedProxyModel::mapToSource( + const QModelIndexList& proxy_indexes) const { QModelIndexList ret; - foreach (const QModelIndex& index, proxy_indexes) { + foreach(const QModelIndex & index, proxy_indexes) { ret << mapToSource(index); } return ret; diff --git a/src/core/mergedproxymodel.h b/src/core/mergedproxymodel.h index 95d8b249a..b24e49c59 100644 --- a/src/core/mergedproxymodel.h +++ b/src/core/mergedproxymodel.h @@ -34,7 +34,8 @@ class MergedProxyModel : public QAbstractProxyModel { ~MergedProxyModel(); // Make another model appear as a child of the given item in the source model. - void AddSubModel(const QModelIndex& source_parent, QAbstractItemModel* submodel); + void AddSubModel(const QModelIndex& source_parent, + QAbstractItemModel* submodel); void RemoveSubModel(const QModelIndex& source_parent); // Find the item in the source model that is the parent of the model @@ -43,45 +44,50 @@ class MergedProxyModel : public QAbstractProxyModel { QModelIndex FindSourceParent(const QModelIndex& proxy_index) const; // QAbstractItemModel - QModelIndex index(int row, int column, const QModelIndex &parent) const; - QModelIndex parent(const QModelIndex &child) const; - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const; - bool hasChildren(const QModelIndex &parent) const; - QMap itemData(const QModelIndex &proxyIndex) const; - Qt::ItemFlags flags(const QModelIndex &index) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); + QModelIndex index(int row, int column, const QModelIndex& parent) const; + QModelIndex parent(const QModelIndex& child) const; + int rowCount(const QModelIndex& parent) const; + int columnCount(const QModelIndex& parent) const; + QVariant data(const QModelIndex& proxyIndex, + int role = Qt::DisplayRole) const; + bool hasChildren(const QModelIndex& parent) const; + QMap itemData(const QModelIndex& proxyIndex) const; + Qt::ItemFlags flags(const QModelIndex& index) const; + bool setData(const QModelIndex& index, const QVariant& value, int role); QStringList mimeTypes() const; - QMimeData* mimeData(const QModelIndexList &indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); - bool canFetchMore(const QModelIndex &parent) const; + QMimeData* mimeData(const QModelIndexList& indexes) const; + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); + bool canFetchMore(const QModelIndex& parent) const; void fetchMore(const QModelIndex& parent); // QAbstractProxyModel // Note that these implementations of map{To,From}Source will not always // give you an index in sourceModel(), you might get an index in one of the // child models instead. - QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; - QModelIndex mapToSource(const QModelIndex &proxyIndex) const; - void setSourceModel(QAbstractItemModel *sourceModel); + QModelIndex mapFromSource(const QModelIndex& sourceIndex) const; + QModelIndex mapToSource(const QModelIndex& proxyIndex) const; + void setSourceModel(QAbstractItemModel* sourceModel); // Convenience functions that call map{To,From}Source multiple times. QModelIndexList mapFromSource(const QModelIndexList& source_indexes) const; QModelIndexList mapToSource(const QModelIndexList& proxy_indexes) const; - signals: +signals: void SubModelReset(const QModelIndex& root, QAbstractItemModel* model); private slots: void SourceModelReset(); void SubModelReset(); - void RowsAboutToBeInserted(const QModelIndex& source_parent, int start, int end); + void RowsAboutToBeInserted(const QModelIndex& source_parent, int start, + int end); void RowsInserted(const QModelIndex& source_parent, int start, int end); - void RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, int end); + void RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, + int end); void RowsRemoved(const QModelIndex& source_parent, int start, int end); - void DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right); + void DataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right); void LayoutAboutToBeChanged(); void LayoutChanged(); @@ -93,7 +99,6 @@ class MergedProxyModel : public QAbstractProxyModel { void DeleteAllMappings(); bool IsKnownModel(const QAbstractItemModel* model) const; - QMap merge_points_; QAbstractItemModel* resetting_model_; @@ -102,4 +107,4 @@ class MergedProxyModel : public QAbstractProxyModel { std::unique_ptr p_; }; -#endif // MERGEDPROXYMODEL_H +#endif // MERGEDPROXYMODEL_H diff --git a/src/core/metatypes.cpp b/src/core/metatypes.cpp index ee0151cc7..5d907e46c 100644 --- a/src/core/metatypes.cpp +++ b/src/core/metatypes.cpp @@ -32,7 +32,8 @@ void RegisterMetaTypes() { qRegisterMetaType("const char*"); qRegisterMetaType("CoverSearchResult"); qRegisterMetaType("CoverSearchResults"); - qRegisterMetaType("DigitallyImportedClient::Channel"); + qRegisterMetaType( + "DigitallyImportedClient::Channel"); qRegisterMetaType("Directory"); qRegisterMetaType("DirectoryList"); qRegisterMetaType("Engine::SimpleMetaBundle"); @@ -49,8 +50,10 @@ void RegisterMetaTypes() { qRegisterMetaType("PodcastList"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); - qRegisterMetaType("PlaylistSequence::RepeatMode"); - qRegisterMetaType("PlaylistSequence::ShuffleMode"); + qRegisterMetaType( + "PlaylistSequence::RepeatMode"); + qRegisterMetaType( + "PlaylistSequence::ShuffleMode"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); @@ -60,14 +63,17 @@ void RegisterMetaTypes() { qRegisterMetaType("QNetworkReply**"); qRegisterMetaType("SearchProvider::ResultList"); qRegisterMetaType("SearchProvider::Result"); - qRegisterMetaType("smart_playlists::GeneratorPtr"); + qRegisterMetaType( + "smart_playlists::GeneratorPtr"); qRegisterMetaType("SomaFMService::Stream"); qRegisterMetaType("SongList"); qRegisterMetaType("Song"); - qRegisterMetaTypeStreamOperators("DigitallyImportedClient::Channel"); + qRegisterMetaTypeStreamOperators( + "DigitallyImportedClient::Channel"); qRegisterMetaTypeStreamOperators("Equalizer::Params"); qRegisterMetaTypeStreamOperators >("ColumnAlignmentMap"); - qRegisterMetaTypeStreamOperators("SomaFMService::Stream"); + qRegisterMetaTypeStreamOperators( + "SomaFMService::Stream"); qRegisterMetaType("SubdirectoryList"); qRegisterMetaType("Subdirectory"); qRegisterMetaType >("QList"); diff --git a/src/core/mimedata.h b/src/core/mimedata.h index 53c5ed835..e8136aed4 100644 --- a/src/core/mimedata.h +++ b/src/core/mimedata.h @@ -23,16 +23,16 @@ class MimeData : public QMimeData { Q_OBJECT -public: - MimeData(bool clear = false, bool play_now = false, - bool enqueue = false, bool open_in_new_playlist = false) - : override_user_settings_(false), - clear_first_(clear), - play_now_(play_now), - enqueue_now_(enqueue), - open_in_new_playlist_(open_in_new_playlist), - name_for_new_playlist_(QString()), - from_doubleclick_(false) {} + public: + MimeData(bool clear = false, bool play_now = false, bool enqueue = false, + bool open_in_new_playlist = false) + : override_user_settings_(false), + clear_first_(clear), + play_now_(play_now), + enqueue_now_(enqueue), + open_in_new_playlist_(open_in_new_playlist), + name_for_new_playlist_(QString()), + from_doubleclick_(false) {} // If this is set then MainWindow will not touch any of the other flags. bool override_user_settings_; @@ -43,7 +43,8 @@ public: // If this is set then the first item that is inserted will start playing // immediately. Note: this is always overridden with the user's preference - // if the MimeData goes via MainWindow, unless you set override_user_settings_. + // if the MimeData goes via MainWindow, unless you set + // override_user_settings_. bool play_now_; // If this is set then the items are added to the queue after being inserted. @@ -60,12 +61,15 @@ public: // the defaults set by the user. bool from_doubleclick_; - // Returns a pretty name for a playlist containing songs described by this MimeData - // object. By pretty name we mean the value of 'name_for_new_playlist_' or generic + // Returns a pretty name for a playlist containing songs described by this + // MimeData + // object. By pretty name we mean the value of 'name_for_new_playlist_' or + // generic // "Playlist" string if the 'name_for_new_playlist_' attribute is empty. QString get_name_for_new_playlist() { - return name_for_new_playlist_.isEmpty() ? tr("Playlist") : name_for_new_playlist_; + return name_for_new_playlist_.isEmpty() ? tr("Playlist") + : name_for_new_playlist_; } }; -#endif // MIMEDATA_H +#endif // MIMEDATA_H diff --git a/src/core/modelfuturewatcher.h b/src/core/modelfuturewatcher.h index 388a6dcca..ea97c9889 100644 --- a/src/core/modelfuturewatcher.h +++ b/src/core/modelfuturewatcher.h @@ -8,18 +8,14 @@ template class ModelFutureWatcher : public QFutureWatcher { public: ModelFutureWatcher(const QModelIndex& index, QObject* parent = 0) - : QFutureWatcher(parent), - index_(index) { - } + : QFutureWatcher(parent), index_(index) {} - ~ModelFutureWatcher() { - } + ~ModelFutureWatcher() {} const QPersistentModelIndex& index() const { return index_; } private: QPersistentModelIndex index_; - }; #endif diff --git a/src/core/mpris.cpp b/src/core/mpris.cpp index da297cec7..191dd9198 100644 --- a/src/core/mpris.cpp +++ b/src/core/mpris.cpp @@ -22,11 +22,10 @@ namespace mpris { Mpris::Mpris(Application* app, QObject* parent) - : QObject(parent), - mpris1_(new mpris::Mpris1(app, this)), - mpris2_(new mpris::Mpris2(app, mpris1_, this)) -{ + : QObject(parent), + mpris1_(new mpris::Mpris1(app, this)), + mpris2_(new mpris::Mpris2(app, mpris1_, this)) { connect(mpris2_, SIGNAL(RaiseMainWindow()), SIGNAL(RaiseMainWindow())); } -} // namespace mpris +} // namespace mpris diff --git a/src/core/mpris.h b/src/core/mpris.h index f858168b1..b613b5aa3 100644 --- a/src/core/mpris.h +++ b/src/core/mpris.h @@ -30,17 +30,17 @@ class Mpris2; class Mpris : public QObject { Q_OBJECT -public: + public: Mpris(Application* app, QObject* parent = 0); signals: void RaiseMainWindow(); -private: + private: Mpris1* mpris1_; Mpris2* mpris2_; }; -} // namespace mpris +} // namespace mpris -#endif // MPRIS_H +#endif // MPRIS_H diff --git a/src/core/mpris1.cpp b/src/core/mpris1.cpp index 56f330320..cef1ff7a5 100644 --- a/src/core/mpris1.cpp +++ b/src/core/mpris1.cpp @@ -39,12 +39,11 @@ const char* Mpris1::kDefaultDbusServiceName = "org.mpris.clementine"; Mpris1::Mpris1(Application* app, QObject* parent, const QString& dbus_service_name) - : QObject(parent), - dbus_service_name_(dbus_service_name), - root_(nullptr), - player_(nullptr), - tracklist_(nullptr) -{ + : QObject(parent), + dbus_service_name_(dbus_service_name), + root_(nullptr), + player_(nullptr), + tracklist_(nullptr) { qDBusRegisterMetaType(); qDBusRegisterMetaType(); @@ -53,7 +52,8 @@ Mpris1::Mpris1(Application* app, QObject* parent, } if (!QDBusConnection::sessionBus().registerService(dbus_service_name_)) { - qLog(Warning) << "Failed to register" << dbus_service_name_ << "on the session bus"; + qLog(Warning) << "Failed to register" << dbus_service_name_ + << "on the session bus"; return; } @@ -61,8 +61,10 @@ Mpris1::Mpris1(Application* app, QObject* parent, player_ = new Mpris1Player(app, this); tracklist_ = new Mpris1TrackList(app, this); - connect(app->current_art_loader(), SIGNAL(ArtLoaded(const Song&, const QString&, const QImage&)), - player_, SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); + connect(app->current_art_loader(), + SIGNAL(ArtLoaded(const Song&, const QString&, const QImage&)), + player_, + SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); } Mpris1::~Mpris1() { @@ -70,27 +72,29 @@ Mpris1::~Mpris1() { } Mpris1Root::Mpris1Root(Application* app, QObject* parent) - : QObject(parent), - app_(app) { + : QObject(parent), app_(app) { new MprisRoot(this); QDBusConnection::sessionBus().registerObject("/", this); } Mpris1Player::Mpris1Player(Application* app, QObject* parent) - : QObject(parent), - app_(app) { + : QObject(parent), app_(app) { new MprisPlayer(this); QDBusConnection::sessionBus().registerObject("/Player", this); - connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), SLOT(PlaylistManagerInitialized())); + connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), + SLOT(PlaylistManagerInitialized())); } // when PlaylistManager gets it ready, we connect PlaylistSequence with this void Mpris1Player::PlaylistManagerInitialized() { - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), SLOT(ShuffleModeChanged())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), SLOT(RepeatModeChanged())); } @@ -99,22 +103,23 @@ Mpris1TrackList::Mpris1TrackList(Application* app, QObject* parent) new MprisTrackList(this); QDBusConnection::sessionBus().registerObject("/TrackList", this); - connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), SLOT(PlaylistChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), + SLOT(PlaylistChanged(Playlist*))); } void Mpris1TrackList::PlaylistChanged(Playlist* playlist) { emit TrackListChange(playlist->rowCount()); } -// we use the state from event and don't try to obtain it from Player +// we use the state from event and don't try to obtain it from Player // later because only the event's version is really the current one void Mpris1Player::EngineStateChanged(Engine::State state) { emit StatusChange(GetStatus(state)); emit CapsChange(GetCaps(state)); } -void Mpris1Player::CurrentSongChanged( - const Song& song, const QString& art_uri, const QImage&) { +void Mpris1Player::CurrentSongChanged(const Song& song, const QString& art_uri, + const QImage&) { last_metadata_ = Mpris1::GetMetadata(song); if (!art_uri.isEmpty()) { @@ -126,11 +131,9 @@ void Mpris1Player::CurrentSongChanged( emit CapsChange(GetCaps()); } - QString Mpris1Root::Identity() { - return QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); + return QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); } Version Mpris1Root::MprisVersion() { @@ -140,42 +143,26 @@ Version Mpris1Root::MprisVersion() { return version; } -void Mpris1Root::Quit() { - qApp->quit(); -} +void Mpris1Root::Quit() { qApp->quit(); } -void Mpris1Player::Pause() { - app_->player()->PlayPause(); -} +void Mpris1Player::Pause() { app_->player()->PlayPause(); } -void Mpris1Player::Stop() { - app_->player()->Stop(); -} +void Mpris1Player::Stop() { app_->player()->Stop(); } -void Mpris1Player::Prev() { - app_->player()->Previous(); -} +void Mpris1Player::Prev() { app_->player()->Previous(); } -void Mpris1Player::Play() { - app_->player()->Play(); -} +void Mpris1Player::Play() { app_->player()->Play(); } -void Mpris1Player::Next() { - app_->player()->Next(); -} +void Mpris1Player::Next() { app_->player()->Next(); } void Mpris1Player::Repeat(bool repeat) { app_->playlist_manager()->sequence()->SetRepeatMode( repeat ? PlaylistSequence::Repeat_Track : PlaylistSequence::Repeat_Off); } -void Mpris1Player::ShuffleModeChanged() { - emit StatusChange(GetStatus()); -} +void Mpris1Player::ShuffleModeChanged() { emit StatusChange(GetStatus()); } -void Mpris1Player::RepeatModeChanged() { - emit StatusChange(GetStatus()); -} +void Mpris1Player::RepeatModeChanged() { emit StatusChange(GetStatus()); } DBusStatus Mpris1Player::GetStatus() const { return GetStatus(app_->player()->GetState()); @@ -199,25 +186,27 @@ DBusStatus Mpris1Player::GetStatus(Engine::State state) const { if (app_->playlist_manager()->sequence()) { PlaylistManagerInterface* playlists_ = app_->playlist_manager(); - PlaylistSequence::RepeatMode repeat_mode = playlists_->sequence()->repeat_mode(); - - status.random = playlists_->sequence()->shuffle_mode() == PlaylistSequence::Shuffle_Off ? 0 : 1; + PlaylistSequence::RepeatMode repeat_mode = + playlists_->sequence()->repeat_mode(); + + status.random = + playlists_->sequence()->shuffle_mode() == PlaylistSequence::Shuffle_Off + ? 0 + : 1; status.repeat = repeat_mode == PlaylistSequence::Repeat_Track ? 1 : 0; - status.repeat_playlist = (repeat_mode == PlaylistSequence::Repeat_Album || - repeat_mode == PlaylistSequence::Repeat_Playlist || - repeat_mode == PlaylistSequence::Repeat_Track) ? 1 : 0; + status.repeat_playlist = + (repeat_mode == PlaylistSequence::Repeat_Album || + repeat_mode == PlaylistSequence::Repeat_Playlist || + repeat_mode == PlaylistSequence::Repeat_Track) + ? 1 + : 0; } return status; - } -void Mpris1Player::VolumeSet(int volume) { - app_->player()->SetVolume(volume); -} +void Mpris1Player::VolumeSet(int volume) { app_->player()->SetVolume(volume); } -int Mpris1Player::VolumeGet() const { - return app_->player()->GetVolume(); -} +int Mpris1Player::VolumeGet() const { return app_->player()->GetVolume(); } void Mpris1Player::PositionSet(int pos_msec) { app_->player()->SeekTo(pos_msec / kMsecPerSec); @@ -227,9 +216,7 @@ int Mpris1Player::PositionGet() const { return app_->player()->engine()->position_nanosec() / kNsecPerMsec; } -QVariantMap Mpris1Player::GetMetadata() const { - return last_metadata_; -} +QVariantMap Mpris1Player::GetMetadata() const { return last_metadata_; } int Mpris1Player::GetCaps() const { return GetCaps(app_->player()->GetState()); @@ -241,12 +228,15 @@ int Mpris1Player::GetCaps(Engine::State state) const { PlaylistManagerInterface* playlists = app_->playlist_manager(); if (playlists->active()) { - // play is disabled when playlist is empty or when last.fm stream is already playing - if (playlists->active() && playlists->active()->rowCount() != 0 - && !(state == Engine::Playing && (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls))) { + // play is disabled when playlist is empty or when last.fm stream is already + // playing + if (playlists->active() && playlists->active()->rowCount() != 0 && + !(state == Engine::Playing && + (app_->player()->GetCurrentItem()->options() & + PlaylistItem::LastFMControls))) { caps |= CAN_PLAY; } - + if (playlists->active()->next_row() != -1) { caps |= CAN_GO_NEXT; } @@ -257,7 +247,8 @@ int Mpris1Player::GetCaps(Engine::State state) const { if (current_item) { caps |= CAN_PROVIDE_METADATA; - if (state == Engine::Playing && !(current_item->options() & PlaylistItem::PauseDisabled)) { + if (state == Engine::Playing && + !(current_item->options() & PlaylistItem::PauseDisabled)) { caps |= CAN_PAUSE; } if (state != Engine::Empty && !current_item->Metadata().is_stream()) { @@ -268,25 +259,17 @@ int Mpris1Player::GetCaps(Engine::State state) const { return caps; } -void Mpris1Player::VolumeUp(int change) { - VolumeSet(VolumeGet() + change); -} +void Mpris1Player::VolumeUp(int change) { VolumeSet(VolumeGet() + change); } -void Mpris1Player::VolumeDown(int change) { - VolumeSet(VolumeGet() - change); -} +void Mpris1Player::VolumeDown(int change) { VolumeSet(VolumeGet() - change); } -void Mpris1Player::Mute() { - app_->player()->Mute(); -} +void Mpris1Player::Mute() { app_->player()->Mute(); } -void Mpris1Player::ShowOSD() { - app_->player()->ShowOSD(); -} +void Mpris1Player::ShowOSD() { app_->player()->ShowOSD(); } int Mpris1TrackList::AddTrack(const QString& track, bool play) { - app_->playlist_manager()->active()->InsertUrls( - QList() << QUrl(track), -1, play); + app_->playlist_manager()->active()->InsertUrls(QList() << QUrl(track), + -1, play); return 0; } @@ -304,15 +287,15 @@ int Mpris1TrackList::GetLength() const { QVariantMap Mpris1TrackList::GetMetadata(int pos) const { PlaylistItemPtr item = app_->player()->GetItemAt(pos); - if (!item) - return QVariantMap(); + if (!item) return QVariantMap(); return Mpris1::GetMetadata(item->Metadata()); } void Mpris1TrackList::SetLoop(bool enable) { app_->playlist_manager()->active()->sequence()->SetRepeatMode( - enable ? PlaylistSequence::Repeat_Playlist : PlaylistSequence::Repeat_Off); + enable ? PlaylistSequence::Repeat_Playlist + : PlaylistSequence::Repeat_Off); } void Mpris1TrackList::SetRandom(bool enable) { @@ -351,24 +334,23 @@ QVariantMap Mpris1::GetMetadata(const Song& song) { return ret; } -} // namespace mpris +} // namespace mpris - -QDBusArgument& operator<< (QDBusArgument& arg, const Version& version) { +QDBusArgument& operator<<(QDBusArgument& arg, const Version& version) { arg.beginStructure(); arg << version.major << version.minor; arg.endStructure(); return arg; } -const QDBusArgument& operator>> (const QDBusArgument& arg, Version& version) { +const QDBusArgument& operator>>(const QDBusArgument& arg, Version& version) { arg.beginStructure(); arg >> version.major >> version.minor; arg.endStructure(); return arg; } -QDBusArgument& operator<< (QDBusArgument& arg, const DBusStatus& status) { +QDBusArgument& operator<<(QDBusArgument& arg, const DBusStatus& status) { arg.beginStructure(); arg << status.play; arg << status.random; @@ -378,7 +360,7 @@ QDBusArgument& operator<< (QDBusArgument& arg, const DBusStatus& status) { return arg; } -const QDBusArgument& operator>> (const QDBusArgument& arg, DBusStatus& status) { +const QDBusArgument& operator>>(const QDBusArgument& arg, DBusStatus& status) { arg.beginStructure(); arg >> status.play; arg >> status.random; diff --git a/src/core/mpris1.h b/src/core/mpris1.h index 9e344b69e..62cf2bdf8 100644 --- a/src/core/mpris1.h +++ b/src/core/mpris1.h @@ -27,18 +27,15 @@ class Application; class Playlist; -struct DBusStatus { // From Amarok. +struct DBusStatus { // From Amarok. DBusStatus() - : play(Mpris_Stopped), - random(0), - repeat(0), - repeat_playlist(0) - {} - - int play; // Playing = 0, Paused = 1, Stopped = 2 - int random; // Linearly = 0, Randomly = 1 - int repeat; // Go_To_Next = 0, Repeat_Current = 1 - int repeat_playlist; // Stop_When_Finished = 0, Never_Give_Up_Playing = 1, Never_Let_You_Down = 42 + : play(Mpris_Stopped), random(0), repeat(0), repeat_playlist(0) {} + + int play; // Playing = 0, Paused = 1, Stopped = 2 + int random; // Linearly = 0, Randomly = 1 + int repeat; // Go_To_Next = 0, Repeat_Current = 1 + int repeat_playlist; // Stop_When_Finished = 0, Never_Give_Up_Playing = 1, + // Never_Let_You_Down = 42 enum MprisPlayState { Mpris_Playing = 0, @@ -48,9 +45,8 @@ struct DBusStatus { // From Amarok. }; Q_DECLARE_METATYPE(DBusStatus); -QDBusArgument& operator <<(QDBusArgument& arg, const DBusStatus& status); -const QDBusArgument& operator >>(const QDBusArgument& arg, DBusStatus& status); - +QDBusArgument& operator<<(QDBusArgument& arg, const DBusStatus& status); +const QDBusArgument& operator>>(const QDBusArgument& arg, DBusStatus& status); struct Version { quint16 minor; @@ -58,31 +54,30 @@ struct Version { }; Q_DECLARE_METATYPE(Version); -QDBusArgument& operator <<(QDBusArgument& arg, const Version& version); -const QDBusArgument& operator >>(const QDBusArgument& arg, Version& version); +QDBusArgument& operator<<(QDBusArgument& arg, const Version& version); +const QDBusArgument& operator>>(const QDBusArgument& arg, Version& version); namespace mpris { enum DBusCaps { - NONE = 0, - CAN_GO_NEXT = 1 << 0, - CAN_GO_PREV = 1 << 1, - CAN_PAUSE = 1 << 2, - CAN_PLAY = 1 << 3, - CAN_SEEK = 1 << 4, + NONE = 0, + CAN_GO_NEXT = 1 << 0, + CAN_GO_PREV = 1 << 1, + CAN_PAUSE = 1 << 2, + CAN_PLAY = 1 << 3, + CAN_SEEK = 1 << 4, CAN_PROVIDE_METADATA = 1 << 5, - CAN_HAS_TRACKLIST = 1 << 6, + CAN_HAS_TRACKLIST = 1 << 6, }; class Mpris1Root; class Mpris1Player; class Mpris1TrackList; - class Mpris1 : public QObject { Q_OBJECT -public: + public: Mpris1(Application* app, QObject* parent = 0, const QString& dbus_service_name = QString()); ~Mpris1(); @@ -93,7 +88,7 @@ public: Mpris1Player* player() const { return player_; } Mpris1TrackList* tracklist() const { return tracklist_; } -private: + private: static const char* kDefaultDbusServiceName; QString dbus_service_name_; @@ -103,26 +98,24 @@ private: Mpris1TrackList* tracklist_; }; - class Mpris1Root : public QObject { Q_OBJECT -public: + public: Mpris1Root(Application* app, QObject* parent = 0); QString Identity(); void Quit(); Version MprisVersion(); -private: + private: Application* app_; }; - class Mpris1Player : public QObject { Q_OBJECT -public: + public: Mpris1Player(Application* app, QObject* parent = 0); void Pause(); @@ -132,7 +125,8 @@ public: void Next(); void Repeat(bool); - // those methods will use engine's state obtained with player->GetState() method + // those methods will use engine's state obtained with player->GetState() + // method DBusStatus GetStatus() const; int GetCaps() const; // those methods will use engine's state provided as an argument @@ -151,33 +145,32 @@ public: void Mute(); void ShowOSD(); -public slots: - void CurrentSongChanged( - const Song& song, const QString& art_uri, const QImage&); + public slots: + void CurrentSongChanged(const Song& song, const QString& art_uri, + const QImage&); signals: void CapsChange(int); void TrackChange(const QVariantMap&); void StatusChange(DBusStatus); -private slots: + private slots: void PlaylistManagerInitialized(); void EngineStateChanged(Engine::State state); void ShuffleModeChanged(); void RepeatModeChanged(); -private: + private: Application* app_; QVariantMap last_metadata_; }; - class Mpris1TrackList : public QObject { Q_OBJECT -public: + public: Mpris1TrackList(Application* app, QObject* parent = 0); int AddTrack(const QString&, bool); @@ -194,13 +187,13 @@ public: signals: void TrackListChange(int i); -private slots: + private slots: void PlaylistChanged(Playlist* playlist); -private: + private: Application* app_; }; -} // namespace mpris +} // namespace mpris -#endif // MPRIS1_H +#endif // MPRIS1_H diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp index d433a6161..3b2c46c11 100644 --- a/src/core/mpris2.cpp +++ b/src/core/mpris2.cpp @@ -41,22 +41,22 @@ #include #include -QDBusArgument& operator<< (QDBusArgument& arg, const MprisPlaylist& playlist) { +QDBusArgument& operator<<(QDBusArgument& arg, const MprisPlaylist& playlist) { arg.beginStructure(); arg << playlist.id << playlist.name << playlist.icon; arg.endStructure(); return arg; } -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MprisPlaylist& playlist) { +const QDBusArgument& operator>>(const QDBusArgument& arg, + MprisPlaylist& playlist) { arg.beginStructure(); arg >> playlist.id >> playlist.name >> playlist.icon; arg.endStructure(); return arg; } -QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist) { +QDBusArgument& operator<<(QDBusArgument& arg, const MaybePlaylist& playlist) { arg.beginStructure(); arg << playlist.valid; arg << playlist.playlist; @@ -64,8 +64,8 @@ QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist) { return arg; } -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MaybePlaylist& playlist) { +const QDBusArgument& operator>>(const QDBusArgument& arg, + MaybePlaylist& playlist) { arg.beginStructure(); arg >> playlist.valid >> playlist.playlist; arg.endStructure(); @@ -79,121 +79,115 @@ const char* Mpris2::kServiceName = "org.mpris.MediaPlayer2.clementine"; const char* Mpris2::kFreedesktopPath = "org.freedesktop.DBus.Properties"; Mpris2::Mpris2(Application* app, Mpris1* mpris1, QObject* parent) - : QObject(parent), - app_(app), - mpris1_(mpris1) -{ + : QObject(parent), app_(app), mpris1_(mpris1) { new Mpris2Root(this); new Mpris2TrackList(this); new Mpris2Player(this); new Mpris2Playlists(this); if (!QDBusConnection::sessionBus().registerService(kServiceName)) { - qLog(Warning) << "Failed to register" << QString(kServiceName) << "on the session bus"; + qLog(Warning) << "Failed to register" << QString(kServiceName) + << "on the session bus"; return; } QDBusConnection::sessionBus().registerObject(kMprisObjectPath, this); - connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song,QString,QImage)), SLOT(ArtLoaded(Song,QString))); + connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song, QString, QImage)), + SLOT(ArtLoaded(Song, QString))); - connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); + connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); connect(app_->player(), SIGNAL(VolumeChanged(int)), SLOT(VolumeChanged())); connect(app_->player(), SIGNAL(Seeked(qlonglong)), SIGNAL(Seeked(qlonglong))); - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), SLOT(PlaylistManagerInitialized())); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), SLOT(PlaylistChanged(Playlist*))); - connect(app_->playlist_manager(), SIGNAL(CurrentChanged(Playlist*)), SLOT(PlaylistCollectionChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), + SLOT(PlaylistManagerInitialized())); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), + SLOT(PlaylistChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(CurrentChanged(Playlist*)), + SLOT(PlaylistCollectionChanged(Playlist*))); } // when PlaylistManager gets it ready, we connect PlaylistSequence with this void Mpris2::PlaylistManagerInitialized() { - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), SLOT(ShuffleModeChanged())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), SLOT(RepeatModeChanged())); } void Mpris2::EngineStateChanged(Engine::State newState) { - if(newState != Engine::Playing && newState != Engine::Paused) { - last_metadata_= QVariantMap(); + if (newState != Engine::Playing && newState != Engine::Paused) { + last_metadata_ = QVariantMap(); EmitNotification("Metadata"); } EmitNotification("PlaybackStatus", PlaybackStatus(newState)); } -void Mpris2::VolumeChanged() { - EmitNotification("Volume"); -} +void Mpris2::VolumeChanged() { EmitNotification("Volume"); } -void Mpris2::ShuffleModeChanged() { - EmitNotification("Shuffle"); -} +void Mpris2::ShuffleModeChanged() { EmitNotification("Shuffle"); } -void Mpris2::RepeatModeChanged() { - EmitNotification("LoopStatus"); -} +void Mpris2::RepeatModeChanged() { EmitNotification("LoopStatus"); } void Mpris2::EmitNotification(const QString& name, const QVariant& val) { EmitNotification(name, val, "org.mpris.MediaPlayer2.Player"); } -void Mpris2::EmitNotification(const QString& name, const QVariant& val, const QString& mprisEntity) { +void Mpris2::EmitNotification(const QString& name, const QVariant& val, + const QString& mprisEntity) { QDBusMessage msg = QDBusMessage::createSignal( - kMprisObjectPath, kFreedesktopPath, "PropertiesChanged"); + kMprisObjectPath, kFreedesktopPath, "PropertiesChanged"); QVariantMap map; map.insert(name, val); - QVariantList args = QVariantList() - << mprisEntity - << map - << QStringList(); + QVariantList args = QVariantList() << mprisEntity << map << QStringList(); msg.setArguments(args); QDBusConnection::sessionBus().send(msg); } void Mpris2::EmitNotification(const QString& name) { QVariant value; - if (name == "PlaybackStatus") value = PlaybackStatus(); - else if (name == "LoopStatus") value = LoopStatus(); - else if (name == "Shuffle") value = Shuffle(); - else if (name == "Metadata") value = Metadata(); - else if (name == "Volume") value = Volume(); - else if (name == "Position") value = Position(); + if (name == "PlaybackStatus") + value = PlaybackStatus(); + else if (name == "LoopStatus") + value = LoopStatus(); + else if (name == "Shuffle") + value = Shuffle(); + else if (name == "Metadata") + value = Metadata(); + else if (name == "Volume") + value = Volume(); + else if (name == "Position") + value = Position(); - if (value.isValid()) - EmitNotification(name, value); + if (value.isValid()) EmitNotification(name, value); } //------------------Root Interface--------------------------// -bool Mpris2::CanQuit() const { - return true; -} +bool Mpris2::CanQuit() const { return true; } -bool Mpris2::CanRaise() const { - return true; -} +bool Mpris2::CanRaise() const { return true; } -bool Mpris2::HasTrackList() const { - return true; -} +bool Mpris2::HasTrackList() const { return true; } -QString Mpris2::Identity() const { - return QCoreApplication::applicationName(); -} +QString Mpris2::Identity() const { return QCoreApplication::applicationName(); } QString Mpris2::DesktopEntryAbsolutePath() const { QStringList xdg_data_dirs = QString(getenv("XDG_DATA_DIRS")).split(":"); xdg_data_dirs.append("/usr/local/share/"); xdg_data_dirs.append("/usr/share/"); - foreach (const QString& directory, xdg_data_dirs) { - QString path = QString("%1/applications/%2.desktop"). - arg(directory, QApplication::applicationName().toLower()); - if (QFile::exists(path)) - return path; + foreach(const QString & directory, xdg_data_dirs) { + QString path = QString("%1/applications/%2.desktop").arg( + directory, QApplication::applicationName().toLower()); + if (QFile::exists(path)) return path; } return QString(); } @@ -203,52 +197,46 @@ QString Mpris2::DesktopEntry() const { } QStringList Mpris2::SupportedUriSchemes() const { - static QStringList res = QStringList() - << "file" - << "http" - << "cdda" - << "smb" - << "sftp"; + static QStringList res = QStringList() << "file" + << "http" + << "cdda" + << "smb" + << "sftp"; return res; } QStringList Mpris2::SupportedMimeTypes() const { - static QStringList res = QStringList() - << "application/ogg" - << "application/x-ogg" - << "application/x-ogm-audio" - << "audio/aac" - << "audio/mp4" - << "audio/mpeg" - << "audio/mpegurl" - << "audio/ogg" - << "audio/vnd.rn-realaudio" - << "audio/vorbis" - << "audio/x-flac" - << "audio/x-mp3" - << "audio/x-mpeg" - << "audio/x-mpegurl" - << "audio/x-ms-wma" - << "audio/x-musepack" - << "audio/x-oggflac" - << "audio/x-pn-realaudio" - << "audio/x-scpls" - << "audio/x-speex" - << "audio/x-vorbis" - << "audio/x-vorbis+ogg" - << "audio/x-wav" - << "video/x-ms-asf" - << "x-content/audio-player"; + static QStringList res = QStringList() << "application/ogg" + << "application/x-ogg" + << "application/x-ogm-audio" + << "audio/aac" + << "audio/mp4" + << "audio/mpeg" + << "audio/mpegurl" + << "audio/ogg" + << "audio/vnd.rn-realaudio" + << "audio/vorbis" + << "audio/x-flac" + << "audio/x-mp3" + << "audio/x-mpeg" + << "audio/x-mpegurl" + << "audio/x-ms-wma" + << "audio/x-musepack" + << "audio/x-oggflac" + << "audio/x-pn-realaudio" + << "audio/x-scpls" + << "audio/x-speex" + << "audio/x-vorbis" + << "audio/x-vorbis+ogg" + << "audio/x-wav" + << "video/x-ms-asf" + << "x-content/audio-player"; return res; } -void Mpris2::Raise() { - emit RaiseMainWindow(); -} +void Mpris2::Raise() { emit RaiseMainWindow(); } -void Mpris2::Quit() { - qApp->quit(); -} +void Mpris2::Quit() { qApp->quit(); } QString Mpris2::PlaybackStatus() const { return PlaybackStatus(app_->player()->GetState()); @@ -256,9 +244,12 @@ QString Mpris2::PlaybackStatus() const { QString Mpris2::PlaybackStatus(Engine::State state) const { switch (state) { - case Engine::Playing: return "Playing"; - case Engine::Paused: return "Paused"; - default: return "Stopped"; + case Engine::Playing: + return "Playing"; + case Engine::Paused: + return "Paused"; + default: + return "Stopped"; } } @@ -266,12 +257,15 @@ QString Mpris2::LoopStatus() const { if (!app_->playlist_manager()->sequence()) { return "None"; } - + switch (app_->playlist_manager()->sequence()->repeat_mode()) { case PlaylistSequence::Repeat_Album: - case PlaylistSequence::Repeat_Playlist: return "Playlist"; - case PlaylistSequence::Repeat_Track: return "Track"; - default: return "None"; + case PlaylistSequence::Repeat_Playlist: + return "Playlist"; + case PlaylistSequence::Repeat_Track: + return "Track"; + default: + return "None"; } } @@ -289,12 +283,10 @@ void Mpris2::SetLoopStatus(const QString& value) { app_->playlist_manager()->active()->sequence()->SetRepeatMode(mode); } -double Mpris2::Rate() const { - return 1.0; -} +double Mpris2::Rate() const { return 1.0; } void Mpris2::SetRate(double rate) { - if(rate == 0) { + if (rate == 0) { if (mpris1_->player()) { mpris1_->player()->Pause(); } @@ -315,24 +307,20 @@ void Mpris2::SetShuffle(bool value) { } } -QVariantMap Mpris2::Metadata() const { - return last_metadata_; -} +QVariantMap Mpris2::Metadata() const { return last_metadata_; } QString Mpris2::current_track_id() const { if (!mpris1_->tracklist()) { return QString(); } - return QString("/org/mpris/MediaPlayer2/Track/%1").arg( - QString::number(mpris1_->tracklist()->GetCurrentTrack())); + return QString("/org/mpris/MediaPlayer2/Track/%1") + .arg(QString::number(mpris1_->tracklist()->GetCurrentTrack())); } // We send Metadata change notification as soon as the process of // changing song starts... -void Mpris2::CurrentSongChanged(const Song& song) { - ArtLoaded(song, ""); -} +void Mpris2::CurrentSongChanged(const Song& song) { ArtLoaded(song, ""); } // ... and we add the cover information later, when it's available. void Mpris2::ArtLoaded(const Song& song, const QString& art_uri) { @@ -363,21 +351,15 @@ double Mpris2::Volume() const { } } -void Mpris2::SetVolume(double value) { - app_->player()->SetVolume(value * 100); -} +void Mpris2::SetVolume(double value) { app_->player()->SetVolume(value * 100); } qlonglong Mpris2::Position() const { return app_->player()->engine()->position_nanosec() / kNsecPerUsec; } -double Mpris2::MaximumRate() const { - return 1.0; -} +double Mpris2::MaximumRate() const { return 1.0; } -double Mpris2::MinimumRate() const { - return 1.0; -} +double Mpris2::MinimumRate() const { return 1.0; } bool Mpris2::CanGoNext() const { if (mpris1_->player()) { @@ -395,17 +377,14 @@ bool Mpris2::CanGoPrevious() const { } } -bool Mpris2::CanPlay() const { - return mpris1_->player()->GetCaps() & CAN_PLAY; -} +bool Mpris2::CanPlay() const { return mpris1_->player()->GetCaps() & CAN_PLAY; } // This one's a bit different than MPRIS 1 - we want this to be true even when // the song is already paused or stopped. bool Mpris2::CanPause() const { if (mpris1_->player()) { - return mpris1_->player()->GetCaps() & CAN_PAUSE - || PlaybackStatus() == "Paused" - || PlaybackStatus() == "Stopped"; + return mpris1_->player()->GetCaps() & CAN_PAUSE || + PlaybackStatus() == "Paused" || PlaybackStatus() == "Stopped"; } else { return true; } @@ -419,24 +398,22 @@ bool Mpris2::CanSeek() const { } } -bool Mpris2::CanControl() const { - return true; -} +bool Mpris2::CanControl() const { return true; } void Mpris2::Next() { - if(CanGoNext()) { + if (CanGoNext()) { app_->player()->Next(); } } void Mpris2::Previous() { - if(CanGoPrevious()) { + if (CanGoPrevious()) { app_->player()->Previous(); } } void Mpris2::Pause() { - if(CanPause() && app_->player()->GetState() != Engine::Paused) { + if (CanPause() && app_->player()->GetState() != Engine::Paused) { app_->player()->Pause(); } } @@ -447,20 +424,19 @@ void Mpris2::PlayPause() { } } -void Mpris2::Stop() { - app_->player()->Stop(); -} +void Mpris2::Stop() { app_->player()->Stop(); } void Mpris2::Play() { - if(CanPlay()) { + if (CanPlay()) { app_->player()->Play(); } } void Mpris2::Seek(qlonglong offset) { - if(CanSeek()) { - app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / kNsecPerSec + - offset / kUsecPerSec); + if (CanSeek()) { + app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / + kNsecPerSec + + offset / kUsecPerSec); } } @@ -468,7 +444,8 @@ void Mpris2::SetPosition(const QDBusObjectPath& trackId, qlonglong offset) { if (CanSeek() && trackId.path() == current_track_id() && offset >= 0) { offset *= kNsecPerUsec; - if(offset < app_->player()->GetCurrentItem()->Metadata().length_nanosec()) { + if (offset < + app_->player()->GetCurrentItem()->Metadata().length_nanosec()) { app_->player()->SeekTo(offset / kNsecPerSec); } } @@ -481,46 +458,42 @@ void Mpris2::OpenUri(const QString& uri) { } TrackIds Mpris2::Tracks() const { - //TODO + // TODO return TrackIds(); } -bool Mpris2::CanEditTracks() const { - return false; -} +bool Mpris2::CanEditTracks() const { return false; } -TrackMetadata Mpris2::GetTracksMetadata(const TrackIds &tracks) const { - //TODO +TrackMetadata Mpris2::GetTracksMetadata(const TrackIds& tracks) const { + // TODO return TrackMetadata(); } -void Mpris2::AddTrack(const QString &uri, const QDBusObjectPath &afterTrack, bool setAsCurrent) { - //TODO +void Mpris2::AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, + bool setAsCurrent) { + // TODO } -void Mpris2::RemoveTrack(const QDBusObjectPath &trackId) { - //TODO +void Mpris2::RemoveTrack(const QDBusObjectPath& trackId) { + // TODO } -void Mpris2::GoTo(const QDBusObjectPath &trackId) { - //TODO +void Mpris2::GoTo(const QDBusObjectPath& trackId) { + // TODO } quint32 Mpris2::PlaylistCount() const { return app_->playlist_manager()->GetAllPlaylists().size(); } -QStringList Mpris2::Orderings() const { - return QStringList() << "User"; -} +QStringList Mpris2::Orderings() const { return QStringList() << "User"; } namespace { QDBusObjectPath MakePlaylistPath(int id) { - return QDBusObjectPath(QString( - "/org/mpris/MediaPlayer2/Playlists/%1").arg(id)); + return QDBusObjectPath( + QString("/org/mpris/MediaPlayer2/Playlists/%1").arg(id)); } - } MaybePlaylist Mpris2::ActivePlaylist() const { @@ -557,10 +530,11 @@ void Mpris2::ActivatePlaylist(const QDBusObjectPath& playlist_id) { } // TODO: Support sort orders. -MprisPlaylistList Mpris2::GetPlaylists( - quint32 index, quint32 max_count, const QString& order, bool reverse_order) { +MprisPlaylistList Mpris2::GetPlaylists(quint32 index, quint32 max_count, + const QString& order, + bool reverse_order) { MprisPlaylistList ret; - foreach (Playlist* p, app_->playlist_manager()->GetAllPlaylists()) { + foreach(Playlist * p, app_->playlist_manager()->GetAllPlaylists()) { MprisPlaylist mpris_playlist; mpris_playlist.id = MakePlaylistPath(p->id()); mpris_playlist.name = app_->playlist_manager()->GetPlaylistName(p->id()); @@ -577,7 +551,8 @@ MprisPlaylistList Mpris2::GetPlaylists( void Mpris2::PlaylistChanged(Playlist* playlist) { MprisPlaylist mpris_playlist; mpris_playlist.id = MakePlaylistPath(playlist->id()); - mpris_playlist.name = app_->playlist_manager()->GetPlaylistName(playlist->id()); + mpris_playlist.name = + app_->playlist_manager()->GetPlaylistName(playlist->id()); emit PlaylistChanged(mpris_playlist); } @@ -585,4 +560,4 @@ void Mpris2::PlaylistCollectionChanged(Playlist* playlist) { EmitNotification("PlaylistCount", "", "org.mpris.MediaPlayer2.Playlists"); } -} // namespace mpris +} // namespace mpris diff --git a/src/core/mpris2.h b/src/core/mpris2.h index 259ee5e06..1ced809ff 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -47,14 +47,13 @@ struct MaybePlaylist { }; Q_DECLARE_METATYPE(MaybePlaylist); -QDBusArgument& operator<< (QDBusArgument& arg, const MprisPlaylist& playlist); -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MprisPlaylist& playlist); - -QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist); -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MaybePlaylist& playlist); +QDBusArgument& operator<<(QDBusArgument& arg, const MprisPlaylist& playlist); +const QDBusArgument& operator>>(const QDBusArgument& arg, + MprisPlaylist& playlist); +QDBusArgument& operator<<(QDBusArgument& arg, const MaybePlaylist& playlist); +const QDBusArgument& operator>>(const QDBusArgument& arg, + MaybePlaylist& playlist); namespace mpris { @@ -64,44 +63,44 @@ class Mpris2 : public QObject { Q_OBJECT public: - //org.mpris.MediaPlayer2 MPRIS 2.0 Root interface - Q_PROPERTY( bool CanQuit READ CanQuit ) - Q_PROPERTY( bool CanRaise READ CanRaise ) - Q_PROPERTY( bool HasTrackList READ HasTrackList ) - Q_PROPERTY( QString Identity READ Identity ) - Q_PROPERTY( QString DesktopEntry READ DesktopEntry ) - Q_PROPERTY( QStringList SupportedUriSchemes READ SupportedUriSchemes ) - Q_PROPERTY( QStringList SupportedMimeTypes READ SupportedMimeTypes ) + // org.mpris.MediaPlayer2 MPRIS 2.0 Root interface + Q_PROPERTY(bool CanQuit READ CanQuit) + Q_PROPERTY(bool CanRaise READ CanRaise) + Q_PROPERTY(bool HasTrackList READ HasTrackList) + Q_PROPERTY(QString Identity READ Identity) + Q_PROPERTY(QString DesktopEntry READ DesktopEntry) + Q_PROPERTY(QStringList SupportedUriSchemes READ SupportedUriSchemes) + Q_PROPERTY(QStringList SupportedMimeTypes READ SupportedMimeTypes) - //org.mpris.MediaPlayer2 MPRIS 2.2 Root interface - Q_PROPERTY( bool CanSetFullscreen READ CanSetFullscreen ) - Q_PROPERTY( bool Fullscreen READ Fullscreen WRITE SetFullscreen ) + // org.mpris.MediaPlayer2 MPRIS 2.2 Root interface + Q_PROPERTY(bool CanSetFullscreen READ CanSetFullscreen) + Q_PROPERTY(bool Fullscreen READ Fullscreen WRITE SetFullscreen) - //org.mpris.MediaPlayer2.Player MPRIS 2.0 Player interface - Q_PROPERTY( QString PlaybackStatus READ PlaybackStatus ) - Q_PROPERTY( QString LoopStatus READ LoopStatus WRITE SetLoopStatus ) - Q_PROPERTY( double Rate READ Rate WRITE SetRate ) - Q_PROPERTY( bool Shuffle READ Shuffle WRITE SetShuffle ) - Q_PROPERTY( QVariantMap Metadata READ Metadata ) - Q_PROPERTY( double Volume READ Volume WRITE SetVolume ) - Q_PROPERTY( qlonglong Position READ Position ) - Q_PROPERTY( double MinimumRate READ MinimumRate ) - Q_PROPERTY( double MaximumRate READ MaximumRate ) - Q_PROPERTY( bool CanGoNext READ CanGoNext ) - Q_PROPERTY( bool CanGoPrevious READ CanGoPrevious ) - Q_PROPERTY( bool CanPlay READ CanPlay ) - Q_PROPERTY( bool CanPause READ CanPause ) - Q_PROPERTY( bool CanSeek READ CanSeek ) - Q_PROPERTY( bool CanControl READ CanControl ) + // org.mpris.MediaPlayer2.Player MPRIS 2.0 Player interface + Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus) + Q_PROPERTY(QString LoopStatus READ LoopStatus WRITE SetLoopStatus) + Q_PROPERTY(double Rate READ Rate WRITE SetRate) + Q_PROPERTY(bool Shuffle READ Shuffle WRITE SetShuffle) + Q_PROPERTY(QVariantMap Metadata READ Metadata) + Q_PROPERTY(double Volume READ Volume WRITE SetVolume) + Q_PROPERTY(qlonglong Position READ Position) + Q_PROPERTY(double MinimumRate READ MinimumRate) + Q_PROPERTY(double MaximumRate READ MaximumRate) + Q_PROPERTY(bool CanGoNext READ CanGoNext) + Q_PROPERTY(bool CanGoPrevious READ CanGoPrevious) + Q_PROPERTY(bool CanPlay READ CanPlay) + Q_PROPERTY(bool CanPause READ CanPause) + Q_PROPERTY(bool CanSeek READ CanSeek) + Q_PROPERTY(bool CanControl READ CanControl) - //org.mpris.MediaPlayer2.TrackList MPRIS 2.0 Player interface - Q_PROPERTY( TrackIds Tracks READ Tracks ) - Q_PROPERTY( bool CanEditTracks READ CanEditTracks ) + // org.mpris.MediaPlayer2.TrackList MPRIS 2.0 Player interface + Q_PROPERTY(TrackIds Tracks READ Tracks) + Q_PROPERTY(bool CanEditTracks READ CanEditTracks) - //org.mpris.MediaPlayer2.Playlists MPRIS 2.1 Playlists interface - Q_PROPERTY( quint32 PlaylistCount READ PlaylistCount ) - Q_PROPERTY( QStringList Orderings READ Orderings ) - Q_PROPERTY( MaybePlaylist ActivePlaylist READ ActivePlaylist ) + // org.mpris.MediaPlayer2.Playlists MPRIS 2.1 Playlists interface + Q_PROPERTY(quint32 PlaylistCount READ PlaylistCount) + Q_PROPERTY(QStringList Orderings READ Orderings) + Q_PROPERTY(MaybePlaylist ActivePlaylist READ ActivePlaylist) Mpris2(Application* app, Mpris1* mpris1, QObject* parent = 0); @@ -161,7 +160,8 @@ class Mpris2 : public QObject { // Methods TrackMetadata GetTracksMetadata(const TrackIds& tracks) const; - void AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, bool setAsCurrent); + void AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, + bool setAsCurrent); void RemoveTrack(const QDBusObjectPath& trackId); void GoTo(const QDBusObjectPath& trackId); @@ -172,8 +172,8 @@ class Mpris2 : public QObject { // Methods void ActivatePlaylist(const QDBusObjectPath& playlist_id); - QList GetPlaylists( - quint32 index, quint32 max_count, const QString& order, bool reverse_order); + QList GetPlaylists(quint32 index, quint32 max_count, + const QString& order, bool reverse_order); signals: // Player @@ -183,14 +183,15 @@ signals: void TrackListReplaced(const TrackIds& Tracks, QDBusObjectPath CurrentTrack); void TrackAdded(const TrackMetadata& Metadata, QDBusObjectPath AfterTrack); void TrackRemoved(const QDBusObjectPath& trackId); - void TrackMetadataChanged(const QDBusObjectPath& trackId, const TrackMetadata& metadata); + void TrackMetadataChanged(const QDBusObjectPath& trackId, + const TrackMetadata& metadata); void RaiseMainWindow(); // Playlist void PlaylistChanged(const MprisPlaylist& playlist); -private slots: + private slots: void ArtLoaded(const Song& song, const QString& art_uri); void EngineStateChanged(Engine::State newState); void VolumeChanged(); @@ -202,10 +203,11 @@ private slots: void PlaylistChanged(Playlist* playlist); void PlaylistCollectionChanged(Playlist* playlist); -private: + private: void EmitNotification(const QString& name); void EmitNotification(const QString& name, const QVariant& val); - void EmitNotification(const QString& name, const QVariant& val, const QString& mprisEntity); + void EmitNotification(const QString& name, const QVariant& val, + const QString& mprisEntity); QString PlaybackStatus(Engine::State state) const; @@ -213,7 +215,7 @@ private: QString DesktopEntryAbsolutePath() const; -private: + private: static const char* kMprisObjectPath; static const char* kServiceName; static const char* kFreedesktopPath; @@ -224,6 +226,6 @@ private: Mpris1* mpris1_; }; -} // namespace mpris +} // namespace mpris #endif diff --git a/src/core/mpris_common.h b/src/core/mpris_common.h index b65dc7e4d..329010a0d 100644 --- a/src/core/mpris_common.h +++ b/src/core/mpris_common.h @@ -25,34 +25,37 @@ namespace mpris { -inline void AddMetadata(const QString& key, const QString& metadata, QVariantMap* map) { - if (!metadata.isEmpty()) (*map)[key] = metadata; +inline void AddMetadata(const QString& key, const QString& metadata, + QVariantMap* map) { + if (!metadata.isEmpty()) (*map)[key] = metadata; } -inline void AddMetadataAsList(const QString& key, const QString& metadata, QVariantMap* map) { - if (!metadata.isEmpty()) (*map)[key] = QStringList() << metadata; +inline void AddMetadataAsList(const QString& key, const QString& metadata, + QVariantMap* map) { + if (!metadata.isEmpty()) (*map)[key] = QStringList() << metadata; } inline void AddMetadata(const QString& key, int metadata, QVariantMap* map) { - if (metadata > 0) (*map)[key] = metadata; + if (metadata > 0) (*map)[key] = metadata; } inline void AddMetadata(const QString& key, qint64 metadata, QVariantMap* map) { - if (metadata > 0) (*map)[key] = metadata; + if (metadata > 0) (*map)[key] = metadata; } inline void AddMetadata(const QString& key, double metadata, QVariantMap* map) { - if (metadata != 0.0) (*map)[key] = metadata; + if (metadata != 0.0) (*map)[key] = metadata; } -inline void AddMetadata(const QString& key, const QDateTime& metadata, QVariantMap* map) { - if (metadata.isValid()) (*map)[key] = metadata; +inline void AddMetadata(const QString& key, const QDateTime& metadata, + QVariantMap* map) { + if (metadata.isValid()) (*map)[key] = metadata; } inline QString AsMPRISDateTimeType(uint time) { return time != -1 ? QDateTime::fromTime_t(time).toString(Qt::ISODate) : ""; } -} // namespace mpris +} // namespace mpris -#endif // MPRIS_COMMON_H +#endif // MPRIS_COMMON_H diff --git a/src/core/multisortfilterproxy.cpp b/src/core/multisortfilterproxy.cpp index 903e58072..1fb1d92d7 100644 --- a/src/core/multisortfilterproxy.cpp +++ b/src/core/multisortfilterproxy.cpp @@ -6,9 +6,7 @@ #include MultiSortFilterProxy::MultiSortFilterProxy(QObject* parent) - : QSortFilterProxyModel(parent) -{ -} + : QSortFilterProxyModel(parent) {} void MultiSortFilterProxy::AddSortSpec(int role, Qt::SortOrder order) { sorting_ << SortSpec(role, order); @@ -16,7 +14,7 @@ void MultiSortFilterProxy::AddSortSpec(int role, Qt::SortOrder order) { bool MultiSortFilterProxy::lessThan(const QModelIndex& left, const QModelIndex& right) const { - foreach (const SortSpec& spec, sorting_) { + foreach(const SortSpec & spec, sorting_) { const int ret = Compare(left.data(spec.first), right.data(spec.first)); if (ret < 0) { @@ -31,29 +29,38 @@ bool MultiSortFilterProxy::lessThan(const QModelIndex& left, template static inline int DoCompare(T left, T right) { - if (left < right) - return -1; - if (left > right) - return 1; + if (left < right) return -1; + if (left > right) return 1; return 0; } -int MultiSortFilterProxy::Compare(const QVariant& left, const QVariant& right) const { +int MultiSortFilterProxy::Compare(const QVariant& left, + const QVariant& right) const { // Copied from the QSortFilterProxyModel::lessThan implementation, but returns // -1, 0 or 1 instead of true or false. switch (left.userType()) { case QVariant::Invalid: return (right.type() != QVariant::Invalid) ? -1 : 0; - case QVariant::Int: return DoCompare(left.toInt(), right.toInt()); - case QVariant::UInt: return DoCompare(left.toUInt(), right.toUInt()); - case QVariant::LongLong: return DoCompare(left.toLongLong(), right.toLongLong()); - case QVariant::ULongLong: return DoCompare(left.toULongLong(), right.toULongLong()); - case QMetaType::Float: return DoCompare(left.toFloat(), right.toFloat()); - case QVariant::Double: return DoCompare(left.toDouble(), right.toDouble()); - case QVariant::Char: return DoCompare(left.toChar(), right.toChar()); - case QVariant::Date: return DoCompare(left.toDate(), right.toDate()); - case QVariant::Time: return DoCompare(left.toTime(), right.toTime()); - case QVariant::DateTime: return DoCompare(left.toDateTime(), right.toDateTime()); + case QVariant::Int: + return DoCompare(left.toInt(), right.toInt()); + case QVariant::UInt: + return DoCompare(left.toUInt(), right.toUInt()); + case QVariant::LongLong: + return DoCompare(left.toLongLong(), right.toLongLong()); + case QVariant::ULongLong: + return DoCompare(left.toULongLong(), right.toULongLong()); + case QMetaType::Float: + return DoCompare(left.toFloat(), right.toFloat()); + case QVariant::Double: + return DoCompare(left.toDouble(), right.toDouble()); + case QVariant::Char: + return DoCompare(left.toChar(), right.toChar()); + case QVariant::Date: + return DoCompare(left.toDate(), right.toDate()); + case QVariant::Time: + return DoCompare(left.toTime(), right.toTime()); + case QVariant::DateTime: + return DoCompare(left.toDateTime(), right.toDateTime()); case QVariant::String: default: if (isSortLocaleAware()) diff --git a/src/core/multisortfilterproxy.h b/src/core/multisortfilterproxy.h index edc4dd3d3..9bc98107a 100644 --- a/src/core/multisortfilterproxy.h +++ b/src/core/multisortfilterproxy.h @@ -4,19 +4,19 @@ #include class MultiSortFilterProxy : public QSortFilterProxyModel { -public: + public: MultiSortFilterProxy(QObject* parent = NULL); void AddSortSpec(int role, Qt::SortOrder order = Qt::AscendingOrder); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; -private: + private: int Compare(const QVariant& left, const QVariant& right) const; typedef QPair SortSpec; QList sorting_; }; -#endif // MULTISORTFILTERPROXY_H +#endif // MULTISORTFILTERPROXY_H diff --git a/src/core/musicstorage.cpp b/src/core/musicstorage.cpp index e6a23906a..9c76bdfd4 100644 --- a/src/core/musicstorage.cpp +++ b/src/core/musicstorage.cpp @@ -17,6 +17,4 @@ #include "musicstorage.h" -MusicStorage::MusicStorage() -{ -} +MusicStorage::MusicStorage() {} diff --git a/src/core/musicstorage.h b/src/core/musicstorage.h index 4127c9304..dc6655aa5 100644 --- a/src/core/musicstorage.h +++ b/src/core/musicstorage.h @@ -26,7 +26,7 @@ #include class MusicStorage { -public: + public: MusicStorage(); virtual ~MusicStorage() {} @@ -44,7 +44,7 @@ public: Transcode_Unsupported = 3, }; - typedef std::function ProgressFunction; + typedef std::function ProgressFunction; struct CopyJob { QString source_; @@ -62,10 +62,16 @@ public: virtual QString LocalPath() const { return QString(); } virtual TranscodeMode GetTranscodeMode() const { return Transcode_Never; } - virtual Song::FileType GetTranscodeFormat() const { return Song::Type_Unknown; } - virtual bool GetSupportedFiletypes(QList* ret) { return true; } + virtual Song::FileType GetTranscodeFormat() const { + return Song::Type_Unknown; + } + virtual bool GetSupportedFiletypes(QList* ret) { + return true; + } - virtual bool StartCopy(QList* supported_types) { return true;} + virtual bool StartCopy(QList* supported_types) { + return true; + } virtual bool CopyToStorage(const CopyJob& job) = 0; virtual void FinishCopy(bool success) {} @@ -79,4 +85,4 @@ public: Q_DECLARE_METATYPE(MusicStorage*); Q_DECLARE_METATYPE(std::shared_ptr); -#endif // MUSICSTORAGE_H +#endif // MUSICSTORAGE_H diff --git a/src/core/network.cpp b/src/core/network.cpp index 4015b8b20..bd315ba3d 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -29,12 +29,12 @@ QMutex ThreadSafeNetworkDiskCache::sMutex; QNetworkDiskCache* ThreadSafeNetworkDiskCache::sCache = nullptr; - ThreadSafeNetworkDiskCache::ThreadSafeNetworkDiskCache(QObject* parent) { QMutexLocker l(&sMutex); if (!sCache) { sCache = new QNetworkDiskCache; - sCache->setCacheDirectory(Utilities::GetConfigPath(Utilities::Path_NetworkCache)); + sCache->setCacheDirectory( + Utilities::GetConfigPath(Utilities::Path_NetworkCache)); } } @@ -58,7 +58,8 @@ QNetworkCacheMetaData ThreadSafeNetworkDiskCache::metaData(const QUrl& url) { return sCache->metaData(url); } -QIODevice* ThreadSafeNetworkDiskCache::prepare(const QNetworkCacheMetaData& metaData) { +QIODevice* ThreadSafeNetworkDiskCache::prepare( + const QNetworkCacheMetaData& metaData) { QMutexLocker l(&sMutex); return sCache->prepare(metaData); } @@ -68,7 +69,8 @@ bool ThreadSafeNetworkDiskCache::remove(const QUrl& url) { return sCache->remove(url); } -void ThreadSafeNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData& metaData) { +void ThreadSafeNetworkDiskCache::updateMetaData( + const QNetworkCacheMetaData& metaData) { QMutexLocker l(&sMutex); sCache->updateMetaData(metaData); } @@ -78,18 +80,17 @@ void ThreadSafeNetworkDiskCache::clear() { sCache->clear(); } - NetworkAccessManager::NetworkAccessManager(QObject* parent) - : QNetworkAccessManager(parent) -{ + : QNetworkAccessManager(parent) { setCache(new ThreadSafeNetworkDiskCache(this)); } QNetworkReply* NetworkAccessManager::createRequest( Operation op, const QNetworkRequest& request, QIODevice* outgoingData) { - QByteArray user_agent = QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()).toUtf8(); + QByteArray user_agent = QString("%1 %2") + .arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()) + .toUtf8(); if (request.hasRawHeader("User-Agent")) { // Append the existing user-agent set by a client library (such as @@ -107,8 +108,8 @@ QNetworkReply* NetworkAccessManager::createRequest( } // Prefer the cache unless the caller has changed the setting already - if (request.attribute(QNetworkRequest::CacheLoadControlAttribute).toInt() - == QNetworkRequest::PreferNetwork) { + if (request.attribute(QNetworkRequest::CacheLoadControlAttribute).toInt() == + QNetworkRequest::PreferNetwork) { new_request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); } @@ -116,14 +117,11 @@ QNetworkReply* NetworkAccessManager::createRequest( return QNetworkAccessManager::createRequest(op, new_request, outgoingData); } - NetworkTimeouts::NetworkTimeouts(int timeout_msec, QObject* parent) - : timeout_msec_(timeout_msec) { -} + : timeout_msec_(timeout_msec) {} void NetworkTimeouts::AddReply(QNetworkReply* reply) { - if (timers_.contains(reply)) - return; + if (timers_.contains(reply)) return; connect(reply, SIGNAL(destroyed()), SLOT(ReplyFinished())); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); @@ -167,25 +165,29 @@ void NetworkTimeouts::timerEvent(QTimerEvent* e) { } } - -RedirectFollower::RedirectFollower(QNetworkReply* first_reply, int max_redirects) - : QObject(nullptr), - current_reply_(first_reply), - redirects_remaining_(max_redirects) { +RedirectFollower::RedirectFollower(QNetworkReply* first_reply, + int max_redirects) + : QObject(nullptr), + current_reply_(first_reply), + redirects_remaining_(max_redirects) { ConnectReply(first_reply); } void RedirectFollower::ConnectReply(QNetworkReply* reply) { connect(reply, SIGNAL(readyRead()), SLOT(ReadyRead())); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SIGNAL(error(QNetworkReply::NetworkError))); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SIGNAL(downloadProgress(qint64,qint64))); - connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SIGNAL(uploadProgress(qint64,qint64))); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), + SIGNAL(error(QNetworkReply::NetworkError))); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SIGNAL(downloadProgress(qint64, qint64))); + connect(reply, SIGNAL(uploadProgress(qint64, qint64)), + SIGNAL(uploadProgress(qint64, qint64))); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); } void RedirectFollower::ReadyRead() { // Don't re-emit this signal for redirect replies. - if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { + if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .isValid()) { return; } @@ -195,14 +197,16 @@ void RedirectFollower::ReadyRead() { void RedirectFollower::ReplyFinished() { current_reply_->deleteLater(); - if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { + if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .isValid()) { if (redirects_remaining_-- == 0) { emit finished(); return; } const QUrl next_url = current_reply_->url().resolved( - current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .toUrl()); QNetworkRequest req(current_reply_->request()); req.setUrl(next_url); diff --git a/src/core/network.h b/src/core/network.h index d5f7f4cd4..588e84f69 100644 --- a/src/core/network.h +++ b/src/core/network.h @@ -26,7 +26,7 @@ class QNetworkDiskCache; class ThreadSafeNetworkDiskCache : public QAbstractNetworkCache { -public: + public: ThreadSafeNetworkDiskCache(QObject* parent); qint64 cacheSize() const; @@ -39,28 +39,26 @@ public: void clear(); -private: + private: static QMutex sMutex; static QNetworkDiskCache* sCache; }; - class NetworkAccessManager : public QNetworkAccessManager { Q_OBJECT -public: + public: NetworkAccessManager(QObject* parent = 0); -protected: + protected: QNetworkReply* createRequest(Operation op, const QNetworkRequest& request, QIODevice* outgoingData); }; - class RedirectFollower : public QObject { Q_OBJECT -public: + public: RedirectFollower(QNetworkReply* first_reply, int max_redirects = 5); bool hit_redirect_limit() const { return redirects_remaining_ < 0; } @@ -69,8 +67,12 @@ public: // These are all forwarded to the current reply. QNetworkReply::NetworkError error() const { return current_reply_->error(); } QString errorString() const { return current_reply_->errorString(); } - QVariant attribute(QNetworkRequest::Attribute code) const { return current_reply_->attribute(code); } - QVariant header(QNetworkRequest::KnownHeaders header) const { return current_reply_->header(header); } + QVariant attribute(QNetworkRequest::Attribute code) const { + return current_reply_->attribute(code); + } + QVariant header(QNetworkRequest::KnownHeaders header) const { + return current_reply_->header(header); + } qint64 bytesAvailable() const { return current_reply_->bytesAvailable(); } QUrl url() const { return current_reply_->url(); } QByteArray readAll() { return current_reply_->readAll(); } @@ -86,23 +88,22 @@ signals: // This is NOT emitted when a request that has a redirect finishes. void finished(); -private slots: + private slots: void ReadyRead(); void ReplyFinished(); -private: + private: void ConnectReply(QNetworkReply* reply); -private: + private: QNetworkReply* current_reply_; int redirects_remaining_; }; - class NetworkTimeouts : public QObject { Q_OBJECT -public: + public: NetworkTimeouts(int timeout_msec, QObject* parent = 0); // TODO: Template this to avoid code duplication. @@ -110,17 +111,17 @@ public: void AddReply(RedirectFollower* reply); void SetTimeout(int msec) { timeout_msec_ = msec; } -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ReplyFinished(); void RedirectFinished(RedirectFollower* redirect); -private: + private: int timeout_msec_; QMap timers_; QMap redirect_timers_; }; -#endif // NETWORK_H +#endif // NETWORK_H diff --git a/src/core/networkproxyfactory.cpp b/src/core/networkproxyfactory.cpp index 095462b0a..518029f7a 100644 --- a/src/core/networkproxyfactory.cpp +++ b/src/core/networkproxyfactory.cpp @@ -12,11 +12,10 @@ NetworkProxyFactory* NetworkProxyFactory::sInstance = nullptr; const char* NetworkProxyFactory::kSettingsGroup = "Proxy"; NetworkProxyFactory::NetworkProxyFactory() - : mode_(Mode_System), - type_(QNetworkProxy::HttpProxy), - port_(8080), - use_authentication_(false) -{ + : mode_(Mode_System), + type_(QNetworkProxy::HttpProxy), + port_(8080), + use_authentication_(false) { #ifdef Q_OS_LINUX // Linux uses environment variables to pass proxy configuration information, // which systemProxyForQuery doesn't support for some reason. @@ -29,9 +28,8 @@ NetworkProxyFactory::NetworkProxyFactory() qLog(Debug) << "Detected system proxy URLs:" << urls; - foreach (const QString& url_str, urls) { - if (url_str.isEmpty()) - continue; + foreach(const QString & url_str, urls) { + if (url_str.isEmpty()) continue; env_url_ = QUrl(url_str); break; @@ -56,7 +54,8 @@ void NetworkProxyFactory::ReloadSettings() { s.beginGroup(kSettingsGroup); mode_ = Mode(s.value("mode", Mode_System).toInt()); - type_ = QNetworkProxy::ProxyType(s.value("type", QNetworkProxy::HttpProxy).toInt()); + type_ = QNetworkProxy::ProxyType( + s.value("type", QNetworkProxy::HttpProxy).toInt()); hostname_ = s.value("hostname").toString(); port_ = s.value("port", 8080).toInt(); use_authentication_ = s.value("use_authentication", false).toBool(); @@ -71,41 +70,41 @@ QList NetworkProxyFactory::queryProxy( QNetworkProxy ret; switch (mode_) { - case Mode_System: + case Mode_System: #ifdef Q_OS_LINUX - Q_UNUSED(query); + Q_UNUSED(query); - if (env_url_.isEmpty()) { - ret.setType(QNetworkProxy::NoProxy); - } else { - ret.setHostName(env_url_.host()); - ret.setPort(env_url_.port()); - ret.setUser(env_url_.userName()); - ret.setPassword(env_url_.password()); - if (env_url_.scheme().startsWith("http")) - ret.setType(QNetworkProxy::HttpProxy); - else - ret.setType(QNetworkProxy::Socks5Proxy); - qLog(Debug) << "Using proxy URL:" << env_url_; - } - break; + if (env_url_.isEmpty()) { + ret.setType(QNetworkProxy::NoProxy); + } else { + ret.setHostName(env_url_.host()); + ret.setPort(env_url_.port()); + ret.setUser(env_url_.userName()); + ret.setPassword(env_url_.password()); + if (env_url_.scheme().startsWith("http")) + ret.setType(QNetworkProxy::HttpProxy); + else + ret.setType(QNetworkProxy::Socks5Proxy); + qLog(Debug) << "Using proxy URL:" << env_url_; + } + break; #else - return systemProxyForQuery(query); + return systemProxyForQuery(query); #endif - case Mode_Direct: - ret.setType(QNetworkProxy::NoProxy); - break; + case Mode_Direct: + ret.setType(QNetworkProxy::NoProxy); + break; - case Mode_Manual: - ret.setType(type_); - ret.setHostName(hostname_); - ret.setPort(port_); - if (use_authentication_) { - ret.setUser(username_); - ret.setPassword(password_); - } - break; + case Mode_Manual: + ret.setType(type_); + ret.setHostName(hostname_); + ret.setPort(port_); + if (use_authentication_) { + ret.setUser(username_); + ret.setPassword(password_); + } + break; } return QList() << ret; diff --git a/src/core/networkproxyfactory.h b/src/core/networkproxyfactory.h index 78030e772..882f0554b 100644 --- a/src/core/networkproxyfactory.h +++ b/src/core/networkproxyfactory.h @@ -6,13 +6,9 @@ #include class NetworkProxyFactory : public QNetworkProxyFactory { -public: + public: // These values are persisted - enum Mode { - Mode_System = 0, - Mode_Direct = 1, - Mode_Manual = 2, - }; + enum Mode { Mode_System = 0, Mode_Direct = 1, Mode_Manual = 2, }; static NetworkProxyFactory* Instance(); static const char* kSettingsGroup; @@ -21,7 +17,7 @@ public: void ReloadSettings(); QList queryProxy(const QNetworkProxyQuery& query); -private: + private: NetworkProxyFactory(); static NetworkProxyFactory* sInstance; @@ -41,4 +37,4 @@ private: #endif }; -#endif // NETWORKPROXYFACTORY_H +#endif // NETWORKPROXYFACTORY_H diff --git a/src/core/organise.cpp b/src/core/organise.cpp index b46583b2f..6f18417f6 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -38,23 +38,22 @@ const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, std::shared_ptr destination, - const OrganiseFormat &format, bool copy, bool overwrite, + const OrganiseFormat& format, bool copy, bool overwrite, const NewSongInfoList& songs_info, bool eject_after) - : thread_(nullptr), - task_manager_(task_manager), - transcoder_(new Transcoder(this)), - destination_(destination), - format_(format), - copy_(copy), - overwrite_(overwrite), - eject_after_(eject_after), - task_count_(songs_info.count()), - transcode_suffix_(1), - tasks_complete_(0), - started_(false), - task_id_(0), - current_copy_progress_(0) -{ + : thread_(nullptr), + task_manager_(task_manager), + transcoder_(new Transcoder(this)), + destination_(destination), + format_(format), + copy_(copy), + overwrite_(overwrite), + eject_after_(eject_after), + task_count_(songs_info.count()), + transcode_suffix_(1), + tasks_complete_(0), + started_(false), + task_id_(0), + current_copy_progress_(0) { original_thread_ = thread(); for (const NewSongInfo& song_info : songs_info) { @@ -63,15 +62,15 @@ Organise::Organise(TaskManager* task_manager, } void Organise::Start() { - if (thread_) - return; + if (thread_) return; task_id_ = task_manager_->StartTask(tr("Organising files")); task_manager_->SetTaskBlocksLibraryScans(true); thread_ = new QThread; connect(thread_, SIGNAL(started()), SLOT(ProcessSomeFiles())); - connect(transcoder_, SIGNAL(JobComplete(QString, bool)), SLOT(FileTranscoded(QString, bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), + SLOT(FileTranscoded(QString, bool))); moveToThread(thread_); thread_->start(); @@ -102,8 +101,7 @@ void Organise::ProcessSomeFiles() { UpdateProgress(); destination_->FinishCopy(files_with_errors_.isEmpty()); - if (eject_after_) - destination_->Eject(); + if (eject_after_) destination_->Eject(); task_manager_->SetTaskFinished(task_id_); @@ -123,16 +121,14 @@ void Organise::ProcessSomeFiles() { for (int i = 0; i < kBatchSize; ++i) { SetSongProgress(0); - if (tasks_pending_.isEmpty()) - break; + if (tasks_pending_.isEmpty()) break; Task task = tasks_pending_.takeFirst(); qLog(Info) << "Processing" << task.song_info_.song_.url().toLocalFile(); // Use a Song instead of a tag reader Song song = task.song_info_.song_; - if (!song.is_valid()) - continue; + if (!song.is_valid()) continue; // Maybe this file is one that's been transcoded already? if (!task.transcoded_filename_.isEmpty()) { @@ -142,10 +138,13 @@ void Organise::ProcessSomeFiles() { song.set_filetype(task.new_filetype_); // Fiddle the filename extension as well to match the new type - song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_))); - song.set_basefilename(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_)); + song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension( + song.basefilename(), task.new_extension_))); + song.set_basefilename(Utilities::FiddleFileExtension( + song.basefilename(), task.new_extension_)); - // Have to set this to the size of the new file or else funny stuff happens + // Have to set this to the size of the new file or else funny stuff + // happens song.set_filesize(QFileInfo(task.transcoded_filename_).size()); } else { // Figure out if we need to transcode it @@ -167,21 +166,23 @@ void Organise::ProcessSomeFiles() { // Start the transcoding - this will happen in the background and // FileTranscoded() will get called when it's done. At that point the // task will get re-added to the pending queue with the new filename. - transcoder_->AddJob(task.song_info_.song_.url().toLocalFile(), preset, task.transcoded_filename_); + transcoder_->AddJob(task.song_info_.song_.url().toLocalFile(), preset, + task.transcoded_filename_); transcoder_->Start(); continue; } } MusicStorage::CopyJob job; - job.source_ = task.transcoded_filename_.isEmpty() ? - task.song_info_.song_.url().toLocalFile() : task.transcoded_filename_; + job.source_ = task.transcoded_filename_.isEmpty() + ? task.song_info_.song_.url().toLocalFile() + : task.transcoded_filename_; job.destination_ = task.song_info_.new_filename_; job.metadata_ = song; job.overwrite_ = overwrite_; job.remove_original_ = !copy_; - job.progress_ = std::bind(&Organise::SetSongProgress, - this, _1, !task.transcoded_filename_.isEmpty()); + job.progress_ = std::bind(&Organise::SetSongProgress, this, _1, + !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { files_with_errors_ << task.song_info_.song_.basefilename(); @@ -199,8 +200,7 @@ void Organise::ProcessSomeFiles() { } Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { - if (original_type == Song::Type_Stream) - return Song::Type_Unknown; + if (original_type == Song::Type_Stream) return Song::Type_Unknown; const MusicStorage::TranscodeMode mode = destination_->GetTranscodeMode(); const Song::FileType format = destination_->GetTranscodeFormat(); @@ -210,16 +210,15 @@ Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { return Song::Type_Unknown; case MusicStorage::Transcode_Always: - if (original_type == format) - return Song::Type_Unknown; + if (original_type == format) return Song::Type_Unknown; return format; case MusicStorage::Transcode_Unsupported: - if (supported_filetypes_.isEmpty() || supported_filetypes_.contains(original_type)) + if (supported_filetypes_.isEmpty() || + supported_filetypes_.contains(original_type)) return Song::Type_Unknown; - if (format != Song::Type_Unknown) - return format; + if (format != Song::Type_Unknown) return format; // The user hasn't visited the device properties page yet to set a // preferred format for the device, so we have to pick the best @@ -232,7 +231,7 @@ Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { void Organise::SetSongProgress(float progress, bool transcoded) { const int max = transcoded ? 50 : 100; current_copy_progress_ = (transcoded ? 50 : 0) + - qBound(0, static_cast(progress * max), max-1); + qBound(0, static_cast(progress * max), max - 1); UpdateProgress(); } @@ -242,9 +241,9 @@ void Organise::UpdateProgress() { // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); for (const QString& filename : transcode_progress.keys()) { - if (!tasks_transcoding_.contains(filename)) - continue; - tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; + if (!tasks_transcoding_.contains(filename)) continue; + tasks_transcoding_[filename].transcode_progress_ = + transcode_progress[filename]; } // Count the progress of all tasks that are in the queue. Files that need diff --git a/src/core/organise.h b/src/core/organise.h index eba134750..9961c8be8 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -33,18 +33,17 @@ class TaskManager; class Organise : public QObject { Q_OBJECT -public: - + public: struct NewSongInfo { - NewSongInfo(const Song& song = Song(), const QString& new_filename = QString()) - : song_(song), new_filename_(new_filename) {} + NewSongInfo(const Song& song = Song(), + const QString& new_filename = QString()) + : song_(song), new_filename_(new_filename) {} Song song_; QString new_filename_; }; typedef QList NewSongInfoList; - Organise(TaskManager* task_manager, - std::shared_ptr destination, + Organise(TaskManager* task_manager, std::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, const NewSongInfoList& songs, bool eject_after); @@ -56,22 +55,22 @@ public: signals: void Finished(const QStringList& files_with_errors); -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ProcessSomeFiles(); void FileTranscoded(const QString& filename, bool success); -private: + private: void SetSongProgress(float progress, bool transcoded = false); void UpdateProgress(); Song::FileType CheckTranscode(Song::FileType original_type) const; -private: + private: struct Task { explicit Task(const NewSongInfo& song_info = NewSongInfo()) - : song_info_(song_info), transcode_progress_(0.0) {} + : song_info_(song_info), transcode_progress_(0.0) {} NewSongInfo song_info_; @@ -110,4 +109,4 @@ private: QStringList files_with_errors_; }; -#endif // ORGANISE_H +#endif // ORGANISE_H diff --git a/src/core/organiseformat.cpp b/src/core/organiseformat.cpp index e8be2030a..b0e650c10 100644 --- a/src/core/organiseformat.cpp +++ b/src/core/organiseformat.cpp @@ -27,11 +27,24 @@ const char* OrganiseFormat::kTagPattern = "\\%([a-zA-Z]*)"; const char* OrganiseFormat::kBlockPattern = "\\{([^{}]+)\\}"; -const QStringList OrganiseFormat::kKnownTags = QStringList() - << "title" << "album" << "artist" << "artistinitial" << "albumartist" - << "composer" << "track" << "disc" << "bpm" << "year" << "genre" - << "comment" << "length" << "bitrate" << "samplerate" << "extension" - << "performer" << "grouping"; +const QStringList OrganiseFormat::kKnownTags = QStringList() << "title" + << "album" + << "artist" + << "artistinitial" + << "albumartist" + << "composer" + << "track" + << "disc" + << "bpm" + << "year" + << "genre" + << "comment" + << "length" + << "bitrate" + << "samplerate" + << "extension" + << "performer" + << "grouping"; // From http://en.wikipedia.org/wiki/8.3_filename#Directory_table const char* OrganiseFormat::kInvalidFatCharacters = "\"*/\\:<>?|"; @@ -52,14 +65,13 @@ const QRgb OrganiseFormat::SyntaxHighlighter::kInvalidTagColorDark = const QRgb OrganiseFormat::SyntaxHighlighter::kBlockColorDark = qRgb(64, 64, 64); -OrganiseFormat::OrganiseFormat(const QString &format) - : format_(format), - replace_non_ascii_(false), - replace_spaces_(false), - replace_the_(false) { -} +OrganiseFormat::OrganiseFormat(const QString& format) + : format_(format), + replace_non_ascii_(false), + replace_spaces_(false), + replace_the_(false) {} -void OrganiseFormat::set_format(const QString &v) { +void OrganiseFormat::set_format(const QString& v) { format_ = v; format_.replace('\\', '/'); } @@ -72,23 +84,24 @@ bool OrganiseFormat::IsValid() const { return v.validate(format_copy, pos) == QValidator::Acceptable; } -QString OrganiseFormat::GetFilenameForSong(const Song &song) const { +QString OrganiseFormat::GetFilenameForSong(const Song& song) const { QString filename = ParseBlock(format_, song); if (QFileInfo(filename).completeBaseName().isEmpty()) { // Avoid having empty filenames, or filenames with extension only: in this // case, keep the original filename. - // We remove the extension from "filename" if it exists, as song.basefilename() + // We remove the extension from "filename" if it exists, as + // song.basefilename() // also contains the extension. - filename = Utilities::PathWithoutFilenameExtension(filename) + song.basefilename(); + filename = + Utilities::PathWithoutFilenameExtension(filename) + song.basefilename(); } - if (replace_spaces_) - filename.replace(QRegExp("\\s"), "_"); + if (replace_spaces_) filename.replace(QRegExp("\\s"), "_"); if (replace_non_ascii_) { QString stripped; - for (int i = 0 ; i < filename.length(); ++i) { + for (int i = 0; i < filename.length(); ++i) { const QCharRef c = filename[i]; if (c < 128) { stripped.append(c); @@ -117,8 +130,7 @@ QString OrganiseFormat::ParseBlock(QString block, const Song& song, // Recursively parse the block bool empty = false; QString value = ParseBlock(block_regexp.cap(1), song, &empty); - if (empty) - value = ""; + if (empty) value = ""; // Replace the block's value block.replace(pos, block_regexp.matchedLength(), value); @@ -130,89 +142,95 @@ QString OrganiseFormat::ParseBlock(QString block, const Song& song, pos = 0; while ((pos = tag_regexp.indexIn(block, pos)) != -1) { QString value = TagValue(tag_regexp.cap(1), song); - if (value.isEmpty()) - empty = true; + if (value.isEmpty()) empty = true; block.replace(pos, tag_regexp.matchedLength(), value); pos += value.length(); } - if (any_empty) - *any_empty = empty; + if (any_empty) *any_empty = empty; return block; } -QString OrganiseFormat::TagValue(const QString &tag, const Song &song) const { +QString OrganiseFormat::TagValue(const QString& tag, const Song& song) const { QString value; - if (tag == "title") value = song.title(); - else if (tag == "album") value = song.album(); - else if (tag == "artist") value = song.artist(); - else if (tag == "composer") value = song.composer(); - else if (tag == "performer") value = song.performer(); - else if (tag == "grouping") value = song.grouping(); - else if (tag == "genre") value = song.genre(); - else if (tag == "comment") value = song.comment(); - else if (tag == "year") value = QString::number(song.year()); - else if (tag == "track") value = QString::number(song.track()); - else if (tag == "disc") value = QString::number(song.disc()); - else if (tag == "bpm") value = QString::number(song.bpm()); - else if (tag == "length") value = - QString::number(song.length_nanosec() / kNsecPerSec); - else if (tag == "bitrate") value = QString::number(song.bitrate()); - else if (tag == "samplerate") value = QString::number(song.samplerate()); - else if (tag == "extension") value = QFileInfo(song.url().toLocalFile()).suffix(); + if (tag == "title") + value = song.title(); + else if (tag == "album") + value = song.album(); + else if (tag == "artist") + value = song.artist(); + else if (tag == "composer") + value = song.composer(); + else if (tag == "performer") + value = song.performer(); + else if (tag == "grouping") + value = song.grouping(); + else if (tag == "genre") + value = song.genre(); + else if (tag == "comment") + value = song.comment(); + else if (tag == "year") + value = QString::number(song.year()); + else if (tag == "track") + value = QString::number(song.track()); + else if (tag == "disc") + value = QString::number(song.disc()); + else if (tag == "bpm") + value = QString::number(song.bpm()); + else if (tag == "length") + value = QString::number(song.length_nanosec() / kNsecPerSec); + else if (tag == "bitrate") + value = QString::number(song.bitrate()); + else if (tag == "samplerate") + value = QString::number(song.samplerate()); + else if (tag == "extension") + value = QFileInfo(song.url().toLocalFile()).suffix(); else if (tag == "artistinitial") { value = song.effective_albumartist().trimmed(); if (replace_the_ && !value.isEmpty()) value.replace(QRegExp("^the\\s+", Qt::CaseInsensitive), ""); if (!value.isEmpty()) value = value[0].toUpper(); } else if (tag == "albumartist") { - value = song.is_compilation() - ? "Various Artists" - : song.effective_albumartist(); + value = song.is_compilation() ? "Various Artists" + : song.effective_albumartist(); } if (replace_the_ && (tag == "artist" || tag == "albumartist")) value.replace(QRegExp("^the\\s+", Qt::CaseInsensitive), ""); - if (value == "0" || value == "-1") - value = ""; + if (value == "0" || value == "-1") value = ""; // Prepend a 0 to single-digit track numbers - if (tag == "track" && value.length() == 1) - value.prepend('0'); + if (tag == "track" && value.length() == 1) value.prepend('0'); // Replace characters that really shouldn't be in paths - for (int i = 0 ; i < kInvalidFatCharactersCount; ++i) { + for (int i = 0; i < kInvalidFatCharactersCount; ++i) { value.replace(kInvalidFatCharacters[i], '_'); } return value; } +OrganiseFormat::Validator::Validator(QObject* parent) : QValidator(parent) {} -OrganiseFormat::Validator::Validator(QObject *parent) - : QValidator(parent) {} - -QValidator::State OrganiseFormat::Validator::validate( - QString& input, int&) const { +QValidator::State OrganiseFormat::Validator::validate(QString& input, + int&) const { QRegExp tag_regexp(kTagPattern); // Make sure all the blocks match up int block_level = 0; - for (int i = 0 ; i < input.length(); ++i) { + for (int i = 0; i < input.length(); ++i) { if (input[i] == '{') block_level++; else if (input[i] == '}') block_level--; - if (block_level < 0 || block_level > 1) - return QValidator::Invalid; + if (block_level < 0 || block_level > 1) return QValidator::Invalid; } - if (block_level != 0) - return QValidator::Invalid; + if (block_level != 0) return QValidator::Invalid; // Make sure the tags are valid int pos = 0; @@ -226,15 +244,14 @@ QValidator::State OrganiseFormat::Validator::validate( return QValidator::Acceptable; } - -OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QObject *parent) - : QSyntaxHighlighter(parent) {} +OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QObject* parent) + : QSyntaxHighlighter(parent) {} OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QTextEdit* parent) - : QSyntaxHighlighter(parent) {} + : QSyntaxHighlighter(parent) {} OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QTextDocument* parent) - : QSyntaxHighlighter(parent) {} + : QSyntaxHighlighter(parent) {} void OrganiseFormat::SyntaxHighlighter::highlightBlock(const QString& text) { const bool light = @@ -267,11 +284,10 @@ void OrganiseFormat::SyntaxHighlighter::highlightBlock(const QString& text) { QTextCharFormat f = format(pos); f.setForeground( QColor(OrganiseFormat::kKnownTags.contains(tag_regexp.cap(1)) - ? valid_tag_color - : invalid_tag_color)); + ? valid_tag_color + : invalid_tag_color)); setFormat(pos, tag_regexp.matchedLength(), f); pos += tag_regexp.matchedLength(); } } - diff --git a/src/core/organiseformat.h b/src/core/organiseformat.h index 65c60ebbc..2b4f3febe 100644 --- a/src/core/organiseformat.h +++ b/src/core/organiseformat.h @@ -46,7 +46,6 @@ class OrganiseFormat { bool IsValid() const; QString GetFilenameForSong(const Song& song) const; - class Validator : public QValidator { public: explicit Validator(QObject* parent = 0); @@ -69,8 +68,8 @@ class OrganiseFormat { }; private: - QString ParseBlock( - QString block, const Song& song, bool* any_empty = NULL) const; + QString ParseBlock(QString block, const Song& song, + bool* any_empty = NULL) const; QString TagValue(const QString& tag, const Song& song) const; QString format_; diff --git a/src/core/player.cpp b/src/core/player.cpp index 86990b115..269272021 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -35,43 +35,43 @@ #include "playlist/playlistmanager.h" #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif using std::shared_ptr; Player::Player(Application* app, QObject* parent) - : PlayerInterface(parent), - app_(app), - lastfm_(nullptr), - engine_(new GstEngine(app_->task_manager())), - stream_change_type_(Engine::First), - last_state_(Engine::Empty), - nb_errors_received_(0), - volume_before_mute_(50) -{ + : PlayerInterface(parent), + app_(app), + lastfm_(nullptr), + engine_(new GstEngine(app_->task_manager())), + stream_change_type_(Engine::First), + last_state_(Engine::Empty), + nb_errors_received_(0), + volume_before_mute_(50) { settings_.beginGroup("Player"); SetVolume(settings_.value("volume", 50).toInt()); connect(engine_.get(), SIGNAL(Error(QString)), SIGNAL(Error(QString))); - connect(engine_.get(), SIGNAL(ValidSongRequested(QUrl)), SLOT(ValidSongRequested(QUrl))); - connect(engine_.get(), SIGNAL(InvalidSongRequested(QUrl)), SLOT(InvalidSongRequested(QUrl))); + connect(engine_.get(), SIGNAL(ValidSongRequested(QUrl)), + SLOT(ValidSongRequested(QUrl))); + connect(engine_.get(), SIGNAL(InvalidSongRequested(QUrl)), + SLOT(InvalidSongRequested(QUrl))); } -Player::~Player() { -} +Player::~Player() {} void Player::Init() { - if (!engine_->Init()) - qFatal("Error initialising audio engine"); + if (!engine_->Init()) qFatal("Error initialising audio engine"); - connect(engine_.get(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); + connect(engine_.get(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); connect(engine_.get(), SIGNAL(TrackAboutToEnd()), SLOT(TrackAboutToEnd())); connect(engine_.get(), SIGNAL(TrackEnded()), SLOT(TrackEnded())); connect(engine_.get(), SIGNAL(MetaData(Engine::SimpleMetaBundle)), - SLOT(EngineMetadataReceived(Engine::SimpleMetaBundle))); + SLOT(EngineMetadataReceived(Engine::SimpleMetaBundle))); engine_->SetVolume(settings_.value("volume", 50).toInt()); @@ -80,76 +80,69 @@ void Player::Init() { #endif } -void Player::ReloadSettings() { - engine_->ReloadSettings(); -} +void Player::ReloadSettings() { engine_->ReloadSettings(); } void Player::HandleLoadResult(const UrlHandler::LoadResult& result) { switch (result.type_) { - case UrlHandler::LoadResult::NoMoreTracks: - qLog(Debug) << "URL handler for" << result.original_url_ - << "said no more tracks"; + case UrlHandler::LoadResult::NoMoreTracks: + qLog(Debug) << "URL handler for" << result.original_url_ + << "said no more tracks"; - loading_async_ = QUrl(); - NextItem(stream_change_type_); - break; + loading_async_ = QUrl(); + NextItem(stream_change_type_); + break; - case UrlHandler::LoadResult::TrackAvailable: { - // Might've been an async load, so check we're still on the same item - int current_index = app_->playlist_manager()->active()->current_row(); - if (current_index == -1) - return; + case UrlHandler::LoadResult::TrackAvailable: { + // Might've been an async load, so check we're still on the same item + int current_index = app_->playlist_manager()->active()->current_row(); + if (current_index == -1) return; - shared_ptr item = app_->playlist_manager()->active()->item_at(current_index); - if (!item || item->Url() != result.original_url_) - return; + shared_ptr item = + app_->playlist_manager()->active()->item_at(current_index); + if (!item || item->Url() != result.original_url_) return; - qLog(Debug) << "URL handler for" << result.original_url_ - << "returned" << result.media_url_; + qLog(Debug) << "URL handler for" << result.original_url_ << "returned" + << result.media_url_; - // If there was no length info in song's metadata, use the one provided by - // URL handler, if there is one - if (item->Metadata().length_nanosec() <= 0 && result.length_nanosec_ != -1) { - Song song = item->Metadata(); - song.set_length_nanosec(result.length_nanosec_); - item->SetTemporaryMetadata(song); - app_->playlist_manager()->active()->InformOfCurrentSongChange(); + // If there was no length info in song's metadata, use the one provided by + // URL handler, if there is one + if (item->Metadata().length_nanosec() <= 0 && + result.length_nanosec_ != -1) { + Song song = item->Metadata(); + song.set_length_nanosec(result.length_nanosec_); + item->SetTemporaryMetadata(song); + app_->playlist_manager()->active()->InformOfCurrentSongChange(); + } + engine_->Play( + result.media_url_, stream_change_type_, item->Metadata().has_cue(), + item->Metadata().beginning_nanosec(), item->Metadata().end_nanosec()); + + current_item_ = item; + loading_async_ = QUrl(); + break; } - engine_->Play(result.media_url_, stream_change_type_, - item->Metadata().has_cue(), - item->Metadata().beginning_nanosec(), - item->Metadata().end_nanosec()); - current_item_ = item; - loading_async_ = QUrl(); - break; - } + case UrlHandler::LoadResult::WillLoadAsynchronously: + qLog(Debug) << "URL handler for" << result.original_url_ + << "is loading asynchronously"; - case UrlHandler::LoadResult::WillLoadAsynchronously: - qLog(Debug) << "URL handler for" << result.original_url_ - << "is loading asynchronously"; - - // We'll get called again later with either NoMoreTracks or TrackAvailable - loading_async_ = result.original_url_; - break; + // We'll get called again later with either NoMoreTracks or TrackAvailable + loading_async_ = result.original_url_; + break; } } -void Player::Next() { - NextInternal(Engine::Manual); -} +void Player::Next() { NextInternal(Engine::Manual); } void Player::NextInternal(Engine::TrackChangeFlags change) { - if (HandleStopAfter()) - return; + if (HandleStopAfter()) return; if (app_->playlist_manager()->active()->current_item()) { const QUrl url = app_->playlist_manager()->active()->current_item()->Url(); if (url_handlers_.contains(url.scheme())) { // The next track is already being loaded - if (url == loading_async_) - return; + if (url == loading_async_) return; stream_change_type_ = change; HandleLoadResult(url_handlers_[url.scheme()]->LoadNext(url)); @@ -168,8 +161,10 @@ void Player::NextItem(Engine::TrackChangeFlags change) { const PlaylistSequence::RepeatMode repeat_mode = active_playlist->sequence()->repeat_mode(); if (repeat_mode != PlaylistSequence::Repeat_Off) { - if ((repeat_mode == PlaylistSequence::Repeat_Track && nb_errors_received_ >= 3) || - (nb_errors_received_ >= app_->playlist_manager()->active()->proxy()->rowCount())) { + if ((repeat_mode == PlaylistSequence::Repeat_Track && + nb_errors_received_ >= 3) || + (nb_errors_received_ >= + app_->playlist_manager()->active()->proxy()->rowCount())) { // We received too many "Error" state changes: probably looping over a // playlist which contains only unavailable elements: stop now. nb_errors_received_ = 0; @@ -211,13 +206,13 @@ bool Player::HandleStopAfter() { } void Player::TrackEnded() { - if (HandleStopAfter()) - return; + if (HandleStopAfter()) return; if (current_item_ && current_item_->IsLocalLibraryItem() && current_item_->Metadata().id() != -1 && !app_->playlist_manager()->active()->have_incremented_playcount() && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Seeked) { + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Seeked) { // The track finished before its scrobble point (30 seconds), so increment // the play count now. app_->playlist_manager()->library_backend()->IncrementPlayCountAsync( @@ -229,42 +224,42 @@ void Player::TrackEnded() { void Player::PlayPause() { switch (engine_->state()) { - case Engine::Paused: - engine_->Unpause(); - break; - - case Engine::Playing: { - // We really shouldn't pause last.fm streams - // Stopping seems like a reasonable thing to do (especially on mac where there - // is no media key for stop). - if (current_item_->options() & PlaylistItem::PauseDisabled) { - Stop(); - } else { - engine_->Pause(); - } - break; - } - - case Engine::Empty: - case Engine::Error: - case Engine::Idle: { - app_->playlist_manager()->SetActivePlaylist(app_->playlist_manager()->current_id()); - if (app_->playlist_manager()->active()->rowCount() == 0) + case Engine::Paused: + engine_->Unpause(); break; - int i = app_->playlist_manager()->active()->current_row(); - if (i == -1) i = app_->playlist_manager()->active()->last_played_row(); - if (i == -1) i = 0; + case Engine::Playing: { + // We really shouldn't pause last.fm streams + // Stopping seems like a reasonable thing to do (especially on mac where + // there + // is no media key for stop). + if (current_item_->options() & PlaylistItem::PauseDisabled) { + Stop(); + } else { + engine_->Pause(); + } + break; + } - PlayAt(i, Engine::First, true); - break; - } + case Engine::Empty: + case Engine::Error: + case Engine::Idle: { + app_->playlist_manager()->SetActivePlaylist( + app_->playlist_manager()->current_id()); + if (app_->playlist_manager()->active()->rowCount() == 0) break; + + int i = app_->playlist_manager()->active()->current_row(); + if (i == -1) i = app_->playlist_manager()->active()->last_played_row(); + if (i == -1) i = 0; + + PlayAt(i, Engine::First, true); + break; + } } } void Player::RestartOrPrevious() { - if (engine_->position_nanosec() < 8*kNsecPerSec) - return Previous(); + if (engine_->position_nanosec() < 8 * kNsecPerSec) return Previous(); SeekTo(0); } @@ -276,12 +271,11 @@ void Player::Stop() { } void Player::StopAfterCurrent() { - app_->playlist_manager()->active()->StopAfter(app_->playlist_manager()->active()->current_row()); + app_->playlist_manager()->active()->StopAfter( + app_->playlist_manager()->active()->current_row()); } -void Player::Previous() { - PreviousItem(Engine::Manual); -} +void Player::Previous() { PreviousItem(Engine::Manual); } void Player::PreviousItem(Engine::TrackChangeFlags change) { const bool ignore_repeat_track = change & Engine::Manual; @@ -304,11 +298,17 @@ void Player::EngineStateChanged(Engine::State state) { } switch (state) { - case Engine::Paused: emit Paused(); break; - case Engine::Playing: emit Playing(); break; + case Engine::Paused: + emit Paused(); + break; + case Engine::Playing: + emit Playing(); + break; case Engine::Error: case Engine::Empty: - case Engine::Idle: emit Stopped(); break; + case Engine::Idle: + emit Stopped(); + break; } last_state_ = state; } @@ -320,18 +320,17 @@ void Player::SetVolume(int value) { settings_.setValue("volume", volume); engine_->SetVolume(volume); - if (volume != old_volume){ + if (volume != old_volume) { emit VolumeChanged(volume); } - } -int Player::GetVolume() const { - return engine_->volume(); -} +int Player::GetVolume() const { return engine_->volume(); } -void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) { - if (change == Engine::Manual && engine_->position_nanosec() != engine_->length_nanosec()) { +void Player::PlayAt(int index, Engine::TrackChangeFlags change, + bool reshuffle) { + if (change == Engine::Manual && + engine_->position_nanosec() != engine_->length_nanosec()) { emit TrackSkipped(current_item_); const QUrl& url = current_item_->Url(); if (url_handlers_.contains(url.scheme())) { @@ -339,15 +338,13 @@ void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) } } - if (current_item_ && - app_->playlist_manager()->active()->has_item_at(index) && + if (current_item_ && app_->playlist_manager()->active()->has_item_at(index) && current_item_->Metadata().IsOnSameAlbum( - app_->playlist_manager()->active()->item_at(index)->Metadata())) { + app_->playlist_manager()->active()->item_at(index)->Metadata())) { change |= Engine::SameAlbum; } - if (reshuffle) - app_->playlist_manager()->active()->ReshuffleIndices(); + if (reshuffle) app_->playlist_manager()->active()->ReshuffleIndices(); app_->playlist_manager()->active()->set_current_row(index); if (app_->playlist_manager()->active()->current_row() == -1) { @@ -360,8 +357,7 @@ void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) if (url_handlers_.contains(url.scheme())) { // It's already loading - if (url == loading_async_) - return; + if (url == loading_async_) return; stream_change_type_ = change; HandleLoadResult(url_handlers_[url.scheme()]->StartLoading(url)); @@ -391,21 +387,23 @@ void Player::CurrentMetadataChanged(const Song& metadata) { void Player::SeekTo(int seconds) { const qint64 length_nanosec = engine_->length_nanosec(); - + // If the length is 0 then either there is no song playing, or the song isn't // seekable. if (length_nanosec <= 0) { return; } - - const qint64 nanosec = qBound(0ll, qint64(seconds) * kNsecPerSec, - length_nanosec); + + const qint64 nanosec = + qBound(0ll, qint64(seconds) * kNsecPerSec, length_nanosec); engine_->Seek(nanosec); // If we seek the track we don't want to submit it to last.fm qLog(Info) << "Track seeked to" << nanosec << "ns - not scrobbling"; - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_New) { - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Seeked); + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_New) { + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Seeked); } emit Seeked(nanosec / 1000); @@ -421,8 +419,7 @@ void Player::SeekBackward() { void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { PlaylistItemPtr item = app_->playlist_manager()->active()->current_item(); - if (!item) - return; + if (!item) return; Engine::SimpleMetaBundle bundle_copy = bundle; @@ -434,10 +431,10 @@ void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { const int space_dash_pos = bundle_copy.title.indexOf(" - "); if (space_dash_pos != -1) { bundle_copy.artist = bundle_copy.title.left(space_dash_pos).trimmed(); - bundle_copy.title = bundle_copy.title.mid(space_dash_pos + 3).trimmed(); + bundle_copy.title = bundle_copy.title.mid(space_dash_pos + 3).trimmed(); } else { bundle_copy.artist = bundle_copy.title.left(dash_pos).trimmed(); - bundle_copy.title = bundle_copy.title.mid(dash_pos + 1).trimmed(); + bundle_copy.title = bundle_copy.title.mid(dash_pos + 1).trimmed(); } } @@ -445,8 +442,7 @@ void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { song.MergeFromSimpleMetaBundle(bundle_copy); // Ignore useless metadata - if (song.title().isEmpty() && song.artist().isEmpty()) - return; + if (song.title().isEmpty() && song.artist().isEmpty()) return; app_->playlist_manager()->active()->SetStreamMetadata(item->Url(), song); } @@ -468,9 +464,7 @@ void Player::Mute() { } } -void Player::Pause() { - engine_->Pause(); -} +void Player::Pause() { engine_->Pause(); } void Player::Play() { switch (GetState()) { @@ -487,13 +481,11 @@ void Player::Play() { } void Player::ShowOSD() { - if (current_item_) - emit ForceShowOSD(current_item_->Metadata(), false); + if (current_item_) emit ForceShowOSD(current_item_->Metadata(), false); } void Player::TogglePrettyOSD() { - if (current_item_) - emit ForceShowOSD(current_item_->Metadata(), true); + if (current_item_) emit ForceShowOSD(current_item_->Metadata(), true); } void Player::TrackAboutToEnd() { @@ -509,11 +501,13 @@ void Player::TrackAboutToEnd() { } } - const bool has_next_row = app_->playlist_manager()->active()->next_row() != -1; + const bool has_next_row = + app_->playlist_manager()->active()->next_row() != -1; PlaylistItemPtr next_item; if (has_next_row) { - next_item = app_->playlist_manager()->active()->item_at(app_->playlist_manager()->active()->next_row()); + next_item = app_->playlist_manager()->active()->item_at( + app_->playlist_manager()->active()->next_row()); } if (engine_->is_autocrossfade_enabled()) { @@ -522,15 +516,12 @@ void Player::TrackAboutToEnd() { // But, if there's no next track and we don't want to fade out, then do // nothing and just let the track finish to completion. - if (!engine_->is_fadeout_enabled() && !has_next_row) - return; + if (!engine_->is_fadeout_enabled() && !has_next_row) return; // If the next track is on the same album (or same cue file), and the // user doesn't want to crossfade between tracks on the same album, then // don't do this automatic crossfading. - if (engine_->crossfade_same_album() || - !has_next_row || - !next_item || + if (engine_->crossfade_same_album() || !has_next_row || !next_item || !current_item_->Metadata().IsOnSameAlbum(next_item->Metadata())) { TrackEnded(); return; @@ -539,8 +530,7 @@ void Player::TrackAboutToEnd() { // Crossfade is off, so start preloading the next track so we don't get a // gap between songs. - if (!has_next_row || !next_item) - return; + if (!has_next_row || !next_item) return; QUrl url = next_item->Url(); @@ -548,16 +538,16 @@ void Player::TrackAboutToEnd() { if (url_handlers_.contains(url.scheme())) { UrlHandler::LoadResult result = url_handlers_[url.scheme()]->LoadNext(url); switch (result.type_) { - case UrlHandler::LoadResult::NoMoreTracks: - return; + case UrlHandler::LoadResult::NoMoreTracks: + return; - case UrlHandler::LoadResult::WillLoadAsynchronously: - loading_async_ = url; - return; + case UrlHandler::LoadResult::WillLoadAsynchronously: + loading_async_ = url; + return; - case UrlHandler::LoadResult::TrackAvailable: - url = result.media_url_; - break; + case UrlHandler::LoadResult::TrackAvailable: + url = result.media_url_; + break; } } engine_->StartPreloading(url, next_item->Metadata().has_cue(), @@ -588,7 +578,8 @@ void Player::RegisterUrlHandler(UrlHandler* handler) { qLog(Info) << "Registered URL handler for" << scheme; url_handlers_.insert(scheme, handler); - connect(handler, SIGNAL(destroyed(QObject*)), SLOT(UrlHandlerDestroyed(QObject*))); + connect(handler, SIGNAL(destroyed(QObject*)), + SLOT(UrlHandlerDestroyed(QObject*))); connect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), SLOT(HandleLoadResult(UrlHandler::LoadResult))); } @@ -596,20 +587,22 @@ void Player::RegisterUrlHandler(UrlHandler* handler) { void Player::UnregisterUrlHandler(UrlHandler* handler) { const QString scheme = url_handlers_.key(handler); if (scheme.isEmpty()) { - qLog(Warning) << "Tried to unregister a URL handler for" << handler->scheme() - << "that wasn't registered"; + qLog(Warning) << "Tried to unregister a URL handler for" + << handler->scheme() << "that wasn't registered"; return; } qLog(Info) << "Unregistered URL handler for" << scheme; url_handlers_.remove(scheme); - disconnect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(UrlHandlerDestroyed(QObject*))); - disconnect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), - this, SLOT(HandleLoadResult(UrlHandler::LoadResult))); + disconnect(handler, SIGNAL(destroyed(QObject*)), this, + SLOT(UrlHandlerDestroyed(QObject*))); + disconnect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), this, + SLOT(HandleLoadResult(UrlHandler::LoadResult))); } const UrlHandler* Player::HandlerForUrl(const QUrl& url) const { - QMap::const_iterator it = url_handlers_.constFind(url.scheme()); + QMap::const_iterator it = + url_handlers_.constFind(url.scheme()); if (it == url_handlers_.constEnd()) { return nullptr; } diff --git a/src/core/player.h b/src/core/player.h index c8df58c98..257d11256 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -33,11 +33,10 @@ class Application; class LastFMService; - class PlayerInterface : public QObject { Q_OBJECT -public: + public: PlayerInterface(QObject* parent = 0) : QObject(parent) {} virtual EngineBase* engine() const = 0; @@ -50,11 +49,12 @@ public: virtual void RegisterUrlHandler(UrlHandler* handler) = 0; virtual void UnregisterUrlHandler(UrlHandler* handler) = 0; -public slots: + public slots: virtual void ReloadSettings() = 0; // Manual track change to the specified track - virtual void PlayAt(int i, Engine::TrackChangeFlags change, bool reshuffle) = 0; + virtual void PlayAt(int i, Engine::TrackChangeFlags change, + bool reshuffle) = 0; // If there's currently a song playing, pause it, otherwise play the track // that was playing last, or the first one on the playlist @@ -93,18 +93,20 @@ signals: // Emitted when there's a manual change to the current's track position. void Seeked(qlonglong microseconds); - // Emitted when Player has processed a request to play another song. This contains + // Emitted when Player has processed a request to play another song. This + // contains // the URL of the song and a flag saying whether it was able to play the song. void SongChangeRequestProcessed(const QUrl& url, bool valid); - // The toggle parameter is true when user requests to toggle visibility for Pretty OSD + // The toggle parameter is true when user requests to toggle visibility for + // Pretty OSD void ForceShowOSD(Song, bool toogle); }; class Player : public PlayerInterface { Q_OBJECT -public: + public: Player(Application* app, QObject* parent = 0); ~Player(); @@ -122,7 +124,7 @@ public: const UrlHandler* HandlerForUrl(const QUrl& url) const; -public slots: + public slots: void ReloadSettings(); void PlayAt(int i, Engine::TrackChangeFlags change, bool reshuffle); @@ -188,4 +190,4 @@ public slots: int volume_before_mute_; }; -#endif // PLAYER_H +#endif // PLAYER_H diff --git a/src/core/potranslator.h b/src/core/potranslator.h index dbb81cb87..e6077173b 100644 --- a/src/core/potranslator.h +++ b/src/core/potranslator.h @@ -26,11 +26,12 @@ class PoTranslator : public QTranslator { public: - QString translate(const char* context, const char* source_text, const char* disambiguation = 0) const { + QString translate(const char* context, const char* source_text, + const char* disambiguation = 0) const { QString ret = QTranslator::translate(context, source_text, disambiguation); if (!ret.isEmpty()) return ret; return QTranslator::translate(NULL, source_text, disambiguation); } }; -#endif // POTRANSLATOR_H +#endif // POTRANSLATOR_H diff --git a/src/core/qhash_qurl.h b/src/core/qhash_qurl.h index f7bdeada1..bc8a9c79d 100644 --- a/src/core/qhash_qurl.h +++ b/src/core/qhash_qurl.h @@ -21,9 +21,7 @@ #include #if QT_VERSION < 0x040700 -inline uint qHash(const QUrl& url) { - return qHash(url.toEncoded()); -} +inline uint qHash(const QUrl& url) { return qHash(url.toEncoded()); } #endif -#endif // QHASH_QURL_H +#endif // QHASH_QURL_H diff --git a/src/core/qtfslistener.cpp b/src/core/qtfslistener.cpp index 9a94a0c32..4c5802dda 100644 --- a/src/core/qtfslistener.cpp +++ b/src/core/qtfslistener.cpp @@ -20,15 +20,12 @@ #include QtFSListener::QtFSListener(QObject* parent) - : FileSystemWatcherInterface(parent), - watcher_(this) { + : FileSystemWatcherInterface(parent), watcher_(this) { connect(&watcher_, SIGNAL(directoryChanged(const QString&)), - SIGNAL(PathChanged(const QString&))); + SIGNAL(PathChanged(const QString&))); } -void QtFSListener::AddPath(const QString& path) { - watcher_.addPath(path); -} +void QtFSListener::AddPath(const QString& path) { watcher_.addPath(path); } void QtFSListener::RemovePath(const QString& path) { watcher_.removePath(path); diff --git a/src/core/qtfslistener.h b/src/core/qtfslistener.h index dd84ca5c6..8800e9bf6 100644 --- a/src/core/qtfslistener.h +++ b/src/core/qtfslistener.h @@ -32,7 +32,6 @@ class QtFSListener : public FileSystemWatcherInterface { private: QFileSystemWatcher watcher_; - }; #endif diff --git a/src/core/qxtglobalshortcutbackend.cpp b/src/core/qxtglobalshortcutbackend.cpp index 583bd6045..08f048b35 100644 --- a/src/core/qxtglobalshortcutbackend.cpp +++ b/src/core/qxtglobalshortcutbackend.cpp @@ -23,14 +23,13 @@ #include #include -QxtGlobalShortcutBackend::QxtGlobalShortcutBackend(GlobalShortcuts *parent) - : GlobalShortcutBackend(parent) -{ -} +QxtGlobalShortcutBackend::QxtGlobalShortcutBackend(GlobalShortcuts* parent) + : GlobalShortcutBackend(parent) {} bool QxtGlobalShortcutBackend::DoRegister() { qLog(Debug) << "registering"; - foreach (const GlobalShortcuts::Shortcut& shortcut, manager_->shortcuts().values()) { + foreach(const GlobalShortcuts::Shortcut & shortcut, + manager_->shortcuts().values()) { AddShortcut(shortcut.action); } @@ -38,8 +37,7 @@ bool QxtGlobalShortcutBackend::DoRegister() { } void QxtGlobalShortcutBackend::AddShortcut(QAction* action) { - if (action->shortcut().isEmpty()) - return; + if (action->shortcut().isEmpty()) return; QxtGlobalShortcut* shortcut = new QxtGlobalShortcut(action->shortcut(), this); connect(shortcut, SIGNAL(activated()), action, SLOT(trigger())); diff --git a/src/core/qxtglobalshortcutbackend.h b/src/core/qxtglobalshortcutbackend.h index 0a6447c8c..4a51f840e 100644 --- a/src/core/qxtglobalshortcutbackend.h +++ b/src/core/qxtglobalshortcutbackend.h @@ -23,16 +23,16 @@ class QxtGlobalShortcut; class QxtGlobalShortcutBackend : public GlobalShortcutBackend { -public: + public: QxtGlobalShortcutBackend(GlobalShortcuts* parent = 0); -protected: + protected: bool DoRegister(); void DoUnregister(); -private: + private: void AddShortcut(QAction* action); QList shortcuts_; }; -#endif // QXTGLOBALSHORTCUTBACKEND_H +#endif // QXTGLOBALSHORTCUTBACKEND_H diff --git a/src/core/scoped_cftyperef.h b/src/core/scoped_cftyperef.h index b516de217..57d817d5f 100644 --- a/src/core/scoped_cftyperef.h +++ b/src/core/scoped_cftyperef.h @@ -17,41 +17,29 @@ // caller must own the object it gives to ScopedCFTypeRef<>, and relinquishes // an ownership claim to that object. ScopedCFTypeRef<> does not call // CFRetain(). -template +template class ScopedCFTypeRef { public: typedef CFT element_type; - explicit ScopedCFTypeRef(CFT object = NULL) - : object_(object) { - } + explicit ScopedCFTypeRef(CFT object = NULL) : object_(object) {} ~ScopedCFTypeRef() { - if (object_) - CFRelease(object_); + if (object_) CFRelease(object_); } void reset(CFT object = NULL) { - if (object_) - CFRelease(object_); + if (object_) CFRelease(object_); object_ = object; } - bool operator==(CFT that) const { - return object_ == that; - } + bool operator==(CFT that) const { return object_ == that; } - bool operator!=(CFT that) const { - return object_ != that; - } + bool operator!=(CFT that) const { return object_ != that; } - operator CFT() const { - return object_; - } + operator CFT() const { return object_; } - CFT get() const { - return object_; - } + CFT get() const { return object_; } void swap(ScopedCFTypeRef& that) { CFT temp = that.object_; diff --git a/src/core/scoped_nsautorelease_pool.h b/src/core/scoped_nsautorelease_pool.h index fb8a79d56..82f1ff9a2 100644 --- a/src/core/scoped_nsautorelease_pool.h +++ b/src/core/scoped_nsautorelease_pool.h @@ -9,7 +9,7 @@ #if defined(__OBJC__) @class NSAutoreleasePool; -#else // __OBJC__ +#else // __OBJC__ class NSAutoreleasePool; #endif // __OBJC__ @@ -28,6 +28,7 @@ class ScopedNSAutoreleasePool { // Only use then when you're certain the items currently in the pool are // no longer needed. void Recycle(); + private: NSAutoreleasePool* autorelease_pool_; diff --git a/src/core/scoped_nsobject.h b/src/core/scoped_nsobject.h index cd8271399..0b6f07be9 100644 --- a/src/core/scoped_nsobject.h +++ b/src/core/scoped_nsobject.h @@ -23,16 +23,12 @@ // scoped_nsautorelease_pool.h instead. // We check for bad uses of scoped_nsobject and NSAutoreleasePool at compile // time with a template specialization (see below). -template +template class scoped_nsobject { public: - explicit scoped_nsobject(NST* object = nil) - : object_(object) { - } + explicit scoped_nsobject(NST* object = nil) : object_(object) {} - ~scoped_nsobject() { - [object_ release]; - } + ~scoped_nsobject() { [object_ release]; } void reset(NST* object = nil) { // We intentionally do not check that object != object_ as the caller must @@ -47,13 +43,9 @@ class scoped_nsobject { bool operator==(NST* that) const { return object_ == that; } bool operator!=(NST* that) const { return object_ != that; } - operator NST*() const { - return object_; - } + operator NST*() const { return object_; } - NST* get() const { - return object_; - } + NST* get() const { return object_; } void swap(scoped_nsobject& that) { NST* temp = that.object_; @@ -92,18 +84,13 @@ bool operator!=(C* p1, const scoped_nsobject& p2) { return p1 != p2.get(); } - // Specialization to make scoped_nsobject work. -template<> +template <> class scoped_nsobject { public: - explicit scoped_nsobject(id object = nil) - : object_(object) { - } + explicit scoped_nsobject(id object = nil) : object_(object) {} - ~scoped_nsobject() { - [object_ release]; - } + ~scoped_nsobject() { [object_ release]; } void reset(id object = nil) { // We intentionally do not check that object != object_ as the caller must @@ -118,13 +105,9 @@ class scoped_nsobject { bool operator==(id that) const { return object_ == that; } bool operator!=(id that) const { return object_ != that; } - operator id() const { - return object_; - } + operator id() const { return object_; } - id get() const { - return object_; - } + id get() const { return object_; } void swap(scoped_nsobject& that) { id temp = that.object_; @@ -150,7 +133,7 @@ class scoped_nsobject { // Do not use scoped_nsobject for NSAutoreleasePools, use // ScopedNSAutoreleasePool instead. This is a compile time check. See details // at top of header. -template<> +template <> class scoped_nsobject { private: explicit scoped_nsobject(NSAutoreleasePool* object = nil); diff --git a/src/core/scopedgobject.h b/src/core/scopedgobject.h index 260a8783c..1fcad5573 100644 --- a/src/core/scopedgobject.h +++ b/src/core/scopedgobject.h @@ -22,49 +22,44 @@ #include - template class ScopedGObject { -public: + public: ScopedGObject() : object_(NULL) {} explicit ScopedGObject(const ScopedGObject& other) : object_(NULL) { reset(other.object_); } - ~ScopedGObject() { - reset(); - } + ~ScopedGObject() { reset(); } - ScopedGObject& operator =(const ScopedGObject& other) { + ScopedGObject& operator=(const ScopedGObject& other) { reset(other.object_); return *this; } void reset(T* new_object = NULL) { - if (new_object) - g_object_ref(new_object); + if (new_object) g_object_ref(new_object); reset_without_add(new_object); } void reset_without_add(T* new_object = NULL) { - if (object_) - g_object_unref(object_); + if (object_) g_object_unref(object_); object_ = new_object; } T* get() const { return object_; } operator T*() const { return get(); } - T* operator *() const { return get(); } + T* operator*() const { return get(); } operator bool() const { return get(); } - bool operator ==(const ScopedGObject& other) const { + bool operator==(const ScopedGObject& other) const { return object_ == other.object_; } -private: + private: T* object_; }; -#endif // SCOPEDGOBJECT_H +#endif // SCOPEDGOBJECT_H diff --git a/src/core/scopedtransaction.cpp b/src/core/scopedtransaction.cpp index 5a2e8b11b..b6240b40b 100644 --- a/src/core/scopedtransaction.cpp +++ b/src/core/scopedtransaction.cpp @@ -22,9 +22,7 @@ #include ScopedTransaction::ScopedTransaction(QSqlDatabase* db) - : db_(db), - pending_(true) -{ + : db_(db), pending_(true) { db->transaction(); } diff --git a/src/core/scopedtransaction.h b/src/core/scopedtransaction.h index ded08d64f..b084411a4 100644 --- a/src/core/scopedtransaction.h +++ b/src/core/scopedtransaction.h @@ -37,4 +37,4 @@ class ScopedTransaction : boost::noncopyable { bool pending_; }; -#endif // SCOPEDTRANSACTION_H +#endif // SCOPEDTRANSACTION_H diff --git a/src/core/settingsprovider.cpp b/src/core/settingsprovider.cpp index e39d5c2ed..b4fc3b9f6 100644 --- a/src/core/settingsprovider.cpp +++ b/src/core/settingsprovider.cpp @@ -17,26 +17,23 @@ #include "settingsprovider.h" -SettingsProvider::SettingsProvider() { -} +SettingsProvider::SettingsProvider() {} -DefaultSettingsProvider::DefaultSettingsProvider() { -} +DefaultSettingsProvider::DefaultSettingsProvider() {} -void DefaultSettingsProvider::set_group(const char *group) { - while (!backend_.group().isEmpty()) - backend_.endGroup(); +void DefaultSettingsProvider::set_group(const char* group) { + while (!backend_.group().isEmpty()) backend_.endGroup(); backend_.beginGroup(group); } -QVariant DefaultSettingsProvider::value( - const QString &key, const QVariant &default_value) const { +QVariant DefaultSettingsProvider::value(const QString& key, + const QVariant& default_value) const { return backend_.value(key, default_value); } -void DefaultSettingsProvider::setValue( - const QString &key, const QVariant &value) { +void DefaultSettingsProvider::setValue(const QString& key, + const QVariant& value) { backend_.setValue(key, value); } @@ -52,6 +49,4 @@ void DefaultSettingsProvider::setArrayIndex(int i) { backend_.setArrayIndex(i); } -void DefaultSettingsProvider::endArray() { - backend_.endArray(); -} +void DefaultSettingsProvider::endArray() { backend_.endArray(); } diff --git a/src/core/settingsprovider.h b/src/core/settingsprovider.h index 475ca3fc1..ef6ef6585 100644 --- a/src/core/settingsprovider.h +++ b/src/core/settingsprovider.h @@ -55,4 +55,4 @@ class DefaultSettingsProvider : public SettingsProvider { QSettings backend_; }; -#endif // SETTINGSPROVIDER_H +#endif // SETTINGSPROVIDER_H diff --git a/src/core/signalchecker.cpp b/src/core/signalchecker.cpp index 8496c49f5..c2710ef1a 100644 --- a/src/core/signalchecker.cpp +++ b/src/core/signalchecker.cpp @@ -19,16 +19,13 @@ #include "core/logging.h" -bool CheckedGConnect( - gpointer source, - const char* signal, - GCallback callback, - gpointer data, - const int callback_param_count) { +bool CheckedGConnect(gpointer source, const char* signal, GCallback callback, + gpointer data, const int callback_param_count) { guint signal_id = 0; GQuark detail = 0; - if (!g_signal_parse_name(signal, G_OBJECT_TYPE(source), &signal_id, &detail, false)) { + if (!g_signal_parse_name(signal, G_OBJECT_TYPE(source), &signal_id, &detail, + false)) { qFatal("Connecting to invalid signal: %s", signal); return false; } diff --git a/src/core/signalchecker.h b/src/core/signalchecker.h index aacfde5f7..224513e33 100644 --- a/src/core/signalchecker.h +++ b/src/core/signalchecker.h @@ -24,16 +24,14 @@ #include // Do not call this directly, use CHECKED_GCONNECT instead. -bool CheckedGConnect( - gpointer source, - const char* signal, - GCallback callback, - gpointer data, - const int callback_param_count); +bool CheckedGConnect(gpointer source, const char* signal, GCallback callback, + gpointer data, const int callback_param_count); -#define FUNCTION_ARITY(callback) boost::function_types::function_arity::value +#define FUNCTION_ARITY(callback) \ + boost::function_types::function_arity::value -#define CHECKED_GCONNECT(source, signal, callback, data) \ - CheckedGConnect(source, signal, G_CALLBACK(callback), data, FUNCTION_ARITY(callback)); +#define CHECKED_GCONNECT(source, signal, callback, data) \ + CheckedGConnect(source, signal, G_CALLBACK(callback), data, \ + FUNCTION_ARITY(callback)); #endif // SIGNALCHECKER_H diff --git a/src/core/simpletreeitem.h b/src/core/simpletreeitem.h index b1efc1baa..95263f3a1 100644 --- a/src/core/simpletreeitem.h +++ b/src/core/simpletreeitem.h @@ -26,7 +26,7 @@ template class SimpleTreeItem { public: - SimpleTreeItem(int _type, SimpleTreeModel* _model); // For the root item + SimpleTreeItem(int _type, SimpleTreeModel* _model); // For the root item SimpleTreeItem(int _type, const QString& _key, T* _parent = NULL); SimpleTreeItem(int _type, T* _parent = NULL); virtual ~SimpleTreeItem(); @@ -39,7 +39,9 @@ class SimpleTreeItem { void Delete(int child_row); T* ChildByKey(const QString& key) const; - QString DisplayText() const { return display_text.isNull() ? key : display_text; } + QString DisplayText() const { + return display_text.isNull() ? key : display_text; + } QString SortText() const { return sort_text.isNull() ? key : sort_text; } int type; @@ -59,24 +61,21 @@ class SimpleTreeItem { template SimpleTreeItem::SimpleTreeItem(int _type, SimpleTreeModel* _model) - : type(_type), - row(0), - lazy_loaded(true), - parent(NULL), - child_model(NULL), - model(_model) -{ -} + : type(_type), + row(0), + lazy_loaded(true), + parent(NULL), + child_model(NULL), + model(_model) {} template SimpleTreeItem::SimpleTreeItem(int _type, const QString& _key, T* _parent) - : type(_type), - key(_key), - lazy_loaded(false), - parent(_parent), - child_model(NULL), - model(_parent ? _parent->model : NULL) -{ + : type(_type), + key(_key), + lazy_loaded(false), + parent(_parent), + child_model(NULL), + model(_parent ? _parent->model : NULL) { if (parent) { row = parent->children.count(); parent->children << static_cast(this); @@ -85,19 +84,17 @@ SimpleTreeItem::SimpleTreeItem(int _type, const QString& _key, T* _parent) template SimpleTreeItem::SimpleTreeItem(int _type, T* _parent) - : type(_type), - lazy_loaded(false), - parent(_parent), - child_model(NULL), - model(_parent ? _parent->model : NULL) -{ + : type(_type), + lazy_loaded(false), + parent(_parent), + child_model(NULL), + model(_parent ? _parent->model : NULL) { if (parent) { row = parent->children.count(); parent->children << static_cast(this); } } - template void SimpleTreeItem::InsertNotify(T* _parent) { parent = _parent; @@ -115,8 +112,7 @@ void SimpleTreeItem::DeleteNotify(int child_row) { delete children.takeAt(child_row); // Adjust row numbers of those below it :( - for (int i=child_row ; irow --; + for (int i = child_row; i < children.count(); ++i) children[i]->row--; model->EndDelete(); } @@ -147,17 +143,15 @@ void SimpleTreeItem::Delete(int child_row) { delete children.takeAt(child_row); // Adjust row numbers of those below it :( - for (int i=child_row ; irow --; + for (int i = child_row; i < children.count(); ++i) children[i]->row--; } template T* SimpleTreeItem::ChildByKey(const QString& key) const { - foreach (T* child, children) { - if (child->key == key) - return child; + foreach(T * child, children) { + if (child->key == key) return child; } return NULL; } -#endif // SIMPLETREEITEM_H +#endif // SIMPLETREEITEM_H diff --git a/src/core/simpletreemodel.h b/src/core/simpletreemodel.h index 6cc272293..8dc0e3998 100644 --- a/src/core/simpletreemodel.h +++ b/src/core/simpletreemodel.h @@ -30,7 +30,8 @@ class SimpleTreeModel : public QAbstractItemModel { // QAbstractItemModel int columnCount(const QModelIndex& parent) const; - QModelIndex index(int row, int, const QModelIndex& parent = QModelIndex()) const; + QModelIndex index(int row, int, + const QModelIndex& parent = QModelIndex()) const; QModelIndex parent(const QModelIndex& index) const; int rowCount(const QModelIndex& parent) const; bool hasChildren(const QModelIndex& parent) const; @@ -54,35 +55,30 @@ class SimpleTreeModel : public QAbstractItemModel { T* root_; }; - template SimpleTreeModel::SimpleTreeModel(T* root, QObject* parent) - : QAbstractItemModel(parent), - root_(root) -{ -} + : QAbstractItemModel(parent), root_(root) {} template T* SimpleTreeModel::IndexToItem(const QModelIndex& index) const { - if (!index.isValid()) - return root_; + if (!index.isValid()) return root_; return reinterpret_cast(index.internalPointer()); } template QModelIndex SimpleTreeModel::ItemToIndex(T* item) const { - if (!item || !item->parent) - return QModelIndex(); + if (!item || !item->parent) return QModelIndex(); return createIndex(item->row, 0, item); } template -int SimpleTreeModel::columnCount(const QModelIndex &) const { +int SimpleTreeModel::columnCount(const QModelIndex&) const { return 1; } template -QModelIndex SimpleTreeModel::index(int row, int, const QModelIndex& parent) const { +QModelIndex SimpleTreeModel::index(int row, int, + const QModelIndex& parent) const { T* parent_item = IndexToItem(parent); if (!parent_item || row < 0 || parent_item->children.count() <= row) return QModelIndex(); @@ -96,13 +92,13 @@ QModelIndex SimpleTreeModel::parent(const QModelIndex& index) const { } template -int SimpleTreeModel::rowCount(const QModelIndex & parent) const { +int SimpleTreeModel::rowCount(const QModelIndex& parent) const { T* item = IndexToItem(parent); return item->children.count(); } template -bool SimpleTreeModel::hasChildren(const QModelIndex &parent) const { +bool SimpleTreeModel::hasChildren(const QModelIndex& parent) const { T* item = IndexToItem(parent); if (item->lazy_loaded) return !item->children.isEmpty(); @@ -147,9 +143,9 @@ void SimpleTreeModel::EndDelete() { } template - void SimpleTreeModel::EmitDataChanged(T *item) { +void SimpleTreeModel::EmitDataChanged(T* item) { QModelIndex index(ItemToIndex(item)); emit dataChanged(index, index); } -#endif // SIMPLETREEMODEL_H +#endif // SIMPLETREEMODEL_H diff --git a/src/core/song.cpp b/src/core/song.cpp index 0dfce9995..693bbe735 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -32,22 +32,22 @@ #include #ifdef HAVE_LIBLASTFM - #include "internet/fixlastfm.h" - #ifdef HAVE_LIBLASTFM1 - #include - #else - #include - #endif +#include "internet/fixlastfm.h" +#ifdef HAVE_LIBLASTFM1 +#include +#else +#include +#endif #endif #include #ifdef HAVE_LIBGPOD -# include +#include #endif #ifdef HAVE_LIBMTP -# include +#include #endif #include "core/application.h" @@ -62,35 +62,71 @@ #include "tagreadermessages.pb.h" #include "widgets/trackslider.h" - -const QStringList Song::kColumns = QStringList() - << "title" << "album" << "artist" << "albumartist" << "composer" << "track" - << "disc" << "bpm" << "year" << "genre" << "comment" << "compilation" - << "bitrate" << "samplerate" << "directory" << "filename" - << "mtime" << "ctime" << "filesize" << "sampler" << "art_automatic" - << "art_manual" << "filetype" << "playcount" << "lastplayed" << "rating" - << "forced_compilation_on" << "forced_compilation_off" - << "effective_compilation" << "skipcount" << "score" << "beginning" << "length" - << "cue_path" << "unavailable" << "effective_albumartist" << "etag" - << "performer" << "grouping"; +const QStringList Song::kColumns = QStringList() << "title" + << "album" + << "artist" + << "albumartist" + << "composer" + << "track" + << "disc" + << "bpm" + << "year" + << "genre" + << "comment" + << "compilation" + << "bitrate" + << "samplerate" + << "directory" + << "filename" + << "mtime" + << "ctime" + << "filesize" + << "sampler" + << "art_automatic" + << "art_manual" + << "filetype" + << "playcount" + << "lastplayed" + << "rating" + << "forced_compilation_on" + << "forced_compilation_off" + << "effective_compilation" + << "skipcount" + << "score" + << "beginning" + << "length" + << "cue_path" + << "unavailable" + << "effective_albumartist" + << "etag" + << "performer" + << "grouping"; const QString Song::kColumnSpec = Song::kColumns.join(", "); -const QString Song::kBindSpec = Utilities::Prepend(":", Song::kColumns).join(", "); -const QString Song::kUpdateSpec = Utilities::Updateify(Song::kColumns).join(", "); +const QString Song::kBindSpec = + Utilities::Prepend(":", Song::kColumns).join(", "); +const QString Song::kUpdateSpec = + Utilities::Updateify(Song::kColumns).join(", "); - -const QStringList Song::kFtsColumns = QStringList() - << "ftstitle" << "ftsalbum" << "ftsartist" << "ftsalbumartist" - << "ftscomposer" << "ftsperformer" << "ftsgrouping" << "ftsgenre" << "ftscomment"; +const QStringList Song::kFtsColumns = QStringList() << "ftstitle" + << "ftsalbum" + << "ftsartist" + << "ftsalbumartist" + << "ftscomposer" + << "ftsperformer" + << "ftsgrouping" + << "ftsgenre" + << "ftscomment"; const QString Song::kFtsColumnSpec = Song::kFtsColumns.join(", "); -const QString Song::kFtsBindSpec = Utilities::Prepend(":", Song::kFtsColumns).join(", "); -const QString Song::kFtsUpdateSpec = Utilities::Updateify(Song::kFtsColumns).join(", "); +const QString Song::kFtsBindSpec = + Utilities::Prepend(":", Song::kFtsColumns).join(", "); +const QString Song::kFtsUpdateSpec = + Utilities::Updateify(Song::kFtsColumns).join(", "); const QString Song::kManuallyUnsetCover = "(unset)"; const QString Song::kEmbeddedCover = "(embedded)"; - struct Song::Private : public QSharedData { Private(); @@ -110,12 +146,12 @@ struct Song::Private : public QSharedData { int year_; QString genre_; QString comment_; - bool compilation_; // From the file tag - bool sampler_; // From the library scanner - bool forced_compilation_on_; // Set by the user - bool forced_compilation_off_; // Set by the user + bool compilation_; // From the file tag + bool sampler_; // From the library scanner + bool forced_compilation_on_; // Set by the user + bool forced_compilation_off_; // Set by the user - // A unique album ID + // A unique album ID // Used to distinguish between albums from providers that have multiple // versions of a given album with the same title (e.g. Spotify). // This is never persisted, it is only stored temporarily for global search @@ -156,14 +192,15 @@ struct Song::Private : public QSharedData { QString cue_path_; // Filenames to album art for this song. - QString art_automatic_; // Guessed by LibraryWatcher - QString art_manual_; // Set by the user - should take priority + QString art_automatic_; // Guessed by LibraryWatcher + QString art_manual_; // Set by the user - should take priority QImage image_; // Whether this song was loaded from a file using taglib. bool init_from_file_; - // Whether our encoding guesser thinks these tags might be incorrectly encoded. + // Whether our encoding guesser thinks these tags might be incorrectly + // encoded. bool suspicious_tags_; // Whether the song does not exist on the file system anymore, but is still @@ -173,54 +210,43 @@ struct Song::Private : public QSharedData { QString etag_; }; - Song::Private::Private() - : valid_(false), - id_(-1), - track_(-1), - disc_(-1), - bpm_(-1), - year_(-1), - compilation_(false), - sampler_(false), - forced_compilation_on_(false), - forced_compilation_off_(false), - album_id_(-1), - rating_(-1.0), - playcount_(0), - skipcount_(0), - lastplayed_(-1), - score_(0), - beginning_(0), - end_(-1), - bitrate_(-1), - samplerate_(-1), - directory_id_(-1), - mtime_(-1), - ctime_(-1), - filesize_(-1), - filetype_(Type_Unknown), - init_from_file_(false), - suspicious_tags_(false), - unavailable_(false) -{ -} + : valid_(false), + id_(-1), + track_(-1), + disc_(-1), + bpm_(-1), + year_(-1), + compilation_(false), + sampler_(false), + forced_compilation_on_(false), + forced_compilation_off_(false), + album_id_(-1), + rating_(-1.0), + playcount_(0), + skipcount_(0), + lastplayed_(-1), + score_(0), + beginning_(0), + end_(-1), + bitrate_(-1), + samplerate_(-1), + directory_id_(-1), + mtime_(-1), + ctime_(-1), + filesize_(-1), + filetype_(Type_Unknown), + init_from_file_(false), + suspicious_tags_(false), + unavailable_(false) {} +Song::Song() : d(new Private) {} -Song::Song() - : d(new Private) -{ -} +Song::Song(const Song& other) : d(other.d) {} -Song::Song(const Song &other) - : d(other.d) -{ -} +Song::~Song() {} -Song::~Song() { -} - -Song& Song::operator =(const Song& other) { +Song& Song::operator=(const Song& other) { d = other.d; return *this; } @@ -232,8 +258,12 @@ const QString& Song::title() const { return d->title_; } const QString& Song::album() const { return d->album_; } const QString& Song::artist() const { return d->artist_; } const QString& Song::albumartist() const { return d->albumartist_; } -const QString& Song::effective_albumartist() const { return d->albumartist_.isEmpty() ? d->artist_ : d->albumartist_; } -const QString& Song::playlist_albumartist() const { return is_compilation() ? d->albumartist_ : effective_albumartist(); } +const QString& Song::effective_albumartist() const { + return d->albumartist_.isEmpty() ? d->artist_ : d->albumartist_; +} +const QString& Song::playlist_albumartist() const { + return is_compilation() ? d->albumartist_ : effective_albumartist(); +} const QString& Song::composer() const { return d->composer_; } const QString& Song::performer() const { return d->performer_; } const QString& Song::grouping() const { return d->grouping_; } @@ -244,8 +274,8 @@ int Song::year() const { return d->year_; } const QString& Song::genre() const { return d->genre_; } const QString& Song::comment() const { return d->comment_; } bool Song::is_compilation() const { - return (d->compilation_ || d->sampler_ || d->forced_compilation_on_) - && ! d->forced_compilation_off_; + return (d->compilation_ || d->sampler_ || d->forced_compilation_on_) && + !d->forced_compilation_off_; } float Song::rating() const { return d->rating_; } int Song::playcount() const { return d->playcount_; } @@ -272,9 +302,13 @@ bool Song::is_cdda() const { return d->filetype_ == Type_Cdda; } const QString& Song::art_automatic() const { return d->art_automatic_; } const QString& Song::art_manual() const { return d->art_manual_; } const QString& Song::etag() const { return d->etag_; } -bool Song::has_manually_unset_cover() const { return d->art_manual_ == kManuallyUnsetCover; } +bool Song::has_manually_unset_cover() const { + return d->art_manual_ == kManuallyUnsetCover; +} void Song::manually_unset_cover() { d->art_manual_ = kManuallyUnsetCover; } -bool Song::has_embedded_cover() const { return d->art_automatic_ == kEmbeddedCover; } +bool Song::has_embedded_cover() const { + return d->art_automatic_ == kEmbeddedCover; +} void Song::set_embedded_cover() { d->art_automatic_ = kEmbeddedCover; } const QImage& Song::image() const { return d->image_; } void Song::set_id(int id) { d->id_ = id; } @@ -308,7 +342,9 @@ void Song::set_art_automatic(const QString& v) { d->art_automatic_ = v; } void Song::set_art_manual(const QString& v) { d->art_manual_ = v; } void Song::set_image(const QImage& i) { d->image_ = i; } void Song::set_forced_compilation_on(bool v) { d->forced_compilation_on_ = v; } -void Song::set_forced_compilation_off(bool v) { d->forced_compilation_off_ = v; } +void Song::set_forced_compilation_off(bool v) { + d->forced_compilation_off_ = v; +} void Song::set_rating(float v) { d->rating_ = v; } void Song::set_playcount(int v) { d->playcount_ = v; } void Song::set_skipcount(int v) { d->skipcount_ = v; } @@ -320,7 +356,8 @@ void Song::set_etag(const QString& etag) { d->etag_ = etag; } void Song::set_url(const QUrl& v) { if (Application::kIsPortable) { - QUrl base = QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/"); + QUrl base = + QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/"); d->url_ = base.resolved(v); } else { d->url_ = v; @@ -336,21 +373,35 @@ QString Song::JoinSpec(const QString& table) { QString Song::TextForFiletype(FileType type) { switch (type) { - case Song::Type_Asf: return QObject::tr("Windows Media audio"); - case Song::Type_Flac: return QObject::tr("Flac"); - case Song::Type_Mp4: return QObject::tr("MP4 AAC"); - case Song::Type_Mpc: return QObject::tr("MPC"); - case Song::Type_Mpeg: return QObject::tr("MP3"); // Not technically correct - case Song::Type_OggFlac: return QObject::tr("Ogg Flac"); - case Song::Type_OggSpeex: return QObject::tr("Ogg Speex"); - case Song::Type_OggVorbis: return QObject::tr("Ogg Vorbis"); - case Song::Type_OggOpus: return QObject::tr("Ogg Opus"); - case Song::Type_Aiff: return QObject::tr("AIFF"); - case Song::Type_Wav: return QObject::tr("Wav"); - case Song::Type_TrueAudio: return QObject::tr("TrueAudio"); - case Song::Type_Cdda: return QObject::tr("CDDA"); + case Song::Type_Asf: + return QObject::tr("Windows Media audio"); + case Song::Type_Flac: + return QObject::tr("Flac"); + case Song::Type_Mp4: + return QObject::tr("MP4 AAC"); + case Song::Type_Mpc: + return QObject::tr("MPC"); + case Song::Type_Mpeg: + return QObject::tr("MP3"); // Not technically correct + case Song::Type_OggFlac: + return QObject::tr("Ogg Flac"); + case Song::Type_OggSpeex: + return QObject::tr("Ogg Speex"); + case Song::Type_OggVorbis: + return QObject::tr("Ogg Vorbis"); + case Song::Type_OggOpus: + return QObject::tr("Ogg Opus"); + case Song::Type_Aiff: + return QObject::tr("AIFF"); + case Song::Type_Wav: + return QObject::tr("Wav"); + case Song::Type_TrueAudio: + return QObject::tr("TrueAudio"); + case Song::Type_Cdda: + return QObject::tr("CDDA"); - case Song::Type_Stream: return QObject::tr("Stream"); + case Song::Type_Stream: + return QObject::tr("Stream"); case Song::Type_Unknown: default: @@ -359,7 +410,8 @@ QString Song::TextForFiletype(FileType type) { } int CompareSongsName(const Song& song1, const Song& song2) { - return song1.PrettyTitleWithArtist().localeAwareCompare(song2.PrettyTitleWithArtist()) < 0; + return song1.PrettyTitleWithArtist().localeAwareCompare( + song2.PrettyTitleWithArtist()) < 0; } void Song::SortSongsListAlphabetically(SongList* songs) { @@ -486,10 +538,10 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { d->valid_ = true; d->init_from_file_ = reliable_metadata; - #define tostr(n) (q.value(n).isNull() ? QString::null : q.value(n).toString()) - #define toint(n) (q.value(n).isNull() ? -1 : q.value(n).toInt()) - #define tolonglong(n) (q.value(n).isNull() ? -1 : q.value(n).toLongLong()) - #define tofloat(n) (q.value(n).isNull() ? -1 : q.value(n).toDouble()) +#define tostr(n) (q.value(n).isNull() ? QString::null : q.value(n).toString()) +#define toint(n) (q.value(n).isNull() ? -1 : q.value(n).toInt()) +#define tolonglong(n) (q.value(n).isNull() ? -1 : q.value(n).toLongLong()) +#define tofloat(n) (q.value(n).isNull() ? -1 : q.value(n).toDouble()) d->id_ = toint(col + 0); d->title_ = tostr(col + 1); @@ -535,7 +587,8 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { // do not move those statements - beginning must be initialized before // length is! - d->beginning_ = q.value(col + 32).isNull() ? 0 : q.value(col + 32).toLongLong(); + d->beginning_ = + q.value(col + 32).isNull() ? 0 : q.value(col + 32).toLongLong(); set_length_nanosec(tolonglong(col + 33)); d->cue_path_ = tostr(col + 34); @@ -549,10 +602,10 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { InitArtManual(); - #undef tostr - #undef toint - #undef tolonglong - #undef tofloat +#undef tostr +#undef toint +#undef tolonglong +#undef tofloat } void Song::InitFromFilePartial(const QString& filename) { @@ -564,9 +617,10 @@ void Song::InitFromFilePartial(const QString& filename) { QFileInfo info(filename); d->basefilename_ = info.fileName(); QString suffix = info.suffix().toLower(); - if (suffix == "mp3" || suffix == "ogg" || suffix == "flac" || suffix == "mpc" - || suffix == "m4a" || suffix == "aac" || suffix == "wma" || suffix == "mp4" - || suffix == "spx" || suffix == "wav" || suffix == "opus") { + if (suffix == "mp3" || suffix == "ogg" || suffix == "flac" || + suffix == "mpc" || suffix == "m4a" || suffix == "aac" || + suffix == "wma" || suffix == "mp4" || suffix == "spx" || + suffix == "wav" || suffix == "opus") { d->valid_ = true; } else { d->valid_ = false; @@ -576,7 +630,8 @@ void Song::InitFromFilePartial(const QString& filename) { void Song::InitArtManual() { // If we don't have an art, check if we have one in the cache if (d->art_manual_.isEmpty() && d->art_automatic_.isEmpty()) { - QString filename(Utilities::Sha1CoverHash(d->artist_, d->album_).toHex() + ".jpg"); + QString filename(Utilities::Sha1CoverHash(d->artist_, d->album_).toHex() + + ".jpg"); QString path(AlbumCoverLoader::ImageCacheDir() + "/" + filename); if (QFile::exists(path)) { d->art_manual_ = path; @@ -596,158 +651,192 @@ void Song::InitFromLastFM(const lastfm::Track& track) { set_length_nanosec(track.duration() * kNsecPerSec); } -#endif // HAVE_LIBLASTFM +#endif // HAVE_LIBLASTFM #ifdef HAVE_LIBGPOD - void Song::InitFromItdb(const Itdb_Track* track, const QString& prefix) { - d->valid_ = true; +void Song::InitFromItdb(const Itdb_Track* track, const QString& prefix) { + d->valid_ = true; - d->title_ = QString::fromUtf8(track->title); - d->album_ = QString::fromUtf8(track->album); - d->artist_ = QString::fromUtf8(track->artist); - d->albumartist_ = QString::fromUtf8(track->albumartist); - d->composer_ = QString::fromUtf8(track->composer); - d->grouping_ = QString::fromUtf8(track->grouping); - d->track_ = track->track_nr; - d->disc_ = track->cd_nr; - d->bpm_ = track->BPM; - d->year_ = track->year; - d->genre_ = QString::fromUtf8(track->genre); - d->comment_ = QString::fromUtf8(track->comment); - d->compilation_ = track->compilation; - set_length_nanosec(track->tracklen * kNsecPerMsec); - d->bitrate_ = track->bitrate; - d->samplerate_ = track->samplerate; - d->mtime_ = track->time_modified; - d->ctime_ = track->time_added; - d->filesize_ = track->size; - d->filetype_ = track->type2 ? Type_Mpeg : Type_Mp4; - d->rating_ = float(track->rating) / 100; // 100 = 20 * 5 stars - d->playcount_ = track->playcount; - d->skipcount_ = track->skipcount; - d->lastplayed_ = track->time_played; + d->title_ = QString::fromUtf8(track->title); + d->album_ = QString::fromUtf8(track->album); + d->artist_ = QString::fromUtf8(track->artist); + d->albumartist_ = QString::fromUtf8(track->albumartist); + d->composer_ = QString::fromUtf8(track->composer); + d->grouping_ = QString::fromUtf8(track->grouping); + d->track_ = track->track_nr; + d->disc_ = track->cd_nr; + d->bpm_ = track->BPM; + d->year_ = track->year; + d->genre_ = QString::fromUtf8(track->genre); + d->comment_ = QString::fromUtf8(track->comment); + d->compilation_ = track->compilation; + set_length_nanosec(track->tracklen * kNsecPerMsec); + d->bitrate_ = track->bitrate; + d->samplerate_ = track->samplerate; + d->mtime_ = track->time_modified; + d->ctime_ = track->time_added; + d->filesize_ = track->size; + d->filetype_ = track->type2 ? Type_Mpeg : Type_Mp4; + d->rating_ = float(track->rating) / 100; // 100 = 20 * 5 stars + d->playcount_ = track->playcount; + d->skipcount_ = track->skipcount; + d->lastplayed_ = track->time_played; - QString filename = QString::fromLocal8Bit(track->ipod_path); - filename.replace(':', '/'); + QString filename = QString::fromLocal8Bit(track->ipod_path); + filename.replace(':', '/'); - if (prefix.contains("://")) { - set_url(QUrl(prefix + filename)); - } else { - set_url(QUrl::fromLocalFile(prefix + filename)); - } - - d->basefilename_ = QFileInfo(filename).fileName(); + if (prefix.contains("://")) { + set_url(QUrl(prefix + filename)); + } else { + set_url(QUrl::fromLocalFile(prefix + filename)); } - void Song::ToItdb(Itdb_Track *track) const { - track->title = strdup(d->title_.toUtf8().constData()); - track->album = strdup(d->album_.toUtf8().constData()); - track->artist = strdup(d->artist_.toUtf8().constData()); - track->albumartist = strdup(d->albumartist_.toUtf8().constData()); - track->composer = strdup(d->composer_.toUtf8().constData()); - track->grouping = strdup(d->grouping_.toUtf8().constData()); - track->track_nr = d->track_; - track->cd_nr = d->disc_; - track->BPM = d->bpm_; - track->year = d->year_; - track->genre = strdup(d->genre_.toUtf8().constData()); - track->comment = strdup(d->comment_.toUtf8().constData()); - track->compilation = d->compilation_; - track->tracklen = length_nanosec() / kNsecPerMsec; - track->bitrate = d->bitrate_; - track->samplerate = d->samplerate_; - track->time_modified = d->mtime_; - track->time_added = d->ctime_; - track->size = d->filesize_; - track->type1 = 0; - track->type2 = d->filetype_ == Type_Mp4 ? 0 : 1; - track->mediatype = 1; // Audio - track->rating = d->rating_ * 100; // 100 = 20 * 5 stars - track->playcount = d->playcount_; - track->skipcount = d->skipcount_; - track->time_played = d->lastplayed_; - } + d->basefilename_ = QFileInfo(filename).fileName(); +} + +void Song::ToItdb(Itdb_Track* track) const { + track->title = strdup(d->title_.toUtf8().constData()); + track->album = strdup(d->album_.toUtf8().constData()); + track->artist = strdup(d->artist_.toUtf8().constData()); + track->albumartist = strdup(d->albumartist_.toUtf8().constData()); + track->composer = strdup(d->composer_.toUtf8().constData()); + track->grouping = strdup(d->grouping_.toUtf8().constData()); + track->track_nr = d->track_; + track->cd_nr = d->disc_; + track->BPM = d->bpm_; + track->year = d->year_; + track->genre = strdup(d->genre_.toUtf8().constData()); + track->comment = strdup(d->comment_.toUtf8().constData()); + track->compilation = d->compilation_; + track->tracklen = length_nanosec() / kNsecPerMsec; + track->bitrate = d->bitrate_; + track->samplerate = d->samplerate_; + track->time_modified = d->mtime_; + track->time_added = d->ctime_; + track->size = d->filesize_; + track->type1 = 0; + track->type2 = d->filetype_ == Type_Mp4 ? 0 : 1; + track->mediatype = 1; // Audio + track->rating = d->rating_ * 100; // 100 = 20 * 5 stars + track->playcount = d->playcount_; + track->skipcount = d->skipcount_; + track->time_played = d->lastplayed_; +} #endif #ifdef HAVE_LIBMTP - void Song::InitFromMTP(const LIBMTP_track_t* track, const QString& host) { - d->valid_ = true; +void Song::InitFromMTP(const LIBMTP_track_t* track, const QString& host) { + d->valid_ = true; - d->title_ = QString::fromUtf8(track->title); - d->artist_ = QString::fromUtf8(track->artist); - d->album_ = QString::fromUtf8(track->album); - d->composer_ = QString::fromUtf8(track->composer); - d->genre_ = QString::fromUtf8(track->genre); - d->url_ = QUrl(QString("mtp://%1/%2").arg(host, track->item_id)); - d->basefilename_ = QString::number(track->item_id); + d->title_ = QString::fromUtf8(track->title); + d->artist_ = QString::fromUtf8(track->artist); + d->album_ = QString::fromUtf8(track->album); + d->composer_ = QString::fromUtf8(track->composer); + d->genre_ = QString::fromUtf8(track->genre); + d->url_ = QUrl(QString("mtp://%1/%2").arg(host, track->item_id)); + d->basefilename_ = QString::number(track->item_id); - d->track_ = track->tracknumber; - set_length_nanosec(track->duration * kNsecPerMsec); - d->samplerate_ = track->samplerate; - d->bitrate_ = track->bitrate; - d->filesize_ = track->filesize; - d->mtime_ = track->modificationdate; - d->ctime_ = track->modificationdate; + d->track_ = track->tracknumber; + set_length_nanosec(track->duration * kNsecPerMsec); + d->samplerate_ = track->samplerate; + d->bitrate_ = track->bitrate; + d->filesize_ = track->filesize; + d->mtime_ = track->modificationdate; + d->ctime_ = track->modificationdate; - d->rating_ = float(track->rating) / 100; - d->playcount_ = track->usecount; + d->rating_ = float(track->rating) / 100; + d->playcount_ = track->usecount; - switch (track->filetype) { - case LIBMTP_FILETYPE_WAV: d->filetype_ = Type_Wav; break; - case LIBMTP_FILETYPE_MP3: d->filetype_ = Type_Mpeg; break; - case LIBMTP_FILETYPE_WMA: d->filetype_ = Type_Asf; break; - case LIBMTP_FILETYPE_OGG: d->filetype_ = Type_OggVorbis; break; - case LIBMTP_FILETYPE_MP4: d->filetype_ = Type_Mp4; break; - case LIBMTP_FILETYPE_AAC: d->filetype_ = Type_Mp4; break; - case LIBMTP_FILETYPE_FLAC: d->filetype_ = Type_OggFlac; break; - case LIBMTP_FILETYPE_MP2: d->filetype_ = Type_Mpeg; break; - case LIBMTP_FILETYPE_M4A: d->filetype_ = Type_Mp4; break; - default: d->filetype_ = Type_Unknown; break; - } + switch (track->filetype) { + case LIBMTP_FILETYPE_WAV: + d->filetype_ = Type_Wav; + break; + case LIBMTP_FILETYPE_MP3: + d->filetype_ = Type_Mpeg; + break; + case LIBMTP_FILETYPE_WMA: + d->filetype_ = Type_Asf; + break; + case LIBMTP_FILETYPE_OGG: + d->filetype_ = Type_OggVorbis; + break; + case LIBMTP_FILETYPE_MP4: + d->filetype_ = Type_Mp4; + break; + case LIBMTP_FILETYPE_AAC: + d->filetype_ = Type_Mp4; + break; + case LIBMTP_FILETYPE_FLAC: + d->filetype_ = Type_OggFlac; + break; + case LIBMTP_FILETYPE_MP2: + d->filetype_ = Type_Mpeg; + break; + case LIBMTP_FILETYPE_M4A: + d->filetype_ = Type_Mp4; + break; + default: + d->filetype_ = Type_Unknown; + break; } +} - void Song::ToMTP(LIBMTP_track_t* track) const { - track->item_id = 0; - track->parent_id = 0; - track->storage_id = 0; +void Song::ToMTP(LIBMTP_track_t* track) const { + track->item_id = 0; + track->parent_id = 0; + track->storage_id = 0; - track->title = strdup(d->title_.toUtf8().constData()); - track->artist = strdup(d->artist_.toUtf8().constData()); - track->album = strdup(d->album_.toUtf8().constData()); - track->composer = strdup(d->composer_.toUtf8().constData()); - track->genre = strdup(d->genre_.toUtf8().constData()); - track->title = strdup(d->title_.toUtf8().constData()); - track->date = nullptr; + track->title = strdup(d->title_.toUtf8().constData()); + track->artist = strdup(d->artist_.toUtf8().constData()); + track->album = strdup(d->album_.toUtf8().constData()); + track->composer = strdup(d->composer_.toUtf8().constData()); + track->genre = strdup(d->genre_.toUtf8().constData()); + track->title = strdup(d->title_.toUtf8().constData()); + track->date = nullptr; - track->filename = strdup(d->basefilename_.toUtf8().constData()); + track->filename = strdup(d->basefilename_.toUtf8().constData()); - track->tracknumber = d->track_; - track->duration = length_nanosec() / kNsecPerMsec; - track->samplerate = d->samplerate_; - track->nochannels = 0; - track->wavecodec = 0; - track->bitrate = d->bitrate_; - track->bitratetype = 0; - track->rating = d->rating_ * 100; - track->usecount = d->playcount_; - track->filesize = d->filesize_; - track->modificationdate = d->mtime_; + track->tracknumber = d->track_; + track->duration = length_nanosec() / kNsecPerMsec; + track->samplerate = d->samplerate_; + track->nochannels = 0; + track->wavecodec = 0; + track->bitrate = d->bitrate_; + track->bitratetype = 0; + track->rating = d->rating_ * 100; + track->usecount = d->playcount_; + track->filesize = d->filesize_; + track->modificationdate = d->mtime_; - switch (d->filetype_) { - case Type_Asf: track->filetype = LIBMTP_FILETYPE_ASF; break; - case Type_Mp4: track->filetype = LIBMTP_FILETYPE_MP4; break; - case Type_Mpeg: track->filetype = LIBMTP_FILETYPE_MP3; break; - case Type_Flac: - case Type_OggFlac: track->filetype = LIBMTP_FILETYPE_FLAC; break; - case Type_OggSpeex: - case Type_OggVorbis: track->filetype = LIBMTP_FILETYPE_OGG; break; - case Type_Wav: track->filetype = LIBMTP_FILETYPE_WAV; break; - default: track->filetype = LIBMTP_FILETYPE_UNDEF_AUDIO; break; - } + switch (d->filetype_) { + case Type_Asf: + track->filetype = LIBMTP_FILETYPE_ASF; + break; + case Type_Mp4: + track->filetype = LIBMTP_FILETYPE_MP4; + break; + case Type_Mpeg: + track->filetype = LIBMTP_FILETYPE_MP3; + break; + case Type_Flac: + case Type_OggFlac: + track->filetype = LIBMTP_FILETYPE_FLAC; + break; + case Type_OggSpeex: + case Type_OggVorbis: + track->filetype = LIBMTP_FILETYPE_OGG; + break; + case Type_Wav: + track->filetype = LIBMTP_FILETYPE_WAV; + break; + default: + track->filetype = LIBMTP_FILETYPE_UNDEF_AUDIO; + break; } +} #endif -void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle &bundle) { +void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle& bundle) { if (d->init_from_file_ || d->url_.scheme() == "file") { // This Song was already loaded using taglib. Our tags are probably better // than the engine's. Note: init_from_file_ is used for non-file:// URLs @@ -768,10 +857,10 @@ void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle &bundle) { if (!bundle.tracknr.isEmpty()) d->track_ = bundle.tracknr.toInt(); } -void Song::BindToQuery(QSqlQuery *query) const { - #define strval(x) (x.isNull() ? "" : x) - #define intval(x) (x <= 0 ? -1 : x) - #define notnullintval(x) (x == -1 ? QVariant() : x) +void Song::BindToQuery(QSqlQuery* query) const { +#define strval(x) (x.isNull() ? "" : x) +#define intval(x) (x <= 0 ? -1 : x) +#define notnullintval(x) (x == -1 ? QVariant() : x) // Remember to bind these in the same order as kBindSpec @@ -793,9 +882,10 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":directory", notnullintval(d->directory_id_)); - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(d->url_)) { - query->bindValue(":filename", Utilities::GetRelativePathToClementineBin(d->url_)); + if (Application::kIsPortable && + Utilities::UrlOnSameDriveAsClementine(d->url_)) { + query->bindValue(":filename", + Utilities::GetRelativePathToClementineBin(d->url_)); } else { query->bindValue(":filename", d->url_.toEncoded()); } @@ -814,7 +904,8 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":rating", intval(d->rating_)); query->bindValue(":forced_compilation_on", d->forced_compilation_on_ ? 1 : 0); - query->bindValue(":forced_compilation_off", d->forced_compilation_off_ ? 1 : 0); + query->bindValue(":forced_compilation_off", + d->forced_compilation_off_ ? 1 : 0); query->bindValue(":effective_compilation", is_compilation() ? 1 : 0); @@ -833,12 +924,12 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":performer", strval(d->performer_)); query->bindValue(":grouping", strval(d->grouping_)); - #undef intval - #undef notnullintval - #undef strval +#undef intval +#undef notnullintval +#undef strval } -void Song::BindToFtsQuery(QSqlQuery *query) const { +void Song::BindToFtsQuery(QSqlQuery* query) const { query->bindValue(":ftstitle", d->title_); query->bindValue(":ftsalbum", d->album_); query->bindValue(":ftsartist", d->artist_); @@ -870,25 +961,21 @@ void Song::ToLastFM(lastfm::Track* track, bool prefer_album_artist) const { mtrack.setSource(lastfm::Track::Player); } } -#endif // HAVE_LIBLASTFM +#endif // HAVE_LIBLASTFM QString Song::PrettyRating() const { float rating = d->rating_; - if (rating == -1.0f) - return "0"; + if (rating == -1.0f) return "0"; return QString::number(static_cast(rating * 100)); } - QString Song::PrettyTitle() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; - if (title.isEmpty()) - title = d->url_.toString(); + if (title.isEmpty()) title = d->basefilename_; + if (title.isEmpty()) title = d->url_.toString(); return title; } @@ -896,25 +983,21 @@ QString Song::PrettyTitle() const { QString Song::PrettyTitleWithArtist() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; + if (title.isEmpty()) title = d->basefilename_; - if (!d->artist_.isEmpty()) - title = d->artist_ + " - " + title; + if (!d->artist_.isEmpty()) title = d->artist_ + " - " + title; return title; } QString Song::PrettyLength() const { - if (length_nanosec() == -1) - return QString::null; + if (length_nanosec() == -1) return QString::null; return Utilities::PrettyTimeNanosec(length_nanosec()); } QString Song::PrettyYear() const { - if (d->year_ == -1) - return QString::null; + if (d->year_ == -1) return QString::null; return QString::number(d->year_); } @@ -922,28 +1005,24 @@ QString Song::PrettyYear() const { QString Song::TitleWithCompilationArtist() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; + if (title.isEmpty()) title = d->basefilename_; - if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.toLower().contains("various")) + if (is_compilation() && !d->artist_.isEmpty() && + !d->artist_.toLower().contains("various")) title = d->artist_ + " - " + title; return title; } bool Song::IsMetadataEqual(const Song& other) const { - return d->title_ == other.d->title_ && - d->album_ == other.d->album_ && + return d->title_ == other.d->title_ && d->album_ == other.d->album_ && d->artist_ == other.d->artist_ && d->albumartist_ == other.d->albumartist_ && d->composer_ == other.d->composer_ && d->performer_ == other.d->performer_ && - d->grouping_ == other.d->grouping_ && - d->track_ == other.d->track_ && - d->disc_ == other.d->disc_ && - qFuzzyCompare(d->bpm_, other.d->bpm_) && - d->year_ == other.d->year_ && - d->genre_ == other.d->genre_ && + d->grouping_ == other.d->grouping_ && d->track_ == other.d->track_ && + d->disc_ == other.d->disc_ && qFuzzyCompare(d->bpm_, other.d->bpm_) && + d->year_ == other.d->year_ && d->genre_ == other.d->genre_ && d->comment_ == other.d->comment_ && d->compilation_ == other.d->compilation_ && d->beginning_ == other.d->beginning_ && @@ -982,23 +1061,19 @@ uint HashSimilar(const Song& song) { } bool Song::IsOnSameAlbum(const Song& other) const { - if (is_compilation() != other.is_compilation()) - return false; + if (is_compilation() != other.is_compilation()) return false; if (has_cue() && other.has_cue() && cue_path() == other.cue_path()) return true; - if (is_compilation() && album() == other.album()) - return true; + if (is_compilation() && album() == other.album()) return true; return album() == other.album() && artist() == other.artist(); } QString Song::AlbumKey() const { - return QString("%1|%2|%3").arg( - is_compilation() ? "_compilation" : artist(), - has_cue() ? cue_path() : "", - album()); + return QString("%1|%2|%3").arg(is_compilation() ? "_compilation" : artist(), + has_cue() ? cue_path() : "", album()); } void Song::ToXesam(QVariantMap* map) const { diff --git a/src/core/song.h b/src/core/song.h index 49d64a4c6..7d298b416 100644 --- a/src/core/song.h +++ b/src/core/song.h @@ -37,22 +37,21 @@ class QSqlQuery; class QUrl; #ifdef HAVE_LIBGPOD - struct _Itdb_Track; +struct _Itdb_Track; #endif #ifdef HAVE_LIBMTP - struct LIBMTP_track_struct; +struct LIBMTP_track_struct; #endif #ifdef HAVE_LIBLASTFM - namespace lastfm { - class Track; - } +namespace lastfm { +class Track; +} #endif class SqlRow; - class Song { public: Song(); @@ -91,7 +90,6 @@ class Song { Type_TrueAudio = 11, Type_Cdda = 12, Type_OggOpus = 13, - Type_Stream = 99, }; static QString TextForFiletype(FileType type); @@ -101,12 +99,16 @@ class Song { static void SortSongsListAlphabetically(QList* songs); // Constructors - void Init(const QString& title, const QString& artist, const QString& album, qint64 length_nanosec); - void Init(const QString& title, const QString& artist, const QString& album, qint64 beginning, qint64 end); + void Init(const QString& title, const QString& artist, const QString& album, + qint64 length_nanosec); + void Init(const QString& title, const QString& artist, const QString& album, + qint64 beginning, qint64 end); void InitFromProtobuf(const pb::tagreader::SongMetadata& pb); void InitFromQuery(const SqlRow& query, bool reliable_metadata, int col = 0); - void InitFromFilePartial(const QString& filename); // Just store the filename: incomplete but fast - void InitArtManual(); // Check if there is already a art in the cache and store the filename in art_manual + void InitFromFilePartial( + const QString& filename); // Just store the filename: incomplete but fast + void InitArtManual(); // Check if there is already a art in the cache and + // store the filename in art_manual #ifdef HAVE_LIBLASTFM void InitFromLastFM(const lastfm::Track& track); #endif @@ -149,7 +151,8 @@ class Song { const QString& artist() const; const QString& albumartist() const; const QString& effective_albumartist() const; - // Playlist views are special because you don't want to fill in album artists automatically for + // Playlist views are special because you don't want to fill in album artists + // automatically for // compilations, but you do for normal albums: const QString& playlist_albumartist() const; const QString& composer() const; @@ -296,4 +299,4 @@ uint qHash(const Song& song); // Hash function using field checked in IsSimilar function uint HashSimilar(const Song& song); -#endif // SONG_H +#endif // SONG_H diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 57c83a0fe..209b21902 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -28,7 +28,7 @@ #include #ifdef HAVE_AUDIOCD -# include +#include #endif #include "config.h" @@ -55,25 +55,31 @@ using std::placeholders::_1; QSet SongLoader::sRawUriSchemes; const int SongLoader::kDefaultTimeout = 5000; -SongLoader::SongLoader(LibraryBackendInterface* library, - const Player* player, - QObject *parent) - : QObject(parent), - timeout_timer_(new QTimer(this)), - playlist_parser_(new PlaylistParser(library, this)), - podcast_parser_(new PodcastParser), - cue_parser_(new CueParser(library, this)), - timeout_(kDefaultTimeout), - state_(WaitingForType), - success_(false), - parser_(nullptr), - is_podcast_(false), - library_(library), - player_(player) -{ +SongLoader::SongLoader(LibraryBackendInterface* library, const Player* player, + QObject* parent) + : QObject(parent), + timeout_timer_(new QTimer(this)), + playlist_parser_(new PlaylistParser(library, this)), + podcast_parser_(new PodcastParser), + cue_parser_(new CueParser(library, this)), + timeout_(kDefaultTimeout), + state_(WaitingForType), + success_(false), + parser_(nullptr), + is_podcast_(false), + library_(library), + player_(player) { if (sRawUriSchemes.isEmpty()) { - sRawUriSchemes << "udp" << "mms" << "mmsh" << "mmst" << "mmsu" << "rtsp" - << "rtspu" << "rtspt" << "rtsph" << "spotify"; + sRawUriSchemes << "udp" + << "mms" + << "mmsh" + << "mmst" + << "mmsu" + << "rtsp" + << "rtspu" + << "rtspt" + << "rtsph" + << "spotify"; } timeout_timer_->setSingleShot(true); @@ -121,23 +127,24 @@ SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) { } Song song; song.InitFromFilePartial(filename); - if (song.is_valid()) - songs_ << song; + if (song.is_valid()) songs_ << song; return Success; } SongLoader::Result SongLoader::LoadAudioCD() { #ifdef HAVE_AUDIOCD // Create gstreamer cdda element - GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", nullptr); + GstElement* cdda = gst_element_make_from_uri(GST_URI_SRC, "cdda://", nullptr); if (cdda == nullptr) { qLog(Error) << "Error while creating CDDA GstElement"; return Error; } // Change the element's state to ready and paused, to be able to query it - if (gst_element_set_state(cdda, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE || - gst_element_set_state(cdda, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + if (gst_element_set_state(cdda, GST_STATE_READY) == + GST_STATE_CHANGE_FAILURE || + gst_element_set_state(cdda, GST_STATE_PAUSED) == + GST_STATE_CHANGE_FAILURE) { qLog(Error) << "Error while changing CDDA GstElement's state"; gst_element_set_state(cdda, GST_STATE_NULL); gst_object_unref(GST_OBJECT(cdda)); @@ -145,10 +152,11 @@ SongLoader::Result SongLoader::LoadAudioCD() { } // Get number of tracks - GstFormat fmt = gst_format_get_by_nick ("track"); + GstFormat fmt = gst_format_get_by_nick("track"); GstFormat out_fmt = fmt; gint64 num_tracks = 0; - if (!gst_element_query_duration (cdda, &out_fmt, &num_tracks) || out_fmt != fmt) { + if (!gst_element_query_duration(cdda, &out_fmt, &num_tracks) || + out_fmt != fmt) { qLog(Error) << "Error while querying cdda GstElement"; gst_object_unref(GST_OBJECT(cdda)); return Error; @@ -159,8 +167,9 @@ SongLoader::Result SongLoader::LoadAudioCD() { Song song; guint64 duration = 0; // quint64 == ulonglong and guint64 == ulong, therefore we must cast - if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda)->tracks[track_number-1].tags, - GST_TAG_DURATION, &duration)) { + if (gst_tag_list_get_uint64( + GST_CDDA_BASE_SRC(cdda)->tracks[track_number - 1].tags, + GST_TAG_DURATION, &duration)) { song.set_length_nanosec((quint64)duration); } song.set_valid(true); @@ -173,48 +182,50 @@ SongLoader::Result SongLoader::LoadAudioCD() { // Generate MusicBrainz DiscId gst_tag_register_musicbrainz_tags(); - GstElement *pipe = gst_pipeline_new ("pipeline"); - gst_bin_add (GST_BIN (pipe), cdda); - gst_element_set_state (pipe, GST_STATE_READY); - gst_element_set_state (pipe, GST_STATE_PAUSED); - GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), - GST_CLOCK_TIME_NONE, - GST_MESSAGE_TAG); - GstTagList *tags = nullptr; - gst_message_parse_tag (msg, &tags); - char *string_mb = nullptr; - if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { + GstElement* pipe = gst_pipeline_new("pipeline"); + gst_bin_add(GST_BIN(pipe), cdda); + gst_element_set_state(pipe, GST_STATE_READY); + gst_element_set_state(pipe, GST_STATE_PAUSED); + GstMessage* msg = gst_bus_timed_pop_filtered( + GST_ELEMENT_BUS(pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); + GstTagList* tags = nullptr; + gst_message_parse_tag(msg, &tags); + char* string_mb = nullptr; + if (gst_tag_list_get_string(tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, + &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; - MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this); - connect(musicbrainz_client, - SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)), - SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList))); + MusicBrainzClient* musicbrainz_client = new MusicBrainzClient(this); + connect(musicbrainz_client, SIGNAL(Finished(const QString&, const QString&, + MusicBrainzClient::ResultList)), + SLOT(AudioCDTagsLoaded(const QString&, const QString&, + MusicBrainzClient::ResultList))); musicbrainz_client->StartDiscIdRequest(musicbrainz_discid); g_free(string_mb); } - + // Clean all the Gstreamer objects we have used: we don't need them anymore gst_object_unref(GST_OBJECT(cdda)); - gst_element_set_state (pipe, GST_STATE_NULL); + gst_element_set_state(pipe, GST_STATE_NULL); gst_object_unref(GST_OBJECT(pipe)); gst_object_unref(GST_OBJECT(msg)); gst_object_unref(GST_OBJECT(tags)); return Success; -#else // HAVE_AUDIOCD +#else // HAVE_AUDIOCD return Error; #endif } -void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album, - const MusicBrainzClient::ResultList& results) { +void SongLoader::AudioCDTagsLoaded( + const QString& artist, const QString& album, + const MusicBrainzClient::ResultList& results) { // Remove previously added songs metadata, because there are not needed // and that we are going to fill it with new (more complete) ones songs_.clear(); int track_number = 1; - foreach (const MusicBrainzClient::Result& ret, results) { + foreach(const MusicBrainzClient::Result & ret, results) { Song song; song.set_artist(artist); song.set_album(album); @@ -222,7 +233,8 @@ void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album, song.set_length_nanosec(ret.duration_msec_ * kNsecPerMsec); song.set_track(track_number); song.set_year(ret.year_); - // We need to set url: that's how playlist will find the correct item to update + // We need to set url: that's how playlist will find the correct item to + // update song.set_url(QUrl(QString("cdda://%1").arg(track_number++))); songs_ << song; } @@ -235,7 +247,8 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // First check to see if it's a directory - if so we can load all the songs // inside right away. if (QFileInfo(filename).isDir()) { - ConcurrentRun::Run(&thread_pool_, + ConcurrentRun::Run( + &thread_pool_, std::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); return WillLoadAsync; } @@ -243,8 +256,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { // It's a local file, so check if it looks like a playlist. // Read the first few bytes. QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) - return Error; + if (!file.open(QIODevice::ReadOnly)) return Error; QByteArray data(file.read(PlaylistParser::kMagicSize)); ParserBase* parser = playlist_parser_->ParserForMagic(data); @@ -258,7 +270,8 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { qLog(Debug) << "Parsing using" << parser->name(); // It's a playlist! - ConcurrentRun::Run(&thread_pool_, + ConcurrentRun::Run( + &thread_pool_, std::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); return WillLoadAsync; } @@ -279,7 +292,7 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { song.InitFromQuery(query, true); song_list << song; - } while(query.Next()); + } while (query.Next()); } else { QString matching_cue = filename.section('.', 0, -2) + ".cue"; @@ -288,19 +301,19 @@ SongLoader::Result SongLoader::LoadLocal(const QString& filename) { QFile cue(matching_cue); cue.open(QIODevice::ReadOnly); - song_list = cue_parser_->Load(&cue, matching_cue, QDir(filename.section('/', 0, -2))); + song_list = cue_parser_->Load(&cue, matching_cue, + QDir(filename.section('/', 0, -2))); } else { // it's a normal media file, load it asynchronously. TagReaderReply* reply = TagReaderClient::Instance()->ReadFile(filename); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(LocalFileLoaded(TagReaderReply*)), - reply); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(LocalFileLoaded(TagReaderReply*)), reply); return WillLoadAsync; } } - foreach (const Song& song, song_list) { + foreach(const Song & song, song_list) { if (song.is_valid()) { songs_ << song; } @@ -329,8 +342,7 @@ void SongLoader::EffectiveSongsLoad() { } void SongLoader::EffectiveSongLoad(Song* song) { - if (!song) - return; + if (!song) return; if (song->filetype() != Song::Type_Unknown) { // Maybe we loaded the metadata already, for example from a cuesheet. @@ -348,7 +360,8 @@ void SongLoader::EffectiveSongLoad(Song* song) { } } -void SongLoader::LoadPlaylistAndEmit(ParserBase* parser, const QString& filename) { +void SongLoader::LoadPlaylistAndEmit(ParserBase* parser, + const QString& filename) { LoadPlaylist(parser, filename); emit LoadFinished(true); } @@ -391,8 +404,7 @@ void SongLoader::LoadLocalDirectory(const QString& filename) { // one in our list to be fully loaded, so if the user has the "Start playing // when adding to playlist" preference behaviour set, it can enjoy the first // song being played (seek it, have moodbar, etc.) - if (!songs_.isEmpty()) - EffectiveSongLoad(&(*songs_.begin())); + if (!songs_.isEmpty()) EffectiveSongLoad(&(*songs_.begin())); } void SongLoader::AddAsRawStream() { @@ -462,14 +474,15 @@ SongLoader::Result SongLoader::LoadRemote() { // rest of the file, parse the playlist and return success. // Create the pipeline - it gets unreffed if it goes out of scope - std::shared_ptr pipeline( - gst_pipeline_new(nullptr), std::bind(&gst_object_unref, _1)); + std::shared_ptr pipeline(gst_pipeline_new(nullptr), + std::bind(&gst_object_unref, _1)); // Create the source element automatically based on the URL GstElement* source = gst_element_make_from_uri( GST_URI_SRC, url_.toEncoded().constData(), nullptr); if (!source) { - qLog(Warning) << "Couldn't create gstreamer source element for" << url_.toString(); + qLog(Warning) << "Couldn't create gstreamer source element for" + << url_.toString(); return Error; } @@ -477,7 +490,8 @@ SongLoader::Result SongLoader::LoadRemote() { GstElement* typefind = gst_element_factory_make("typefind", nullptr); GstElement* fakesink = gst_element_factory_make("fakesink", nullptr); - gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, nullptr); + gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, + nullptr); gst_element_link_many(source, typefind, fakesink, nullptr); // Connect callbacks @@ -500,15 +514,16 @@ SongLoader::Result SongLoader::LoadRemote() { void SongLoader::TypeFound(GstElement*, uint, GstCaps* caps, void* self) { SongLoader* instance = static_cast(self); - if (instance->state_ != WaitingForType) - return; + if (instance->state_ != WaitingForType) return; // Check the mimetype - instance->mime_type_ = gst_structure_get_name(gst_caps_get_structure(caps, 0)); + instance->mime_type_ = + gst_structure_get_name(gst_caps_get_structure(caps, 0)); qLog(Debug) << "Mime type is" << instance->mime_type_; if (instance->mime_type_ == "text/plain" || instance->mime_type_ == "text/uri-list" || - instance->podcast_parser_->supported_mime_types().contains(instance->mime_type_)) { + instance->podcast_parser_->supported_mime_types().contains( + instance->mime_type_)) { // Yeah it might be a playlist, let's get some data and have a better look instance->state_ = WaitingForMagic; return; @@ -521,8 +536,7 @@ void SongLoader::TypeFound(GstElement*, uint, GstCaps* caps, void* self) { gboolean SongLoader::DataReady(GstPad*, GstBuffer* buf, void* self) { SongLoader* instance = static_cast(self); - if (instance->state_ == Finished) - return true; + if (instance->state_ == Finished) return true; // Append the data to the buffer instance->buffer_.append(reinterpret_cast(GST_BUFFER_DATA(buf)), @@ -554,7 +568,8 @@ gboolean SongLoader::BusCallback(GstBus*, GstMessage* msg, gpointer self) { return TRUE; } -GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, gpointer self) { +GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer self) { SongLoader* instance = reinterpret_cast(self); switch (GST_MESSAGE_TYPE(msg)) { @@ -573,8 +588,7 @@ GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, gpointer s } void SongLoader::ErrorMessageReceived(GstMessage* msg) { - if (state_ == Finished) - return; + if (state_ == Finished) return; GError* error; gchar* debugs; @@ -589,8 +603,8 @@ void SongLoader::ErrorMessageReceived(GstMessage* msg) { free(debugs); if (state_ == WaitingForType && - message_str == gst_error_get_message( - GST_STREAM_ERROR, GST_STREAM_ERROR_TYPE_NOT_FOUND)) { + message_str == gst_error_get_message(GST_STREAM_ERROR, + GST_STREAM_ERROR_TYPE_NOT_FOUND)) { // Don't give up - assume it's a playlist and see if one of our parsers can // read it. state_ = WaitingForMagic; @@ -603,25 +617,24 @@ void SongLoader::ErrorMessageReceived(GstMessage* msg) { void SongLoader::EndOfStreamReached() { qLog(Debug) << Q_FUNC_INFO << state_; switch (state_) { - case Finished: - break; - - case WaitingForMagic: - // Do the magic on the data we have already - MagicReady(); - if (state_ == Finished) + case Finished: break; + + case WaitingForMagic: + // Do the magic on the data we have already + MagicReady(); + if (state_ == Finished) break; // It looks like a playlist, so parse it // fallthrough - case WaitingForData: - // It's a playlist and we've got all the data - finish and parse it - StopTypefindAsync(true); - break; + case WaitingForData: + // It's a playlist and we've got all the data - finish and parse it + StopTypefindAsync(true); + break; - case WaitingForType: - StopTypefindAsync(false); - break; + case WaitingForType: + StopTypefindAsync(false); + break; } } @@ -636,7 +649,8 @@ void SongLoader::MagicReady() { is_podcast_ = true; qLog(Debug) << "Looks like a podcast"; } else { - qLog(Warning) << url_.toString() << "is text, but not a recognised playlist"; + qLog(Warning) << url_.toString() + << "is text, but not a recognised playlist"; // It doesn't look like a playlist, so just finish StopTypefindAsync(false); return; @@ -648,7 +662,8 @@ void SongLoader::MagicReady() { if (!is_podcast_) { qLog(Debug) << "Magic says" << parser_->name(); if (parser_->name() == "ASX/INI" && url_.scheme() == "http") { - // This is actually a weird MS-WMSP stream. Changing the protocol to MMS from + // This is actually a weird MS-WMSP stream. Changing the protocol to MMS + // from // HTTP makes it playable. parser_ = nullptr; url_.setScheme("mms"); @@ -666,7 +681,8 @@ void SongLoader::MagicReady() { bool SongLoader::IsPipelinePlaying() { GstState state = GST_STATE_NULL; GstState pending_state = GST_STATE_NULL; - GstStateChangeReturn ret = gst_element_get_state(pipeline_.get(), &state, &pending_state, GST_SECOND); + GstStateChangeReturn ret = gst_element_get_state(pipeline_.get(), &state, + &pending_state, GST_SECOND); if (ret == GST_STATE_CHANGE_ASYNC && pending_state == GST_STATE_PLAYING) { // We're still on the way to playing diff --git a/src/core/songloader.h b/src/core/songloader.h index 7b4753fc5..1eafe353b 100644 --- a/src/core/songloader.h +++ b/src/core/songloader.h @@ -39,16 +39,12 @@ class PodcastParser; class SongLoader : public QObject { Q_OBJECT -public: + public: SongLoader(LibraryBackendInterface* library, const Player* player, QObject* parent = 0); ~SongLoader(); - enum Result { - Success, - Error, - WillLoadAsync, - }; + enum Result { Success, Error, WillLoadAsync, }; static const int kDefaultTimeout; @@ -74,20 +70,15 @@ public: signals: void LoadFinished(bool success); -private slots: + private slots: void Timeout(); void StopTypefind(); void AudioCDTagsLoaded(const QString& artist, const QString& album, const MusicBrainzClient::ResultList& results); void LocalFileLoaded(TagReaderReply* reply); -private: - enum State { - WaitingForType, - WaitingForMagic, - WaitingForData, - Finished, - }; + private: + enum State { WaitingForType, WaitingForMagic, WaitingForData, Finished, }; Result LoadLocal(const QString& filename); Result LoadLocalPartial(const QString& filename); @@ -101,7 +92,8 @@ private: Result LoadRemote(); // GStreamer callbacks - static void TypeFound(GstElement* typefind, uint probability, GstCaps* caps, void* self); + static void TypeFound(GstElement* typefind, uint probability, GstCaps* caps, + void* self); static gboolean DataReady(GstPad*, GstBuffer* buf, void* self); static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage*, gpointer); static gboolean BusCallback(GstBus*, GstMessage*, gpointer); @@ -112,7 +104,7 @@ private: void MagicReady(); bool IsPipelinePlaying(); -private: + private: static QSet sRawUriSchemes; QUrl url_; @@ -139,4 +131,4 @@ private: QThreadPool thread_pool_; }; -#endif // SONGLOADER_H +#endif // SONGLOADER_H diff --git a/src/core/stylesheetloader.cpp b/src/core/stylesheetloader.cpp index 415bf7ac3..353ddc1c5 100644 --- a/src/core/stylesheetloader.cpp +++ b/src/core/stylesheetloader.cpp @@ -21,18 +21,15 @@ #include #include -StyleSheetLoader::StyleSheetLoader(QObject* parent) - : QObject(parent) -{ -} +StyleSheetLoader::StyleSheetLoader(QObject* parent) : QObject(parent) {} -void StyleSheetLoader::SetStyleSheet(QWidget* widget, const QString &filename) { +void StyleSheetLoader::SetStyleSheet(QWidget* widget, const QString& filename) { filenames_[widget] = filename; widget->installEventFilter(this); UpdateStyleSheet(widget); } -void StyleSheetLoader::UpdateStyleSheet(QWidget *widget) { +void StyleSheetLoader::UpdateStyleSheet(QWidget* widget) { QString filename(filenames_[widget]); // Load the file @@ -43,14 +40,16 @@ void StyleSheetLoader::UpdateStyleSheet(QWidget *widget) { } QString contents(file.readAll()); - // Replace %palette-role with actual colours QPalette p(widget->palette()); QColor alt = p.color(QPalette::AlternateBase); alt.setAlpha(50); contents.replace("%palette-alternate-base", QString("rgba(%1,%2,%3,%4%)") - .arg(alt.red()).arg(alt.green()).arg(alt.blue()).arg(alt.alpha())); + .arg(alt.red()) + .arg(alt.green()) + .arg(alt.blue()) + .arg(alt.alpha())); ReplaceColor(&contents, "Window", p, QPalette::Window); ReplaceColor(&contents, "Background", p, QPalette::Background); @@ -88,17 +87,15 @@ void StyleSheetLoader::ReplaceColor(QString* css, const QString& name, palette.color(role).lighter().name(), Qt::CaseInsensitive); css->replace("%palette-" + name + "-darker", palette.color(role).darker().name(), Qt::CaseInsensitive); - css->replace("%palette-" + name, - palette.color(role).name(), Qt::CaseInsensitive); + css->replace("%palette-" + name, palette.color(role).name(), + Qt::CaseInsensitive); } bool StyleSheetLoader::eventFilter(QObject* obj, QEvent* event) { - if (event->type() != QEvent::PaletteChange) - return false; + if (event->type() != QEvent::PaletteChange) return false; QWidget* widget = qobject_cast(obj); - if (!widget || !filenames_.contains(widget)) - return false; + if (!widget || !filenames_.contains(widget)) return false; UpdateStyleSheet(widget); return false; diff --git a/src/core/stylesheetloader.h b/src/core/stylesheetloader.h index 1fd462058..622e0c9c8 100644 --- a/src/core/stylesheetloader.h +++ b/src/core/stylesheetloader.h @@ -45,4 +45,4 @@ class StyleSheetLoader : public QObject { QMap filenames_; }; -#endif // STYLESHEETLOADER_H +#endif // STYLESHEETLOADER_H diff --git a/src/core/tagreaderclient.cpp b/src/core/tagreaderclient.cpp index 61f082ecd..66bcfd0c4 100644 --- a/src/core/tagreaderclient.cpp +++ b/src/core/tagreaderclient.cpp @@ -24,24 +24,20 @@ #include #include - const char* TagReaderClient::kWorkerExecutableName = "clementine-tagreader"; TagReaderClient* TagReaderClient::sInstance = nullptr; TagReaderClient::TagReaderClient(QObject* parent) - : QObject(parent), - worker_pool_(new WorkerPool(this)) -{ + : QObject(parent), worker_pool_(new WorkerPool(this)) { sInstance = this; worker_pool_->SetExecutableName(kWorkerExecutableName); worker_pool_->SetWorkerCount(QThread::idealThreadCount()); - connect(worker_pool_, SIGNAL(WorkerFailedToStart()), SLOT(WorkerFailedToStart())); + connect(worker_pool_, SIGNAL(WorkerFailedToStart()), + SLOT(WorkerFailedToStart())); } -void TagReaderClient::Start() { - worker_pool_->Start(); -} +void TagReaderClient::Start() { worker_pool_->Start(); } void TagReaderClient::WorkerFailedToStart() { qLog(Error) << "The" << kWorkerExecutableName << "executable was not found" @@ -58,7 +54,8 @@ TagReaderReply* TagReaderClient::ReadFile(const QString& filename) { return worker_pool_->SendMessageWithReply(&message); } -TagReaderReply* TagReaderClient::SaveFile(const QString& filename, const Song& metadata) { +TagReaderReply* TagReaderClient::SaveFile(const QString& filename, + const Song& metadata) { pb::tagreader::Message message; pb::tagreader::SaveFileRequest* req = message.mutable_save_file_request(); @@ -80,7 +77,7 @@ TagReaderReply* TagReaderClient::UpdateSongStatistics(const Song& metadata) { } void TagReaderClient::UpdateSongsStatistics(const SongList& songs) { - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { TagReaderReply* reply = UpdateSongStatistics(song); connect(reply, SIGNAL(Finished(bool)), reply, SLOT(deleteLater())); } @@ -98,7 +95,7 @@ TagReaderReply* TagReaderClient::UpdateSongRating(const Song& metadata) { } void TagReaderClient::UpdateSongsRating(const SongList& songs) { - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { TagReaderReply* reply = UpdateSongRating(song); connect(reply, SIGNAL(Finished(bool)), reply, SLOT(deleteLater())); } @@ -106,7 +103,8 @@ void TagReaderClient::UpdateSongsRating(const SongList& songs) { TagReaderReply* TagReaderClient::IsMediaFile(const QString& filename) { pb::tagreader::Message message; - pb::tagreader::IsMediaFileRequest* req = message.mutable_is_media_file_request(); + pb::tagreader::IsMediaFileRequest* req = + message.mutable_is_media_file_request(); req->set_filename(DataCommaSizeFromQString(filename)); @@ -115,18 +113,17 @@ TagReaderReply* TagReaderClient::IsMediaFile(const QString& filename) { TagReaderReply* TagReaderClient::LoadEmbeddedArt(const QString& filename) { pb::tagreader::Message message; - pb::tagreader::LoadEmbeddedArtRequest* req = message.mutable_load_embedded_art_request(); + pb::tagreader::LoadEmbeddedArtRequest* req = + message.mutable_load_embedded_art_request(); req->set_filename(DataCommaSizeFromQString(filename)); return worker_pool_->SendMessageWithReply(&message); } -TagReaderReply* TagReaderClient::ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& authorisation_header) { +TagReaderReply* TagReaderClient::ReadCloudFile( + const QUrl& download_url, const QString& title, int size, + const QString& mime_type, const QString& authorisation_header) { pb::tagreader::Message message; pb::tagreader::ReadCloudFileRequest* req = message.mutable_read_cloud_file_request(); @@ -151,7 +148,8 @@ void TagReaderClient::ReadFileBlocking(const QString& filename, Song* song) { reply->deleteLater(); } -bool TagReaderClient::SaveFileBlocking(const QString& filename, const Song& metadata) { +bool TagReaderClient::SaveFileBlocking(const QString& filename, + const Song& metadata) { Q_ASSERT(QThread::currentThread() != thread()); bool ret = false; diff --git a/src/core/tagreaderclient.h b/src/core/tagreaderclient.h index 20e99b44a..7a83aa324 100644 --- a/src/core/tagreaderclient.h +++ b/src/core/tagreaderclient.h @@ -31,7 +31,7 @@ class QProcess; class TagReaderClient : public QObject { Q_OBJECT -public: + public: TagReaderClient(QObject* parent = 0); typedef AbstractMessageHandler HandlerType; @@ -47,10 +47,8 @@ public: ReplyType* UpdateSongRating(const Song& metadata); ReplyType* IsMediaFile(const QString& filename); ReplyType* LoadEmbeddedArt(const QString& filename); - ReplyType* ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, + ReplyType* ReadCloudFile(const QUrl& download_url, const QString& title, + int size, const QString& mime_type, const QString& authorisation_header); // Convenience functions that call the above functions and wait for a @@ -66,14 +64,14 @@ public: // TODO: Make this not a singleton static TagReaderClient* Instance() { return sInstance; } -public slots: + public slots: void UpdateSongsStatistics(const SongList& songs); void UpdateSongsRating(const SongList& songs); -private slots: + private slots: void WorkerFailedToStart(); -private: + private: static TagReaderClient* sInstance; WorkerPool* worker_pool_; @@ -82,4 +80,4 @@ private: typedef TagReaderClient::ReplyType TagReaderReply; -#endif // TAGREADERCLIENT_H +#endif // TAGREADERCLIENT_H diff --git a/src/core/taskmanager.cpp b/src/core/taskmanager.cpp index bfd853f34..0ab5ff3d2 100644 --- a/src/core/taskmanager.cpp +++ b/src/core/taskmanager.cpp @@ -17,11 +17,7 @@ #include "taskmanager.h" -TaskManager::TaskManager(QObject *parent) - : QObject(parent), - next_task_id_(1) -{ -} +TaskManager::TaskManager(QObject* parent) : QObject(parent), next_task_id_(1) {} int TaskManager::StartTask(const QString& name) { Task t; @@ -32,7 +28,7 @@ int TaskManager::StartTask(const QString& name) { { QMutexLocker l(&mutex_); - t.id = next_task_id_ ++; + t.id = next_task_id_++; tasks_[t.id] = t; } @@ -54,8 +50,7 @@ QList TaskManager::GetTasks() { void TaskManager::SetTaskBlocksLibraryScans(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.blocks_library_scans = true; @@ -68,13 +63,11 @@ void TaskManager::SetTaskBlocksLibraryScans(int id) { void TaskManager::SetTaskProgress(int id, int progress, int max) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.progress = progress; - if (max) - t.progress_max = max; + if (max) t.progress_max = max; } emit TasksChanged(); @@ -83,13 +76,11 @@ void TaskManager::SetTaskProgress(int id, int progress, int max) { void TaskManager::IncreaseTaskProgress(int id, int progress, int max) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.progress += progress; - if (max) - t.progress_max = max; + if (max) t.progress_max = max; } emit TasksChanged(); @@ -100,12 +91,11 @@ void TaskManager::SetTaskFinished(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; if (tasks_[id].blocks_library_scans) { resume_library_watchers = true; - foreach (const Task& task, tasks_.values()) { + foreach(const Task & task, tasks_.values()) { if (task.id != id && task.blocks_library_scans) { resume_library_watchers = false; break; @@ -117,15 +107,13 @@ void TaskManager::SetTaskFinished(int id) { } emit TasksChanged(); - if (resume_library_watchers) - emit ResumeLibraryWatchers(); + if (resume_library_watchers) emit ResumeLibraryWatchers(); } int TaskManager::GetTaskProgress(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return 0; + if (!tasks_.contains(id)) return 0; return tasks_[id].progress; } } diff --git a/src/core/taskmanager.h b/src/core/taskmanager.h index 4a240c1b5..b743f4777 100644 --- a/src/core/taskmanager.h +++ b/src/core/taskmanager.h @@ -25,7 +25,7 @@ class TaskManager : public QObject { Q_OBJECT -public: + public: TaskManager(QObject* parent = 0); struct Task { @@ -39,13 +39,9 @@ public: class ScopedTask { public: ScopedTask(const int task_id, TaskManager* task_manager) - : task_id_(task_id), - task_manager_(task_manager) { - } + : task_id_(task_id), task_manager_(task_manager) {} - ~ScopedTask() { - task_manager_->SetTaskFinished(task_id_); - } + ~ScopedTask() { task_manager_->SetTaskFinished(task_id_); } private: const int task_id_; @@ -70,7 +66,7 @@ signals: void PauseLibraryWatchers(); void ResumeLibraryWatchers(); -private: + private: QMutex mutex_; QMap tasks_; int next_task_id_; @@ -78,4 +74,4 @@ private: Q_DISABLE_COPY(TaskManager); }; -#endif // TASKMANAGER_H +#endif // TASKMANAGER_H diff --git a/src/core/timeconstants.h b/src/core/timeconstants.h index 96242d659..8a79d5397 100644 --- a/src/core/timeconstants.h +++ b/src/core/timeconstants.h @@ -24,13 +24,13 @@ #include // Use these to convert between time units -const qint64 kMsecPerSec = 1000ll; +const qint64 kMsecPerSec = 1000ll; const qint64 kUsecPerMsec = 1000ll; -const qint64 kUsecPerSec = 1000000ll; +const qint64 kUsecPerSec = 1000000ll; const qint64 kNsecPerUsec = 1000ll; const qint64 kNsecPerMsec = 1000000ll; -const qint64 kNsecPerSec = 1000000000ll; +const qint64 kNsecPerSec = 1000000000ll; -const qint64 kSecsPerDay = 24 * 60 * 60; +const qint64 kSecsPerDay = 24 * 60 * 60; -#endif // TIMECONSTANTS_H +#endif // TIMECONSTANTS_H diff --git a/src/core/ubuntuunityhack.cpp b/src/core/ubuntuunityhack.cpp index d5c253622..f75647b2b 100644 --- a/src/core/ubuntuunityhack.cpp +++ b/src/core/ubuntuunityhack.cpp @@ -21,13 +21,11 @@ #include #include -const char* UbuntuUnityHack::kGSettingsFileName = "gsettings"; -const char* UbuntuUnityHack::kUnityPanel = "com.canonical.Unity.Panel"; +const char* UbuntuUnityHack::kGSettingsFileName = "gsettings"; +const char* UbuntuUnityHack::kUnityPanel = "com.canonical.Unity.Panel"; const char* UbuntuUnityHack::kUnitySystrayWhitelist = "systray-whitelist"; -UbuntuUnityHack::UbuntuUnityHack(QObject* parent) - : QObject(parent) -{ +UbuntuUnityHack::UbuntuUnityHack(QObject* parent) : QObject(parent) { // Check if we're on Ubuntu first. QFile lsb_release("/etc/lsb-release"); if (lsb_release.open(QIODevice::ReadOnly)) { @@ -43,8 +41,8 @@ UbuntuUnityHack::UbuntuUnityHack(QObject* parent) QProcess* get = new QProcess(this); connect(get, SIGNAL(finished(int)), SLOT(GetFinished(int))); connect(get, SIGNAL(error(QProcess::ProcessError)), SLOT(GetError())); - get->start(kGSettingsFileName, QStringList() - << "get" << kUnityPanel << kUnitySystrayWhitelist); + get->start(kGSettingsFileName, QStringList() << "get" << kUnityPanel + << kUnitySystrayWhitelist); } void UbuntuUnityHack::GetError() { @@ -85,10 +83,11 @@ void UbuntuUnityHack::GetFinished(int exit_code) { QProcess* set = new QProcess(this); connect(set, SIGNAL(finished(int)), set, SLOT(deleteLater())); - set->start(kGSettingsFileName, QStringList() - << "set" << kUnityPanel << kUnitySystrayWhitelist << whitelist); + set->start(kGSettingsFileName, QStringList() << "set" << kUnityPanel + << kUnitySystrayWhitelist + << whitelist); - qLog(Info) << "Clementine has added itself to the Unity system tray" << - "whitelist, but this won't take effect until the next time" << - "you log out and log back in."; + qLog(Info) << "Clementine has added itself to the Unity system tray" + << "whitelist, but this won't take effect until the next time" + << "you log out and log back in."; } diff --git a/src/core/ubuntuunityhack.h b/src/core/ubuntuunityhack.h index 5ce8077a1..324f96731 100644 --- a/src/core/ubuntuunityhack.h +++ b/src/core/ubuntuunityhack.h @@ -24,17 +24,17 @@ class QProcess; class UbuntuUnityHack : public QObject { Q_OBJECT -public: + public: UbuntuUnityHack(QObject* parent = NULL); -private slots: + private slots: void GetFinished(int exit_code); void GetError(); -private: + private: static const char* kGSettingsFileName; static const char* kUnityPanel; static const char* kUnitySystrayWhitelist; }; -#endif // UBUNTUUNITYHACK_H +#endif // UBUNTUUNITYHACK_H diff --git a/src/core/urlhandler.cpp b/src/core/urlhandler.cpp index c8e78a50e..e238c0fbb 100644 --- a/src/core/urlhandler.cpp +++ b/src/core/urlhandler.cpp @@ -17,17 +17,13 @@ #include "urlhandler.h" -UrlHandler::LoadResult::LoadResult( - const QUrl& original_url, Type type, const QUrl& media_url, qint64 length_nanosec) - : original_url_(original_url), type_(type), media_url_(media_url), length_nanosec_(length_nanosec) -{ -} +UrlHandler::LoadResult::LoadResult(const QUrl& original_url, Type type, + const QUrl& media_url, qint64 length_nanosec) + : original_url_(original_url), + type_(type), + media_url_(media_url), + length_nanosec_(length_nanosec) {} -UrlHandler::UrlHandler(QObject* parent) - : QObject(parent) -{ -} +UrlHandler::UrlHandler(QObject* parent) : QObject(parent) {} -QIcon UrlHandler::icon() const { - return QIcon(); -} +QIcon UrlHandler::icon() const { return QIcon(); } diff --git a/src/core/urlhandler.h b/src/core/urlhandler.h index 157e76ced..649426f8f 100644 --- a/src/core/urlhandler.h +++ b/src/core/urlhandler.h @@ -25,7 +25,7 @@ class UrlHandler : public QObject { Q_OBJECT -public: + public: UrlHandler(QObject* parent = 0); // The URL scheme that this handler handles. @@ -49,10 +49,8 @@ public: TrackAvailable, }; - LoadResult(const QUrl& original_url = QUrl(), - Type type = NoMoreTracks, - const QUrl& media_url = QUrl(), - qint64 length_nanosec_ = -1); + LoadResult(const QUrl& original_url = QUrl(), Type type = NoMoreTracks, + const QUrl& media_url = QUrl(), qint64 length_nanosec_ = -1); // The url that the playlist item has in Url(). // Might be something unplayable like lastfm://... @@ -75,12 +73,13 @@ public: // get another track to play. virtual LoadResult LoadNext(const QUrl& url) { return LoadResult(url); } - // Functions to be warned when something happen to a track handled by UrlHandler. - virtual void TrackAboutToEnd() { }; - virtual void TrackSkipped() { }; + // Functions to be warned when something happen to a track handled by + // UrlHandler. + virtual void TrackAboutToEnd() {}; + virtual void TrackSkipped() {}; signals: void AsyncLoadComplete(const UrlHandler::LoadResult& result); }; -#endif // URLHANDLER_H +#endif // URLHANDLER_H diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index cb9a94d0e..f8f149f33 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -45,28 +45,28 @@ #include "sha2.h" #if defined(Q_OS_UNIX) -# include +#include #elif defined(Q_OS_WIN32) -# include -# include +#include +#include #endif #ifdef Q_OS_LINUX -# include -# include +#include +#include #endif #ifdef Q_OS_DARWIN -# include +#include #endif #ifdef Q_OS_DARWIN -# include "core/mac_startup.h" -# include "core/mac_utilities.h" -# include "core/scoped_cftyperef.h" -# include "CoreServices/CoreServices.h" -# include "IOKit/ps/IOPowerSources.h" -# include "IOKit/ps/IOPSKeys.h" -# include +#include "core/mac_startup.h" +#include "core/mac_utilities.h" +#include "core/scoped_cftyperef.h" +#include "CoreServices/CoreServices.h" +#include "IOKit/ps/IOPowerSources.h" +#include "IOKit/ps/IOPSKeys.h" +#include #endif namespace Utilities { @@ -84,7 +84,7 @@ QString PrettyTime(int seconds) { // negative times. seconds = qAbs(seconds); - int hours = seconds / (60*60); + int hours = seconds / (60 * 60); int minutes = (seconds / 60) % 60; seconds %= 60; @@ -102,14 +102,13 @@ QString PrettyTimeNanosec(qint64 nanoseconds) { } QString WordyTime(quint64 seconds) { - quint64 days = seconds / (60*60*24); + quint64 days = seconds / (60 * 60 * 24); // TODO: Make the plural rules translatable QStringList parts; - if (days) - parts << (days == 1 ? tr("1 day") : tr("%1 days").arg(days)); - parts << PrettyTime(seconds - days*60*60*24); + if (days) parts << (days == 1 ? tr("1 day") : tr("%1 days").arg(days)); + parts << PrettyTime(seconds - days * 60 * 60 * 24); return parts.join(" "); } @@ -122,14 +121,12 @@ QString Ago(int seconds_since_epoch, const QLocale& locale) { const QDateTime now = QDateTime::currentDateTime(); const QDateTime then = QDateTime::fromTime_t(seconds_since_epoch); const int days_ago = then.date().daysTo(now.date()); - const QString time = then.time().toString(locale.timeFormat(QLocale::ShortFormat)); + const QString time = + then.time().toString(locale.timeFormat(QLocale::ShortFormat)); - if (days_ago == 0) - return tr("Today") + " " + time; - if (days_ago == 1) - return tr("Yesterday") + " " + time; - if (days_ago <= 7) - return tr("%1 days ago").arg(days_ago); + if (days_ago == 0) return tr("Today") + " " + time; + if (days_ago == 1) return tr("Yesterday") + " " + time; + if (days_ago <= 7) return tr("%1 days ago").arg(days_ago); return then.date().toString(locale.dateFormat(QLocale::ShortFormat)); } @@ -138,16 +135,11 @@ QString PrettyFutureDate(const QDate& date) { const QDate now = QDate::currentDate(); const int delta_days = now.daysTo(date); - if (delta_days < 0) - return QString(); - if (delta_days == 0) - return tr("Today"); - if (delta_days == 1) - return tr("Tomorrow"); - if (delta_days <= 7) - return tr("In %1 days").arg(delta_days); - if (delta_days <= 14) - return tr("Next week"); + if (delta_days < 0) return QString(); + if (delta_days == 0) return tr("Today"); + if (delta_days == 1) return tr("Tomorrow"); + if (delta_days <= 7) return tr("In %1 days").arg(delta_days); + if (delta_days <= 14) return tr("Next week"); return tr("In %1 weeks").arg(delta_days / 7); } @@ -158,12 +150,12 @@ QString PrettySize(quint64 bytes) { if (bytes > 0) { if (bytes <= 1000) ret = QString::number(bytes) + " bytes"; - else if (bytes <= 1000*1000) + else if (bytes <= 1000 * 1000) ret.sprintf("%.1f KB", float(bytes) / 1000); - else if (bytes <= 1000*1000*1000) - ret.sprintf("%.1f MB", float(bytes) / (1000*1000)); + else if (bytes <= 1000 * 1000 * 1000) + ret.sprintf("%.1f MB", float(bytes) / (1000 * 1000)); else - ret.sprintf("%.1f GB", float(bytes) / (1000*1000*1000)); + ret.sprintf("%.1f GB", float(bytes) / (1000 * 1000 * 1000)); } return ret; } @@ -175,8 +167,9 @@ quint64 FileSystemCapacity(const QString& path) { return quint64(fs_info.f_blocks) * quint64(fs_info.f_bsize); #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; - if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - nullptr, &ret, nullptr) != 0) + if (GetDiskFreeSpaceEx( + QDir::toNativeSeparators(path).toLocal8Bit().constData(), nullptr, + &ret, nullptr) != 0) return ret.QuadPart; #endif @@ -190,8 +183,9 @@ quint64 FileSystemFreeSpace(const QString& path) { return quint64(fs_info.f_bavail) * quint64(fs_info.f_bsize); #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; - if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - &ret, nullptr, nullptr) != 0) + if (GetDiskFreeSpaceEx( + QDir::toNativeSeparators(path).toLocal8Bit().constData(), &ret, + nullptr, nullptr) != 0) return ret.QuadPart; #endif @@ -202,8 +196,7 @@ QString MakeTempDir(const QString template_name) { QString path; { QTemporaryFile tempfile; - if (!template_name.isEmpty()) - tempfile.setFileTemplate(template_name); + if (!template_name.isEmpty()) tempfile.setFileTemplate(template_name); tempfile.open(); path = tempfile.fileName(); @@ -228,11 +221,13 @@ QString GetTemporaryFileName() { void RemoveRecursive(const QString& path) { QDir dir(path); - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) - RemoveRecursive(path + "/" + child); + foreach(const QString & child, + dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) + RemoveRecursive(path + "/" + child); - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) - QFile::remove(path + "/" + child); + foreach(const QString & child, + dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) + QFile::remove(path + "/" + child); dir.rmdir(path); } @@ -244,16 +239,20 @@ bool CopyRecursive(const QString& source, const QString& destination) { QDir().mkpath(dest_path); QDir dir(source); - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { + foreach(const QString & child, + dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { if (!CopyRecursive(source + "/" + child, dest_path)) { - qLog(Warning) << "Failed to copy dir" << source + "/" + child << "to" << dest_path; + qLog(Warning) << "Failed to copy dir" << source + "/" + child << "to" + << dest_path; return false; } } - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Files)) { + foreach(const QString & child, + dir.entryList(QDir::NoDotAndDotDot | QDir::Files)) { if (!QFile::copy(source + "/" + child, dest_path + "/" + child)) { - qLog(Warning) << "Failed to copy file" << source + "/" + child << "to" << dest_path; + qLog(Warning) << "Failed to copy file" << source + "/" + child << "to" + << dest_path; return false; } } @@ -261,11 +260,9 @@ bool CopyRecursive(const QString& source, const QString& destination) { } bool Copy(QIODevice* source, QIODevice* destination) { - if (!source->open(QIODevice::ReadOnly)) - return false; + if (!source->open(QIODevice::ReadOnly)) return false; - if (!destination->open(QIODevice::WriteOnly)) - return false; + if (!destination->open(QIODevice::WriteOnly)) return false; const qint64 bytes = source->size(); std::unique_ptr data(new char[bytes]); @@ -274,8 +271,7 @@ bool Copy(QIODevice* source, QIODevice* destination) { qint64 bytes_read; do { bytes_read = source->read(data.get() + pos, bytes - pos); - if (bytes_read == -1) - return false; + if (bytes_read == -1) return false; pos += bytes_read; } while (bytes_read > 0 && pos != bytes); @@ -284,8 +280,7 @@ bool Copy(QIODevice* source, QIODevice* destination) { qint64 bytes_written; do { bytes_written = destination->write(data.get() + pos, bytes - pos); - if (bytes_written == -1) - return false; + if (bytes_written == -1) return false; pos += bytes_written; } while (bytes_written > 0 && pos != bytes); @@ -295,7 +290,10 @@ bool Copy(QIODevice* source, QIODevice* destination) { QString ColorToRgba(const QColor& c) { return QString("rgba(%1, %2, %3, %4)") - .arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha()); + .arg(c.red()) + .arg(c.green()) + .arg(c.blue()) + .arg(c.alpha()); } QString GetConfigPath(ConfigPath config) { @@ -304,30 +302,31 @@ QString GetConfigPath(ConfigPath config) { if (Application::kIsPortable) { return QString("%1/data").arg(QCoreApplication::applicationDirPath()); } - #ifdef Q_OS_DARWIN - return mac::GetApplicationSupportPath() + "/" + QCoreApplication::organizationName(); - #else - return QString("%1/.config/%2").arg(QDir::homePath(), QCoreApplication::organizationName()); - #endif - } - break; +#ifdef Q_OS_DARWIN + return mac::GetApplicationSupportPath() + "/" + + QCoreApplication::organizationName(); +#else + return QString("%1/.config/%2") + .arg(QDir::homePath(), QCoreApplication::organizationName()); +#endif + } break; case Path_CacheRoot: { if (Application::kIsPortable) { return GetConfigPath(Path_Root) + "/cache"; } - #if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) - char* xdg = getenv("XDG_CACHE_HOME"); - if (!xdg || !*xdg) { - return QString("%1/.cache/%2").arg(QDir::homePath(), QCoreApplication::organizationName()); - } else { - return QString("%1/%2").arg(xdg, QCoreApplication::organizationName()); - } - #else - return GetConfigPath(Path_Root); - #endif - } - break; +#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) + char* xdg = getenv("XDG_CACHE_HOME"); + if (!xdg || !*xdg) { + return QString("%1/.cache/%2") + .arg(QDir::homePath(), QCoreApplication::organizationName()); + } else { + return QString("%1/%2").arg(xdg, QCoreApplication::organizationName()); + } +#else + return GetConfigPath(Path_Root); +#endif + } break; case Path_AlbumCovers: return GetConfigPath(Path_Root) + "/albumcovers"; @@ -340,14 +339,15 @@ QString GetConfigPath(ConfigPath config) { case Path_GstreamerRegistry: return GetConfigPath(Path_Root) + - QString("/gst-registry-%1-bin").arg(QCoreApplication::applicationVersion()); + QString("/gst-registry-%1-bin") + .arg(QCoreApplication::applicationVersion()); case Path_DefaultMusicLibrary: - #ifdef Q_OS_DARWIN - return mac::GetMusicDirectory(); - #else - return QDir::homePath(); - #endif +#ifdef Q_OS_DARWIN + return mac::GetMusicDirectory(); +#else + return QDir::homePath(); +#endif case Path_LocalSpotifyBlob: return GetConfigPath(Path_Root) + "/spotifyblob"; @@ -373,26 +373,25 @@ void RevealFileInFinder(QString const& path) { #ifdef Q_OS_WIN void ShowFileInExplorer(QString const& path) { - QProcess::execute("explorer.exe", QStringList() << "/select," - << QDir::toNativeSeparators(path)); + QProcess::execute("explorer.exe", QStringList() + << "/select," + << QDir::toNativeSeparators(path)); } #endif void OpenInFileBrowser(const QList& urls) { QSet dirs; - foreach (const QUrl& url, urls) { + foreach(const QUrl & url, urls) { if (url.scheme() != "file") { continue; } QString path = url.toLocalFile(); - if (!QFile::exists(path)) - continue; + if (!QFile::exists(path)) continue; const QString directory = QFileInfo(path).dir().path(); - if (dirs.contains(directory)) - continue; + if (dirs.contains(directory)) continue; dirs.insert(directory); qLog(Debug) << path; #ifdef Q_OS_DARWIN @@ -407,28 +406,29 @@ void OpenInFileBrowser(const QList& urls) { } } -QByteArray Hmac(const QByteArray& key, const QByteArray& data, HashFunction method) { - const int kBlockSize = 64; // bytes +QByteArray Hmac(const QByteArray& key, const QByteArray& data, + HashFunction method) { + const int kBlockSize = 64; // bytes Q_ASSERT(key.length() <= kBlockSize); QByteArray inner_padding(kBlockSize, char(0x36)); QByteArray outer_padding(kBlockSize, char(0x5c)); - for (int i=0 ; i(ret.data()), &context); + clementine_sha2::SHA256_Final(reinterpret_cast(ret.data()), + &context); return ret; } // File must not be open and will be closed afterwards! -QByteArray Sha1File(QFile &file) { +QByteArray Sha1File(QFile& file) { file.open(QIODevice::ReadOnly); QCryptographicHash hash(QCryptographicHash::Sha1); QByteArray data; - while(!file.atEnd()) { - data = file.read(1000000); // 1 mib + while (!file.atEnd()) { + data = file.read(1000000); // 1 mib hash.addData(data.data(), data.length()); data.clear(); } @@ -485,8 +485,7 @@ QByteArray Sha1CoverHash(const QString& artist, const QString& album) { } QString PrettySize(const QSize& size) { - return QString::number(size.width()) + "x" + - QString::number(size.height()); + return QString::number(size.width()) + "x" + QString::number(size.height()); } void ForwardMouseEvent(const QMouseEvent* e, QWidget* target) { @@ -515,9 +514,14 @@ void ConsumeCurrentElement(QXmlStreamReader* reader) { int level = 1; while (level != 0 && !reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: ++level; break; - case QXmlStreamReader::EndElement: --level; break; - default: break; + case QXmlStreamReader::StartElement: + ++level; + break; + case QXmlStreamReader::EndElement: + --level; + break; + default: + break; } } } @@ -542,37 +546,36 @@ QDateTime ParseRFC822DateTime(const QString& text) { // This sucks but we need it because some podcasts don't quite follow the // spec properly - they might have 1-digit hour numbers for example. - QRegExp re("([a-zA-Z]{3}),? (\\d{1,2}) ([a-zA-Z]{3}) (\\d{4}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); - if (re.indexIn(text) == -1) - return QDateTime(); + QRegExp re( + "([a-zA-Z]{3}),? (\\d{1,2}) ([a-zA-Z]{3}) (\\d{4}) " + "(\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); + if (re.indexIn(text) == -1) return QDateTime(); return QDateTime( - QDate::fromString(QString("%1 %2 %3 %4").arg(re.cap(1), re.cap(3), re.cap(2), re.cap(4)), Qt::TextDate), - QTime(re.cap(5).toInt(), re.cap(6).toInt(), re.cap(7).toInt())); + QDate::fromString(QString("%1 %2 %3 %4") + .arg(re.cap(1), re.cap(3), re.cap(2), re.cap(4)), + Qt::TextDate), + QTime(re.cap(5).toInt(), re.cap(6).toInt(), re.cap(7).toInt())); } const char* EnumToString(const QMetaObject& meta, const char* name, int value) { int index = meta.indexOfEnumerator(name); - if (index == -1) - return "[UnknownEnum]"; + if (index == -1) return "[UnknownEnum]"; QMetaEnum metaenum = meta.enumerator(index); const char* result = metaenum.valueToKey(value); - if (result == 0) - return "[UnknownEnumValue]"; + if (result == 0) return "[UnknownEnumValue]"; return result; } QStringList Prepend(const QString& text, const QStringList& list) { QStringList ret(list); - for (int i=0 ; i power_sources(IOPSCopyPowerSourcesInfo()); ScopedCFTypeRef power_source_list( IOPSCopyPowerSourcesList(power_sources.get())); for (CFIndex i = 0; i < CFArrayGetCount(power_source_list.get()); ++i) { CFTypeRef ps = CFArrayGetValueAtIndex(power_source_list.get(), i); - CFDictionaryRef description = IOPSGetPowerSourceDescription( - power_sources.get(), ps); + CFDictionaryRef description = + IOPSGetPowerSourceDescription(power_sources.get(), ps); if (CFDictionaryContainsKey(description, CFSTR(kIOPSBatteryHealthKey))) { return true; @@ -637,8 +642,9 @@ bool IsLaptop() { QString SystemLanguageName() { #if QT_VERSION >= 0x040800 - QString system_language = QLocale::system().uiLanguages().empty() ? - QLocale::system().name() : QLocale::system().uiLanguages().first(); + QString system_language = QLocale::system().uiLanguages().empty() + ? QLocale::system().name() + : QLocale::system().uiLanguages().first(); // uiLanguages returns strings with "-" as separators for language/region; // however QTranslator needs "_" separators system_language.replace("-", "_"); @@ -649,9 +655,8 @@ QString SystemLanguageName() { return system_language; } -bool UrlOnSameDriveAsClementine(const QUrl &url) { - if (url.scheme() != "file") - return false; +bool UrlOnSameDriveAsClementine(const QUrl& url) { + if (url.scheme() != "file") return false; #ifdef Q_OS_WIN QUrl appUrl = QUrl::fromLocalFile(QCoreApplication::applicationDirPath()); @@ -676,17 +681,15 @@ QString PathWithoutFilenameExtension(const QString& filename) { return filename; } -QString FiddleFileExtension(const QString& filename, const QString& new_extension) { +QString FiddleFileExtension(const QString& filename, + const QString& new_extension) { return PathWithoutFilenameExtension(filename) + "." + new_extension; } } // namespace Utilities - ScopedWCharArray::ScopedWCharArray(const QString& str) - : chars_(str.length()), - data_(new wchar_t[chars_ + 1]) -{ + : chars_(str.length()), data_(new wchar_t[chars_ + 1]) { str.toWCharArray(data_.get()); data_[chars_] = '\0'; } diff --git a/src/core/utilities.h b/src/core/utilities.h index a926e154d..8211f0d6e 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -34,129 +34,121 @@ class QXmlStreamReader; struct QMetaObject; namespace Utilities { - QString PrettyTime(int seconds); - QString PrettyTimeDelta(int seconds); - QString PrettyTimeNanosec(qint64 nanoseconds); - QString PrettySize(quint64 bytes); - QString PrettySize(const QSize& size); - QString WordyTime(quint64 seconds); - QString WordyTimeNanosec(qint64 nanoseconds); - QString Ago(int seconds_since_epoch, const QLocale& locale); - QString PrettyFutureDate(const QDate& date); +QString PrettyTime(int seconds); +QString PrettyTimeDelta(int seconds); +QString PrettyTimeNanosec(qint64 nanoseconds); +QString PrettySize(quint64 bytes); +QString PrettySize(const QSize& size); +QString WordyTime(quint64 seconds); +QString WordyTimeNanosec(qint64 nanoseconds); +QString Ago(int seconds_since_epoch, const QLocale& locale); +QString PrettyFutureDate(const QDate& date); - QString ColorToRgba(const QColor& color); +QString ColorToRgba(const QColor& color); - quint64 FileSystemCapacity(const QString& path); - quint64 FileSystemFreeSpace(const QString& path); +quint64 FileSystemCapacity(const QString& path); +quint64 FileSystemFreeSpace(const QString& path); - QString MakeTempDir(const QString template_name = QString()); - QString GetTemporaryFileName(); - void RemoveRecursive(const QString& path); - bool CopyRecursive(const QString& source, const QString& destination); - bool Copy(QIODevice* source, QIODevice* destination); +QString MakeTempDir(const QString template_name = QString()); +QString GetTemporaryFileName(); +void RemoveRecursive(const QString& path); +bool CopyRecursive(const QString& source, const QString& destination); +bool Copy(QIODevice* source, QIODevice* destination); - void OpenInFileBrowser(const QList& filenames); +void OpenInFileBrowser(const QList& filenames); - enum HashFunction { - Md5_Algo, - Sha256_Algo, - Sha1_Algo, - }; - QByteArray Hmac(const QByteArray& key, const QByteArray& data, HashFunction algo); - QByteArray HmacMd5(const QByteArray& key, const QByteArray& data); - QByteArray HmacSha256(const QByteArray& key, const QByteArray& data); - QByteArray HmacSha1(const QByteArray& key, const QByteArray& data); - QByteArray Sha256(const QByteArray& data); - QByteArray Sha1File(QFile& file); - QByteArray Sha1CoverHash(const QString& artist, const QString& album); +enum HashFunction { Md5_Algo, Sha256_Algo, Sha1_Algo, }; +QByteArray Hmac(const QByteArray& key, const QByteArray& data, + HashFunction algo); +QByteArray HmacMd5(const QByteArray& key, const QByteArray& data); +QByteArray HmacSha256(const QByteArray& key, const QByteArray& data); +QByteArray HmacSha1(const QByteArray& key, const QByteArray& data); +QByteArray Sha256(const QByteArray& data); +QByteArray Sha1File(QFile& file); +QByteArray Sha1CoverHash(const QString& artist, const QString& album); +// Picks an unused ephemeral port number. Doesn't hold the port open so +// there's the obvious race condition +quint16 PickUnusedPort(); - // Picks an unused ephemeral port number. Doesn't hold the port open so - // there's the obvious race condition - quint16 PickUnusedPort(); +// Forwards a mouse event to a different widget, remapping the event's widget +// coordinates relative to those of the target widget. +void ForwardMouseEvent(const QMouseEvent* e, QWidget* target); +// Checks if the mouse event was inside the widget's rectangle. +bool IsMouseEventInWidget(const QMouseEvent* e, const QWidget* widget); - // Forwards a mouse event to a different widget, remapping the event's widget - // coordinates relative to those of the target widget. - void ForwardMouseEvent(const QMouseEvent* e, QWidget* target); +// Reads all children of the current element, and returns with the stream +// reader either on the EndElement for the current element, or the end of the +// file - whichever came first. +void ConsumeCurrentElement(QXmlStreamReader* reader); - // Checks if the mouse event was inside the widget's rectangle. - bool IsMouseEventInWidget(const QMouseEvent* e, const QWidget* widget); +// Advances the stream reader until it finds an element with the given name. +// Returns false if the end of the document was reached before finding a +// matching element. +bool ParseUntilElement(QXmlStreamReader* reader, const QString& name); - // Reads all children of the current element, and returns with the stream - // reader either on the EndElement for the current element, or the end of the - // file - whichever came first. - void ConsumeCurrentElement(QXmlStreamReader* reader); +// Parses a string containing an RFC822 time and date. +QDateTime ParseRFC822DateTime(const QString& text); - // Advances the stream reader until it finds an element with the given name. - // Returns false if the end of the document was reached before finding a - // matching element. - bool ParseUntilElement(QXmlStreamReader* reader, const QString& name); +// Replaces some HTML entities with their normal characters. +QString DecodeHtmlEntities(const QString& text); - // Parses a string containing an RFC822 time and date. - QDateTime ParseRFC822DateTime(const QString& text); +// Shortcut for getting a Qt-aware enum value as a string. +// Pass in the QMetaObject of the class that owns the enum, the string name of +// the enum and a valid value from that enum. +const char* EnumToString(const QMetaObject& meta, const char* name, int value); - // Replaces some HTML entities with their normal characters. - QString DecodeHtmlEntities(const QString& text); +QStringList Prepend(const QString& text, const QStringList& list); +QStringList Updateify(const QStringList& list); - // Shortcut for getting a Qt-aware enum value as a string. - // Pass in the QMetaObject of the class that owns the enum, the string name of - // the enum and a valid value from that enum. - const char* EnumToString(const QMetaObject& meta, const char* name, int value); +// Check if two urls are on the same drive (mainly for windows) +bool UrlOnSameDriveAsClementine(const QUrl& url); - QStringList Prepend(const QString& text, const QStringList& list); - QStringList Updateify(const QStringList& list); +// Get relative path to clementine binary +QUrl GetRelativePathToClementineBin(const QUrl& url); - // Check if two urls are on the same drive (mainly for windows) - bool UrlOnSameDriveAsClementine(const QUrl& url); +// Get the path without the filename extension +QString PathWithoutFilenameExtension(const QString& filename); +QString FiddleFileExtension(const QString& filename, + const QString& new_extension); - // Get relative path to clementine binary - QUrl GetRelativePathToClementineBin(const QUrl& url); +enum ConfigPath { + Path_Root, + Path_AlbumCovers, + Path_NetworkCache, + Path_GstreamerRegistry, + Path_DefaultMusicLibrary, + Path_LocalSpotifyBlob, + Path_MoodbarCache, + Path_CacheRoot, +}; +QString GetConfigPath(ConfigPath config); - // Get the path without the filename extension - QString PathWithoutFilenameExtension(const QString& filename); - QString FiddleFileExtension(const QString& filename, const QString& new_extension); +// Returns the minor version of OS X (ie. 6 for Snow Leopard, 7 for Lion). +qint32 GetMacVersion(); - enum ConfigPath { - Path_Root, - Path_AlbumCovers, - Path_NetworkCache, - Path_GstreamerRegistry, - Path_DefaultMusicLibrary, - Path_LocalSpotifyBlob, - Path_MoodbarCache, - Path_CacheRoot, - }; - QString GetConfigPath(ConfigPath config); +// Borrowed from schedutils +enum IoPriority { + IOPRIO_CLASS_NONE = 0, + IOPRIO_CLASS_RT, + IOPRIO_CLASS_BE, + IOPRIO_CLASS_IDLE, +}; +enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER, }; +static const int IOPRIO_CLASS_SHIFT = 13; - // Returns the minor version of OS X (ie. 6 for Snow Leopard, 7 for Lion). - qint32 GetMacVersion(); +int SetThreadIOPriority(IoPriority priority); +int GetThreadId(); - // Borrowed from schedutils - enum IoPriority { - IOPRIO_CLASS_NONE = 0, - IOPRIO_CLASS_RT, - IOPRIO_CLASS_BE, - IOPRIO_CLASS_IDLE, - }; - enum { - IOPRIO_WHO_PROCESS = 1, - IOPRIO_WHO_PGRP, - IOPRIO_WHO_USER, - }; - static const int IOPRIO_CLASS_SHIFT = 13; +// Returns true if this machine has a battery. +bool IsLaptop(); - int SetThreadIOPriority(IoPriority priority); - int GetThreadId(); - - // Returns true if this machine has a battery. - bool IsLaptop(); - - QString SystemLanguageName(); +QString SystemLanguageName(); } class ScopedWCharArray { -public: + public: ScopedWCharArray(const QString& str); QString ToString() const { return QString::fromWCharArray(data_.get()); } @@ -167,11 +159,11 @@ public: int characters() const { return chars_; } int bytes() const { return (chars_ + 1) * sizeof(wchar_t); } -private: + private: Q_DISABLE_COPY(ScopedWCharArray); int chars_; std::unique_ptr data_; }; -#endif // UTILITIES_H +#endif // UTILITIES_H diff --git a/src/covers/albumcoverexporter.cpp b/src/covers/albumcoverexporter.cpp index 1e5255f01..0e283c661 100644 --- a/src/covers/albumcoverexporter.cpp +++ b/src/covers/albumcoverexporter.cpp @@ -29,12 +29,12 @@ AlbumCoverExporter::AlbumCoverExporter(QObject* parent) thread_pool_(new QThreadPool(this)), exported_(0), skipped_(0), - all_(0) -{ + all_(0) { thread_pool_->setMaxThreadCount(kMaxConcurrentRequests); } -void AlbumCoverExporter::SetDialogResult(const AlbumCoverExport::DialogResult &dialog_result) { +void AlbumCoverExporter::SetDialogResult( + const AlbumCoverExport::DialogResult& dialog_result) { dialog_result_ = dialog_result; } @@ -43,9 +43,7 @@ void AlbumCoverExporter::AddExportRequest(Song song) { all_ = requests_.count(); } -void AlbumCoverExporter::Cancel() { - requests_.clear(); -} +void AlbumCoverExporter::Cancel() { requests_.clear(); } void AlbumCoverExporter::StartExporting() { exported_ = 0; @@ -54,8 +52,8 @@ void AlbumCoverExporter::StartExporting() { } void AlbumCoverExporter::AddJobsToPool() { - while (!requests_.isEmpty() - && thread_pool_->activeThreadCount() < thread_pool_->maxThreadCount()) { + while (!requests_.isEmpty() && + thread_pool_->activeThreadCount() < thread_pool_->maxThreadCount()) { CoverExportRunnable* runnable = requests_.dequeue(); connect(runnable, SIGNAL(CoverExported()), SLOT(CoverExported())); diff --git a/src/covers/albumcoverexporter.h b/src/covers/albumcoverexporter.h index 53593bf2e..2194f94bc 100644 --- a/src/covers/albumcoverexporter.h +++ b/src/covers/albumcoverexporter.h @@ -44,7 +44,7 @@ class AlbumCoverExporter : public QObject { int request_count() { return requests_.size(); } - signals: +signals: void AlbumCoversExportUpdate(int exported, int skipped, int all); private slots: diff --git a/src/covers/albumcoverfetcher.cpp b/src/covers/albumcoverfetcher.cpp index 7418d78fc..0600d17d2 100644 --- a/src/covers/albumcoverfetcher.cpp +++ b/src/covers/albumcoverfetcher.cpp @@ -23,15 +23,14 @@ const int AlbumCoverFetcher::kMaxConcurrentRequests = 5; - AlbumCoverFetcher::AlbumCoverFetcher(CoverProviders* cover_providers, - QObject* parent, QNetworkAccessManager* network) + QObject* parent, + QNetworkAccessManager* network) : QObject(parent), cover_providers_(cover_providers), network_(network ? network : new NetworkAccessManager(this)), next_id_(0), - request_starter_(new QTimer(this)) -{ + request_starter_(new QTimer(this)) { request_starter_->setInterval(1000); connect(request_starter_, SIGNAL(timeout()), SLOT(StartRequests())); } @@ -42,7 +41,7 @@ quint64 AlbumCoverFetcher::FetchAlbumCover(const QString& artist, request.artist = artist; request.album = album; request.search = false; - request.id = next_id_ ++; + request.id = next_id_++; AddRequest(request); return request.id; @@ -54,7 +53,7 @@ quint64 AlbumCoverFetcher::SearchForCovers(const QString& artist, request.artist = artist; request.album = album; request.search = true; - request.id = next_id_ ++; + request.id = next_id_++; AddRequest(request); return request.id; @@ -63,17 +62,15 @@ quint64 AlbumCoverFetcher::SearchForCovers(const QString& artist, void AlbumCoverFetcher::AddRequest(const CoverSearchRequest& req) { queued_requests_.enqueue(req); - if (!request_starter_->isActive()) - request_starter_->start(); + if (!request_starter_->isActive()) request_starter_->start(); - if (active_requests_.size() < kMaxConcurrentRequests) - StartRequests(); + if (active_requests_.size() < kMaxConcurrentRequests) StartRequests(); } void AlbumCoverFetcher::Clear() { queued_requests_.clear(); - foreach (AlbumCoverFetcherSearch* search, active_requests_.values()) { + foreach(AlbumCoverFetcherSearch * search, active_requests_.values()) { search->Cancel(); search->deleteLater(); } @@ -91,34 +88,35 @@ void AlbumCoverFetcher::StartRequests() { CoverSearchRequest request = queued_requests_.dequeue(); - // search objects are this fetcher's children so worst case scenario - they get + // search objects are this fetcher's children so worst case scenario - they + // get // deleted with it - AlbumCoverFetcherSearch* search = new AlbumCoverFetcherSearch( - request, network_, this); + AlbumCoverFetcherSearch* search = + new AlbumCoverFetcherSearch(request, network_, this); active_requests_.insert(request.id, search); connect(search, SIGNAL(SearchFinished(quint64, CoverSearchResults)), - SLOT(SingleSearchFinished(quint64, CoverSearchResults))); + SLOT(SingleSearchFinished(quint64, CoverSearchResults))); connect(search, SIGNAL(AlbumCoverFetched(quint64, const QImage&)), - SLOT(SingleCoverFetched(quint64, const QImage&))); + SLOT(SingleCoverFetched(quint64, const QImage&))); search->Start(cover_providers_); } } -void AlbumCoverFetcher::SingleSearchFinished(quint64 request_id, CoverSearchResults results) { +void AlbumCoverFetcher::SingleSearchFinished(quint64 request_id, + CoverSearchResults results) { AlbumCoverFetcherSearch* search = active_requests_.take(request_id); - if (!search) - return; + if (!search) return; search->deleteLater(); emit SearchFinished(request_id, results, search->statistics()); } -void AlbumCoverFetcher::SingleCoverFetched(quint64 request_id, const QImage& image) { +void AlbumCoverFetcher::SingleCoverFetched(quint64 request_id, + const QImage& image) { AlbumCoverFetcherSearch* search = active_requests_.take(request_id); - if (!search) - return; + if (!search) return; search->deleteLater(); emit AlbumCoverFetched(request_id, image, search->statistics()); diff --git a/src/covers/albumcoverfetcher.h b/src/covers/albumcoverfetcher.h index 034ddddfb..4b4cb0b8c 100644 --- a/src/covers/albumcoverfetcher.h +++ b/src/covers/albumcoverfetcher.h @@ -36,7 +36,7 @@ class AlbumCoverFetcherSearch; class CoverProviders; // This class represents a single search-for-cover request. It identifies -// and describes the request. +// and describes the request. struct CoverSearchRequest { // an unique (for one AlbumCoverFetcher) request identifier quint64 id; @@ -50,7 +50,8 @@ struct CoverSearchRequest { bool search; }; -// This structure represents a single result of some album's cover search request. +// This structure represents a single result of some album's cover search +// request. // It contains an URL that leads to a found cover plus its description (usually // the "artist - album" string). struct CoverSearchResult { @@ -66,21 +67,19 @@ struct CoverSearchResult { }; Q_DECLARE_METATYPE(CoverSearchResult); - // This is a complete result of a single search request (a list of results, each // describing one image, actually). typedef QList CoverSearchResults; Q_DECLARE_METATYPE(QList); - // This class searches for album covers for a given query or artist/album and // returns URLs. It's NOT thread-safe. class AlbumCoverFetcher : public QObject { Q_OBJECT public: - AlbumCoverFetcher(CoverProviders* cover_providers, - QObject* parent = 0, QNetworkAccessManager* network = 0); + AlbumCoverFetcher(CoverProviders* cover_providers, QObject* parent = 0, + QNetworkAccessManager* network = 0); virtual ~AlbumCoverFetcher() {} static const int kMaxConcurrentRequests; @@ -90,7 +89,7 @@ class AlbumCoverFetcher : public QObject { void Clear(); - signals: +signals: void AlbumCoverFetched(quint64, const QImage& cover, const CoverSearchStatistics& statistics); void SearchFinished(quint64, const CoverSearchResults& results, diff --git a/src/covers/albumcoverfetchersearch.cpp b/src/covers/albumcoverfetchersearch.cpp index 3ab54f1ab..d2c2d16ea 100644 --- a/src/covers/albumcoverfetchersearch.cpp +++ b/src/covers/albumcoverfetchersearch.cpp @@ -36,22 +36,22 @@ const int AlbumCoverFetcherSearch::kImageLoadTimeoutMs = 2500; const int AlbumCoverFetcherSearch::kTargetSize = 500; const float AlbumCoverFetcherSearch::kGoodScore = 1.85; -AlbumCoverFetcherSearch::AlbumCoverFetcherSearch(const CoverSearchRequest& request, - QNetworkAccessManager* network, - QObject* parent) - : QObject(parent), - request_(request), - image_load_timeout_(new NetworkTimeouts(kImageLoadTimeoutMs, this)), - network_(network), - cancel_requested_(false) -{ - // we will terminate the search after kSearchTimeoutMs miliseconds if we are not +AlbumCoverFetcherSearch::AlbumCoverFetcherSearch( + const CoverSearchRequest& request, QNetworkAccessManager* network, + QObject* parent) + : QObject(parent), + request_(request), + image_load_timeout_(new NetworkTimeouts(kImageLoadTimeoutMs, this)), + network_(network), + cancel_requested_(false) { + // we will terminate the search after kSearchTimeoutMs miliseconds if we are + // not // able to find all of the results before that point in time QTimer::singleShot(kSearchTimeoutMs, this, SLOT(TerminateSearch())); } void AlbumCoverFetcherSearch::TerminateSearch() { - foreach (int id, pending_requests_.keys()) { + foreach(int id, pending_requests_.keys()) { pending_requests_.take(id)->CancelSearch(id); } @@ -59,21 +59,21 @@ void AlbumCoverFetcherSearch::TerminateSearch() { } void AlbumCoverFetcherSearch::Start(CoverProviders* cover_providers) { - foreach(CoverProvider* provider, cover_providers->List()) { - connect(provider, SIGNAL(SearchFinished(int,QList)), - SLOT(ProviderSearchFinished(int,QList))); + foreach(CoverProvider * provider, cover_providers->List()) { + connect(provider, SIGNAL(SearchFinished(int, QList)), + SLOT(ProviderSearchFinished(int, QList))); const int id = cover_providers->NextId(); - const bool success = provider->StartSearch( - request_.artist, request_.album, id); + const bool success = + provider->StartSearch(request_.artist, request_.album, id); if (success) { pending_requests_[id] = provider; - statistics_.network_requests_made_ ++; + statistics_.network_requests_made_++; } } // end this search before it even began if there are no providers... - if(pending_requests_.isEmpty()) { + if (pending_requests_.isEmpty()) { TerminateSearch(); } } @@ -85,23 +85,22 @@ static bool CompareProviders(const CoverSearchResult& a, void AlbumCoverFetcherSearch::ProviderSearchFinished( int id, const QList& results) { - if (!pending_requests_.contains(id)) - return; + if (!pending_requests_.contains(id)) return; CoverProvider* provider = pending_requests_.take(id); CoverSearchResults results_copy(results); // Set categories on the results - for (int i=0 ; iname(); } // Add results from the current provider to our pool results_.append(results_copy); - statistics_.total_images_by_provider_[provider->name()] ++; + statistics_.total_images_by_provider_[provider->name()]++; // do we have more providers left? - if(!pending_requests_.isEmpty()) { + if (!pending_requests_.isEmpty()) { return; } @@ -121,7 +120,7 @@ void AlbumCoverFetcherSearch::AllProvidersFinished() { // no results? if (results_.isEmpty()) { - statistics_.missing_images_ ++; + statistics_.missing_images_++; emit AlbumCoverFetched(request_.id, QImage()); return; } @@ -138,7 +137,7 @@ void AlbumCoverFetcherSearch::AllProvidersFinished() { void AlbumCoverFetcherSearch::FetchMoreImages() { // Try the first one in each category. QString last_provider; - for (int i=0 ; iget(QNetworkRequest(result.image_url))); + RedirectFollower* image_reply = + new RedirectFollower(network_->get(QNetworkRequest(result.image_url))); NewClosure(image_reply, SIGNAL(finished()), this, - SLOT(ProviderCoverFetchFinished(RedirectFollower*)), image_reply); + SLOT(ProviderCoverFetchFinished(RedirectFollower*)), + image_reply); pending_image_loads_[image_reply] = result.provider; image_load_timeout_->AddReply(image_reply); - statistics_.network_requests_made_ ++; + statistics_.network_requests_made_++; } if (pending_image_loads_.isEmpty()) { @@ -164,7 +164,8 @@ void AlbumCoverFetcherSearch::FetchMoreImages() { } } -void AlbumCoverFetcherSearch::ProviderCoverFetchFinished(RedirectFollower* reply) { +void AlbumCoverFetcherSearch::ProviderCoverFetchFinished( + RedirectFollower* reply) { reply->deleteLater(); const QString provider = pending_image_loads_.take(reply); @@ -213,11 +214,12 @@ float AlbumCoverFetcherSearch::ScoreImage(const QImage& image) const { } // A 500x500px image scores 1.0, bigger scores higher - const float size_score = std::sqrt(float(image.width() * image.height())) / kTargetSize; + const float size_score = + std::sqrt(float(image.width() * image.height())) / kTargetSize; // A 1:1 image scores 1.0, anything else scores less const float aspect_score = 1.0 - float(image.height() - image.width()) / - std::max(image.height(), image.width()); + std::max(image.height(), image.width()); return size_score + aspect_score; } @@ -229,12 +231,12 @@ void AlbumCoverFetcherSearch::SendBestImage() { const CandidateImage best_image = candidate_images_.values().back(); image = best_image.second; - statistics_.chosen_images_by_provider_[best_image.first] ++; - statistics_.chosen_images_ ++; + statistics_.chosen_images_by_provider_[best_image.first]++; + statistics_.chosen_images_++; statistics_.chosen_width_ += image.width(); statistics_.chosen_height_ += image.height(); } else { - statistics_.missing_images_ ++; + statistics_.missing_images_++; } emit AlbumCoverFetched(request_.id, image); @@ -246,7 +248,7 @@ void AlbumCoverFetcherSearch::Cancel() { if (!pending_requests_.isEmpty()) { TerminateSearch(); } else if (!pending_image_loads_.isEmpty()) { - foreach (RedirectFollower* reply, pending_image_loads_.keys()) { + foreach(RedirectFollower * reply, pending_image_loads_.keys()) { reply->abort(); } pending_image_loads_.clear(); diff --git a/src/covers/albumcoverfetchersearch.h b/src/covers/albumcoverfetchersearch.h index 4e89502de..e8b88ca30 100644 --- a/src/covers/albumcoverfetchersearch.h +++ b/src/covers/albumcoverfetchersearch.h @@ -55,19 +55,19 @@ signals: // It's the end of search and we've fetched a cover. void AlbumCoverFetched(quint64, const QImage& cover); -private slots: + private slots: void ProviderSearchFinished(int id, const QList& results); void ProviderCoverFetchFinished(RedirectFollower* reply); void TerminateSearch(); -private: + private: void AllProvidersFinished(); void FetchMoreImages(); float ScoreImage(const QImage& image) const; void SendBestImage(); -private: + private: static const int kSearchTimeoutMs; static const int kImageLoadTimeoutMs; static const int kTargetSize; diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp index a4c4241a4..00150e418 100644 --- a/src/covers/albumcoverloader.cpp +++ b/src/covers/albumcoverloader.cpp @@ -32,16 +32,12 @@ #include "internet/internetmodel.h" #include "internet/spotifyservice.h" - - AlbumCoverLoader::AlbumCoverLoader(QObject* parent) - : QObject(parent), - stop_requested_(false), - next_id_(1), - network_(new NetworkAccessManager(this)), - connected_spotify_(false) -{ -} + : QObject(parent), + stop_requested_(false), + next_id_(1), + network_(new NetworkAccessManager(this)), + connected_spotify_(false) {} QString AlbumCoverLoader::ImageCacheDir() { return Utilities::GetConfigPath(Utilities::Path_AlbumCovers); @@ -49,7 +45,7 @@ QString AlbumCoverLoader::ImageCacheDir() { void AlbumCoverLoader::CancelTask(quint64 id) { QMutexLocker l(&mutex_); - for (QQueue::iterator it = tasks_.begin() ; it != tasks_.end() ; ++it) { + for (QQueue::iterator it = tasks_.begin(); it != tasks_.end(); ++it) { if (it->id == id) { tasks_.erase(it); break; @@ -59,7 +55,7 @@ void AlbumCoverLoader::CancelTask(quint64 id) { void AlbumCoverLoader::CancelTasks(const QSet& ids) { QMutexLocker l(&mutex_); - for (QQueue::iterator it = tasks_.begin() ; it != tasks_.end() ; ) { + for (QQueue::iterator it = tasks_.begin(); it != tasks_.end();) { if (ids.contains(it->id)) { it = tasks_.erase(it); } else { @@ -83,7 +79,7 @@ quint64 AlbumCoverLoader::LoadImageAsync(const AlbumCoverLoaderOptions& options, { QMutexLocker l(&mutex_); - task.id = next_id_ ++; + task.id = next_id_++; tasks_.enqueue(task); } @@ -98,8 +94,7 @@ void AlbumCoverLoader::ProcessTasks() { Task task; { QMutexLocker l(&mutex_); - if (tasks_.isEmpty()) - return; + if (tasks_.isEmpty()) return; task = tasks_.dequeue(); } @@ -107,7 +102,7 @@ void AlbumCoverLoader::ProcessTasks() { } } -void AlbumCoverLoader::ProcessTask(Task *task) { +void AlbumCoverLoader::ProcessTask(Task* task) { TryLoadResult result = TryLoadImage(*task); if (result.started_async) { // The image is being loaded from a remote URL, we'll carry on later @@ -142,12 +137,17 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( const Task& task) { // An image embedded in the song itself takes priority if (!task.embedded_image.isNull()) - return TryLoadResult(false, true, ScaleAndPad(task.options, task.embedded_image)); + return TryLoadResult(false, true, + ScaleAndPad(task.options, task.embedded_image)); QString filename; switch (task.state) { - case State_TryingAuto: filename = task.art_automatic; break; - case State_TryingManual: filename = task.art_manual; break; + case State_TryingAuto: + filename = task.art_automatic; + break; + case State_TryingManual: + filename = task.art_manual; + break; } if (filename == Song::kManuallyUnsetCover) @@ -155,10 +155,12 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( if (filename == Song::kEmbeddedCover && !task.song_filename.isEmpty()) { const QImage taglib_image = - TagReaderClient::Instance()->LoadEmbeddedArtBlocking(task.song_filename); + TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + task.song_filename); if (!taglib_image.isNull()) - return TryLoadResult(false, true, ScaleAndPad(task.options, taglib_image)); + return TryLoadResult(false, true, + ScaleAndPad(task.options, taglib_image)); } if (filename.toLower().startsWith("http://")) { @@ -174,8 +176,8 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( SpotifyService* spotify = InternetModel::Service(); if (!connected_spotify_) { - connect(spotify, SIGNAL(ImageLoaded(QString,QImage)), - SLOT(SpotifyImageLoaded(QString,QImage))); + connect(spotify, SIGNAL(ImageLoaded(QString, QImage)), + SLOT(SpotifyImageLoaded(QString, QImage))); connected_spotify_ = true; } @@ -192,13 +194,14 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( } QImage image(filename); - return TryLoadResult(false, !image.isNull(), - image.isNull() ? task.options.default_output_image_: image); + return TryLoadResult( + false, !image.isNull(), + image.isNull() ? task.options.default_output_image_ : image); } -void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, const QImage& image) { - if (!remote_spotify_tasks_.contains(id)) - return; +void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, + const QImage& image) { + if (!remote_spotify_tasks_.contains(id)) return; Task task = remote_spotify_tasks_.take(id); QImage scaled = ScaleAndPad(task.options, image); @@ -212,7 +215,8 @@ void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { Task task = remote_tasks_.take(reply); // Handle redirects. - QVariant redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect.isValid()) { if (++task.redirects > kMaxRedirects) { return; // Give up. @@ -243,8 +247,7 @@ void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, const QImage& image) { - if (image.isNull()) - return image; + if (image.isNull()) return image; // Scale the image down QImage copy; @@ -255,8 +258,7 @@ QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, copy = image; } - if (!options.pad_output_image_) - return copy; + if (!options.pad_output_image_) return copy; // Pad the image to height_ x height_ QImage padded_image(options.desired_height_, options.desired_height_, @@ -265,8 +267,7 @@ QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, QPainter p(&padded_image); p.drawImage((options.desired_height_ - copy.width()) / 2, - (options.desired_height_ - copy.height()) / 2, - copy); + (options.desired_height_ - copy.height()) / 2, copy); p.end(); return padded_image; @@ -276,14 +277,12 @@ QPixmap AlbumCoverLoader::TryLoadPixmap(const QString& automatic, const QString& manual, const QString& filename) { QPixmap ret; - if (manual == Song::kManuallyUnsetCover) - return ret; - if (!manual.isEmpty()) - ret.load(manual); + if (manual == Song::kManuallyUnsetCover) return ret; + if (!manual.isEmpty()) ret.load(manual); if (ret.isNull()) { if (automatic == Song::kEmbeddedCover && !filename.isNull()) ret = QPixmap::fromImage( - TagReaderClient::Instance()->LoadEmbeddedArtBlocking(filename)); + TagReaderClient::Instance()->LoadEmbeddedArtBlocking(filename)); else if (!automatic.isEmpty()) ret.load(automatic); } @@ -291,8 +290,7 @@ QPixmap AlbumCoverLoader::TryLoadPixmap(const QString& automatic, } quint64 AlbumCoverLoader::LoadImageAsync(const AlbumCoverLoaderOptions& options, - const Song &song) { - return LoadImageAsync(options, - song.art_automatic(), song.art_manual(), + const Song& song) { + return LoadImageAsync(options, song.art_automatic(), song.art_manual(), song.url().toLocalFile(), song.image()); } diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h index 987be6676..0ff4a384a 100644 --- a/src/covers/albumcoverloader.h +++ b/src/covers/albumcoverloader.h @@ -40,22 +40,23 @@ class AlbumCoverLoader : public QObject { static QString ImageCacheDir(); - quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, const Song& song); - virtual quint64 LoadImageAsync( - const AlbumCoverLoaderOptions& options, - const QString& art_automatic, - const QString& art_manual, - const QString& song_filename = QString(), - const QImage& embedded_image = QImage()); + quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, + const Song& song); + virtual quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, + const QString& art_automatic, + const QString& art_manual, + const QString& song_filename = QString(), + const QImage& embedded_image = QImage()); void CancelTask(quint64 id); void CancelTasks(const QSet& ids); static QPixmap TryLoadPixmap(const QString& automatic, const QString& manual, const QString& filename = QString()); - static QImage ScaleAndPad(const AlbumCoverLoaderOptions& options, const QImage& image); + static QImage ScaleAndPad(const AlbumCoverLoaderOptions& options, + const QImage& image); - signals: +signals: void ImageLoaded(quint64 id, const QImage& image); void ImageLoaded(quint64 id, const QImage& scaled, const QImage& original); @@ -65,10 +66,7 @@ class AlbumCoverLoader : public QObject { void SpotifyImageLoaded(const QString& url, const QImage& image); protected: - enum State { - State_TryingManual, - State_TryingAuto, - }; + enum State { State_TryingManual, State_TryingAuto, }; struct Task { Task() : redirects(0) {} @@ -86,7 +84,7 @@ class AlbumCoverLoader : public QObject { struct TryLoadResult { TryLoadResult(bool async, bool success, const QImage& i) - : started_async(async), loaded_success(success), image(i) {} + : started_async(async), loaded_success(success), image(i) {} bool started_async; bool loaded_success; @@ -112,4 +110,4 @@ class AlbumCoverLoader : public QObject { static const int kMaxRedirects = 3; }; -#endif // ALBUMCOVERLOADER_H +#endif // ALBUMCOVERLOADER_H diff --git a/src/covers/albumcoverloaderoptions.cpp b/src/covers/albumcoverloaderoptions.cpp index e3a522f1d..f0d8b6b1d 100644 --- a/src/covers/albumcoverloaderoptions.cpp +++ b/src/covers/albumcoverloaderoptions.cpp @@ -1,19 +1,18 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ #include "albumcoverloaderoptions.h" - diff --git a/src/covers/albumcoverloaderoptions.h b/src/covers/albumcoverloaderoptions.h index 33faccc15..70d21a178 100644 --- a/src/covers/albumcoverloaderoptions.h +++ b/src/covers/albumcoverloaderoptions.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,10 +22,9 @@ struct AlbumCoverLoaderOptions { AlbumCoverLoaderOptions() - : desired_height_(120), - scale_output_image_(true), - pad_output_image_(true) - {} + : desired_height_(120), + scale_output_image_(true), + pad_output_image_(true) {} int desired_height_; bool scale_output_image_; @@ -33,4 +32,4 @@ struct AlbumCoverLoaderOptions { QImage default_output_image_; }; -#endif // ALBUMCOVERLOADEROPTIONS_H +#endif // ALBUMCOVERLOADEROPTIONS_H diff --git a/src/covers/amazoncoverprovider.cpp b/src/covers/amazoncoverprovider.cpp index 18b31235f..0ce4c064c 100644 --- a/src/covers/amazoncoverprovider.cpp +++ b/src/covers/amazoncoverprovider.cpp @@ -35,12 +35,11 @@ const char* AmazonCoverProvider::kUrl = "http://ecs.amazonaws.com/onca/xml"; const char* AmazonCoverProvider::kAssociateTag = "clemmusiplay-20"; AmazonCoverProvider::AmazonCoverProvider(QObject* parent) - : CoverProvider("Amazon", parent), - network_(new NetworkAccessManager(this)) -{ -} + : CoverProvider("Amazon", parent), + network_(new NetworkAccessManager(this)) {} -bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool AmazonCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { typedef QPair Arg; typedef QList ArgList; @@ -48,22 +47,22 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu typedef QList EncodedArgList; // Must be sorted by parameter name - ArgList args = ArgList() - << Arg("AWSAccessKeyId", QByteArray::fromBase64(kAccessKeyB64)) - << Arg("AssociateTag", kAssociateTag) - << Arg("Keywords", artist + " " + album) - << Arg("Operation", "ItemSearch") - << Arg("ResponseGroup", "Images") - << Arg("SearchIndex", "All") - << Arg("Service", "AWSECommerceService") - << Arg("Timestamp", QDateTime::currentDateTime().toString("yyyy-MM-ddThh:mm:ss.zzzZ")) - << Arg("Version", "2009-11-01"); + ArgList args = + ArgList() << Arg("AWSAccessKeyId", QByteArray::fromBase64(kAccessKeyB64)) + << Arg("AssociateTag", kAssociateTag) + << Arg("Keywords", artist + " " + album) + << Arg("Operation", "ItemSearch") + << Arg("ResponseGroup", "Images") << Arg("SearchIndex", "All") + << Arg("Service", "AWSECommerceService") + << Arg("Timestamp", QDateTime::currentDateTime().toString( + "yyyy-MM-ddThh:mm:ss.zzzZ")) + << Arg("Version", "2009-11-01"); EncodedArgList encoded_args; QStringList query_items; // Encode the arguments - foreach (const Arg& arg, args) { + foreach(const Arg & arg, args) { EncodedArg encoded_arg(QUrl::toPercentEncoding(arg.first), QUrl::toPercentEncoding(arg.second)); encoded_args << encoded_arg; @@ -73,19 +72,21 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu // Sign the request QUrl url(kUrl); - const QByteArray data_to_sign = QString("GET\n%1\n%2\n%3").arg( - url.host(), url.path(), query_items.join("&")).toAscii(); + const QByteArray data_to_sign = + QString("GET\n%1\n%2\n%3") + .arg(url.host(), url.path(), query_items.join("&")) + .toAscii(); const QByteArray signature(Utilities::HmacSha256( - QByteArray::fromBase64(kSecretAccessKeyB64), data_to_sign)); + QByteArray::fromBase64(kSecretAccessKeyB64), data_to_sign)); // Add the signature to the request - encoded_args << EncodedArg("Signature", QUrl::toPercentEncoding(signature.toBase64())); + encoded_args << EncodedArg("Signature", + QUrl::toPercentEncoding(signature.toBase64())); url.setEncodedQueryItems(encoded_args); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(QueryFinished(QNetworkReply*, int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(QueryFinished(QNetworkReply*, int)), reply, id); return true; } @@ -107,44 +108,46 @@ void AmazonCoverProvider::QueryFinished(QNetworkReply* reply, int id) { emit SearchFinished(id, results); } -void AmazonCoverProvider::ReadItem(QXmlStreamReader* reader, CoverSearchResults* results) { +void AmazonCoverProvider::ReadItem(QXmlStreamReader* reader, + CoverSearchResults* results) { while (!reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: - if (reader->name() == "LargeImage") { - ReadLargeImage(reader, results); - } else { - reader->skipCurrentElement(); - } - break; + case QXmlStreamReader::StartElement: + if (reader->name() == "LargeImage") { + ReadLargeImage(reader, results); + } else { + reader->skipCurrentElement(); + } + break; - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } -void AmazonCoverProvider::ReadLargeImage(QXmlStreamReader* reader, CoverSearchResults* results) { +void AmazonCoverProvider::ReadLargeImage(QXmlStreamReader* reader, + CoverSearchResults* results) { while (!reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: - if (reader->name() == "URL") { - CoverSearchResult result; - result.image_url = QUrl(reader->readElementText()); - results->append(result); - } else { - reader->skipCurrentElement(); - } - break; + case QXmlStreamReader::StartElement: + if (reader->name() == "URL") { + CoverSearchResult result; + result.image_url = QUrl(reader->readElementText()); + results->append(result); + } else { + reader->skipCurrentElement(); + } + break; - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } diff --git a/src/covers/amazoncoverprovider.h b/src/covers/amazoncoverprovider.h index 766a6746d..73fa94691 100644 --- a/src/covers/amazoncoverprovider.h +++ b/src/covers/amazoncoverprovider.h @@ -24,11 +24,10 @@ class QNetworkAccessManager; - class AmazonCoverProvider : public CoverProvider { Q_OBJECT -public: + public: AmazonCoverProvider(QObject* parent = NULL); static const char* kAccessKeyB64; @@ -38,15 +37,15 @@ public: bool StartSearch(const QString& artist, const QString& album, int id); -private slots: + private slots: void QueryFinished(QNetworkReply* reply, int id); -private: + private: void ReadItem(QXmlStreamReader* reader, CoverSearchResults* results); void ReadLargeImage(QXmlStreamReader* reader, CoverSearchResults* results); -private: + private: QNetworkAccessManager* network_; }; -#endif // AMAZONCOVERPROVIDER_H +#endif // AMAZONCOVERPROVIDER_H diff --git a/src/covers/coverexportrunnable.cpp b/src/covers/coverexportrunnable.cpp index 600e816fc..9b5d30d67 100644 --- a/src/covers/coverexportrunnable.cpp +++ b/src/covers/coverexportrunnable.cpp @@ -22,39 +22,36 @@ #include #include -CoverExportRunnable::CoverExportRunnable(const AlbumCoverExport::DialogResult& dialog_result, - const Song& song) - : dialog_result_(dialog_result), - song_(song) -{ -} +CoverExportRunnable::CoverExportRunnable( + const AlbumCoverExport::DialogResult& dialog_result, const Song& song) + : dialog_result_(dialog_result), song_(song) {} void CoverExportRunnable::run() { QString cover_path = GetCoverPath(); // manually unset? - if(cover_path.isEmpty()) { + if (cover_path.isEmpty()) { EmitCoverSkipped(); } else { - if(dialog_result_.RequiresCoverProcessing()) { + if (dialog_result_.RequiresCoverProcessing()) { ProcessAndExportCover(); } else { ExportCover(); } - } } QString CoverExportRunnable::GetCoverPath() { - if(song_.has_manually_unset_cover()) { + if (song_.has_manually_unset_cover()) { return QString(); - // Export downloaded covers? - } else if(!song_.art_manual().isEmpty() && dialog_result_.export_downloaded_) { + // Export downloaded covers? + } else if (!song_.art_manual().isEmpty() && + dialog_result_.export_downloaded_) { return song_.art_manual(); - // Export embedded covers? - } else if(!song_.art_automatic().isEmpty() - && song_.art_automatic() == Song::kEmbeddedCover - && dialog_result_.export_embedded_) { + // Export embedded covers? + } else if (!song_.art_automatic().isEmpty() && + song_.art_automatic() == Song::kEmbeddedCover && + dialog_result_.export_embedded_) { return song_.art_automatic(); } else { return QString(); @@ -78,10 +75,11 @@ void CoverExportRunnable::ProcessAndExportCover() { QImage disk_cover; // load embedded cover if any - if(song_.has_embedded_cover()) { - embedded_cover = TagReaderClient::Instance()->LoadEmbeddedArtBlocking(song_.url().toLocalFile()); + if (song_.has_embedded_cover()) { + embedded_cover = TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + song_.url().toLocalFile()); - if(embedded_cover.isNull()) { + if (embedded_cover.isNull()) { EmitCoverSkipped(); return; } @@ -91,8 +89,8 @@ void CoverExportRunnable::ProcessAndExportCover() { // load a file cover which iss mandatory if there's no embedded cover disk_cover.load(cover_path); - if(embedded_cover.isNull()) { - if(disk_cover.isNull()) { + if (embedded_cover.isNull()) { + if (disk_cover.isNull()) { EmitCoverSkipped(); return; } @@ -100,49 +98,51 @@ void CoverExportRunnable::ProcessAndExportCover() { } // rescale if necessary - if(dialog_result_.IsSizeForced()) { - cover = cover.scaled(QSize(dialog_result_.width_, dialog_result_.height_), Qt::IgnoreAspectRatio); + if (dialog_result_.IsSizeForced()) { + cover = cover.scaled(QSize(dialog_result_.width_, dialog_result_.height_), + Qt::IgnoreAspectRatio); } QString dir = song_.url().toLocalFile().section('/', 0, -2); QString extension = cover_path.section('.', -1); QString new_file = dir + '/' + dialog_result_.fileName_ + '.' + - (cover_path == Song::kEmbeddedCover - ? "jpg" - : extension); + (cover_path == Song::kEmbeddedCover ? "jpg" : extension); // If the file exists, do not override! - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { EmitCoverSkipped(); return; } - // we're handling overwrite as remove + copy so we need to delete the old file first - if(QFile::exists(new_file) && dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None) { + // we're handling overwrite as remove + copy so we need to delete the old file + // first + if (QFile::exists(new_file) && + dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None) { // if the mode is "overwrite smaller" then skip the cover if a bigger one // is already available in the folder - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_Smaller) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_Smaller) { QImage existing; existing.load(new_file); - if(existing.isNull() || existing.size().height() >= cover.size().height() - || existing.size().width() >= cover.size().width()) { + if (existing.isNull() || + existing.size().height() >= cover.size().height() || + existing.size().width() >= cover.size().width()) { EmitCoverSkipped(); return; - } } - if(!QFile::remove(new_file)) { + if (!QFile::remove(new_file)) { EmitCoverSkipped(); return; } } - if(cover.save(new_file)) { + if (cover.save(new_file)) { EmitCoverExported(); } else { EmitCoverSkipped(); @@ -157,34 +157,36 @@ void CoverExportRunnable::ExportCover() { QString extension = cover_path.section('.', -1); QString new_file = dir + '/' + dialog_result_.fileName_ + '.' + - (cover_path == Song::kEmbeddedCover - ? "jpg" - : extension); + (cover_path == Song::kEmbeddedCover ? "jpg" : extension); // If the file exists, do not override! - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { EmitCoverSkipped(); return; } - // we're handling overwrite as remove + copy so we need to delete the old file first - if(dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { - if(!QFile::remove(new_file)) { + // we're handling overwrite as remove + copy so we need to delete the old file + // first + if (dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { + if (!QFile::remove(new_file)) { EmitCoverSkipped(); return; } } - if(cover_path == Song::kEmbeddedCover) { + if (cover_path == Song::kEmbeddedCover) { // an embedded cover - QImage embedded = TagReaderClient::Instance()->LoadEmbeddedArtBlocking(song_.url().toLocalFile()); - if(!embedded.save(new_file)) { + QImage embedded = TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + song_.url().toLocalFile()); + if (!embedded.save(new_file)) { EmitCoverSkipped(); return; } } else { // automatic or manual cover, available in an image file - if(!QFile::copy(cover_path, new_file)) { + if (!QFile::copy(cover_path, new_file)) { EmitCoverSkipped(); return; } @@ -192,11 +194,6 @@ void CoverExportRunnable::ExportCover() { EmitCoverExported(); } -void CoverExportRunnable::EmitCoverExported() { - emit CoverExported(); -} +void CoverExportRunnable::EmitCoverExported() { emit CoverExported(); } - -void CoverExportRunnable::EmitCoverSkipped() { - emit CoverSkipped(); -} +void CoverExportRunnable::EmitCoverSkipped() { emit CoverSkipped(); } diff --git a/src/covers/coverexportrunnable.h b/src/covers/coverexportrunnable.h index 89e70e5f1..0b929e942 100644 --- a/src/covers/coverexportrunnable.h +++ b/src/covers/coverexportrunnable.h @@ -27,7 +27,7 @@ class AlbumCoverExporter; class CoverExportRunnable : public QObject, public QRunnable { - Q_OBJECT + Q_OBJECT public: CoverExportRunnable(const AlbumCoverExport::DialogResult& dialog_result, @@ -36,7 +36,7 @@ class CoverExportRunnable : public QObject, public QRunnable { void run(); - signals: +signals: void CoverExported(); void CoverSkipped(); diff --git a/src/covers/coverprovider.cpp b/src/covers/coverprovider.cpp index 10738baed..f87bcd9af 100644 --- a/src/covers/coverprovider.cpp +++ b/src/covers/coverprovider.cpp @@ -18,7 +18,4 @@ #include "coverprovider.h" CoverProvider::CoverProvider(const QString& name, QObject* parent) - : QObject(parent), - name_(name) -{ -} + : QObject(parent), name_(name) {} diff --git a/src/covers/coverprovider.h b/src/covers/coverprovider.h index c3d509b33..d3aec5545 100644 --- a/src/covers/coverprovider.h +++ b/src/covers/coverprovider.h @@ -31,7 +31,7 @@ class QNetworkReply; class CoverProvider : public QObject { Q_OBJECT -public: + public: CoverProvider(const QString& name, QObject* parent); // A name (very short description) of this provider, like "last.fm". @@ -40,15 +40,16 @@ public: // Starts searching for covers matching the given query text. Returns true // if the query has been started, or false if an error occurred. The provider // should remember the ID and emit it along with the result when it finishes. - virtual bool StartSearch(const QString& artist, const QString& album, int id) = 0; + virtual bool StartSearch(const QString& artist, const QString& album, + int id) = 0; virtual void CancelSearch(int id) {} signals: void SearchFinished(int id, const QList& results); -private: + private: QString name_; }; -#endif // COVERPROVIDER_H +#endif // COVERPROVIDER_H diff --git a/src/covers/coverproviders.cpp b/src/covers/coverproviders.cpp index b81d4f8dd..5475e0b3a 100644 --- a/src/covers/coverproviders.cpp +++ b/src/covers/coverproviders.cpp @@ -20,9 +20,7 @@ #include "coverproviders.h" #include "core/logging.h" -CoverProviders::CoverProviders(QObject* parent) - : QObject(parent) { -} +CoverProviders::CoverProviders(QObject* parent) : QObject(parent) {} void CoverProviders::AddProvider(CoverProvider* provider) { { @@ -35,8 +33,7 @@ void CoverProviders::AddProvider(CoverProvider* provider) { } void CoverProviders::RemoveProvider(CoverProvider* provider) { - if (!provider) - return; + if (!provider) return; // It's not safe to dereference provider at this pointbecause it might have // already been destroyed. @@ -60,6 +57,4 @@ void CoverProviders::ProviderDestroyed() { RemoveProvider(provider); } -int CoverProviders::NextId() { - return next_id_.fetchAndAddRelaxed(1); -} +int CoverProviders::NextId() { return next_id_.fetchAndAddRelaxed(1); } diff --git a/src/covers/coverproviders.h b/src/covers/coverproviders.h index 61ed702b4..f56ea3b80 100644 --- a/src/covers/coverproviders.h +++ b/src/covers/coverproviders.h @@ -31,7 +31,7 @@ class CoverProvider; class CoverProviders : public QObject { Q_OBJECT -public: + public: CoverProviders(QObject* parent = NULL); // Lets a cover provider register itself in the repository. @@ -46,10 +46,10 @@ public: int NextId(); -private slots: + private slots: void ProviderDestroyed(); -private: + private: Q_DISABLE_COPY(CoverProviders); QMap cover_providers_; @@ -58,4 +58,4 @@ private: QAtomicInt next_id_; }; -#endif // COVERPROVIDERS_H +#endif // COVERPROVIDERS_H diff --git a/src/covers/coversearchstatistics.cpp b/src/covers/coversearchstatistics.cpp index 5a3bae616..bcd428d5a 100644 --- a/src/covers/coversearchstatistics.cpp +++ b/src/covers/coversearchstatistics.cpp @@ -18,23 +18,22 @@ #include "coversearchstatistics.h" CoverSearchStatistics::CoverSearchStatistics() - : network_requests_made_(0), - bytes_transferred_(0), - chosen_images_(0), - missing_images_(0), - chosen_width_(0), - chosen_height_(0) -{ -} + : network_requests_made_(0), + bytes_transferred_(0), + chosen_images_(0), + missing_images_(0), + chosen_width_(0), + chosen_height_(0) {} -CoverSearchStatistics& CoverSearchStatistics::operator +=(const CoverSearchStatistics& other) { +CoverSearchStatistics& CoverSearchStatistics::operator+=( + const CoverSearchStatistics& other) { network_requests_made_ += other.network_requests_made_; bytes_transferred_ += other.bytes_transferred_; - foreach (const QString& key, other.chosen_images_by_provider_.keys()) { + foreach(const QString & key, other.chosen_images_by_provider_.keys()) { chosen_images_by_provider_[key] += other.chosen_images_by_provider_[key]; } - foreach (const QString& key, other.total_images_by_provider_.keys()) { + foreach(const QString & key, other.total_images_by_provider_.keys()) { total_images_by_provider_[key] += other.total_images_by_provider_[key]; } diff --git a/src/covers/coversearchstatistics.h b/src/covers/coversearchstatistics.h index 90b4b67d8..5e4dd58c2 100644 --- a/src/covers/coversearchstatistics.h +++ b/src/covers/coversearchstatistics.h @@ -24,7 +24,7 @@ struct CoverSearchStatistics { CoverSearchStatistics(); - CoverSearchStatistics& operator +=(const CoverSearchStatistics& other); + CoverSearchStatistics& operator+=(const CoverSearchStatistics& other); quint64 network_requests_made_; quint64 bytes_transferred_; @@ -40,4 +40,4 @@ struct CoverSearchStatistics { QString AverageDimensions() const; }; -#endif // COVERSEARCHSTATISTICS_H +#endif // COVERSEARCHSTATISTICS_H diff --git a/src/covers/coversearchstatisticsdialog.cpp b/src/covers/coversearchstatisticsdialog.cpp index 449ad2f8a..f85cfe1fb 100644 --- a/src/covers/coversearchstatisticsdialog.cpp +++ b/src/covers/coversearchstatisticsdialog.cpp @@ -19,44 +19,41 @@ #include "ui_coversearchstatisticsdialog.h" #include "core/utilities.h" -CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_CoverSearchStatisticsDialog) -{ +CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_CoverSearchStatisticsDialog) { ui_->setupUi(this); details_layout_ = new QVBoxLayout(ui_->details); details_layout_->setSpacing(0); setStyleSheet( - "#details {" - " background-color: palette(base);" - "}" - "#details QLabel[type=\"label\"] {" - " border: 2px solid transparent;" - " border-right: 2px solid palette(midlight);" - " margin-right: 10px;" - "}" - "#details QLabel[type=\"value\"] {" - " font-weight: bold;" - " max-width: 100px;" - "}" - ); + "#details {" + " background-color: palette(base);" + "}" + "#details QLabel[type=\"label\"] {" + " border: 2px solid transparent;" + " border-right: 2px solid palette(midlight);" + " margin-right: 10px;" + "}" + "#details QLabel[type=\"value\"] {" + " font-weight: bold;" + " max-width: 100px;" + "}"); } -CoverSearchStatisticsDialog::~CoverSearchStatisticsDialog() { - delete ui_; -} +CoverSearchStatisticsDialog::~CoverSearchStatisticsDialog() { delete ui_; } -void CoverSearchStatisticsDialog::Show(const CoverSearchStatistics& statistics) { +void CoverSearchStatisticsDialog::Show( + const CoverSearchStatistics& statistics) { QStringList providers(statistics.total_images_by_provider_.keys()); qSort(providers); - ui_->summary->setText(tr("Got %1 covers out of %2 (%3 failed)") - .arg(statistics.chosen_images_) - .arg(statistics.chosen_images_ + statistics.missing_images_) - .arg(statistics.missing_images_)); + ui_->summary->setText( + tr("Got %1 covers out of %2 (%3 failed)") + .arg(statistics.chosen_images_) + .arg(statistics.chosen_images_ + statistics.missing_images_) + .arg(statistics.missing_images_)); - foreach (const QString& provider, providers) { + foreach(const QString & provider, providers) { AddLine(tr("Covers from %1").arg(provider), QString::number(statistics.chosen_images_by_provider_[provider])); } @@ -70,15 +67,16 @@ void CoverSearchStatisticsDialog::Show(const CoverSearchStatistics& statistics) AddLine(tr("Average image size"), statistics.AverageDimensions()); AddLine(tr("Total bytes transferred"), statistics.bytes_transferred_ - ? Utilities::PrettySize(statistics.bytes_transferred_) - : "0 bytes"); + ? Utilities::PrettySize(statistics.bytes_transferred_) + : "0 bytes"); details_layout_->addStretch(); show(); } -void CoverSearchStatisticsDialog::AddLine(const QString& label, const QString& value) { +void CoverSearchStatisticsDialog::AddLine(const QString& label, + const QString& value) { QLabel* label1 = new QLabel(label); QLabel* label2 = new QLabel(value); diff --git a/src/covers/coversearchstatisticsdialog.h b/src/covers/coversearchstatisticsdialog.h index 6f53e0b18..f3e552ad1 100644 --- a/src/covers/coversearchstatisticsdialog.h +++ b/src/covers/coversearchstatisticsdialog.h @@ -29,19 +29,19 @@ class QVBoxLayout; class CoverSearchStatisticsDialog : public QDialog { Q_OBJECT -public: + public: CoverSearchStatisticsDialog(QWidget* parent = 0); ~CoverSearchStatisticsDialog(); void Show(const CoverSearchStatistics& statistics); -private: + private: void AddLine(const QString& label, const QString& value); void AddSpacer(); -private: + private: Ui_CoverSearchStatisticsDialog* ui_; QVBoxLayout* details_layout_; }; -#endif // COVERSEARCHSTATISTICSDIALOG_H +#endif // COVERSEARCHSTATISTICSDIALOG_H diff --git a/src/covers/currentartloader.cpp b/src/covers/currentartloader.cpp index d0dd47a9c..0567e6357 100644 --- a/src/covers/currentartloader.cpp +++ b/src/covers/currentartloader.cpp @@ -25,24 +25,22 @@ #include CurrentArtLoader::CurrentArtLoader(Application* app, QObject* parent) - : QObject(parent), - app_(app), - temp_file_pattern_(QDir::tempPath() + "/clementine-art-XXXXXX.jpg"), - id_(0) -{ + : QObject(parent), + app_(app), + temp_file_pattern_(QDir::tempPath() + "/clementine-art-XXXXXX.jpg"), + id_(0) { options_.scale_output_image_ = false; options_.pad_output_image_ = false; options_.default_output_image_ = QImage(":nocover.png"); - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(TempArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(TempArtLoaded(quint64, QImage))); connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(LoadArt(Song))); } -CurrentArtLoader::~CurrentArtLoader() { -} +CurrentArtLoader::~CurrentArtLoader() {} void CurrentArtLoader::LoadArt(const Song& song) { last_song_ = song; @@ -50,8 +48,7 @@ void CurrentArtLoader::LoadArt(const Song& song) { } void CurrentArtLoader::TempArtLoaded(quint64 id, const QImage& image) { - if (id != id_) - return; + if (id != id_) return; id_ = 0; QString uri; diff --git a/src/covers/currentartloader.h b/src/covers/currentartloader.h index 5b24e71fd..cea049325 100644 --- a/src/covers/currentartloader.h +++ b/src/covers/currentartloader.h @@ -33,24 +33,25 @@ class QTemporaryFile; class CurrentArtLoader : public QObject { Q_OBJECT -public: + public: CurrentArtLoader(Application* app, QObject* parent = 0); ~CurrentArtLoader(); const AlbumCoverLoaderOptions& options() const { return options_; } const Song& last_song() const { return last_song_; } -public slots: + public slots: void LoadArt(const Song& song); signals: void ArtLoaded(const Song& song, const QString& uri, const QImage& image); - void ThumbnailLoaded(const Song& song, const QString& uri, const QImage& image); + void ThumbnailLoaded(const Song& song, const QString& uri, + const QImage& image); -private slots: + private slots: void TempArtLoaded(quint64 id, const QImage& image); -private: + private: Application* app_; AlbumCoverLoaderOptions options_; @@ -63,4 +64,4 @@ private: Song last_song_; }; -#endif // CURRENTARTLOADER_H +#endif // CURRENTARTLOADER_H diff --git a/src/covers/discogscoverprovider.cpp b/src/covers/discogscoverprovider.cpp index c061e155d..1d29ed47f 100644 --- a/src/covers/discogscoverprovider.cpp +++ b/src/covers/discogscoverprovider.cpp @@ -24,15 +24,15 @@ #include #include -const char* DiscogsCoverProvider::kSearchUrl = "http://api.discogs.com/database/search"; +const char* DiscogsCoverProvider::kSearchUrl = + "http://api.discogs.com/database/search"; DiscogsCoverProvider::DiscogsCoverProvider(QObject* parent) - : CoverProvider("Discogs", parent), - network_(new NetworkAccessManager(this)) -{ -} + : CoverProvider("Discogs", parent), + network_(new NetworkAccessManager(this)) {} -bool DiscogsCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool DiscogsCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { DiscogsCoverSearchContext* ctx = new DiscogsCoverSearchContext; ctx->id = id; ctx->artist = artist; @@ -61,17 +61,17 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { QString type; switch (ctx->state) { - case DiscogsCoverSearchContext::State_Init: - type = "master"; - ctx->state = DiscogsCoverSearchContext::State_MastersRequested; - break; - case DiscogsCoverSearchContext::State_MastersRequested: - type = "release"; - ctx->state = DiscogsCoverSearchContext::State_ReleasesRequested; - break; - default: - EndSearch(ctx); - return; + case DiscogsCoverSearchContext::State_Init: + type = "master"; + ctx->state = DiscogsCoverSearchContext::State_MastersRequested; + break; + case DiscogsCoverSearchContext::State_MastersRequested: + type = "release"; + ctx->state = DiscogsCoverSearchContext::State_ReleasesRequested; + break; + default: + EndSearch(ctx); + return; } ArgList args = ArgList(); @@ -85,7 +85,7 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { EncodedArgList encoded_args; - foreach (const Arg& arg, args) { + foreach(const Arg & arg, args) { EncodedArg encoded_arg(QUrl::toPercentEncoding(arg.first), QUrl::toPercentEncoding(arg.second)); encoded_args << encoded_arg; @@ -93,12 +93,12 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { url.setEncodedQueryItems(encoded_args); - qLog(Debug) << "Discogs: send search request for id:" << ctx->id << "url: " << url; + qLog(Debug) << "Discogs: send search request for id:" << ctx->id + << "url: " << url; QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(HandleSearchReply(QNetworkReply*, int)), - reply, ctx->id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(HandleSearchReply(QNetworkReply*, int)), reply, ctx->id); } // Parse the reply from a search @@ -126,7 +126,7 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { QVariantList results = reply_map["results"].toList(); - foreach (const QVariant& result, results) { + foreach(const QVariant & result, results) { QVariantMap result_map = result.toMap(); // In order to use less round-trips, we cheat here. Instead of // following the "resource_url", and then scan all images in the @@ -134,7 +134,8 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { // constructing the primary image's url from the thmub's url. if (result_map.contains("thumb")) { CoverSearchResult cover_result; - cover_result.image_url = QUrl(result_map["thumb"].toString().replace("R-90-", "R-")); + cover_result.image_url = + QUrl(result_map["thumb"].toString().replace("R-90-", "R-")); if (result_map.contains("title")) { cover_result.description = result_map["title"].toString(); } @@ -160,7 +161,7 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { } void DiscogsCoverProvider::EndSearch(DiscogsCoverSearchContext* ctx) { - (void) pending_requests_.remove(ctx->id); + (void)pending_requests_.remove(ctx->id); emit SearchFinished(ctx->id, ctx->results); delete ctx; } diff --git a/src/covers/discogscoverprovider.h b/src/covers/discogscoverprovider.h index 85dfd3889..cae51b0ce 100644 --- a/src/covers/discogscoverprovider.h +++ b/src/covers/discogscoverprovider.h @@ -24,14 +24,10 @@ class QNetworkAccessManager; // This struct represents a single search-for-cover request. It identifies -// and describes the request. +// and describes the request. struct DiscogsCoverSearchContext { - enum State { - State_Init, - State_MastersRequested, - State_ReleasesRequested - }; - + enum State { State_Init, State_MastersRequested, State_ReleasesRequested }; + // the unique request identifier int id; @@ -48,7 +44,7 @@ Q_DECLARE_METATYPE(DiscogsCoverSearchContext) class DiscogsCoverProvider : public CoverProvider { Q_OBJECT -public: + public: DiscogsCoverProvider(QObject* parent = NULL); static const char* kSearchUrl; @@ -56,10 +52,10 @@ public: bool StartSearch(const QString& artist, const QString& album, int id); void CancelSearch(int id); -private slots: + private slots: void HandleSearchReply(QNetworkReply* reply, int id); -private: + private: QNetworkAccessManager* network_; QHash pending_requests_; @@ -67,4 +63,4 @@ private: void EndSearch(DiscogsCoverSearchContext* ctx); }; -#endif // DISCOGSCOVERPROVIDER_H +#endif // DISCOGSCOVERPROVIDER_H diff --git a/src/covers/kittenloader.cpp b/src/covers/kittenloader.cpp index 3c9027968..c7f746dc7 100644 --- a/src/covers/kittenloader.cpp +++ b/src/covers/kittenloader.cpp @@ -19,19 +19,13 @@ const char* KittenLoader::kFlickrKittenUrl = const char* KittenLoader::kFlickrPhotoUrl = "https://farm%1.static.flickr.com/%2/%3_%4_m.jpg"; -KittenLoader::KittenLoader(QObject* parent) - : AlbumCoverLoader(parent) { -} +KittenLoader::KittenLoader(QObject* parent) : AlbumCoverLoader(parent) {} quint64 KittenLoader::LoadKitten(const AlbumCoverLoaderOptions& options) { if (!kitten_urls_.isEmpty()) { QUrl url = kitten_urls_.dequeue(); return AlbumCoverLoader::LoadImageAsync( - options, - QString::null, - url.toString(), - QString::null, - QImage()); + options, QString::null, url.toString(), QString::null, QImage()); } Task task; @@ -68,10 +62,10 @@ void KittenLoader::KittensRetrieved(QNetworkReply* reply) { QStringRef secret = attrs.value("secret"); QStringRef server = attrs.value("server"); QString photo_url = QString(kFlickrPhotoUrl) - .arg(farm_id.toString()) - .arg(server.toString()) - .arg(photo_id.toString()) - .arg(secret.toString()); + .arg(farm_id.toString()) + .arg(server.toString()) + .arg(photo_id.toString()) + .arg(secret.toString()); kitten_urls_ << QUrl(photo_url); } } diff --git a/src/covers/lastfmcoverprovider.cpp b/src/covers/lastfmcoverprovider.cpp index a84aea365..1ab2078db 100644 --- a/src/covers/lastfmcoverprovider.cpp +++ b/src/covers/lastfmcoverprovider.cpp @@ -25,11 +25,10 @@ #include "internet/lastfmcompat.h" LastFmCoverProvider::LastFmCoverProvider(QObject* parent) - : CoverProvider("last.fm", parent) -{ -} + : CoverProvider("last.fm", parent) {} -bool LastFmCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool LastFmCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { QMap params; params["method"] = "album.search"; params["album"] = album + " " + artist; @@ -49,11 +48,13 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply* reply, int id) { lastfm::XmlQuery query(lastfm::compat::EmptyXmlQuery()); if (lastfm::compat::ParseQuery(reply->readAll(), &query)) { // parse the list of search results - QList elements = query["results"]["albummatches"].children("album"); + QList elements = + query["results"]["albummatches"].children("album"); - foreach (const lastfm::XmlQuery& element, elements) { + foreach(const lastfm::XmlQuery & element, elements) { CoverSearchResult result; - result.description = element["artist"].text() + " - " + element["name"].text(); + result.description = + element["artist"].text() + " - " + element["name"].text(); result.image_url = QUrl(element["image size=extralarge"].text()); results << result; } diff --git a/src/covers/lastfmcoverprovider.h b/src/covers/lastfmcoverprovider.h index 2ba8405d5..fbf77fa59 100644 --- a/src/covers/lastfmcoverprovider.h +++ b/src/covers/lastfmcoverprovider.h @@ -30,16 +30,16 @@ class QNetworkReply; class LastFmCoverProvider : public CoverProvider { Q_OBJECT -public: + public: LastFmCoverProvider(QObject* parent); bool StartSearch(const QString& artist, const QString& album, int id); -private slots: + private slots: void QueryFinished(QNetworkReply* reply, int id); -private: + private: QMap pending_queries_; }; -#endif // LASTFMCOVERPROVIDER_H +#endif // LASTFMCOVERPROVIDER_H diff --git a/src/covers/musicbrainzcoverprovider.cpp b/src/covers/musicbrainzcoverprovider.cpp index 3e054b4c0..2cacb20bd 100644 --- a/src/covers/musicbrainzcoverprovider.cpp +++ b/src/covers/musicbrainzcoverprovider.cpp @@ -29,44 +29,36 @@ using std::mem_fun; namespace { -static const char* kReleaseSearchUrl = - "https://musicbrainz.org/ws/2/release/"; +static const char* kReleaseSearchUrl = "https://musicbrainz.org/ws/2/release/"; static const char* kAlbumCoverUrl = "https://coverartarchive.org/release/%1/front"; } // namespace - MusicbrainzCoverProvider::MusicbrainzCoverProvider(QObject* parent) : CoverProvider("MusicBrainz", parent), - network_(new NetworkAccessManager(this)) { -} + network_(new NetworkAccessManager(this)) {} -bool MusicbrainzCoverProvider::StartSearch( - const QString& artist, const QString& album, int id) { +bool MusicbrainzCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { // Find release information. QUrl url(kReleaseSearchUrl); QString query = QString("release:\"%1\" AND artist:\"%2\"") - .arg(album.trimmed().replace('"', "\\\"")) - .arg(artist.trimmed().replace('"', "\\\"")); + .arg(album.trimmed().replace('"', "\\\"")) + .arg(artist.trimmed().replace('"', "\\\"")); url.addQueryItem("query", query); url.addQueryItem("limit", "5"); QNetworkRequest request(url); QNetworkReply* reply = network_->get(request); - NewClosure( - reply, - SIGNAL(finished()), - this, - SLOT(ReleaseSearchFinished(QNetworkReply*, int)), - reply, - id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ReleaseSearchFinished(QNetworkReply*, int)), reply, id); cover_names_[id] = QString("%1 - %2").arg(artist, album); return true; } -void MusicbrainzCoverProvider::ReleaseSearchFinished( - QNetworkReply* reply, int id) { +void MusicbrainzCoverProvider::ReleaseSearchFinished(QNetworkReply* reply, + int id) { reply->deleteLater(); QList releases; @@ -74,8 +66,7 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished( QXmlStreamReader reader(reply); while (!reader.atEnd()) { QXmlStreamReader::TokenType type = reader.readNext(); - if (type == QXmlStreamReader::StartElement && - reader.name() == "release") { + if (type == QXmlStreamReader::StartElement && reader.name() == "release") { QStringRef release_id = reader.attributes().value("id"); if (!release_id.isEmpty()) { releases.append(release_id.toString()); @@ -83,30 +74,26 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished( } } - foreach (const QString& release_id, releases) { + foreach(const QString & release_id, releases) { QUrl url(QString(kAlbumCoverUrl).arg(release_id)); QNetworkReply* reply = network_->head(QNetworkRequest(url)); image_checks_.insert(id, reply); - NewClosure( - reply, - SIGNAL(finished()), - this, - SLOT(ImageCheckFinished(int)), - id); + NewClosure(reply, SIGNAL(finished()), this, SLOT(ImageCheckFinished(int)), + id); } } void MusicbrainzCoverProvider::ImageCheckFinished(int id) { QList replies = image_checks_.values(id); - int finished_count = std::count_if( - replies.constBegin(), replies.constEnd(), - mem_fun(&QNetworkReply::isFinished)); + int finished_count = std::count_if(replies.constBegin(), replies.constEnd(), + mem_fun(&QNetworkReply::isFinished)); if (finished_count == replies.size()) { QString cover_name = cover_names_.take(id); QList results; - foreach (QNetworkReply* reply, replies) { + foreach(QNetworkReply * reply, replies) { reply->deleteLater(); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() < 400) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() < + 400) { CoverSearchResult result; result.description = cover_name; result.image_url = reply->url(); @@ -120,7 +107,7 @@ void MusicbrainzCoverProvider::ImageCheckFinished(int id) { void MusicbrainzCoverProvider::CancelSearch(int id) { QList replies = image_checks_.values(id); - foreach (QNetworkReply* reply, replies) { + foreach(QNetworkReply * reply, replies) { reply->abort(); reply->deleteLater(); } diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index 637022174..edb0049e2 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -25,39 +25,39 @@ #include "cddadevice.h" CddaDevice::CddaDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - cdda_(nullptr), - cdio_(nullptr) -{ -} + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + cdda_(nullptr), + cdio_(nullptr) {} -CddaDevice::~CddaDevice(){ - if (cdio_) - cdio_destroy(cdio_); +CddaDevice::~CddaDevice() { + if (cdio_) cdio_destroy(cdio_); } void CddaDevice::Init() { QMutexLocker locker(&mutex_init_); - song_count_ = 0; // Reset song count, in case it was already set - cdio_ = cdio_open (url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); + song_count_ = 0; // Reset song count, in case it was already set + cdio_ = cdio_open(url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); if (cdio_ == nullptr) { return; } // Create gstreamer cdda element - cdda_ = gst_element_make_from_uri (GST_URI_SRC, "cdda://", nullptr); + cdda_ = gst_element_make_from_uri(GST_URI_SRC, "cdda://", nullptr); if (cdda_ == nullptr) { model_->Reset(); return; } - GST_CDDA_BASE_SRC(cdda_)->device = g_strdup (url_.path().toLocal8Bit().constData()); + GST_CDDA_BASE_SRC(cdda_)->device = + g_strdup(url_.path().toLocal8Bit().constData()); // Change the element's state to ready and paused, to be able to query it - if (gst_element_set_state(cdda_, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE || - gst_element_set_state(cdda_, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + if (gst_element_set_state(cdda_, GST_STATE_READY) == + GST_STATE_CHANGE_FAILURE || + gst_element_set_state(cdda_, GST_STATE_PAUSED) == + GST_STATE_CHANGE_FAILURE) { model_->Reset(); gst_element_set_state(cdda_, GST_STATE_NULL); gst_object_unref(GST_OBJECT(cdda_)); @@ -65,10 +65,11 @@ void CddaDevice::Init() { } // Get number of tracks - GstFormat fmt = gst_format_get_by_nick ("track"); + GstFormat fmt = gst_format_get_by_nick("track"); GstFormat out_fmt = fmt; gint64 num_tracks = 0; - if (!gst_element_query_duration (cdda_, &out_fmt, &num_tracks) || out_fmt != fmt) { + if (!gst_element_query_duration(cdda_, &out_fmt, &num_tracks) || + out_fmt != fmt) { qLog(Error) << "Error while querying cdda GstElement"; model_->Reset(); gst_object_unref(GST_OBJECT(cdda_)); @@ -81,64 +82,69 @@ void CddaDevice::Init() { Song song; guint64 duration = 0; // quint64 == ulonglong and guint64 == ulong, therefore we must cast - if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda_)->tracks[track_number-1].tags, - GST_TAG_DURATION, &duration)) { + if (gst_tag_list_get_uint64( + GST_CDDA_BASE_SRC(cdda_)->tracks[track_number - 1].tags, + GST_TAG_DURATION, &duration)) { song.set_length_nanosec((quint64)duration); } song.set_id(track_number); song.set_valid(true); song.set_filetype(Song::Type_Cdda); - song.set_url(QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number))); + song.set_url( + QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number))); song.set_title(QString("Track %1").arg(track_number)); song.set_track(track_number); songs << song; } song_count_ = num_tracks; - connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, SLOT(SongsDiscovered(const SongList&))); + connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, + SLOT(SongsDiscovered(const SongList&))); emit SongsDiscovered(songs); // Generate MusicBrainz DiscId gst_tag_register_musicbrainz_tags(); - GstElement *pipe = gst_pipeline_new ("pipeline"); - gst_bin_add (GST_BIN (pipe), cdda_); - gst_element_set_state (pipe, GST_STATE_READY); - gst_element_set_state (pipe, GST_STATE_PAUSED); - GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), - GST_CLOCK_TIME_NONE, - GST_MESSAGE_TAG); - GstTagList *tags = nullptr; - gst_message_parse_tag (msg, &tags); - char *string_mb = nullptr; - if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { + GstElement* pipe = gst_pipeline_new("pipeline"); + gst_bin_add(GST_BIN(pipe), cdda_); + gst_element_set_state(pipe, GST_STATE_READY); + gst_element_set_state(pipe, GST_STATE_PAUSED); + GstMessage* msg = gst_bus_timed_pop_filtered( + GST_ELEMENT_BUS(pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); + GstTagList* tags = nullptr; + gst_message_parse_tag(msg, &tags); + char* string_mb = nullptr; + if (gst_tag_list_get_string(tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, + &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; - MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this); - connect(musicbrainz_client, - SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)), - SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList))); + MusicBrainzClient* musicbrainz_client = new MusicBrainzClient(this); + connect(musicbrainz_client, SIGNAL(Finished(const QString&, const QString&, + MusicBrainzClient::ResultList)), + SLOT(AudioCDTagsLoaded(const QString&, const QString&, + MusicBrainzClient::ResultList))); musicbrainz_client->StartDiscIdRequest(musicbrainz_discid); g_free(string_mb); } // Clean all the Gstreamer objects we have used: we don't need them anymore - gst_element_set_state (pipe, GST_STATE_NULL); + gst_element_set_state(pipe, GST_STATE_NULL); // This will also cause cdda_ to be unref'd. gst_object_unref(GST_OBJECT(pipe)); gst_object_unref(GST_OBJECT(msg)); gst_tag_list_free(tags); } -void CddaDevice::AudioCDTagsLoaded(const QString& artist, const QString& album, - const MusicBrainzClient::ResultList& results) { - MusicBrainzClient *musicbrainz_client = qobject_cast(sender()); +void CddaDevice::AudioCDTagsLoaded( + const QString& artist, const QString& album, + const MusicBrainzClient::ResultList& results) { + MusicBrainzClient* musicbrainz_client = + qobject_cast(sender()); musicbrainz_client->deleteLater(); SongList songs; int track_number = 1; - if (results.size() == 0) - return; + if (results.size() == 0) return; model_->Reset(); - foreach (const MusicBrainzClient::Result& ret, results) { + foreach(const MusicBrainzClient::Result & ret, results) { Song song; song.set_artist(artist); song.set_album(album); @@ -147,18 +153,22 @@ void CddaDevice::AudioCDTagsLoaded(const QString& artist, const QString& album, song.set_track(track_number); song.set_year(ret.year_); song.set_id(track_number); - // We need to set url: that's how playlist will find the correct item to update - song.set_url(QUrl(QString("cdda://%1/%2").arg(unique_id()).arg(track_number++))); + // We need to set url: that's how playlist will find the correct item to + // update + song.set_url( + QUrl(QString("cdda://%1/%2").arg(unique_id()).arg(track_number++))); songs << song; } - connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, SLOT(SongsDiscovered(const SongList&))); + connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, + SLOT(SongsDiscovered(const SongList&))); emit SongsDiscovered(songs); song_count_ = songs.size(); } void CddaDevice::Refresh() { - if ((cdio_ && cdda_) && /* already init... */ - cdio_get_media_changed(cdio_) != 1 /* ...and hasn't change since last time */) { + if ((cdio_ && cdda_) && /* already init... */ + cdio_get_media_changed(cdio_) != + 1 /* ...and hasn't change since last time */) { return; } // Check if mutex is already token (i.e. init is already taking place) diff --git a/src/devices/cddadevice.h b/src/devices/cddadevice.h index ceae9567d..4e5b11604 100644 --- a/src/devices/cddadevice.h +++ b/src/devices/cddadevice.h @@ -28,14 +28,13 @@ #include "core/song.h" #include "musicbrainz/musicbrainzclient.h" -class CddaDevice: public ConnectedDevice { +class CddaDevice : public ConnectedDevice { Q_OBJECT -public: + public: Q_INVOKABLE CddaDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time); ~CddaDevice(); void Init(); @@ -48,15 +47,14 @@ public: signals: void SongsDiscovered(const SongList& songs); -private slots: + private slots: void AudioCDTagsLoaded(const QString& artist, const QString& album, const MusicBrainzClient::ResultList& results); -private: - GstElement *cdda_; - CdIo_t *cdio_; + private: + GstElement* cdda_; + CdIo_t* cdio_; QMutex mutex_init_; - }; #endif diff --git a/src/devices/cddalister.cpp b/src/devices/cddalister.cpp index 7b82d512c..9d7bbe5b6 100644 --- a/src/devices/cddalister.cpp +++ b/src/devices/cddalister.cpp @@ -27,9 +27,7 @@ #include "core/logging.h" #include "core/song.h" -QStringList CddaLister::DeviceUniqueIDs() { - return devices_list_; -} +QStringList CddaLister::DeviceUniqueIDs() { return devices_list_; } QVariantList CddaLister::DeviceIcons(const QString&) { QVariantList icons; @@ -38,7 +36,7 @@ QVariantList CddaLister::DeviceIcons(const QString&) { } QString CddaLister::DeviceManufacturer(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -49,7 +47,7 @@ QString CddaLister::DeviceManufacturer(const QString& id) { } QString CddaLister::DeviceModel(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -59,20 +57,16 @@ QString CddaLister::DeviceModel(const QString& id) { return QString(); } -quint64 CddaLister::DeviceCapacity(const QString&) { - return 0; -} +quint64 CddaLister::DeviceCapacity(const QString&) { return 0; } -quint64 CddaLister::DeviceFreeSpace(const QString&) { - return 0; -} +quint64 CddaLister::DeviceFreeSpace(const QString&) { return 0; } QVariantMap CddaLister::DeviceHardwareInfo(const QString&) { return QVariantMap(); } QString CddaLister::MakeFriendlyName(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -90,8 +84,7 @@ void CddaLister::UnmountDevice(const QString& id) { cdio_eject_media_drive(id.toLocal8Bit().constData()); } -void CddaLister::UpdateDeviceFreeSpace(const QString&) { -} +void CddaLister::UpdateDeviceFreeSpace(const QString&) {} void CddaLister::Init() { cdio_init(); @@ -100,7 +93,7 @@ void CddaLister::Init() { qLog(Error) << "libcdio was compiled without support for OS X!"; } #endif - char **devices = cdio_get_devices(DRIVER_DEVICE); + char** devices = cdio_get_devices(DRIVER_DEVICE); if (!devices) { qLog(Debug) << "No CD devices found"; return; @@ -112,7 +105,8 @@ void CddaLister::Init() { device = device_info.symLinkTarget(); } #ifdef Q_OS_DARWIN - // Every track is detected as a separate device on Darwin. The raw disk looks + // Every track is detected as a separate device on Darwin. The raw disk + // looks // like /dev/rdisk1 if (!device.contains(QRegExp("^/dev/rdisk[0-9]$"))) { continue; @@ -124,4 +118,3 @@ void CddaLister::Init() { } } } - diff --git a/src/devices/cddalister.h b/src/devices/cddalister.h index dd6c728d9..47718826a 100644 --- a/src/devices/cddalister.h +++ b/src/devices/cddalister.h @@ -27,7 +27,7 @@ class CddaLister : public DeviceLister { Q_OBJECT -public: + public: CddaLister() {} QStringList DeviceUniqueIDs(); @@ -44,9 +44,7 @@ public: void UpdateDeviceFreeSpace(const QString&); void Init(); -private: + private: QStringList devices_list_; - }; -#endif // CDDALISTER_H - +#endif // CDDALISTER_H diff --git a/src/devices/connecteddevice.cpp b/src/devices/connecteddevice.cpp index e294417c9..8d4031714 100644 --- a/src/devices/connecteddevice.cpp +++ b/src/devices/connecteddevice.cpp @@ -28,31 +28,30 @@ #include ConnectedDevice::ConnectedDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, + const QString& unique_id, + DeviceManager* manager, Application* app, int database_id, bool first_time) - : QObject(manager), - app_(app), - url_(url), - first_time_(first_time), - lister_(lister), - unique_id_(unique_id), - database_id_(database_id), - manager_(manager), - backend_(nullptr), - model_(nullptr), - song_count_(0) -{ + : QObject(manager), + app_(app), + url_(url), + first_time_(first_time), + lister_(lister), + unique_id_(unique_id), + database_id_(database_id), + manager_(manager), + backend_(nullptr), + model_(nullptr), + song_count_(0) { qLog(Info) << "connected" << url << unique_id << first_time; // Create the backend in the database thread. backend_ = new LibraryBackend(); backend_->moveToThread(app_->database()->thread()); - connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(BackendTotalSongCountUpdated(int))); + connect(backend_, SIGNAL(TotalSongCountUpdated(int)), + SLOT(BackendTotalSongCountUpdated(int))); - backend_->Init(app_->database(), - QString("device_%1_songs").arg(database_id), + backend_->Init(app_->database(), QString("device_%1_songs").arg(database_id), QString("device_%1_directories").arg(database_id), QString("device_%1_subdirectories").arg(database_id), QString("device_%1_fts").arg(database_id)); @@ -61,12 +60,10 @@ ConnectedDevice::ConnectedDevice(const QUrl& url, DeviceLister* lister, model_ = new LibraryModel(backend_, app_, this); } -ConnectedDevice::~ConnectedDevice() { - backend_->deleteLater(); -} +ConnectedDevice::~ConnectedDevice() { backend_->deleteLater(); } -void ConnectedDevice::InitBackendDirectory( - const QString& mount_point, bool first_time, bool rewrite_path) { +void ConnectedDevice::InitBackendDirectory(const QString& mount_point, + bool first_time, bool rewrite_path) { if (first_time || backend_->GetAllDirectories().isEmpty()) { backend_->AddDirectory(mount_point); } else { diff --git a/src/devices/connecteddevice.h b/src/devices/connecteddevice.h index 663e5253d..8a347fa9f 100644 --- a/src/devices/connecteddevice.h +++ b/src/devices/connecteddevice.h @@ -34,21 +34,21 @@ class DeviceManager; class LibraryBackend; class LibraryModel; -class ConnectedDevice : public QObject, public virtual MusicStorage, +class ConnectedDevice : public QObject, + public virtual MusicStorage, public std::enable_shared_from_this { Q_OBJECT -public: + public: ConnectedDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + Application* app, int database_id, bool first_time); ~ConnectedDevice(); virtual void Init() = 0; // For some devices (e.g. CD devices) we don't have callbacks to be notified // when something change: we can call this method to refresh device's state - virtual void Refresh() { } + virtual void Refresh() {} virtual TranscodeMode GetTranscodeMode() const; virtual Song::FileType GetTranscodeFormat() const; @@ -68,10 +68,11 @@ signals: void TaskStarted(int id); void SongCountUpdated(int count); -protected: - void InitBackendDirectory(const QString& mount_point, bool first_time, bool rewrite_path = true); + protected: + void InitBackendDirectory(const QString& mount_point, bool first_time, + bool rewrite_path = true); -protected: + protected: Application* app_; QUrl url_; @@ -86,8 +87,8 @@ protected: int song_count_; -private slots: + private slots: void BackendTotalSongCountUpdated(int count); }; -#endif // CONNECTEDDEVICE_H +#endif // CONNECTEDDEVICE_H diff --git a/src/devices/devicedatabasebackend.cpp b/src/devices/devicedatabasebackend.cpp index 7c83978e8..14f28ed66 100644 --- a/src/devices/devicedatabasebackend.cpp +++ b/src/devices/devicedatabasebackend.cpp @@ -25,14 +25,10 @@ const int DeviceDatabaseBackend::kDeviceSchemaVersion = 0; -DeviceDatabaseBackend::DeviceDatabaseBackend(QObject *parent) - : QObject(parent) -{ -} +DeviceDatabaseBackend::DeviceDatabaseBackend(QObject* parent) + : QObject(parent) {} -void DeviceDatabaseBackend::Init(Database* db) { - db_ = db; -} +void DeviceDatabaseBackend::Init(Database* db) { db_ = db; } DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { QMutexLocker l(db_->Mutex()); @@ -40,9 +36,11 @@ DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { DeviceList ret; - QSqlQuery q("SELECT ROWID, unique_id, friendly_name, size, icon," - " transcode_mode, transcode_format" - " FROM devices", db); + QSqlQuery q( + "SELECT ROWID, unique_id, friendly_name, size, icon," + " transcode_mode, transcode_format" + " FROM devices", + db); q.exec(); if (db_->CheckErrors(q)) return ret; @@ -67,11 +65,13 @@ int DeviceDatabaseBackend::AddDevice(const Device& device) { ScopedTransaction t(&db); // Insert the device into the devices table - QSqlQuery q("INSERT INTO devices (" - " unique_id, friendly_name, size, icon," - " transcode_mode, transcode_format)" - " VALUES (:unique_id, :friendly_name, :size, :icon," - " :transcode_mode, :transcode_format)", db); + QSqlQuery q( + "INSERT INTO devices (" + " unique_id, friendly_name, size, icon," + " transcode_mode, transcode_format)" + " VALUES (:unique_id, :friendly_name, :size, :icon," + " :transcode_mode, :transcode_format)", + db); q.bindValue(":unique_id", device.unique_id_); q.bindValue(":friendly_name", device.friendly_name_); q.bindValue(":size", device.size_); @@ -118,17 +118,21 @@ void DeviceDatabaseBackend::RemoveDevice(int id) { } void DeviceDatabaseBackend::SetDeviceOptions(int id, - const QString &friendly_name, const QString &icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format) { + const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("UPDATE devices" - " SET friendly_name=:friendly_name," - " icon=:icon_name," - " transcode_mode=:transcode_mode," - " transcode_format=:transcode_format" - " WHERE ROWID=:id", db); + QSqlQuery q( + "UPDATE devices" + " SET friendly_name=:friendly_name," + " icon=:icon_name," + " transcode_mode=:transcode_mode," + " transcode_format=:transcode_format" + " WHERE ROWID=:id", + db); q.bindValue(":friendly_name", friendly_name); q.bindValue(":icon_name", icon_name); q.bindValue(":transcode_mode", mode); diff --git a/src/devices/devicedatabasebackend.h b/src/devices/devicedatabasebackend.h index 1e008c896..ca0d2fd88 100644 --- a/src/devices/devicedatabasebackend.h +++ b/src/devices/devicedatabasebackend.h @@ -28,7 +28,7 @@ class Database; class DeviceDatabaseBackend : public QObject { Q_OBJECT -public: + public: Q_INVOKABLE DeviceDatabaseBackend(QObject* parent = 0); struct Device { @@ -54,13 +54,13 @@ public: int AddDevice(const Device& device); void RemoveDevice(int id); - void SetDeviceOptions(int id, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format); + void SetDeviceOptions(int id, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format); -private: + private: Database* db_; - }; -#endif // DEVICEDATABASEBACKEND_H +#endif // DEVICEDATABASEBACKEND_H diff --git a/src/devices/devicekitlister.cpp b/src/devices/devicekitlister.cpp index c77246d21..0db3c2b54 100644 --- a/src/devices/devicekitlister.cpp +++ b/src/devices/devicekitlister.cpp @@ -24,23 +24,21 @@ #include "dbus/udisksdevice.h" #ifdef HAVE_LIBGPOD -# include "gpoddevice.h" +#include "gpoddevice.h" #endif #include #include -DeviceKitLister::DeviceKitLister() -{ -} +DeviceKitLister::DeviceKitLister() {} -DeviceKitLister::~DeviceKitLister() { - qLog(Debug) << __PRETTY_FUNCTION__; -} +DeviceKitLister::~DeviceKitLister() { qLog(Debug) << __PRETTY_FUNCTION__; } QString DeviceKitLister::DeviceData::unique_id() const { - return QString("DeviceKit/%1/%2/%3/%4").arg(drive_serial, drive_vendor, drive_model).arg(device_size); + return QString("DeviceKit/%1/%2/%3/%4") + .arg(drive_serial, drive_vendor, drive_model) + .arg(device_size); } void DeviceKitLister::Init() { @@ -49,26 +47,30 @@ void DeviceKitLister::Init() { "/org/freedesktop/UDisks", QDBusConnection::systemBus())); // Get all the devices currently attached - QDBusPendingReply > reply = interface_->EnumerateDevices(); + QDBusPendingReply > reply = + interface_->EnumerateDevices(); reply.waitForFinished(); if (!reply.isValid()) { - qLog(Warning) << "Error enumerating DeviceKit-disks devices:" << reply.error().name() << reply.error().message(); + qLog(Warning) << "Error enumerating DeviceKit-disks devices:" + << reply.error().name() << reply.error().message(); interface_.reset(); return; } // Listen for changes - connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), SLOT(DBusDeviceAdded(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), SLOT(DBusDeviceRemoved(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), SLOT(DBusDeviceChanged(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), + SLOT(DBusDeviceAdded(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), + SLOT(DBusDeviceRemoved(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), + SLOT(DBusDeviceChanged(QDBusObjectPath))); // Get information about each one QMap device_data; - foreach (const QDBusObjectPath& path, reply.value()) { + foreach(const QDBusObjectPath & path, reply.value()) { DeviceData data = ReadDeviceData(path); - if (data.suitable) - device_data[data.unique_id()] = data; + if (data.suitable) device_data[data.unique_id()] = data; } // Update the internal cache @@ -78,9 +80,7 @@ void DeviceKitLister::Init() { } // Notify about the changes - foreach (const QString& id, device_data.keys()) { - emit DeviceAdded(id); - } + foreach(const QString & id, device_data.keys()) { emit DeviceAdded(id); } } QStringList DeviceKitLister::DeviceUniqueIDs() { @@ -88,36 +88,36 @@ QStringList DeviceKitLister::DeviceUniqueIDs() { return device_data_.keys(); } -QVariantList DeviceKitLister::DeviceIcons(const QString &id) { +QVariantList DeviceKitLister::DeviceIcons(const QString& id) { QString path = LockAndGetDeviceInfo(id, &DeviceData::device_mount_paths)[0]; - return QVariantList() - << GuessIconForPath(path) - << GuessIconForModel(DeviceManufacturer(id), DeviceModel(id)) - << LockAndGetDeviceInfo(id, &DeviceData::device_presentation_icon_name); + return QVariantList() << GuessIconForPath(path) + << GuessIconForModel(DeviceManufacturer(id), + DeviceModel(id)) + << LockAndGetDeviceInfo( + id, &DeviceData::device_presentation_icon_name); } -QString DeviceKitLister::DeviceManufacturer(const QString &id) { +QString DeviceKitLister::DeviceManufacturer(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::drive_vendor); } -QString DeviceKitLister::DeviceModel(const QString &id) { +QString DeviceKitLister::DeviceModel(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::drive_model); } -quint64 DeviceKitLister::DeviceCapacity(const QString &id) { +quint64 DeviceKitLister::DeviceCapacity(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::device_size); } -quint64 DeviceKitLister::DeviceFreeSpace(const QString &id) { +quint64 DeviceKitLister::DeviceFreeSpace(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::free_space); } -QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString &id) { +QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString& id) { QVariantMap ret; QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return ret; + if (!device_data_.contains(id)) return ret; const DeviceData& data = device_data_[id]; ret[QT_TR_NOOP("DBus path")] = data.dbus_path; @@ -127,38 +127,35 @@ QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString &id) { return ret; } -QString DeviceKitLister::MakeFriendlyName(const QString &id) { +QString DeviceKitLister::MakeFriendlyName(const QString& id) { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return QString(); + if (!device_data_.contains(id)) return QString(); const DeviceData& data = device_data_[id]; if (!data.device_presentation_name.isEmpty()) return data.device_presentation_name; if (!data.drive_model.isEmpty() && !data.drive_vendor.isEmpty()) return data.drive_vendor + " " + data.drive_model; - if (!data.drive_model.isEmpty()) - return data.drive_model; + if (!data.drive_model.isEmpty()) return data.drive_model; return data.drive_serial; } DeviceKitLister::DeviceData DeviceKitLister::ReadDeviceData( - const QDBusObjectPath &path) const { + const QDBusObjectPath& path) const { DeviceData ret; OrgFreedesktopUDisksDeviceInterface device( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - path.path(), QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), path.path(), + QDBusConnection::systemBus()); if (!device.isValid()) { - qLog(Warning) << "Error connecting to the device interface on" << path.path(); + qLog(Warning) << "Error connecting to the device interface on" + << path.path(); return ret; } // Don't do anything with internal drives, hidden drives, or partition tables - if (device.deviceIsSystemInternal() || - device.devicePresentationHide() || - device.deviceMountPaths().isEmpty() || - device.deviceIsPartitionTable()) { + if (device.deviceIsSystemInternal() || device.devicePresentationHide() || + device.deviceMountPaths().isEmpty() || device.deviceIsPartitionTable()) { return ret; } @@ -180,10 +177,9 @@ DeviceKitLister::DeviceData DeviceKitLister::ReadDeviceData( return ret; } -void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath& path) { DeviceData data = ReadDeviceData(path); - if (!data.suitable) - return; + if (!data.suitable) return; { QMutexLocker l(&mutex_); @@ -193,13 +189,12 @@ void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath &path) { emit DeviceAdded(data.unique_id()); } -void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath& path) { QString id; { QMutexLocker l(&mutex_); id = FindUniqueIdByPath(path); - if (id.isNull()) - return; + if (id.isNull()) return; device_data_.remove(id); } @@ -207,7 +202,7 @@ void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath &path) { emit DeviceRemoved(id); } -void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath& path) { bool already_known = false; { QMutexLocker l(&mutex_); @@ -229,17 +224,16 @@ void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath &path) { } } -QString DeviceKitLister::FindUniqueIdByPath(const QDBusObjectPath &path) const { - foreach (const DeviceData& data, device_data_) { - if (data.dbus_path == path.path()) - return data.unique_id(); +QString DeviceKitLister::FindUniqueIdByPath(const QDBusObjectPath& path) const { + foreach(const DeviceData & data, device_data_) { + if (data.dbus_path == path.path()) return data.unique_id(); } return QString(); } QList DeviceKitLister::MakeDeviceUrls(const QString& id) { - QString mount_point = LockAndGetDeviceInfo( - id, &DeviceData::device_mount_paths)[0]; + QString mount_point = + LockAndGetDeviceInfo(id, &DeviceData::device_mount_paths)[0]; return QList() << MakeUrlFromLocalPath(mount_point); } @@ -248,8 +242,8 @@ void DeviceKitLister::UnmountDevice(const QString& id) { QString path = LockAndGetDeviceInfo(id, &DeviceData::dbus_path); OrgFreedesktopUDisksDeviceInterface device( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - path, QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), path, + QDBusConnection::systemBus()); if (!device.isValid()) { qLog(Warning) << "Error connecting to the device interface on" << path; return; @@ -258,8 +252,8 @@ void DeviceKitLister::UnmountDevice(const QString& id) { // Get the device's parent drive QString drive_path = device.partitionSlave().path(); OrgFreedesktopUDisksDeviceInterface drive( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - drive_path, QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), drive_path, + QDBusConnection::systemBus()); if (!drive.isValid()) { qLog(Warning) << "Error connecting to the drive interface on" << drive_path; return; @@ -277,12 +271,12 @@ void DeviceKitLister::UnmountDevice(const QString& id) { void DeviceKitLister::UpdateDeviceFreeSpace(const QString& id) { { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return; + if (!device_data_.contains(id)) return; DeviceData& data = device_data_[id]; if (!data.device_mount_paths.isEmpty()) - data.free_space = Utilities::FileSystemFreeSpace(data.device_mount_paths[0]); + data.free_space = + Utilities::FileSystemFreeSpace(data.device_mount_paths[0]); } emit DeviceChanged(id); diff --git a/src/devices/devicekitlister.h b/src/devices/devicekitlister.h index 201e9b74b..0fcbcbcd5 100644 --- a/src/devices/devicekitlister.h +++ b/src/devices/devicekitlister.h @@ -32,7 +32,7 @@ class QDBusObjectPath; class DeviceKitLister : public DeviceLister { Q_OBJECT -public: + public: DeviceKitLister(); ~DeviceKitLister(); @@ -44,23 +44,23 @@ public: quint64 DeviceFreeSpace(const QString& id); QVariantMap DeviceHardwareInfo(const QString& id); - QString MakeFriendlyName(const QString &id); - QList MakeDeviceUrls(const QString &id); + QString MakeFriendlyName(const QString& id); + QList MakeDeviceUrls(const QString& id); - void UnmountDevice(const QString &id); + void UnmountDevice(const QString& id); -public slots: + public slots: void UpdateDeviceFreeSpace(const QString& id); -protected: + protected: void Init(); -private slots: + private slots: void DBusDeviceAdded(const QDBusObjectPath& path); void DBusDeviceRemoved(const QDBusObjectPath& path); void DBusDeviceChanged(const QDBusObjectPath& path); -private: + private: struct DeviceData { DeviceData() : suitable(false), device_size(0), free_space(0) {} @@ -87,7 +87,7 @@ private: template T LockAndGetDeviceInfo(const QString& id, T DeviceData::*field); -private: + private: std::unique_ptr interface_; QMutex mutex_; @@ -95,12 +95,12 @@ private: }; template -T DeviceKitLister::LockAndGetDeviceInfo(const QString& id, T DeviceData::*field) { +T DeviceKitLister::LockAndGetDeviceInfo(const QString& id, + T DeviceData::*field) { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return T(); + if (!device_data_.contains(id)) return T(); return device_data_[id].*field; } -#endif // DEVICEKITLISTER_H +#endif // DEVICEKITLISTER_H diff --git a/src/devices/devicelister.cpp b/src/devices/devicelister.cpp index fb00d8ca7..79fefd437 100644 --- a/src/devices/devicelister.cpp +++ b/src/devices/devicelister.cpp @@ -28,10 +28,7 @@ #include #endif -DeviceLister::DeviceLister() - : thread_(nullptr) -{ -} +DeviceLister::DeviceLister() : thread_(nullptr) {} DeviceLister::~DeviceLister() { if (thread_) { @@ -48,9 +45,7 @@ void DeviceLister::Start() { thread_->start(); } -void DeviceLister::ThreadStarted() { - Init(); -} +void DeviceLister::ThreadStarted() { Init(); } namespace { @@ -155,7 +150,6 @@ QString GetIpodModel(Itdb_IpodModel model) { } #endif - } QUrl DeviceLister::MakeUrlFromLocalPath(const QString& path) const { @@ -204,7 +198,8 @@ QStringList DeviceLister::GuessIconForPath(const QString& path) { return ret; } -QStringList DeviceLister::GuessIconForModel(const QString& vendor, const QString& model) { +QStringList DeviceLister::GuessIconForModel(const QString& vendor, + const QString& model) { QStringList ret; if (vendor.startsWith("Google") && model.contains("Nexus")) { ret << "phone-google-nexus-one"; @@ -213,7 +208,7 @@ QStringList DeviceLister::GuessIconForModel(const QString& vendor, const QString } int DeviceLister::MountDevice(const QString& id) { - const int ret = next_mount_request_id_ ++; + const int ret = next_mount_request_id_++; emit DeviceMounted(id, ret, true); return ret; } diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h index 5791968ab..ee0f7a3d3 100644 --- a/src/devices/devicelister.h +++ b/src/devices/devicelister.h @@ -27,7 +27,7 @@ class DeviceManager; class DeviceLister : public QObject { Q_OBJECT -public: + public: DeviceLister(); virtual ~DeviceLister(); @@ -39,7 +39,8 @@ public: // taken from the one with the highest priority. virtual int priority() const { return 100; } - // Query information about the devices that are available. Must be thread-safe. + // Query information about the devices that are available. Must be + // thread-safe. virtual QStringList DeviceUniqueIDs() = 0; virtual QVariantList DeviceIcons(const QString& id) = 0; virtual QString DeviceManufacturer(const QString& id) = 0; @@ -63,7 +64,7 @@ public: // Do whatever needs to be done to safely remove the device. virtual void UnmountDevice(const QString& id) = 0; -public slots: + public slots: virtual void UpdateDeviceFreeSpace(const QString& id) = 0; virtual void ShutDown() {} @@ -73,7 +74,7 @@ signals: void DeviceChanged(const QString& id); void DeviceMounted(const QString& id, int request_id, bool success); -protected: + protected: virtual void Init() = 0; QUrl MakeUrlFromLocalPath(const QString& path) const; bool IsIpod(const QString& path) const; @@ -81,12 +82,12 @@ protected: QStringList GuessIconForPath(const QString& path); QStringList GuessIconForModel(const QString& vendor, const QString& model); -protected: + protected: QThread* thread_; int next_mount_request_id_; -private slots: + private slots: void ThreadStarted(); }; -#endif // DEVICELISTER_H +#endif // DEVICELISTER_H diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index 09706b435..b1fc14d31 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -43,21 +43,21 @@ #include "ui/iconloader.h" #ifdef HAVE_AUDIOCD -# include "cddalister.h" -# include "cddadevice.h" +#include "cddalister.h" +#include "cddadevice.h" #endif #ifdef Q_OS_DARWIN -# include "macdevicelister.h" +#include "macdevicelister.h" #endif #ifdef HAVE_LIBGPOD -# include "gpoddevice.h" +#include "gpoddevice.h" #endif #ifdef HAVE_GIO -# include "giolister.h" +#include "giolister.h" #endif #ifdef HAVE_LIBMTP -# include "mtpdevice.h" +#include "mtpdevice.h" #endif using std::bind; @@ -65,14 +65,11 @@ using std::bind; const int DeviceManager::kDeviceIconSize = 32; const int DeviceManager::kDeviceIconOverlaySize = 16; - DeviceManager::DeviceInfo::DeviceInfo() - : database_id_(-1), - transcode_mode_(MusicStorage::Transcode_Unsupported), - transcode_format_(Song::Type_Unknown), - task_percentage_(-1) -{ -} + : database_id_(-1), + transcode_mode_(MusicStorage::Transcode_Unsupported), + transcode_format_(Song::Type_Unknown), + task_percentage_(-1) {} DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { DeviceDatabaseBackend::Device ret; @@ -84,7 +81,7 @@ DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { ret.transcode_format_ = transcode_format_; QStringList unique_ids; - foreach (const Backend& backend, backends_) { + foreach(const Backend & backend, backends_) { unique_ids << backend.unique_id_; } ret.unique_id_ = unique_ids.join(","); @@ -92,7 +89,8 @@ DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { return ret; } -void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device& dev) { +void DeviceManager::DeviceInfo::InitFromDb( + const DeviceDatabaseBackend::Device& dev) { database_id_ = dev.id_; friendly_name_ = dev.friendly_name_; size_ = dev.size_; @@ -101,19 +99,16 @@ void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device& QStringList icon_names = dev.icon_name_.split(','); QVariantList icons; - foreach (const QString& icon_name, icon_names) { - icons << icon_name; - } + foreach(const QString & icon_name, icon_names) { icons << icon_name; } LoadIcon(icons, friendly_name_); QStringList unique_ids = dev.unique_id_.split(','); - foreach (const QString& id, unique_ids) { - backends_ << Backend(nullptr, id); - } + foreach(const QString & id, unique_ids) { backends_ << Backend(nullptr, id); } } -void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QString& name_hint) { +void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, + const QString& name_hint) { if (icons.isEmpty()) { icon_name_ = "drive-removable-media-usb-pendrive"; icon_ = IconLoader::Load(icon_name_); @@ -121,7 +116,7 @@ void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QStrin } // Try to load the icon with that exact name first - foreach (const QVariant& icon, icons) { + foreach(const QVariant & icon, icons) { if (!icon.value().isNull()) { icon_ = QIcon(icon.value()); return; @@ -147,28 +142,27 @@ void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QStrin icon_ = IconLoader::Load(icon_name_); } -const DeviceManager::DeviceInfo::Backend* DeviceManager::DeviceInfo::BestBackend() const { +const DeviceManager::DeviceInfo::Backend* +DeviceManager::DeviceInfo::BestBackend() const { int best_priority = -1; const Backend* ret = nullptr; - for (int i=0 ; ipriority() > best_priority) { + for (int i = 0; i < backends_.count(); ++i) { + if (backends_[i].lister_ && + backends_[i].lister_->priority() > best_priority) { best_priority = backends_[i].lister_->priority(); ret = &(backends_[i]); } } - if (!ret && !backends_.isEmpty()) - return &(backends_[0]); + if (!ret && !backends_.isEmpty()) return &(backends_[0]); return ret; } - -DeviceManager::DeviceManager(Application* app, QObject *parent) - : QAbstractListModel(parent), - app_(app), - not_connected_overlay_(IconLoader::Load("edit-delete")) -{ +DeviceManager::DeviceManager(Application* app, QObject* parent) + : QAbstractListModel(parent), + app_(app), + not_connected_overlay_(IconLoader::Load("edit-delete")) { thread_pool_.setMaxThreadCount(1); connect(app_->task_manager(), SIGNAL(TasksChanged()), SLOT(TasksChanged())); @@ -179,13 +173,14 @@ DeviceManager::DeviceManager(Application* app, QObject *parent) // This reads from the database and contends on the database mutex, which can // be very slow on startup. - ConcurrentRun::Run(&thread_pool_, bind(&DeviceManager::LoadAllDevices, this)); + ConcurrentRun::Run(&thread_pool_, + bind(&DeviceManager::LoadAllDevices, this)); // This proxy model only shows connected devices connected_devices_model_ = new DeviceStateFilterModel(this); connected_devices_model_->setSourceModel(this); - // CD devices are detected via the DiskArbitration framework instead on Darwin. +// CD devices are detected via the DiskArbitration framework instead on Darwin. #if defined(HAVE_AUDIOCD) && !defined(Q_OS_DARWIN) AddLister(new CddaLister); #endif @@ -215,7 +210,7 @@ DeviceManager::DeviceManager(Application* app, QObject *parent) } DeviceManager::~DeviceManager() { - foreach (DeviceLister* lister, listers_) { + foreach(DeviceLister * lister, listers_) { lister->ShutDown(); delete lister; } @@ -226,7 +221,7 @@ DeviceManager::~DeviceManager() { void DeviceManager::LoadAllDevices() { Q_ASSERT(QThread::currentThread() != qApp->thread()); DeviceDatabaseBackend::DeviceList devices = backend_->GetAllDevices(); - foreach (const DeviceDatabaseBackend::Device& device, devices) { + foreach(const DeviceDatabaseBackend::Device & device, devices) { DeviceInfo info; info.InitFromDb(device); devices_ << info; @@ -238,8 +233,7 @@ int DeviceManager::rowCount(const QModelIndex&) const { } QVariant DeviceManager::data(const QModelIndex& index, int role) const { - if (!index.isValid() || index.column() != 0) - return QVariant(); + if (!index.isValid() || index.column() != 0) return QVariant(); const DeviceInfo& info = devices_[index.row()]; @@ -253,8 +247,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { if (info.size_) text = text + QString(" (%1)").arg(Utilities::PrettySize(info.size_)); - if (info.device_.get()) - info.device_->Refresh(); + if (info.device_.get()) info.device_->Refresh(); return text; } @@ -287,66 +280,65 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { case Role_FreeSpace: case MusicStorage::Role_FreeSpace: - return info.BestBackend()->lister_ ? - info.BestBackend()->lister_->DeviceFreeSpace(info.BestBackend()->unique_id_) : - QVariant(); + return info.BestBackend()->lister_ + ? info.BestBackend()->lister_->DeviceFreeSpace( + info.BestBackend()->unique_id_) + : QVariant(); case Role_State: - if (info.device_) - return State_Connected; + if (info.device_) return State_Connected; if (info.BestBackend()->lister_) { - if (info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) + if (info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) return State_NotMounted; return State_NotConnected; } return State_Remembered; case Role_UpdatingPercentage: - if (info.task_percentage_ == -1) - return QVariant(); + if (info.task_percentage_ == -1) return QVariant(); return info.task_percentage_; case MusicStorage::Role_Storage: if (!info.device_ && info.database_id_ != -1) const_cast(this)->Connect(index.row()); - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); return QVariant::fromValue>(info.device_); case MusicStorage::Role_StorageForceConnect: if (!info.device_) { if (info.database_id_ == -1 && - !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { + !info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) { - if (info.BestBackend()->lister_->AskForScan(info.BestBackend()->unique_id_)) { + if (info.BestBackend()->lister_->AskForScan( + info.BestBackend()->unique_id_)) { std::unique_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), - tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."), + tr("This is the first time you have connected this device. " + "Clementine will now scan the device to find music files - " + "this may take some time."), QMessageBox::Cancel)); - QPushButton* connect = - dialog->addButton(tr("Connect device"), QMessageBox::AcceptRole); + QPushButton* connect = dialog->addButton(tr("Connect device"), + QMessageBox::AcceptRole); dialog->exec(); - if (dialog->clickedButton() != connect) - return QVariant(); + if (dialog->clickedButton() != connect) return QVariant(); } } const_cast(this)->Connect(index.row()); } - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); return QVariant::fromValue>(info.device_); case Role_MountPath: { - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); QString ret = info.device_->url().path(); -# ifdef Q_OS_WIN32 - if (ret.startsWith('/')) - ret.remove(0, 1); -# endif +#ifdef Q_OS_WIN32 + if (ret.startsWith('/')) ret.remove(0, 1); +#endif return QDir::toNativeSeparators(ret); } @@ -357,8 +349,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { return info.transcode_format_; case Role_SongCount: - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); return info.device_->song_count(); default: @@ -366,45 +357,45 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { } } -void DeviceManager::AddLister(DeviceLister *lister) { +void DeviceManager::AddLister(DeviceLister* lister) { listers_ << lister; - connect(lister, SIGNAL(DeviceAdded(QString)), SLOT(PhysicalDeviceAdded(QString))); - connect(lister, SIGNAL(DeviceRemoved(QString)), SLOT(PhysicalDeviceRemoved(QString))); - connect(lister, SIGNAL(DeviceChanged(QString)), SLOT(PhysicalDeviceChanged(QString))); + connect(lister, SIGNAL(DeviceAdded(QString)), + SLOT(PhysicalDeviceAdded(QString))); + connect(lister, SIGNAL(DeviceRemoved(QString)), + SLOT(PhysicalDeviceRemoved(QString))); + connect(lister, SIGNAL(DeviceChanged(QString)), + SLOT(PhysicalDeviceChanged(QString))); lister->Start(); } -int DeviceManager::FindDeviceById(const QString &id) const { - for (int i=0 ; i& urls) const { - if (urls.isEmpty()) - return -1; + if (urls.isEmpty()) return -1; - for (int i=0 ; i device_urls = backend.lister_->MakeDeviceUrls(backend.unique_id_); - foreach (const QUrl& url, device_urls) { - if (urls.contains(url)) - return i; + QList device_urls = + backend.lister_->MakeDeviceUrls(backend.unique_id_); + foreach(const QUrl & url, device_urls) { + if (urls.contains(url)) return i; } } } return -1; } -void DeviceManager::PhysicalDeviceAdded(const QString &id) { +void DeviceManager::PhysicalDeviceAdded(const QString& id) { DeviceLister* lister = qobject_cast(sender()); qLog(Info) << "Device added:" << id; @@ -413,7 +404,8 @@ void DeviceManager::PhysicalDeviceAdded(const QString &id) { int i = FindDeviceById(id); if (i != -1) { DeviceInfo& info = devices_[i]; - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { info.backends_[backend_index].lister_ = lister; break; @@ -453,7 +445,7 @@ void DeviceManager::PhysicalDeviceAdded(const QString &id) { } } -void DeviceManager::PhysicalDeviceRemoved(const QString &id) { +void DeviceManager::PhysicalDeviceRemoved(const QString& id) { DeviceLister* lister = qobject_cast(sender()); qLog(Info) << "Device removed:" << id; @@ -468,23 +460,23 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { if (info.database_id_ != -1) { // Keep the structure around, but just "disconnect" it - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { info.backends_[backend_index].lister_ = nullptr; break; } } - if (info.device_ && info.device_->lister() == lister) - info.device_.reset(); + if (info.device_ && info.device_->lister() == lister) info.device_.reset(); - if (!info.device_) - emit DeviceDisconnected(i); + if (!info.device_) emit DeviceDisconnected(i); emit dataChanged(index(i, 0), index(i, 0)); } else { // If this was the last lister for the device then remove it from the model - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { info.backends_.removeAt(backend_index); break; @@ -495,11 +487,11 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { beginRemoveRows(QModelIndex(), i, i); devices_.removeAt(i); - foreach (const QModelIndex& idx, persistentIndexList()) { + foreach(const QModelIndex & idx, persistentIndexList()) { if (idx.row() == i) changePersistentIndex(idx, QModelIndex()); else if (idx.row() > i) - changePersistentIndex(idx, index(idx.row()-1, idx.column())); + changePersistentIndex(idx, index(idx.row() - 1, idx.column())); } endRemoveRows(); @@ -507,7 +499,7 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { } } -void DeviceManager::PhysicalDeviceChanged(const QString &id) { +void DeviceManager::PhysicalDeviceChanged(const QString& id) { DeviceLister* lister = qobject_cast(sender()); Q_UNUSED(lister); @@ -522,15 +514,16 @@ void DeviceManager::PhysicalDeviceChanged(const QString &id) { std::shared_ptr DeviceManager::Connect(int row) { DeviceInfo& info = devices_[row]; - if (info.device_) // Already connected + if (info.device_) // Already connected return info.device_; std::shared_ptr ret; - if (!info.BestBackend()->lister_) // Not physically connected + if (!info.BestBackend()->lister_) // Not physically connected return ret; - if (info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { + if (info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) { // Mount the device info.BestBackend()->lister_->MountDevice(info.BestBackend()->unique_id_); return ret; @@ -545,12 +538,11 @@ std::shared_ptr DeviceManager::Connect(int row) { // Get the device URLs QList urls = info.BestBackend()->lister_->MakeDeviceUrls( info.BestBackend()->unique_id_); - if (urls.isEmpty()) - return ret; + if (urls.isEmpty()) return ret; // Take the first URL that we have a handler for QUrl device_url; - foreach (const QUrl& url, urls) { + foreach(const QUrl & url, urls) { qLog(Info) << "Connecting" << url; // Find a device class for this URL's scheme @@ -563,18 +555,24 @@ std::shared_ptr DeviceManager::Connect(int row) { // was "ipod" or "mtp" then the user compiled out support and the device // won't work properly. if (url.scheme() == "mtp" || url.scheme() == "gphoto2") { - if (QMessageBox::critical(nullptr, tr("This device will not work properly"), - tr("This is an MTP device, but you compiled Clementine without libmtp support.") + " " + - tr("If you continue, this device will work slowly and songs copied to it may not work."), - QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) + if (QMessageBox::critical( + nullptr, tr("This device will not work properly"), + tr("This is an MTP device, but you compiled Clementine without " + "libmtp support.") + + " " + tr("If you continue, this device will work slowly and " + "songs copied to it may not work."), + QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) return ret; } if (url.scheme() == "ipod") { - if (QMessageBox::critical(nullptr, tr("This device will not work properly"), - tr("This is an iPod, but you compiled Clementine without libgpod support.") + " " + - tr("If you continue, this device will work slowly and songs copied to it may not work."), - QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) + if (QMessageBox::critical( + nullptr, tr("This device will not work properly"), + tr("This is an iPod, but you compiled Clementine without libgpod " + "support.") + + " " + tr("If you continue, this device will work slowly and " + "songs copied to it may not work."), + QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) return ret; } } @@ -582,17 +580,19 @@ std::shared_ptr DeviceManager::Connect(int row) { if (device_url.isEmpty()) { // Munge the URL list into a string list QStringList url_strings; - foreach (const QUrl& url, urls) { url_strings << url.toString(); } + foreach(const QUrl & url, urls) { url_strings << url.toString(); } - app_->AddError(tr("This type of device is not supported: %1").arg(url_strings.join(", "))); + app_->AddError(tr("This type of device is not supported: %1") + .arg(url_strings.join(", "))); return ret; } QMetaObject meta_object = device_classes_.value(device_url.scheme()); QObject* instance = meta_object.newInstance( - Q_ARG(QUrl, device_url), Q_ARG(DeviceLister*, info.BestBackend()->lister_), - Q_ARG(QString, info.BestBackend()->unique_id_), Q_ARG(DeviceManager*, this), - Q_ARG(Application*, app_), + Q_ARG(QUrl, device_url), + Q_ARG(DeviceLister*, info.BestBackend()->lister_), + Q_ARG(QString, info.BestBackend()->unique_id_), + Q_ARG(DeviceManager*, this), Q_ARG(Application*, app_), Q_ARG(int, info.database_id_), Q_ARG(bool, first_time)); ret.reset(static_cast(instance)); @@ -603,8 +603,10 @@ std::shared_ptr DeviceManager::Connect(int row) { info.device_ = ret; emit dataChanged(index(row), index(row)); - connect(info.device_.get(), SIGNAL(TaskStarted(int)), SLOT(DeviceTaskStarted(int))); - connect(info.device_.get(), SIGNAL(SongCountUpdated(int)), SLOT(DeviceSongCountUpdated(int))); + connect(info.device_.get(), SIGNAL(TaskStarted(int)), + SLOT(DeviceTaskStarted(int))); + connect(info.device_.get(), SIGNAL(SongCountUpdated(int)), + SLOT(DeviceSongCountUpdated(int))); } emit DeviceConnected(row); @@ -612,7 +614,8 @@ std::shared_ptr DeviceManager::Connect(int row) { return ret; } -std::shared_ptr DeviceManager::GetConnectedDevice(int row) const { +std::shared_ptr DeviceManager::GetConnectedDevice(int row) + const { return devices_[row].device_; } @@ -626,7 +629,7 @@ DeviceLister* DeviceManager::GetLister(int row) const { void DeviceManager::Disconnect(int row) { DeviceInfo& info = devices_[row]; - if (!info.device_) // Already disconnected + if (!info.device_) // Already disconnected return; info.device_.reset(); @@ -636,11 +639,9 @@ void DeviceManager::Disconnect(int row) { void DeviceManager::Forget(int row) { DeviceInfo& info = devices_[row]; - if (info.database_id_ == -1) - return; + if (info.database_id_ == -1) return; - if (info.device_) - Disconnect(row); + if (info.device_) Disconnect(row); backend_->RemoveDevice(info.database_id_); info.database_id_ = -1; @@ -650,11 +651,11 @@ void DeviceManager::Forget(int row) { beginRemoveRows(QModelIndex(), row, row); devices_.removeAt(row); - foreach (const QModelIndex& idx, persistentIndexList()) { + foreach(const QModelIndex & idx, persistentIndexList()) { if (idx.row() == row) changePersistentIndex(idx, QModelIndex()); else if (idx.row() > row) - changePersistentIndex(idx, index(idx.row()-1, idx.column())); + changePersistentIndex(idx, index(idx.row() - 1, idx.column())); } endRemoveRows(); @@ -664,15 +665,17 @@ void DeviceManager::Forget(int row) { const QString id = info.BestBackend()->unique_id_; info.friendly_name_ = info.BestBackend()->lister_->MakeFriendlyName(id); - info.LoadIcon(info.BestBackend()->lister_->DeviceIcons(id), info.friendly_name_); + info.LoadIcon(info.BestBackend()->lister_->DeviceIcons(id), + info.friendly_name_); dataChanged(index(row, 0), index(row, 0)); } } -void DeviceManager::SetDeviceOptions(int row, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format) { +void DeviceManager::SetDeviceOptions(int row, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format) { DeviceInfo& info = devices_[row]; info.friendly_name_ = friendly_name; info.LoadIcon(QVariantList() << icon_name, friendly_name); @@ -688,10 +691,9 @@ void DeviceManager::SetDeviceOptions(int row, void DeviceManager::DeviceTaskStarted(int id) { ConnectedDevice* device = qobject_cast(sender()); - if (!device) - return; + if (!device) return; - for (int i=0 ; i tasks = app_->task_manager()->GetTasks(); QList finished_tasks = active_tasks_.values(); - foreach (const TaskManager::Task& task, tasks) { - if (!active_tasks_.contains(task.id)) - continue; + foreach(const TaskManager::Task & task, tasks) { + if (!active_tasks_.contains(task.id)) continue; QPersistentModelIndex index = active_tasks_[task.id]; - if (!index.isValid()) - continue; + if (!index.isValid()) continue; DeviceInfo& info = devices_[index.row()]; if (task.progress_max) @@ -723,9 +723,8 @@ void DeviceManager::TasksChanged() { finished_tasks.removeAll(index); } - foreach (const QPersistentModelIndex& index, finished_tasks) { - if (!index.isValid()) - continue; + foreach(const QPersistentModelIndex & index, finished_tasks) { + if (!index.isValid()) continue; DeviceInfo& info = devices_[index.row()]; info.task_percentage_ = -1; @@ -741,11 +740,9 @@ void DeviceManager::UnmountAsync(int row) { void DeviceManager::Unmount(int row) { DeviceInfo& info = devices_[row]; - if (info.database_id_ != -1 && !info.device_) - return; + if (info.database_id_ != -1 && !info.device_) return; - if (info.device_) - Disconnect(row); + if (info.device_) Disconnect(row); if (info.BestBackend()->lister_) info.BestBackend()->lister_->UnmountDevice(info.BestBackend()->unique_id_); @@ -753,12 +750,10 @@ void DeviceManager::Unmount(int row) { void DeviceManager::DeviceSongCountUpdated(int count) { ConnectedDevice* device = qobject_cast(sender()); - if (!device) - return; + if (!device) return; int row = FindDeviceById(device->unique_id()); - if (row == -1) - return; + if (row == -1) return; emit dataChanged(index(row), index(row)); } diff --git a/src/devices/devicemanager.h b/src/devices/devicemanager.h index 6f20b0159..39b70aa3a 100644 --- a/src/devices/devicemanager.h +++ b/src/devices/devicemanager.h @@ -38,7 +38,7 @@ class TaskManager; class DeviceManager : public QAbstractListModel { Q_OBJECT -public: + public: DeviceManager(Application* app, QObject* parent = 0); ~DeviceManager(); @@ -54,7 +54,6 @@ public: Role_TranscodeMode, Role_TranscodeFormat, Role_SongCount, - LastRole, }; @@ -68,7 +67,9 @@ public: static const int kDeviceIconSize; static const int kDeviceIconOverlaySize; - DeviceStateFilterModel* connected_devices_model() const { return connected_devices_model_; } + DeviceStateFilterModel* connected_devices_model() const { + return connected_devices_model_; + } // Get info about devices int GetDatabaseId(int row) const; @@ -84,22 +85,23 @@ public: void Forget(int row); void UnmountAsync(int row); - void SetDeviceOptions(int row, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format); + void SetDeviceOptions(int row, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format); // QAbstractListModel - int rowCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; + int rowCount(const QModelIndex& parent) const; + QVariant data(const QModelIndex& index, int role) const; -public slots: + public slots: void Unmount(int row); signals: void DeviceConnected(int row); void DeviceDisconnected(int row); -private slots: + private slots: void PhysicalDeviceAdded(const QString& id); void PhysicalDeviceRemoved(const QString& id); void PhysicalDeviceChanged(const QString& id); @@ -108,7 +110,7 @@ private slots: void DeviceSongCountUpdated(int count); void LoadAllDevices(); -private: + private: // Devices can be in three different states: // 1) Remembered in the database but not physically connected at the moment. // database_id valid, lister null, device null @@ -126,9 +128,9 @@ private: // the device will have multiple "backends". struct Backend { Backend(DeviceLister* lister = NULL, const QString& id = QString()) - : lister_(lister), unique_id_(id) {} + : lister_(lister), unique_id_(id) {} - DeviceLister* lister_; // NULL if not physically connected + DeviceLister* lister_; // NULL if not physically connected QString unique_id_; }; @@ -142,9 +144,9 @@ private: // Gets the best backend available (the one with the highest priority) const Backend* BestBackend() const; - - int database_id_; // -1 if not remembered in the database - std::shared_ptr device_; // NULL if not connected to clementine + int database_id_; // -1 if not remembered in the database + std::shared_ptr + device_; // NULL if not connected to clementine QList backends_; QString friendly_name_; @@ -160,11 +162,13 @@ private: }; void AddLister(DeviceLister* lister); - template void AddDeviceClass(); + template + void AddDeviceClass(); - DeviceDatabaseBackend::Device InfoToDatabaseDevice(const DeviceInfo& info) const; + DeviceDatabaseBackend::Device InfoToDatabaseDevice(const DeviceInfo& info) + const; -private: + private: Application* app_; DeviceDatabaseBackend* backend_; @@ -183,16 +187,14 @@ private: QThreadPool thread_pool_; }; - - template void DeviceManager::AddDeviceClass() { QStringList schemes = T::url_schemes(); QMetaObject obj = T::staticMetaObject; - foreach (const QString& scheme, schemes) { + foreach(const QString & scheme, schemes) { device_classes_.insert(scheme, obj); } } -#endif // DEVICEMANAGER_H +#endif // DEVICEMANAGER_H diff --git a/src/devices/deviceproperties.cpp b/src/devices/deviceproperties.cpp index 68e52b225..3dd1a8323 100644 --- a/src/devices/deviceproperties.cpp +++ b/src/devices/deviceproperties.cpp @@ -32,66 +32,67 @@ #include "transcoder/transcoder.h" #include "ui/iconloader.h" -DeviceProperties::DeviceProperties(QWidget *parent) - : QDialog(parent), - ui_(new Ui_DeviceProperties), - manager_(nullptr), - updating_formats_(false) -{ +DeviceProperties::DeviceProperties(QWidget* parent) + : QDialog(parent), + ui_(new Ui_DeviceProperties), + manager_(nullptr), + updating_formats_(false) { ui_->setupUi(this); connect(ui_->open_device, SIGNAL(clicked()), SLOT(OpenDevice())); // Maximum height of the icon widget - ui_->icon->setMaximumHeight(ui_->icon->iconSize().height() + - ui_->icon->horizontalScrollBar()->sizeHint().height() + - ui_->icon->spacing() * 2 + 5); + ui_->icon->setMaximumHeight( + ui_->icon->iconSize().height() + + ui_->icon->horizontalScrollBar()->sizeHint().height() + + ui_->icon->spacing() * 2 + 5); } -DeviceProperties::~DeviceProperties() { - delete ui_; -} +DeviceProperties::~DeviceProperties() { delete ui_; } -void DeviceProperties::SetDeviceManager(DeviceManager *manager) { +void DeviceProperties::SetDeviceManager(DeviceManager* manager) { manager_ = manager; - connect(manager_, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(ModelChanged())); - connect(manager_, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(ModelChanged())); - connect(manager_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(ModelChanged())); + connect(manager_, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + SLOT(ModelChanged())); + connect(manager_, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(ModelChanged())); + connect(manager_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(ModelChanged())); } void DeviceProperties::ShowDevice(int row) { if (ui_->icon->count() == 0) { // Only load the icons the first time the dialog is shown QStringList icon_names = QStringList() - << "drive-removable-media-usb-pendrive" - << "multimedia-player-ipod-mini-blue" - << "multimedia-player-ipod-mini-gold" - << "multimedia-player-ipod-mini-green" - << "multimedia-player-ipod-mini-pink" - << "multimedia-player-ipod-mini-silver" - << "multimedia-player-ipod-nano-black" - << "multimedia-player-ipod-nano-white" - << "multimedia-player-ipod-nano-green" - << "multimedia-player-ipod-shuffle" - << "multimedia-player-ipod-standard-color" - << "multimedia-player-ipod-standard-monochrome" - << "multimedia-player-ipod-U2-color" - << "multimedia-player-ipod-U2-monochrome" - << "ipodtouchicon" - << "phone" - << "phone-google-nexus-one" - << "phone-htc-g1-white" - << "phone-nokia-n900" - << "phone-palm-pre"; + << "drive-removable-media-usb-pendrive" + << "multimedia-player-ipod-mini-blue" + << "multimedia-player-ipod-mini-gold" + << "multimedia-player-ipod-mini-green" + << "multimedia-player-ipod-mini-pink" + << "multimedia-player-ipod-mini-silver" + << "multimedia-player-ipod-nano-black" + << "multimedia-player-ipod-nano-white" + << "multimedia-player-ipod-nano-green" + << "multimedia-player-ipod-shuffle" + << "multimedia-player-ipod-standard-color" + << "multimedia-player-ipod-standard-monochrome" + << "multimedia-player-ipod-U2-color" + << "multimedia-player-ipod-U2-monochrome" + << "ipodtouchicon" + << "phone" + << "phone-google-nexus-one" + << "phone-htc-g1-white" + << "phone-nokia-n900" + << "phone-palm-pre"; - foreach (const QString& icon_name, icon_names) { - QListWidgetItem* item = new QListWidgetItem( - IconLoader::Load(icon_name), QString(), ui_->icon); + foreach(const QString & icon_name, icon_names) { + QListWidgetItem* item = new QListWidgetItem(IconLoader::Load(icon_name), + QString(), ui_->icon); item->setData(Qt::UserRole, icon_name); } // Load the transcode formats the first time the dialog is shown - foreach (const TranscoderPreset& preset, Transcoder::GetAllPresets()) { + foreach(const TranscoderPreset & preset, Transcoder::GetAllPresets()) { ui_->transcode_format->addItem(preset.name_, preset.type_); } ui_->transcode_format->model()->sort(0); @@ -104,7 +105,7 @@ void DeviceProperties::ShowDevice(int row) { // Find the right icon QString icon_name = index_.data(DeviceManager::Role_IconName).toString(); - for (int i=0 ; iicon->count() ; ++i) { + for (int i = 0; i < ui_->icon->count(); ++i) { if (ui_->icon->item(i)->data(Qt::UserRole).toString() == icon_name) { ui_->icon->setCurrentRow(i); break; @@ -117,17 +118,17 @@ void DeviceProperties::ShowDevice(int row) { show(); } -void DeviceProperties::AddHardwareInfo(int row, const QString &key, const QString &value) { +void DeviceProperties::AddHardwareInfo(int row, const QString& key, + const QString& value) { ui_->hardware_info->setItem(row, 0, new QTableWidgetItem(key)); ui_->hardware_info->setItem(row, 1, new QTableWidgetItem(value)); } void DeviceProperties::ModelChanged() { - if (!isVisible()) - return; + if (!isVisible()) return; if (!index_.isValid()) - reject(); // Device went away + reject(); // Device went away else { UpdateHardwareInfo(); UpdateFormats(); @@ -141,7 +142,7 @@ void DeviceProperties::UpdateHardwareInfo() { QVariantMap info = lister->DeviceHardwareInfo(id); // Remove empty items - foreach (const QString& key, info.keys()) { + foreach(const QString & key, info.keys()) { if (info[key].isNull() || info[key].toString().isEmpty()) info.remove(key); } @@ -153,13 +154,14 @@ void DeviceProperties::UpdateHardwareInfo() { int row = 0; AddHardwareInfo(row++, tr("Model"), lister->DeviceModel(id)); AddHardwareInfo(row++, tr("Manufacturer"), lister->DeviceManufacturer(id)); - foreach (const QString& key, info.keys()) { + foreach(const QString & key, info.keys()) { AddHardwareInfo(row++, tr(key.toAscii()), info[key].toString()); } ui_->hardware_info->sortItems(0); } else { - ui_->hardware_info_stack->setCurrentWidget(ui_->hardware_info_not_connected_page); + ui_->hardware_info_stack->setCurrentWidget( + ui_->hardware_info_not_connected_page); } // Size @@ -246,17 +248,16 @@ void DeviceProperties::accept() { mode = MusicStorage::Transcode_Unsupported; // Transcode format - Song::FileType format = Song::FileType(ui_->transcode_format->itemData( - ui_->transcode_format->currentIndex()).toInt()); + Song::FileType format = Song::FileType( + ui_->transcode_format->itemData(ui_->transcode_format->currentIndex()) + .toInt()); - manager_->SetDeviceOptions(index_.row(), - ui_->name->text(), ui_->icon->currentItem()->data(Qt::UserRole).toString(), - mode, format); + manager_->SetDeviceOptions( + index_.row(), ui_->name->text(), + ui_->icon->currentItem()->data(Qt::UserRole).toString(), mode, format); } -void DeviceProperties::OpenDevice() { - manager_->Connect(index_.row()); -} +void DeviceProperties::OpenDevice() { manager_->Connect(index_.row()); } void DeviceProperties::UpdateFormatsFinished() { QFutureWatcher* watcher = static_cast*>(sender()); @@ -277,21 +278,23 @@ void DeviceProperties::UpdateFormatsFinished() { // Populate supported types list ui_->supported_formats->clear(); - foreach (Song::FileType type, supported_formats_) { + foreach(Song::FileType type, supported_formats_) { QListWidgetItem* item = new QListWidgetItem(Song::TextForFiletype(type)); ui_->supported_formats->addItem(item); } ui_->supported_formats->sortItems(); // Set the format combobox item - TranscoderPreset preset = Transcoder::PresetForFileType(Song::FileType( - index_.data(DeviceManager::Role_TranscodeFormat).toInt())); + TranscoderPreset preset = Transcoder::PresetForFileType( + Song::FileType(index_.data(DeviceManager::Role_TranscodeFormat).toInt())); if (preset.type_ == Song::Type_Unknown) { // The user hasn't chosen a format for this device yet, so work our way down // a list of some preferred formats, picking the first one that is supported - preset = Transcoder::PresetForFileType(Transcoder::PickBestFormat(supported_formats_)); + preset = Transcoder::PresetForFileType( + Transcoder::PickBestFormat(supported_formats_)); } - ui_->transcode_format->setCurrentIndex(ui_->transcode_format->findText(preset.name_)); + ui_->transcode_format->setCurrentIndex( + ui_->transcode_format->findText(preset.name_)); ui_->formats_stack->setCurrentWidget(ui_->formats_page); } diff --git a/src/devices/deviceproperties.h b/src/devices/deviceproperties.h index eac5b0333..e797cdb5c 100644 --- a/src/devices/deviceproperties.h +++ b/src/devices/deviceproperties.h @@ -29,27 +29,27 @@ class Ui_DeviceProperties; class DeviceProperties : public QDialog { Q_OBJECT -public: + public: DeviceProperties(QWidget* parent = 0); ~DeviceProperties(); void SetDeviceManager(DeviceManager* manager); void ShowDevice(int row); -public slots: + public slots: void accept(); -private: + private: void UpdateHardwareInfo(); void AddHardwareInfo(int row, const QString& key, const QString& value); void UpdateFormats(); -private slots: + private slots: void ModelChanged(); void OpenDevice(); void UpdateFormatsFinished(); -private: + private: Ui_DeviceProperties* ui_; DeviceManager* manager_; @@ -59,4 +59,4 @@ private: QList supported_formats_; }; -#endif // DEVICEPROPERTIES_H +#endif // DEVICEPROPERTIES_H diff --git a/src/devices/devicestatefiltermodel.cpp b/src/devices/devicestatefiltermodel.cpp index c0aa057db..bf132c3fa 100644 --- a/src/devices/devicestatefiltermodel.cpp +++ b/src/devices/devicestatefiltermodel.cpp @@ -17,19 +17,20 @@ #include "devicestatefiltermodel.h" -DeviceStateFilterModel::DeviceStateFilterModel(QObject *parent, +DeviceStateFilterModel::DeviceStateFilterModel(QObject* parent, DeviceManager::State state) - : QSortFilterProxyModel(parent), - state_(state) -{ - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(ProxyRowCountChanged())); - connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(ProxyRowCountChanged())); + : QSortFilterProxyModel(parent), state_(state) { + connect(this, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(ProxyRowCountChanged())); + connect(this, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(ProxyRowCountChanged())); connect(this, SIGNAL(modelReset()), SLOT(ProxyRowCountChanged())); } -bool DeviceStateFilterModel::filterAcceptsRow(int row, const QModelIndex&) const { - return sourceModel()->index(row, 0).data(DeviceManager::Role_State).toInt() - != state_; +bool DeviceStateFilterModel::filterAcceptsRow(int row, + const QModelIndex&) const { + return sourceModel()->index(row, 0).data(DeviceManager::Role_State).toInt() != + state_; } void DeviceStateFilterModel::ProxyRowCountChanged() { diff --git a/src/devices/devicestatefiltermodel.h b/src/devices/devicestatefiltermodel.h index be3ea8b74..33a3ab2f9 100644 --- a/src/devices/devicestatefiltermodel.h +++ b/src/devices/devicestatefiltermodel.h @@ -25,23 +25,23 @@ class DeviceStateFilterModel : public QSortFilterProxyModel { Q_OBJECT -public: - DeviceStateFilterModel(QObject* parent, - DeviceManager::State state = DeviceManager::State_Remembered); + public: + DeviceStateFilterModel(QObject* parent, DeviceManager::State state = + DeviceManager::State_Remembered); void setSourceModel(QAbstractItemModel* sourceModel); signals: void IsEmptyChanged(bool is_empty); -protected: + protected: bool filterAcceptsRow(int row, const QModelIndex& parent) const; -private slots: + private slots: void ProxyRowCountChanged(); -private: + private: DeviceManager::State state_; }; -#endif // DEVICESTATEFILTERMODEL_H +#endif // DEVICESTATEFILTERMODEL_H diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 2e8190880..8fa2b9220 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -44,12 +44,11 @@ const int DeviceItemDelegate::kIconPadding = 6; -DeviceItemDelegate::DeviceItemDelegate(QObject *parent) - : LibraryItemDelegate(parent) -{ -} +DeviceItemDelegate::DeviceItemDelegate(QObject* parent) + : LibraryItemDelegate(parent) {} -void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, const QModelIndex& index) const { +void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, + const QModelIndex& index) const { // Is it a device or a library item? if (index.data(DeviceManager::Role_State).isNull()) { LibraryItemDelegate::paint(p, opt, index); @@ -57,7 +56,8 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con } // Draw the background - const QStyleOptionViewItemV3* vopt = qstyleoption_cast(&opt); + const QStyleOptionViewItemV3* vopt = + qstyleoption_cast(&opt); const QWidget* widget = vopt->widget; QStyle* style = widget->style() ? widget->style() : QApplication::style(); style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, p, widget); @@ -73,8 +73,8 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con status_font.setPointSize(status_font.pointSize() - 2); #endif - const int text_height = QFontMetrics(opt.font).height() + - QFontMetrics(status_font).height(); + const int text_height = + QFontMetrics(opt.font).height() + QFontMetrics(status_font).height(); QRect line1(opt.rect); QRect line2(opt.rect); @@ -89,14 +89,15 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con } // Draw the icon - p->drawPixmap(opt.rect.topLeft(), index.data(Qt::DecorationRole).value()); + p->drawPixmap(opt.rect.topLeft(), + index.data(Qt::DecorationRole).value()); // Draw the first line (device name) p->drawText(line1, Qt::AlignLeft | Qt::AlignTop, index.data().toString()); // Draw the second line (status) - DeviceManager::State state = - static_cast(index.data(DeviceManager::Role_State).toInt()); + DeviceManager::State state = static_cast( + index.data(DeviceManager::Role_State).toInt()); QVariant progress = index.data(DeviceManager::Role_UpdatingPercentage); QString status_text; @@ -120,7 +121,7 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con QVariant song_count = index.data(DeviceManager::Role_SongCount); if (song_count.isValid()) { int count = song_count.toInt(); - if (count == 1) // TODO: Fix this properly + if (count == 1) // TODO: Fix this properly status_text = tr("%1 song").arg(count); else status_text = tr("%1 songs").arg(count); @@ -142,17 +143,14 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con p->restore(); } - - DeviceView::DeviceView(QWidget* parent) - : AutoExpandingTreeView(parent), - app_(nullptr), - merged_model_(nullptr), - sort_model_(nullptr), - properties_dialog_(new DeviceProperties), - device_menu_(nullptr), - library_menu_(nullptr) -{ + : AutoExpandingTreeView(parent), + app_(nullptr), + merged_model_(nullptr), + sort_model_(nullptr), + properties_dialog_(new DeviceProperties), + device_menu_(nullptr), + library_menu_(nullptr) { setItemDelegate(new DeviceItemDelegate(this)); SetExpandOnReset(false); setAttribute(Qt::WA_MacShowFocusRect, false); @@ -163,15 +161,16 @@ DeviceView::DeviceView(QWidget* parent) setSelectionMode(QAbstractItemView::ExtendedSelection); } -DeviceView::~DeviceView() { -} +DeviceView::~DeviceView() {} void DeviceView::SetApplication(Application* app) { Q_ASSERT(app_ == nullptr); app_ = app; - connect(app_->device_manager(), SIGNAL(DeviceConnected(int)), SLOT(DeviceConnected(int))); - connect(app_->device_manager(), SIGNAL(DeviceDisconnected(int)), SLOT(DeviceDisconnected(int))); + connect(app_->device_manager(), SIGNAL(DeviceConnected(int)), + SLOT(DeviceConnected(int))); + connect(app_->device_manager(), SIGNAL(DeviceDisconnected(int)), + SLOT(DeviceDisconnected(int))); sort_model_ = new QSortFilterProxyModel(this); sort_model_->setSourceModel(app_->device_manager()); @@ -183,14 +182,15 @@ void DeviceView::SetApplication(Application* app) { merged_model_->setSourceModel(sort_model_); connect(merged_model_, - SIGNAL(SubModelReset(QModelIndex,QAbstractItemModel*)), + SIGNAL(SubModelReset(QModelIndex, QAbstractItemModel*)), SLOT(RecursivelyExpand(QModelIndex))); setModel(merged_model_); properties_dialog_->SetDeviceManager(app_->device_manager()); organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); } void DeviceView::contextMenuEvent(QContextMenuEvent* e) { @@ -199,26 +199,34 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { library_menu_ = new QMenu(this); // Device menu - eject_action_ = device_menu_->addAction( - IconLoader::Load("media-eject"), tr("Safely remove device"), this, SLOT(Unmount())); - forget_action_ = device_menu_->addAction( - IconLoader::Load("list-remove"), tr("Forget device"), this, SLOT(Forget())); + eject_action_ = device_menu_->addAction(IconLoader::Load("media-eject"), + tr("Safely remove device"), this, + SLOT(Unmount())); + forget_action_ = + device_menu_->addAction(IconLoader::Load("list-remove"), + tr("Forget device"), this, SLOT(Forget())); device_menu_->addSeparator(); - properties_action_ = device_menu_->addAction( - IconLoader::Load("configure"), tr("Device properties..."), this, SLOT(Properties())); + properties_action_ = device_menu_->addAction(IconLoader::Load("configure"), + tr("Device properties..."), + this, SLOT(Properties())); // Library menu - add_to_playlist_action_ = library_menu_->addAction(IconLoader::Load("media-playback-start"), + add_to_playlist_action_ = library_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); - load_action_ = library_menu_->addAction(IconLoader::Load("media-playback-start"), + load_action_ = library_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load())); - open_in_new_playlist_ = library_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + open_in_new_playlist_ = library_menu_->addAction( + IconLoader::Load("document-new"), tr("Open in new playlist"), this, + SLOT(OpenInNewPlaylist())); library_menu_->addSeparator(); organise_action_ = library_menu_->addAction(IconLoader::Load("edit-copy"), - tr("Copy to library..."), this, SLOT(Organise())); + tr("Copy to library..."), this, + SLOT(Organise())); delete_action_ = library_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete from device..."), this, SLOT(Delete())); + tr("Delete from device..."), this, + SLOT(Delete())); } menu_index_ = currentIndex(); @@ -227,8 +235,10 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { const QModelIndex library_index = MapToLibrary(menu_index_); if (device_index.isValid()) { - const bool is_plugged_in = app_->device_manager()->GetLister(device_index.row()); - const bool is_remembered = app_->device_manager()->GetDatabaseId(device_index.row()) != -1; + const bool is_plugged_in = + app_->device_manager()->GetLister(device_index.row()); + const bool is_remembered = + app_->device_manager()->GetDatabaseId(device_index.row()) != -1; forget_action_->setEnabled(is_remembered); eject_action_->setEnabled(is_plugged_in); @@ -241,8 +251,7 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { if (parent_device_index.isValid()) { std::shared_ptr device = app_->device_manager()->GetConnectedDevice(parent_device_index.row()); - if (device && !device->LocalPath().isEmpty()) - is_filesystem_device = true; + if (device && !device->LocalPath().isEmpty()) is_filesystem_device = true; } organise_action_->setEnabled(is_filesystem_device); @@ -251,26 +260,28 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { } } -QModelIndex DeviceView::MapToDevice(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::MapToDevice(const QModelIndex& merged_model_index) + const { QModelIndex sort_model_index = merged_model_->mapToSource(merged_model_index); - if (sort_model_index.model() != sort_model_) - return QModelIndex(); + if (sort_model_index.model() != sort_model_) return QModelIndex(); return sort_model_->mapToSource(sort_model_index); } -QModelIndex DeviceView::FindParentDevice(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::FindParentDevice(const QModelIndex& merged_model_index) + const { QModelIndex index = merged_model_->FindSourceParent(merged_model_index); - if (index.model() != sort_model_) - return QModelIndex(); + if (index.model() != sort_model_) return QModelIndex(); return sort_model_->mapToSource(index); } -QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) + const { QModelIndex sort_model_index = merged_model_->mapToSource(merged_model_index); if (const QSortFilterProxyModel* sort_model = - qobject_cast(sort_model_index.model())) { + qobject_cast( + sort_model_index.model())) { return sort_model->mapToSource(sort_model_index); } @@ -279,18 +290,20 @@ QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) cons void DeviceView::Connect() { QModelIndex device_idx = MapToDevice(menu_index_); - app_->device_manager()->data(device_idx, MusicStorage::Role_StorageForceConnect); + app_->device_manager()->data(device_idx, + MusicStorage::Role_StorageForceConnect); } void DeviceView::DeviceConnected(int row) { std::shared_ptr device = app_->device_manager()->GetConnectedDevice(row); - if (!device) - return; + if (!device) return; - QModelIndex sort_idx = sort_model_->mapFromSource(app_->device_manager()->index(row)); + QModelIndex sort_idx = + sort_model_->mapFromSource(app_->device_manager()->index(row)); - QSortFilterProxyModel* sort_model = new QSortFilterProxyModel(device->model()); + QSortFilterProxyModel* sort_model = + new QSortFilterProxyModel(device->model()); sort_model->setSourceModel(device->model()); sort_model->setSortRole(LibraryModel::Role_SortText); sort_model->setDynamicSortFilter(true); @@ -301,24 +314,28 @@ void DeviceView::DeviceConnected(int row) { } void DeviceView::DeviceDisconnected(int row) { - merged_model_->RemoveSubModel(sort_model_->mapFromSource(app_->device_manager()->index(row))); + merged_model_->RemoveSubModel( + sort_model_->mapFromSource(app_->device_manager()->index(row))); } void DeviceView::Forget() { QModelIndex device_idx = MapToDevice(menu_index_); - QString unique_id = app_->device_manager()->data(device_idx, DeviceManager::Role_UniqueId).toString(); + QString unique_id = app_->device_manager() + ->data(device_idx, DeviceManager::Role_UniqueId) + .toString(); if (app_->device_manager()->GetLister(device_idx.row()) && - app_->device_manager()->GetLister(device_idx.row())->AskForScan(unique_id)) { + app_->device_manager()->GetLister(device_idx.row())->AskForScan( + unique_id)) { std::unique_ptr dialog(new QMessageBox( QMessageBox::Question, tr("Forget device"), - tr("Forgetting a device will remove it from this list and Clementine will have to rescan all the songs again next time you connect it."), + tr("Forgetting a device will remove it from this list and Clementine " + "will have to rescan all the songs again next time you connect it."), QMessageBox::Cancel, this)); QPushButton* forget = dialog->addButton(tr("Forget device"), QMessageBox::DestructiveRole); dialog->exec(); - if (dialog->clickedButton() != forget) - return; + if (dialog->clickedButton() != forget) return; } app_->device_manager()->Forget(device_idx.row()); @@ -328,7 +345,7 @@ void DeviceView::Properties() { properties_dialog_->ShowDevice(MapToDevice(menu_index_).row()); } -void DeviceView::mouseDoubleClickEvent(QMouseEvent *event) { +void DeviceView::mouseDoubleClickEvent(QMouseEvent* event) { AutoExpandingTreeView::mouseDoubleClickEvent(event); QModelIndex merged_index = indexAt(event->pos()); @@ -344,15 +361,13 @@ void DeviceView::mouseDoubleClickEvent(QMouseEvent *event) { SongList DeviceView::GetSelectedSongs() const { QModelIndexList selected_merged_indexes = selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& merged_index, selected_merged_indexes) { + foreach(const QModelIndex & merged_index, selected_merged_indexes) { QModelIndex library_index = MapToLibrary(merged_index); - if (!library_index.isValid()) - continue; + if (!library_index.isValid()) continue; - const LibraryModel* library = qobject_cast( - library_index.model()); - if (!library) - continue; + const LibraryModel* library = + qobject_cast(library_index.model()); + if (!library) continue; songs << library->GetChildSongs(library_index); } @@ -380,33 +395,33 @@ void DeviceView::OpenInNewPlaylist() { } void DeviceView::Delete() { - if (selectedIndexes().isEmpty()) - return; + if (selectedIndexes().isEmpty()) return; // Take the device of the first selected item QModelIndex device_index = FindParentDevice(selectedIndexes()[0]); - if (!device_index.isValid()) - return; + if (!device_index.isValid()) return; if (QMessageBox::question(this, tr("Delete files"), - tr("These files will be deleted from the device, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be deleted from the device, " + "are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; std::shared_ptr storage = - device_index.data(MusicStorage::Role_Storage).value>(); + device_index.data(MusicStorage::Role_Storage) + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(GetSelectedSongs()); } void DeviceView::Organise() { SongList songs = GetSelectedSongs(); QStringList filenames; - foreach (const Song& song, songs) { - filenames << song.url().toLocalFile(); - } + foreach(const Song & song, songs) { filenames << song.url().toLocalFile(); } organise_dialog_->SetCopy(true); organise_dialog_->SetFilenames(filenames); @@ -419,8 +434,7 @@ void DeviceView::Unmount() { } void DeviceView::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h index f64592e6e..b2025cdde 100644 --- a/src/devices/deviceview.h +++ b/src/devices/deviceview.h @@ -35,29 +35,29 @@ class LibraryModel; class MergedProxyModel; class DeviceItemDelegate : public LibraryItemDelegate { -public: + public: DeviceItemDelegate(QObject* parent); static const int kIconPadding; - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; }; - class DeviceView : public AutoExpandingTreeView { Q_OBJECT -public: + public: DeviceView(QWidget* parent = 0); ~DeviceView(); void SetApplication(Application* app); -protected: - void contextMenuEvent(QContextMenuEvent *); - void mouseDoubleClickEvent(QMouseEvent *event); + protected: + void contextMenuEvent(QContextMenuEvent*); + void mouseDoubleClickEvent(QMouseEvent* event); -private slots: + private slots: // Device menu actions void Connect(); void Unmount(); @@ -79,13 +79,13 @@ private slots: // AutoExpandingTreeView bool CanRecursivelyExpand(const QModelIndex& index) const; -private: + private: QModelIndex MapToDevice(const QModelIndex& merged_model_index) const; QModelIndex MapToLibrary(const QModelIndex& merged_model_index) const; QModelIndex FindParentDevice(const QModelIndex& merged_model_index) const; SongList GetSelectedSongs() const; -private: + private: Application* app_; MergedProxyModel* merged_model_; QSortFilterProxyModel* sort_model_; @@ -108,4 +108,4 @@ private: QModelIndex menu_index_; }; -#endif // DEVICEVIEW_H +#endif // DEVICEVIEW_H diff --git a/src/devices/deviceviewcontainer.cpp b/src/devices/deviceviewcontainer.cpp index eb2de1926..4acd77367 100644 --- a/src/devices/deviceviewcontainer.cpp +++ b/src/devices/deviceviewcontainer.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,10 +19,8 @@ #include "ui_deviceviewcontainer.h" #include "ui/iconloader.h" -DeviceViewContainer::DeviceViewContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui::DeviceViewContainer), - loaded_icons_(false) { +DeviceViewContainer::DeviceViewContainer(QWidget* parent) + : QWidget(parent), ui_(new Ui::DeviceViewContainer), loaded_icons_(false) { ui_->setupUi(this); QPalette palette(ui_->windows_is_broken_frame->palette()); @@ -36,9 +34,7 @@ DeviceViewContainer::DeviceViewContainer(QWidget *parent) #endif } -DeviceViewContainer::~DeviceViewContainer() { - delete ui_; -} +DeviceViewContainer::~DeviceViewContainer() { delete ui_; } void DeviceViewContainer::showEvent(QShowEvent* e) { if (!loaded_icons_) { @@ -51,6 +47,4 @@ void DeviceViewContainer::showEvent(QShowEvent* e) { QWidget::showEvent(e); } -DeviceView* DeviceViewContainer::view() const { - return ui_->view; -} +DeviceView* DeviceViewContainer::view() const { return ui_->view; } diff --git a/src/devices/deviceviewcontainer.h b/src/devices/deviceviewcontainer.h index ae28b8ecc..897f6f0d2 100644 --- a/src/devices/deviceviewcontainer.h +++ b/src/devices/deviceviewcontainer.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,14 +21,14 @@ #include namespace Ui { - class DeviceViewContainer; +class DeviceViewContainer; } class DeviceView; class DeviceViewContainer : public QWidget { Q_OBJECT - + public: explicit DeviceViewContainer(QWidget* parent = 0); ~DeviceViewContainer(); @@ -37,10 +37,10 @@ class DeviceViewContainer : public QWidget { protected: void showEvent(QShowEvent*); - + private: Ui::DeviceViewContainer* ui_; bool loaded_icons_; }; -#endif // DEVICEVIEWCONTAINER_H +#endif // DEVICEVIEWCONTAINER_H diff --git a/src/devices/filesystemdevice.cpp b/src/devices/filesystemdevice.cpp index 8575e5fef..4805cab86 100644 --- a/src/devices/filesystemdevice.cpp +++ b/src/devices/filesystemdevice.cpp @@ -26,40 +26,40 @@ #include #include -FilesystemDevice::FilesystemDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : FilesystemMusicStorage(url.toLocalFile()), - ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - watcher_(new LibraryWatcher), - watcher_thread_(new QThread(this)) -{ +FilesystemDevice::FilesystemDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, + DeviceManager* manager, Application* app, + int database_id, bool first_time) + : FilesystemMusicStorage(url.toLocalFile()), + ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + watcher_(new LibraryWatcher), + watcher_thread_(new QThread(this)) { watcher_->moveToThread(watcher_thread_); watcher_thread_->start(QThread::IdlePriority); - watcher_->set_device_name(manager->data(manager->index( - manager->FindDeviceById(unique_id)), DeviceManager::Role_FriendlyName).toString()); + watcher_->set_device_name( + manager->data(manager->index(manager->FindDeviceById(unique_id)), + DeviceManager::Role_FriendlyName).toString()); watcher_->set_backend(backend_); watcher_->set_task_manager(app_->task_manager()); - connect(backend_, SIGNAL(DirectoryDiscovered(Directory,SubdirectoryList)), - watcher_, SLOT(AddDirectory(Directory,SubdirectoryList))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), - watcher_, SLOT(RemoveDirectory(Directory))); - connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), - backend_, SLOT(AddOrUpdateSongs(SongList))); - connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), - backend_, SLOT(UpdateMTimesOnly(SongList))); - connect(watcher_, SIGNAL(SongsDeleted(SongList)), - backend_, SLOT(DeleteSongs(SongList))); - connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(CompilationsNeedUpdating()), - backend_, SLOT(UpdateCompilations())); + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + watcher_, SLOT(AddDirectory(Directory, SubdirectoryList))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), watcher_, + SLOT(RemoveDirectory(Directory))); + connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), backend_, + SLOT(AddOrUpdateSongs(SongList))); + connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), backend_, + SLOT(UpdateMTimesOnly(SongList))); + connect(watcher_, SIGNAL(SongsDeleted(SongList)), backend_, + SLOT(DeleteSongs(SongList))); + connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(CompilationsNeedUpdating()), backend_, + SLOT(UpdateCompilations())); connect(watcher_, SIGNAL(ScanStarted(int)), SIGNAL(TaskStarted(int))); } diff --git a/src/devices/filesystemdevice.h b/src/devices/filesystemdevice.h index f56d32e81..2f855c9ef 100644 --- a/src/devices/filesystemdevice.h +++ b/src/devices/filesystemdevice.h @@ -24,24 +24,24 @@ class DeviceManager; class LibraryWatcher; -class FilesystemDevice : public ConnectedDevice, public virtual FilesystemMusicStorage { +class FilesystemDevice : public ConnectedDevice, + public virtual FilesystemMusicStorage { Q_OBJECT -public: - Q_INVOKABLE FilesystemDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + public: + Q_INVOKABLE FilesystemDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, + bool first_time); ~FilesystemDevice(); void Init(); static QStringList url_schemes() { return QStringList() << "file"; } -private: + private: LibraryWatcher* watcher_; QThread* watcher_thread_; }; -#endif // FILESYSTEMDEVICE_H +#endif // FILESYSTEMDEVICE_H diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp index 3c116d470..2f07a25da 100644 --- a/src/devices/giolister.cpp +++ b/src/devices/giolister.cpp @@ -33,30 +33,26 @@ using std::placeholders::_3; QString GioLister::DeviceInfo::unique_id() const { if (mount) - return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); + return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg( + filesystem_size); return QString("Gio/unmounted/%1").arg((qulonglong)volume.get()); } bool GioLister::DeviceInfo::is_suitable() const { - if (!volume) - return false; // This excludes smb or ssh mounts + if (!volume) return false; // This excludes smb or ssh mounts - if (drive && !drive_removable) - return false; // This excludes internal drives + if (drive && !drive_removable) return false; // This excludes internal drives - if (filesystem_type.isEmpty()) - return true; + if (filesystem_type.isEmpty()) return true; - return filesystem_type != "udf" && - filesystem_type != "smb" && - filesystem_type != "cifs" && - filesystem_type != "ssh" && + return filesystem_type != "udf" && filesystem_type != "smb" && + filesystem_type != "cifs" && filesystem_type != "ssh" && filesystem_type != "isofs"; } template -void OperationFinished(F f, GObject *object, GAsyncResult *result) { +void OperationFinished(F f, GObject* object, GAsyncResult* result) { T* obj = reinterpret_cast(object); GError* error = nullptr; @@ -68,9 +64,10 @@ void OperationFinished(F f, GObject *object, GAsyncResult *result) { } } -void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer) { - OperationFinished(std::bind( - g_volume_mount_finish, _1, _2, _3), object, result); +void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished(std::bind(g_volume_mount_finish, _1, _2, _3), + object, result); } void GioLister::Init() { @@ -78,7 +75,7 @@ void GioLister::Init() { // Get existing volumes GList* const volumes = g_volume_monitor_get_volumes(monitor_); - for (GList* p=volumes; p; p=p->next) { + for (GList* p = volumes; p; p = p->next) { GVolume* volume = static_cast(p->data); VolumeAdded(volume); @@ -88,7 +85,7 @@ void GioLister::Init() { // Get existing mounts GList* const mounts = g_volume_monitor_get_mounts(monitor_); - for (GList* p=mounts; p; p=p->next) { + for (GList* p = mounts; p; p = p->next) { GMount* mount = static_cast(p->data); MountAdded(mount); @@ -109,11 +106,10 @@ QStringList GioLister::DeviceUniqueIDs() { return devices_.keys(); } -QVariantList GioLister::DeviceIcons(const QString &id) { +QVariantList GioLister::DeviceIcons(const QString& id) { QVariantList ret; QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return ret; + if (!devices_.contains(id)) return ret; const DeviceInfo& info = devices_[id]; @@ -127,37 +123,33 @@ QVariantList GioLister::DeviceIcons(const QString &id) { return ret; } -QString GioLister::DeviceManufacturer(const QString &id) { - return QString(); -} +QString GioLister::DeviceManufacturer(const QString& id) { return QString(); } -QString GioLister::DeviceModel(const QString &id) { +QString GioLister::DeviceModel(const QString& id) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return QString(); + if (!devices_.contains(id)) return QString(); const DeviceInfo& info = devices_[id]; return info.drive_name.isEmpty() ? info.volume_name : info.drive_name; } -quint64 GioLister::DeviceCapacity(const QString &id) { +quint64 GioLister::DeviceCapacity(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceInfo::filesystem_size); } -quint64 GioLister::DeviceFreeSpace(const QString &id) { +quint64 GioLister::DeviceFreeSpace(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceInfo::filesystem_free); } -QString GioLister::MakeFriendlyName(const QString &id) { +QString GioLister::MakeFriendlyName(const QString& id) { return DeviceModel(id); } -QVariantMap GioLister::DeviceHardwareInfo(const QString &id) { +QVariantMap GioLister::DeviceHardwareInfo(const QString& id) { QVariantMap ret; QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return ret; + if (!devices_.contains(id)) return ret; const DeviceInfo& info = devices_[id]; ret[QT_TR_NOOP("Mount point")] = info.mount_path; @@ -226,8 +218,7 @@ void GioLister::VolumeAdded(GVolume* volume) { #endif info.ReadDriveInfo(g_volume_get_drive(volume)); info.ReadMountInfo(g_volume_get_mount(volume)); - if (!info.is_suitable()) - return; + if (!info.is_suitable()) return; { QMutexLocker l(&mutex_); @@ -242,8 +233,7 @@ void GioLister::VolumeRemoved(GVolume* volume) { { QMutexLocker l(&mutex_); id = FindUniqueIdByVolume(volume); - if (id.isNull()) - return; + if (id.isNull()) return; devices_.remove(id); } @@ -263,15 +253,14 @@ void GioLister::MountAdded(GMount* mount) { #endif info.ReadMountInfo(mount); info.ReadDriveInfo(g_mount_get_drive(mount)); - if (!info.is_suitable()) - return; + if (!info.is_suitable()) return; QString old_id; { QMutexLocker l(&mutex_); // The volume might already exist - either mounted or unmounted. - foreach (const QString& id, devices_.keys()) { + foreach(const QString & id, devices_.keys()) { if (devices_[id].volume == info.volume) { old_id = id; break; @@ -301,8 +290,7 @@ void GioLister::MountChanged(GMount* mount) { { QMutexLocker l(&mutex_); id = FindUniqueIdByMount(mount); - if (id.isNull()) - return; + if (id.isNull()) return; g_object_ref(mount); @@ -314,7 +302,8 @@ void GioLister::MountChanged(GMount* mount) { // Ignore the change if the new info is useless if (new_info.invalid_enclosing_mount || (devices_[id].filesystem_size != 0 && new_info.filesystem_size == 0) || - (!devices_[id].filesystem_type.isEmpty() && new_info.filesystem_type.isEmpty())) + (!devices_[id].filesystem_type.isEmpty() && + new_info.filesystem_type.isEmpty())) return; devices_[id] = new_info; @@ -323,13 +312,12 @@ void GioLister::MountChanged(GMount* mount) { emit DeviceChanged(id); } -void GioLister::MountRemoved(GMount *mount) { +void GioLister::MountRemoved(GMount* mount) { QString id; { QMutexLocker l(&mutex_); id = FindUniqueIdByMount(mount); - if (id.isNull()) - return; + if (id.isNull()) return; devices_.remove(id); } @@ -337,7 +325,7 @@ void GioLister::MountRemoved(GMount *mount) { emit DeviceRemoved(id); } -QString GioLister::DeviceInfo::ConvertAndFree(char *str) { +QString GioLister::DeviceInfo::ConvertAndFree(char* str) { QString ret = QString::fromUtf8(str); g_free(str); return ret; @@ -346,8 +334,7 @@ QString GioLister::DeviceInfo::ConvertAndFree(char *str) { void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Get basic information this->mount.reset_without_add(mount); - if (!mount) - return; + if (!mount) return; mount_name = ConvertAndFree(g_mount_get_name(mount)); @@ -355,8 +342,8 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { mount_icon_names.clear(); GIcon* icon = g_mount_get_icon(mount); if (G_IS_THEMED_ICON(icon)) { - const char* const * icons = g_themed_icon_get_names(G_THEMED_ICON(icon)); - for (const char* const * p = icons ; *p ; ++p) { + const char* const* icons = g_themed_icon_get_names(G_THEMED_ICON(icon)); + for (const char* const* p = icons; *p; ++p) { mount_icon_names << QString::fromUtf8(*p); } } @@ -382,9 +369,10 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Query the filesystem info for size, free space, and type error = nullptr; - GFileInfo* info = g_file_query_filesystem_info(root, - G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "," G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," - G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, nullptr, &error); + GFileInfo* info = g_file_query_filesystem_info( + root, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE + "," G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, + nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -419,13 +407,12 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { void GioLister::DeviceInfo::ReadVolumeInfo(GVolume* volume) { this->volume.reset_without_add(volume); - if (!volume) - return; + if (!volume) return; volume_name = ConvertAndFree(g_volume_get_name(volume)); volume_uuid = ConvertAndFree(g_volume_get_uuid(volume)); - volume_unix_device = ConvertAndFree(g_volume_get_identifier( - volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE)); + volume_unix_device = ConvertAndFree( + g_volume_get_identifier(volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE)); GFile* root = g_volume_get_activation_root(volume); if (root) { @@ -436,63 +423,60 @@ void GioLister::DeviceInfo::ReadVolumeInfo(GVolume* volume) { void GioLister::DeviceInfo::ReadDriveInfo(GDrive* drive) { this->drive.reset_without_add(drive); - if (!drive) - return; + if (!drive) return; drive_name = ConvertAndFree(g_drive_get_name(drive)); drive_removable = g_drive_is_media_removable(drive); } -QString GioLister::FindUniqueIdByMount(GMount *mount) const { - foreach (const DeviceInfo& info, devices_) { - if (info.mount == mount) - return info.unique_id(); +QString GioLister::FindUniqueIdByMount(GMount* mount) const { + foreach(const DeviceInfo & info, devices_) { + if (info.mount == mount) return info.unique_id(); } return QString(); } QString GioLister::FindUniqueIdByVolume(GVolume* volume) const { - foreach (const DeviceInfo& info, devices_) { - if (info.volume == volume) - return info.unique_id(); + foreach(const DeviceInfo & info, devices_) { + if (info.volume == volume) return info.unique_id(); } return QString(); } -void GioLister::VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(std::bind( - g_volume_eject_with_operation_finish, _1, _2, _3), object, result); +void GioLister::VolumeEjectFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_volume_eject_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::MountEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(std::bind( - g_mount_eject_with_operation_finish, _1, _2, _3), object, result); +void GioLister::MountEjectFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_mount_eject_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(std::bind( - g_mount_unmount_with_operation_finish, _1, _2, _3), object, result); +void GioLister::MountUnmountFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_mount_unmount_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::UnmountDevice(const QString &id) { +void GioLister::UnmountDevice(const QString& id) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return; + if (!devices_.contains(id)) return; const DeviceInfo& info = devices_[id]; - if (!info.mount) - return; + if (!info.mount) return; if (info.volume) { if (g_volume_can_eject(info.volume)) { g_volume_eject_with_operation( - info.volume, - G_MOUNT_UNMOUNT_NONE, - nullptr, - nullptr, - (GAsyncReadyCallback) VolumeEjectFinished, - nullptr); + info.volume, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)VolumeEjectFinished, nullptr); g_object_unref(info.volume); return; } @@ -500,28 +484,19 @@ void GioLister::UnmountDevice(const QString &id) { if (g_mount_can_eject(info.mount)) { g_mount_eject_with_operation( - info.mount, - G_MOUNT_UNMOUNT_NONE, - nullptr, - nullptr, - (GAsyncReadyCallback) MountEjectFinished, - nullptr); + info.mount, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)MountEjectFinished, nullptr); } else if (g_mount_can_unmount(info.mount)) { g_mount_unmount_with_operation( - info.mount, - G_MOUNT_UNMOUNT_NONE, - nullptr, - nullptr, - (GAsyncReadyCallback) MountUnmountFinished, - nullptr); + info.mount, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)MountUnmountFinished, nullptr); } } void GioLister::UpdateDeviceFreeSpace(const QString& id) { { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return; + if (!devices_.contains(id)) return; DeviceInfo& device_info = devices_[id]; @@ -551,7 +526,7 @@ bool GioLister::DeviceNeedsMount(const QString& id) { } int GioLister::MountDevice(const QString& id) { - const int request_id = next_mount_request_id_ ++; + const int request_id = next_mount_request_id_++; metaObject()->invokeMethod(this, "DoMountDevice", Qt::QueuedConnection, Q_ARG(QString, id), Q_ARG(int, request_id)); return request_id; diff --git a/src/devices/giolister.h b/src/devices/giolister.h index 14b8e0855..eafa69dc6 100644 --- a/src/devices/giolister.h +++ b/src/devices/giolister.h @@ -23,7 +23,7 @@ // Work around compile issue with glib >= 2.25 #ifdef signals -# undef signals +#undef signals #endif #include @@ -34,7 +34,7 @@ class GioLister : public DeviceLister { Q_OBJECT -public: + public: GioLister() {} int priority() const { return 50; } @@ -48,22 +48,25 @@ public: QVariantMap DeviceHardwareInfo(const QString& id); bool DeviceNeedsMount(const QString& id); - QString MakeFriendlyName(const QString &id); - QList MakeDeviceUrls(const QString &id); + QString MakeFriendlyName(const QString& id); + QList MakeDeviceUrls(const QString& id); int MountDevice(const QString& id); - void UnmountDevice(const QString &id); + void UnmountDevice(const QString& id); -public slots: + public slots: void UpdateDeviceFreeSpace(const QString& id); -protected: + protected: void Init(); -private: + private: struct DeviceInfo { - DeviceInfo() : drive_removable(false), filesystem_size(0), - filesystem_free(0), invalid_enclosing_mount(false) {} + DeviceInfo() + : drive_removable(false), + filesystem_size(0), + filesystem_free(0), + invalid_enclosing_mount(false) {} QString unique_id() const; bool is_suitable() const; @@ -113,10 +116,14 @@ private: static void MountChangedCallback(GVolumeMonitor*, GMount*, gpointer); static void MountRemovedCallback(GVolumeMonitor*, GMount*, gpointer); - static void VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer); - static void VolumeEjectFinished(GObject* object, GAsyncResult* result, gpointer); - static void MountEjectFinished(GObject* object, GAsyncResult* result, gpointer); - static void MountUnmountFinished(GObject* object, GAsyncResult* result, gpointer); + static void VolumeMountFinished(GObject* object, GAsyncResult* result, + gpointer); + static void VolumeEjectFinished(GObject* object, GAsyncResult* result, + gpointer); + static void MountEjectFinished(GObject* object, GAsyncResult* result, + gpointer); + static void MountUnmountFinished(GObject* object, GAsyncResult* result, + gpointer); // You MUST hold the mutex while calling this function QString FindUniqueIdByMount(GMount* mount) const; @@ -125,10 +132,10 @@ private: template T LockAndGetDeviceInfo(const QString& id, T DeviceInfo::*field); -private slots: + private slots: void DoMountDevice(const QString& id, int request_id); -private: + private: ScopedGObject monitor_; QMutex mutex_; @@ -138,10 +145,9 @@ private: template T GioLister::LockAndGetDeviceInfo(const QString& id, T DeviceInfo::*field) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return T(); + if (!devices_.contains(id)) return T(); return devices_[id].*field; } -#endif // GIOLISTER_H +#endif // GIOLISTER_H diff --git a/src/devices/gpoddevice.cpp b/src/devices/gpoddevice.cpp index 8460c5f41..2a0429243 100644 --- a/src/devices/gpoddevice.cpp +++ b/src/devices/gpoddevice.cpp @@ -30,17 +30,14 @@ #include -GPodDevice::GPodDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - loader_thread_(new QThread(this)), - loader_(nullptr), - db_(nullptr) -{ -} +GPodDevice::GPodDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + loader_thread_(new QThread(this)), + loader_(nullptr), + db_(nullptr) {} void GPodDevice::Init() { InitBackendDirectory(url_.path(), first_time_); @@ -52,13 +49,13 @@ void GPodDevice::Init() { connect(loader_, SIGNAL(Error(QString)), SIGNAL(Error(QString))); connect(loader_, SIGNAL(TaskStarted(int)), SIGNAL(TaskStarted(int))); - connect(loader_, SIGNAL(LoadFinished(Itdb_iTunesDB*)), SLOT(LoadFinished(Itdb_iTunesDB*))); + connect(loader_, SIGNAL(LoadFinished(Itdb_iTunesDB*)), + SLOT(LoadFinished(Itdb_iTunesDB*))); connect(loader_thread_, SIGNAL(started()), loader_, SLOT(LoadDatabase())); loader_thread_->start(); } -GPodDevice::~GPodDevice() { -} +GPodDevice::~GPodDevice() {} void GPodDevice::LoadFinished(Itdb_iTunesDB* db) { QMutexLocker l(&db_mutex_); @@ -73,15 +70,13 @@ bool GPodDevice::StartCopy(QList* supported_filetypes) { { // Wait for the database to be loaded QMutexLocker l(&db_mutex_); - if (!db_) - db_wait_cond_.wait(&db_mutex_); + if (!db_) db_wait_cond_.wait(&db_mutex_); } // Ensure only one "organise files" can be active at any one time db_busy_.lock(); - if (supported_filetypes) - GetSupportedFiletypes(supported_filetypes); + if (supported_filetypes) GetSupportedFiletypes(supported_filetypes); return true; } @@ -114,8 +109,9 @@ bool GPodDevice::CopyToStorage(const CopyJob& job) { // Copy the file GError* error = nullptr; - itdb_cp_track_to_ipod(track, QDir::toNativeSeparators(job.source_) - .toLocal8Bit().constData(), &error); + itdb_cp_track_to_ipod( + track, QDir::toNativeSeparators(job.source_).toLocal8Bit().constData(), + &error); if (error) { qLog(Error) << "copying failed:" << error->message; app_->AddError(QString::fromUtf8(error->message)); @@ -149,10 +145,8 @@ void GPodDevice::WriteDatabase(bool success) { FinaliseDatabase(); // Update the library model - if (!songs_to_add_.isEmpty()) - backend_->AddOrUpdateSongs(songs_to_add_); - if (!songs_to_remove_.isEmpty()) - backend_->DeleteSongs(songs_to_remove_); + if (!songs_to_add_.isEmpty()) backend_->AddOrUpdateSongs(songs_to_add_); + if (!songs_to_remove_.isEmpty()) backend_->DeleteSongs(songs_to_remove_); } } @@ -166,20 +160,20 @@ void GPodDevice::FinishCopy(bool success) { ConnectedDevice::FinishCopy(success); } -void GPodDevice::StartDelete() { - StartCopy(nullptr); -} +void GPodDevice::StartDelete() { StartCopy(nullptr); } -bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& relative_to) { +bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, + const QString& relative_to) { QString ipod_filename = path; if (!relative_to.isEmpty() && path.startsWith(relative_to)) - ipod_filename.remove(0, relative_to.length() + (relative_to.endsWith('/') ? -1 : 0)); + ipod_filename.remove( + 0, relative_to.length() + (relative_to.endsWith('/') ? -1 : 0)); ipod_filename.replace('/', ':'); // Find the track in the itdb, identify it by its filename Itdb_Track* track = nullptr; - for (GList* tracks = db_->tracks ; tracks != nullptr ; tracks = tracks->next) { + for (GList* tracks = db_->tracks; tracks != nullptr; tracks = tracks->next) { Itdb_Track* t = static_cast(tracks->data); if (t->ipod_path == ipod_filename) { @@ -194,7 +188,8 @@ bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& rel } // Remove the track from all playlists - for (GList* playlists = db_->playlists ; playlists != nullptr ; playlists = playlists->next) { + for (GList* playlists = db_->playlists; playlists != nullptr; + playlists = playlists->next) { Itdb_Playlist* playlist = static_cast(playlists->data); if (itdb_playlist_contains_track(playlist, track)) { @@ -215,8 +210,7 @@ bool GPodDevice::DeleteFromStorage(const DeleteJob& job) { return false; // Remove the file - if (!QFile::remove(job.metadata_.url().toLocalFile())) - return false; + if (!QFile::remove(job.metadata_.url().toLocalFile())) return false; // Remove it from our library model songs_to_remove_ << job.metadata_; diff --git a/src/devices/gpoddevice.h b/src/devices/gpoddevice.h index e163e0574..b40333053 100644 --- a/src/devices/gpoddevice.h +++ b/src/devices/gpoddevice.h @@ -31,12 +31,10 @@ class GPodLoader; class GPodDevice : public ConnectedDevice, public virtual MusicStorage { Q_OBJECT -public: - Q_INVOKABLE GPodDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + public: + Q_INVOKABLE GPodDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time); ~GPodDevice(); void Init(); @@ -53,20 +51,20 @@ public: bool DeleteFromStorage(const DeleteJob& job); void FinishDelete(bool success); -protected slots: + protected slots: void LoadFinished(Itdb_iTunesDB* db); -protected: + protected: Itdb_Track* AddTrackToITunesDb(const Song& metadata); void AddTrackToModel(Itdb_Track* track, const QString& prefix); bool RemoveTrackFromITunesDb(const QString& path, const QString& relative_to = QString()); virtual void FinaliseDatabase() {} -private: + private: void WriteDatabase(bool success); -protected: + protected: QThread* loader_thread_; GPodLoader* loader_; @@ -79,4 +77,4 @@ protected: SongList songs_to_remove_; }; -#endif // GPODDEVICE_H +#endif // GPODDEVICE_H diff --git a/src/devices/gpodloader.cpp b/src/devices/gpodloader.cpp index 742c24ac8..b57596fc0 100644 --- a/src/devices/gpodloader.cpp +++ b/src/devices/gpodloader.cpp @@ -27,21 +27,19 @@ #include #include -GPodLoader::GPodLoader( - const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, std::shared_ptr device) - : QObject(nullptr), - device_(device), - mount_point_(mount_point), - type_(Song::Type_Unknown), - task_manager_(task_manager), - backend_(backend) -{ +GPodLoader::GPodLoader(const QString& mount_point, TaskManager* task_manager, + LibraryBackend* backend, + std::shared_ptr device) + : QObject(nullptr), + device_(device), + mount_point_(mount_point), + type_(Song::Type_Unknown), + task_manager_(task_manager), + backend_(backend) { original_thread_ = thread(); } -GPodLoader::~GPodLoader() { -} +GPodLoader::~GPodLoader() {} void GPodLoader::LoadDatabase() { int task_id = task_manager_->StartTask(tr("Loading iPod database")); @@ -49,8 +47,8 @@ void GPodLoader::LoadDatabase() { // Load the iTunes database GError* error = nullptr; - Itdb_iTunesDB* db = itdb_parse( - QDir::toNativeSeparators(mount_point_).toLocal8Bit(), &error); + Itdb_iTunesDB* db = + itdb_parse(QDir::toNativeSeparators(mount_point_).toLocal8Bit(), &error); // Check for errors if (!db) { @@ -68,18 +66,18 @@ void GPodLoader::LoadDatabase() { // Convert all the tracks from libgpod structs into Song classes const QString prefix = path_prefix_.isEmpty() - ? QDir::fromNativeSeparators(mount_point_) : path_prefix_; + ? QDir::fromNativeSeparators(mount_point_) + : path_prefix_; SongList songs; - for (GList* tracks = db->tracks ; tracks != nullptr ; tracks = tracks->next) { + for (GList* tracks = db->tracks; tracks != nullptr; tracks = tracks->next) { Itdb_Track* track = static_cast(tracks->data); Song song; song.InitFromItdb(track, prefix); song.set_directory_id(1); - if (type_ != Song::Type_Unknown) - song.set_filetype(type_); + if (type_ != Song::Type_Unknown) song.set_filetype(type_); songs << song; } diff --git a/src/devices/gpodloader.h b/src/devices/gpodloader.h index e3c2f74f6..3b8b273ba 100644 --- a/src/devices/gpodloader.h +++ b/src/devices/gpodloader.h @@ -33,7 +33,7 @@ class TaskManager; class GPodLoader : public QObject { Q_OBJECT -public: + public: GPodLoader(const QString& mount_point, TaskManager* task_manager, LibraryBackend* backend, std::shared_ptr device); ~GPodLoader(); @@ -41,7 +41,7 @@ public: void set_music_path_prefix(const QString& prefix) { path_prefix_ = prefix; } void set_song_type(Song::FileType type) { type_ = type; } -public slots: + public slots: void LoadDatabase(); signals: @@ -49,7 +49,7 @@ signals: void TaskStarted(int task_id); void LoadFinished(Itdb_iTunesDB* db); -private: + private: std::shared_ptr device_; QThread* original_thread_; @@ -60,4 +60,4 @@ private: LibraryBackend* backend_; }; -#endif // GPODLOADER_H +#endif // GPODLOADER_H diff --git a/src/devices/macdevicelister.h b/src/devices/macdevicelister.h index daf70af7c..8fdb7411e 100644 --- a/src/devices/macdevicelister.h +++ b/src/devices/macdevicelister.h @@ -28,7 +28,7 @@ class MacDeviceLister : public DeviceLister { virtual QString MakeFriendlyName(const QString& id); virtual QList MakeDeviceUrls(const QString& id); - virtual void UnmountDevice(const QString &id); + virtual void UnmountDevice(const QString& id); virtual void UpdateDeviceFreeSpace(const QString& id); struct MTPDevice { @@ -57,8 +57,8 @@ class MacDeviceLister : public DeviceLister { static void USBDeviceAddedCallback(void* refcon, io_iterator_t it); static void USBDeviceRemovedCallback(void* refcon, io_iterator_t it); - static void DiskUnmountCallback( - DADiskRef disk, DADissenterRef dissenter, void* context); + static void DiskUnmountCallback(DADiskRef disk, DADissenterRef dissenter, + void* context); void FoundMTPDevice(const MTPDevice& device, const QString& serial); void RemovedMTPDevice(const QString& serial); @@ -81,9 +81,9 @@ class MacDeviceLister : public DeviceLister { }; uint qHash(const MacDeviceLister::MTPDevice& device); -inline bool operator==(const MacDeviceLister::MTPDevice& a, const MacDeviceLister::MTPDevice& b) { - return (a.vendor_id == b.vendor_id) && - (a.product_id == b.product_id); +inline bool operator==(const MacDeviceLister::MTPDevice& a, + const MacDeviceLister::MTPDevice& b) { + return (a.vendor_id == b.vendor_id) && (a.product_id == b.product_id); } #endif diff --git a/src/devices/mtpconnection.cpp b/src/devices/mtpconnection.cpp index 2aba31c28..009aad5eb 100644 --- a/src/devices/mtpconnection.cpp +++ b/src/devices/mtpconnection.cpp @@ -21,9 +21,7 @@ #include #include -MtpConnection::MtpConnection(const QUrl& url) - : device_(nullptr) -{ +MtpConnection::MtpConnection(const QUrl& url) : device_(nullptr) { QString hostname = url.host(); // Parse the URL QRegExp host_re("^usb-(\\d+)-(\\d+)$"); @@ -37,12 +35,18 @@ MtpConnection::MtpConnection(const QUrl& url) const unsigned int device_num = host_re.cap(2).toInt(); if (url.hasQueryItem("vendor")) { - LIBMTP_raw_device_t* raw_device = (LIBMTP_raw_device_t*)malloc(sizeof(LIBMTP_raw_device_t)); - raw_device->device_entry.vendor = url.queryItemValue("vendor").toAscii().data(); - raw_device->device_entry.product = url.queryItemValue("product").toAscii().data(); - raw_device->device_entry.vendor_id = url.queryItemValue("vendor_id").toUShort(); - raw_device->device_entry.product_id = url.queryItemValue("product_id").toUShort(); - raw_device->device_entry.device_flags = url.queryItemValue("quirks").toUInt(); + LIBMTP_raw_device_t* raw_device = + (LIBMTP_raw_device_t*)malloc(sizeof(LIBMTP_raw_device_t)); + raw_device->device_entry.vendor = + url.queryItemValue("vendor").toAscii().data(); + raw_device->device_entry.product = + url.queryItemValue("product").toAscii().data(); + raw_device->device_entry.vendor_id = + url.queryItemValue("vendor_id").toUShort(); + raw_device->device_entry.product_id = + url.queryItemValue("product_id").toUShort(); + raw_device->device_entry.device_flags = + url.queryItemValue("quirks").toUInt(); raw_device->bus_location = bus_location; raw_device->devnum = device_num; @@ -61,7 +65,7 @@ MtpConnection::MtpConnection(const QUrl& url) } LIBMTP_raw_device_t* raw_device = nullptr; - for (int i=0 ; i class MtpConnection { -public: + public: MtpConnection(const QUrl& url); ~MtpConnection(); bool is_valid() const { return device_; } LIBMTP_mtpdevice_t* device() const { return device_; } -private: + private: Q_DISABLE_COPY(MtpConnection); LIBMTP_mtpdevice_t* device_; }; -#endif // MTPCONNECTION_H +#endif // MTPCONNECTION_H diff --git a/src/devices/mtpdevice.cpp b/src/devices/mtpdevice.cpp index a858d48c9..252289fa9 100644 --- a/src/devices/mtpdevice.cpp +++ b/src/devices/mtpdevice.cpp @@ -33,27 +33,25 @@ bool MtpDevice::sInitialisedLibMTP = false; MtpDevice::MtpDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - loader_thread_(new QThread(this)), - loader_(nullptr) -{ + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + loader_thread_(new QThread(this)), + loader_(nullptr) { if (!sInitialisedLibMTP) { LIBMTP_Init(); sInitialisedLibMTP = true; } } -MtpDevice::~MtpDevice() { -} +MtpDevice::~MtpDevice() {} void MtpDevice::Init() { InitBackendDirectory("/", first_time_, false); model_->Init(); - loader_ = new MtpLoader(url_, app_->task_manager(), backend_, - shared_from_this()); + loader_ = + new MtpLoader(url_, app_->task_manager(), backend_, shared_from_this()); loader_->moveToThread(loader_thread_); connect(loader_, SIGNAL(Error(QString)), SIGNAL(Error(QString))); @@ -90,7 +88,7 @@ bool MtpDevice::StartCopy(QList* supported_types) { } static int ProgressCallback(uint64_t const sent, uint64_t const total, - void const* const data) { + void const* const data) { const MusicStorage::CopyJob* job = reinterpret_cast(data); job->progress_(float(sent) / total); @@ -99,19 +97,17 @@ static int ProgressCallback(uint64_t const sent, uint64_t const total, } bool MtpDevice::CopyToStorage(const CopyJob& job) { - if (!connection_->is_valid()) - return false; + if (!connection_->is_valid()) return false; // Convert metadata LIBMTP_track_t track; job.metadata_.ToMTP(&track); // Send the file - int ret = LIBMTP_Send_Track_From_File( - connection_->device(), job.source_.toUtf8().constData(), &track, - ProgressCallback, &job); - if (ret != 0) - return false; + int ret = LIBMTP_Send_Track_From_File(connection_->device(), + job.source_.toUtf8().constData(), + &track, ProgressCallback, &job); + if (ret != 0) return false; // Add it to our LibraryModel Song metadata_on_device; @@ -121,8 +117,7 @@ bool MtpDevice::CopyToStorage(const CopyJob& job) { // Remove the original if requested if (job.remove_original_) { - if (!QFile::remove(job.source_)) - return false; + if (!QFile::remove(job.source_)) return false; } return true; @@ -130,10 +125,8 @@ bool MtpDevice::CopyToStorage(const CopyJob& job) { void MtpDevice::FinishCopy(bool success) { if (success) { - if (!songs_to_add_.isEmpty()) - backend_->AddOrUpdateSongs(songs_to_add_); - if (!songs_to_remove_.isEmpty()) - backend_->DeleteSongs(songs_to_remove_); + if (!songs_to_add_.isEmpty()) backend_->AddOrUpdateSongs(songs_to_add_); + if (!songs_to_remove_.isEmpty()) backend_->DeleteSongs(songs_to_remove_); } songs_to_add_.clear(); @@ -146,9 +139,7 @@ void MtpDevice::FinishCopy(bool success) { ConnectedDevice::FinishCopy(success); } -void MtpDevice::StartDelete() { - StartCopy(nullptr); -} +void MtpDevice::StartDelete() { StartCopy(nullptr); } bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { // Extract the ID from the song's URL @@ -157,13 +148,11 @@ bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { bool ok = false; uint32_t id = filename.toUInt(&ok); - if (!ok) - return false; + if (!ok) return false; // Remove the file int ret = LIBMTP_Delete_Object(connection_->device(), id); - if (ret != 0) - return false; + if (ret != 0) return false; // Remove it from our library model songs_to_remove_ << job.metadata_; @@ -171,38 +160,46 @@ bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { return true; } -void MtpDevice::FinishDelete(bool success) { - FinishCopy(success); -} +void MtpDevice::FinishDelete(bool success) { FinishCopy(success); } bool MtpDevice::GetSupportedFiletypes(QList* ret) { QMutexLocker l(&db_busy_); MtpConnection connection(url_); if (!connection.is_valid()) { - qLog(Warning) << "Error connecting to MTP device, couldn't get list of supported filetypes"; + qLog(Warning) << "Error connecting to MTP device, couldn't get list of " + "supported filetypes"; return false; } return GetSupportedFiletypes(ret, connection.device()); } -bool MtpDevice::GetSupportedFiletypes(QList* ret, LIBMTP_mtpdevice_t* device) { +bool MtpDevice::GetSupportedFiletypes(QList* ret, + LIBMTP_mtpdevice_t* device) { uint16_t* list = nullptr; uint16_t length = 0; - if (LIBMTP_Get_Supported_Filetypes(device, &list, &length) - || !list || !length) + if (LIBMTP_Get_Supported_Filetypes(device, &list, &length) || !list || + !length) return false; - for (int i=0 ; i* ret, LIBMTP_mtpdevi *ret << Song::Type_OggFlac; break; default: - qLog(Error) << "Unknown MTP file format" << - LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t(list[i])); + qLog(Error) << "Unknown MTP file format" + << LIBMTP_Get_Filetype_Description( + LIBMTP_filetype_t(list[i])); break; } } diff --git a/src/devices/mtpdevice.h b/src/devices/mtpdevice.h index 7317ea5e6..c3577cfc4 100644 --- a/src/devices/mtpdevice.h +++ b/src/devices/mtpdevice.h @@ -33,14 +33,16 @@ class MtpLoader; class MtpDevice : public ConnectedDevice { Q_OBJECT -public: + public: Q_INVOKABLE MtpDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + Application* app, int database_id, bool first_time); ~MtpDevice(); - static QStringList url_schemes() { return QStringList() << "mtp" << "gphoto2"; } + static QStringList url_schemes() { + return QStringList() << "mtp" + << "gphoto2"; + } void Init(); @@ -56,15 +58,16 @@ public: bool DeleteFromStorage(const DeleteJob& job); void FinishDelete(bool success); -private slots: + private slots: void LoadFinished(); -private: - bool GetSupportedFiletypes(QList* ret, LIBMTP_mtpdevice_struct* device); + private: + bool GetSupportedFiletypes(QList* ret, + LIBMTP_mtpdevice_struct* device); int GetFreeSpace(LIBMTP_mtpdevice_struct* device); int GetCapacity(LIBMTP_mtpdevice_struct* device); -private: + private: static bool sInitialisedLibMTP; QThread* loader_thread_; @@ -77,4 +80,4 @@ private: std::unique_ptr connection_; }; -#endif // MTPDEVICE_H +#endif // MTPDEVICE_H diff --git a/src/devices/mtploader.cpp b/src/devices/mtploader.cpp index 99cfcc2c9..61247b0fe 100644 --- a/src/devices/mtploader.cpp +++ b/src/devices/mtploader.cpp @@ -25,20 +25,18 @@ #include "core/taskmanager.h" #include "library/librarybackend.h" -MtpLoader::MtpLoader( - const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, std::shared_ptr device) - : QObject(nullptr), - device_(device), - url_(url), - task_manager_(task_manager), - backend_(backend) -{ +MtpLoader::MtpLoader(const QUrl& url, TaskManager* task_manager, + LibraryBackend* backend, + std::shared_ptr device) + : QObject(nullptr), + device_(device), + url_(url), + task_manager_(task_manager), + backend_(backend) { original_thread_ = thread(); } -MtpLoader::~MtpLoader() { -} +MtpLoader::~MtpLoader() {} void MtpLoader::LoadDatabase() { int task_id = task_manager_->StartTask(tr("Loading MTP device")); @@ -61,8 +59,8 @@ bool MtpLoader::TryLoad() { // Load the list of songs on the device SongList songs; - LIBMTP_track_t* tracks = LIBMTP_Get_Tracklisting_With_Callback( - dev.device(), nullptr, nullptr); + LIBMTP_track_t* tracks = + LIBMTP_Get_Tracklisting_With_Callback(dev.device(), nullptr, nullptr); while (tracks) { LIBMTP_track_t* track = tracks; diff --git a/src/devices/mtploader.h b/src/devices/mtploader.h index 357597d41..a723aee0f 100644 --- a/src/devices/mtploader.h +++ b/src/devices/mtploader.h @@ -30,12 +30,12 @@ class TaskManager; class MtpLoader : public QObject { Q_OBJECT -public: - MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, std::shared_ptr device); + public: + MtpLoader(const QUrl& url, TaskManager* task_manager, LibraryBackend* backend, + std::shared_ptr device); ~MtpLoader(); -public slots: + public slots: void LoadDatabase(); signals: @@ -43,10 +43,10 @@ signals: void TaskStarted(int task_id); void LoadFinished(); -private: + private: bool TryLoad(); -private: + private: std::shared_ptr device_; QThread* original_thread_; @@ -55,4 +55,4 @@ private: LibraryBackend* backend_; }; -#endif // MTPLOADER_H +#endif // MTPLOADER_H diff --git a/src/engines/bufferconsumer.h b/src/engines/bufferconsumer.h index c005b4414..349b98821 100644 --- a/src/engines/bufferconsumer.h +++ b/src/engines/bufferconsumer.h @@ -23,7 +23,7 @@ class GstEnginePipeline; class BufferConsumer { -public: + public: virtual ~BufferConsumer() {} // This is called in some unspecified GStreamer thread. @@ -32,4 +32,4 @@ public: virtual void ConsumeBuffer(GstBuffer* buffer, int pipeline_id) = 0; }; -#endif // BUFFERCONSUMER_H +#endif // BUFFERCONSUMER_H diff --git a/src/engines/engine_fwd.h b/src/engines/engine_fwd.h index 5c70ff613..31377e618 100644 --- a/src/engines/engine_fwd.h +++ b/src/engines/engine_fwd.h @@ -3,35 +3,35 @@ #include -/// Used by eg engineobserver.h, and thus we reduce header dependencies on enginebase.h +/// Used by eg engineobserver.h, and thus we reduce header dependencies on +/// enginebase.h -namespace Engine -{ - struct SimpleMetaBundle; - class Base; +namespace Engine { +struct SimpleMetaBundle; +class Base; - /** - * You should return: - * Playing when playing, - * Paused when paused - * Idle when you still have a URL loaded (ie you have not been told to stop()) - * Empty when you have been told to stop(), - * Error when an error occurred and you stopped yourself - * - * It is vital to be Idle just after the track has ended! - */ - enum State { Empty, Idle, Playing, Paused, Error }; +/** + * You should return: + * Playing when playing, + * Paused when paused + * Idle when you still have a URL loaded (ie you have not been told to stop()) + * Empty when you have been told to stop(), + * Error when an error occurred and you stopped yourself + * + * It is vital to be Idle just after the track has ended! + */ +enum State { Empty, Idle, Playing, Paused, Error }; - enum TrackChangeType { - // One of: - First = 0x01, - Manual = 0x02, - Auto = 0x04, +enum TrackChangeType { + // One of: + First = 0x01, + Manual = 0x02, + Auto = 0x04, - // Any of: - SameAlbum = 0x10, - }; - Q_DECLARE_FLAGS(TrackChangeFlags, TrackChangeType); + // Any of: + SameAlbum = 0x10, +}; +Q_DECLARE_FLAGS(TrackChangeFlags, TrackChangeType); } typedef Engine::Base EngineBase; diff --git a/src/engines/enginebase.cpp b/src/engines/enginebase.cpp index 8f3b74ab5..a6b6da15c 100644 --- a/src/engines/enginebase.cpp +++ b/src/engines/enginebase.cpp @@ -15,9 +15,9 @@ along with Clementine. If not, see . */ -//Copyright: (C) 2003 Mark Kretschmann +// Copyright: (C) 2003 Mark Kretschmann // (C) 2004,2005 Max Howell, -//License: See COPYING +// License: See COPYING #include "enginebase.h" #include "core/timeconstants.h" @@ -29,26 +29,23 @@ const char* Engine::Base::kSettingsGroup = "Player"; Engine::Base::Base() - : volume_(50), - beginning_nanosec_(0), - end_nanosec_(0), - scope_(kScopeSize), - fadeout_enabled_(true), - fadeout_duration_nanosec_(2 * kNsecPerSec), // 2s - crossfade_enabled_(true), - autocrossfade_enabled_(false), - crossfade_same_album_(false), - next_background_stream_id_(0), - about_to_end_emitted_(false) -{ -} + : volume_(50), + beginning_nanosec_(0), + end_nanosec_(0), + scope_(kScopeSize), + fadeout_enabled_(true), + fadeout_duration_nanosec_(2 * kNsecPerSec), // 2s + crossfade_enabled_(true), + autocrossfade_enabled_(false), + crossfade_same_album_(false), + next_background_stream_id_(0), + about_to_end_emitted_(false) {} -Engine::Base::~Base() { -} +Engine::Base::~Base() {} bool Engine::Base::Load(const QUrl& url, TrackChangeFlags, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { Q_UNUSED(force_stop_at_end); url_ = url; @@ -67,7 +64,8 @@ void Engine::Base::SetVolume(uint value) { uint Engine::Base::MakeVolumeLogarithmic(uint volume) { // We're using a logarithmic function to make the volume ramp more natural. - return static_cast( 100 - 100.0 * std::log10( ( 100 - volume ) * 0.09 + 1.0 ) ); + return static_cast(100 - + 100.0 * std::log10((100 - volume) * 0.09 + 1.0)); } void Engine::Base::ReloadSettings() { @@ -75,29 +73,28 @@ void Engine::Base::ReloadSettings() { s.beginGroup(kSettingsGroup); fadeout_enabled_ = s.value("FadeoutEnabled", true).toBool(); - fadeout_duration_nanosec_ = s.value("FadeoutDuration", 2000).toLongLong() * kNsecPerMsec; + fadeout_duration_nanosec_ = + s.value("FadeoutDuration", 2000).toLongLong() * kNsecPerMsec; crossfade_enabled_ = s.value("CrossfadeEnabled", true).toBool(); autocrossfade_enabled_ = s.value("AutoCrossfadeEnabled", false).toBool(); crossfade_same_album_ = !s.value("NoCrossfadeSameAlbum", true).toBool(); fadeout_pause_enabled_ = s.value("FadeoutPauseEnabled", false).toBool(); - fadeout_pause_duration_nanosec_ = s.value("FadeoutPauseDuration", 250).toLongLong() * kNsecPerMsec; + fadeout_pause_duration_nanosec_ = + s.value("FadeoutPauseDuration", 250).toLongLong() * kNsecPerMsec; } void Engine::Base::EmitAboutToEnd() { - if (about_to_end_emitted_) - return; + if (about_to_end_emitted_) return; about_to_end_emitted_ = true; emit TrackAboutToEnd(); } -int Engine::Base::AddBackgroundStream(const QUrl& url) { - return -1; -} +int Engine::Base::AddBackgroundStream(const QUrl& url) { return -1; } bool Engine::Base::Play(const QUrl& u, TrackChangeFlags c, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { if (!Load(u, c, force_stop_at_end, beginning_nanosec, end_nanosec)) return false; diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h index d998639e1..29c199f73 100644 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -15,9 +15,9 @@ along with Clementine. If not, see . */ -//Copyright: (C) 2003 Mark Kretschmann +// Copyright: (C) 2003 Mark Kretschmann // (C) 2004 Max Howell, -//License: See COPYING +// License: See COPYING #ifndef AMAROK_ENGINEBASE_H #define AMAROK_ENGINEBASE_H @@ -63,8 +63,8 @@ class Base : public QObject { // Subclasses should respect given markers (beginning and end) which are // in miliseconds. virtual bool Load(const QUrl& url, TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec); + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec); // Sets new values for the beginning and end markers of the currently playing // song. // This doesn't change the state of engine or the stream's current position. @@ -73,19 +73,19 @@ class Base : public QObject { end_nanosec_ = end_nanosec; } - // Plays a media stream represented with the URL 'u' from the given 'beginning' + // Plays a media stream represented with the URL 'u' from the given + // 'beginning' // to the given 'end' (usually from 0 to a song's length). Both markers // should be passed in nanoseconds. 'end' can be negative, indicating that the // real length of 'u' stream is unknown. - bool Play(const QUrl& u, TrackChangeFlags c, - bool force_stop_at_end, + bool Play(const QUrl& u, TrackChangeFlags c, bool force_stop_at_end, quint64 beginning_nanosec, qint64 end_nanosec); void SetVolume(uint value); // Simple accessors inline uint volume() const { return volume_; } - virtual const Scope &scope() { return scope_; } + virtual const Scope& scope() { return scope_; } bool is_fadeout_enabled() const { return fadeout_enabled_; } bool is_crossfade_enabled() const { return crossfade_enabled_; } bool is_autocrossfade_enabled() const { return autocrossfade_enabled_; } @@ -98,10 +98,11 @@ class Base : public QObject { virtual void ReloadSettings(); virtual void SetEqualizerEnabled(bool) {} - virtual void SetEqualizerParameters(int preamp, const QList& bandGains) {} + virtual void SetEqualizerParameters(int preamp, const QList& bandGains) { + } virtual void SetStereoBalance(float value) {} - signals: +signals: // Emitted when crossfading is enabled and the track is crossfade_duration_ // away from finishing void TrackAboutToEnd(); @@ -115,13 +116,14 @@ class Base : public QObject { // Emitted when Engine was unable to play a song with the given QUrl. void InvalidSongRequested(const QUrl&); - // Emitted when Engine successfully started playing a song with the + // Emitted when Engine successfully started playing a song with the // given QUrl. void ValidSongRequested(const QUrl&); void MetaData(const Engine::SimpleMetaBundle&); - // Signals that the engine's state has changed (a stream was stopped for example). + // Signals that the engine's state has changed (a stream was stopped for + // example). // Always use the state from event, because it's not guaranteed that immediate // subsequent call to state() won't return a stale value. void StateChanged(Engine::State); @@ -129,8 +131,8 @@ class Base : public QObject { protected: Base(); - virtual void SetVolumeSW( uint percent ) = 0; - static uint MakeVolumeLogarithmic( uint volume ); + virtual void SetVolumeSW(uint percent) = 0; + static uint MakeVolumeLogarithmic(uint volume); void EmitAboutToEnd(); protected: @@ -154,7 +156,6 @@ class Base : public QObject { Q_DISABLE_COPY(Base); }; - struct SimpleMetaBundle { QString title; QString artist; @@ -168,6 +169,6 @@ struct SimpleMetaBundle { QString tracknr; }; -} // namespace +} // namespace #endif diff --git a/src/engines/gstelementdeleter.cpp b/src/engines/gstelementdeleter.cpp index 6598931da..84dd516db 100644 --- a/src/engines/gstelementdeleter.cpp +++ b/src/engines/gstelementdeleter.cpp @@ -19,10 +19,7 @@ #include -GstElementDeleter::GstElementDeleter(QObject* parent) - : QObject(parent) -{ -} +GstElementDeleter::GstElementDeleter(QObject* parent) : QObject(parent) {} void GstElementDeleter::DeleteElementLater(GstElement* element) { metaObject()->invokeMethod(this, "DeleteElement", Qt::QueuedConnection, diff --git a/src/engines/gstelementdeleter.h b/src/engines/gstelementdeleter.h index 28e313db1..4b08262e0 100644 --- a/src/engines/gstelementdeleter.h +++ b/src/engines/gstelementdeleter.h @@ -25,7 +25,7 @@ class GstElementDeleter : public QObject { Q_OBJECT -public: + public: GstElementDeleter(QObject* parent = 0); // If you call this function with any gstreamer element, the element will get @@ -36,8 +36,8 @@ public: // deleted later regardless. void DeleteElementLater(GstElement* element); -private slots: + private slots: void DeleteElement(GstElement* element); }; -#endif // GSTBINDELETER_H +#endif // GSTBINDELETER_H diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index 36e2728ee..4b6d40113 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -46,7 +46,7 @@ #include "core/utilities.h" #ifdef HAVE_MOODBAR -# include "gst/moodbar/spectrum.h" +#include "gst/moodbar/spectrum.h" #endif using std::shared_ptr; @@ -55,35 +55,34 @@ using std::vector; const char* GstEngine::kSettingsGroup = "GstEngine"; const char* GstEngine::kAutoSink = "autoaudiosink"; const char* GstEngine::kHypnotoadPipeline = - "audiotestsrc wave=6 ! " - "audioecho intensity=1 delay=50000000 ! " - "audioecho intensity=1 delay=25000000 ! " - "equalizer-10bands " - "band0=-24 band1=-3 band2=7.5 band3=12 band4=8 " - "band5=6 band6=5 band7=6 band8=0 band9=-24"; + "audiotestsrc wave=6 ! " + "audioecho intensity=1 delay=50000000 ! " + "audioecho intensity=1 delay=25000000 ! " + "equalizer-10bands " + "band0=-24 band1=-3 band2=7.5 band3=12 band4=8 " + "band5=6 band6=5 band7=6 band8=0 band9=-24"; const char* GstEngine::kEnterprisePipeline = - "audiotestsrc wave=5 ! " - "audiocheblimit mode=0 cutoff=120"; + "audiotestsrc wave=5 ! " + "audiocheblimit mode=0 cutoff=120"; GstEngine::GstEngine(TaskManager* task_manager) - : Engine::Base(), - task_manager_(task_manager), - buffering_task_id_(-1), - latest_buffer_(nullptr), - equalizer_enabled_(false), - stereo_balance_(0.0f), - rg_enabled_(false), - rg_mode_(0), - rg_preamp_(0.0), - rg_compression_(true), - buffer_duration_nanosec_(1 * kNsecPerSec), // 1s - mono_playback_(false), - seek_timer_(new QTimer(this)), - timer_id_(-1), - next_element_id_(0), - is_fading_out_to_pause_(false), - has_faded_out_(false) -{ + : Engine::Base(), + task_manager_(task_manager), + buffering_task_id_(-1), + latest_buffer_(nullptr), + equalizer_enabled_(false), + stereo_balance_(0.0f), + rg_enabled_(false), + rg_mode_(0), + rg_preamp_(0.0), + rg_compression_(true), + buffer_duration_nanosec_(1 * kNsecPerSec), // 1s + mono_playback_(false), + seek_timer_(new QTimer(this)), + timer_id_(-1), + next_element_id_(0), + is_fading_out_to_pause_(false), + has_faded_out_(false) { seek_timer_->setSingleShot(true); seek_timer_->setInterval(kSeekDelayNanosec / kNsecPerMsec); connect(seek_timer_, SIGNAL(timeout()), SLOT(SeekNow())); @@ -122,46 +121,47 @@ void GstEngine::ReloadSettings() { sink_ = s.value("sink", kAutoSink).toString(); device_ = s.value("device").toString(); - if (sink_.isEmpty()) - sink_ = kAutoSink; + if (sink_.isEmpty()) sink_ = kAutoSink; rg_enabled_ = s.value("rgenabled", false).toBool(); rg_mode_ = s.value("rgmode", 0).toInt(); rg_preamp_ = s.value("rgpreamp", 0.0).toDouble(); rg_compression_ = s.value("rgcompression", true).toBool(); - buffer_duration_nanosec_ = s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec; + buffer_duration_nanosec_ = + s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec; mono_playback_ = s.value("monoplayback", false).toBool(); } - qint64 GstEngine::position_nanosec() const { - if (!current_pipeline_) - return 0; + if (!current_pipeline_) return 0; qint64 result = current_pipeline_->position() - beginning_nanosec_; return qint64(qMax(0ll, result)); } qint64 GstEngine::length_nanosec() const { - if (!current_pipeline_) - return 0; + if (!current_pipeline_) return 0; qint64 result = end_nanosec_ - beginning_nanosec_; return qint64(qMax(0ll, result)); } Engine::State GstEngine::state() const { - if (!current_pipeline_) - return url_.isEmpty() ? Engine::Empty : Engine::Idle; + if (!current_pipeline_) return url_.isEmpty() ? Engine::Empty : Engine::Idle; switch (current_pipeline_->state()) { - case GST_STATE_NULL: return Engine::Empty; - case GST_STATE_READY: return Engine::Idle; - case GST_STATE_PLAYING: return Engine::Playing; - case GST_STATE_PAUSED: return Engine::Paused; - default: return Engine::Empty; + case GST_STATE_NULL: + return Engine::Empty; + case GST_STATE_READY: + return Engine::Idle; + case GST_STATE_PLAYING: + return Engine::Playing; + case GST_STATE_PAUSED: + return Engine::Paused; + default: + return Engine::Empty; } } @@ -199,21 +199,20 @@ void GstEngine::UpdateScope() { typedef Engine::Scope::value_type sample_type; // determine the number of channels - GstStructure* structure = gst_caps_get_structure( - GST_BUFFER_CAPS(latest_buffer_), 0); + GstStructure* structure = + gst_caps_get_structure(GST_BUFFER_CAPS(latest_buffer_), 0); int channels = 2; gst_structure_get_int(structure, "channels", &channels); // scope does not support >2 channels - if (channels > 2) - return; + if (channels > 2) return; - const sample_type* source = reinterpret_cast( - GST_BUFFER_DATA(latest_buffer_)); + const sample_type* source = + reinterpret_cast(GST_BUFFER_DATA(latest_buffer_)); sample_type* dest = scope_.data(); const int bytes = qMin( - static_cast(GST_BUFFER_SIZE(latest_buffer_)), - scope_.size() * sizeof(sample_type)); + static_cast(GST_BUFFER_SIZE(latest_buffer_)), + scope_.size() * sizeof(sample_type)); memcpy(dest, source, bytes); @@ -231,7 +230,7 @@ void GstEngine::StartPreloading(const QUrl& url, bool force_stop_at_end, // pipeline and get gapless playback (hopefully) if (current_pipeline_) current_pipeline_->SetNextUrl(gst_url, beginning_nanosec, - force_stop_at_end ? end_nanosec : 0); + force_stop_at_end ? end_nanosec : 0); } QUrl GstEngine::FixupUrl(const QUrl& url) { @@ -249,19 +248,21 @@ QUrl GstEngine::FixupUrl(const QUrl& url) { } bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { EnsureInitialised(); - Engine::Base::Load(url, change, force_stop_at_end, beginning_nanosec, end_nanosec); + Engine::Base::Load(url, change, force_stop_at_end, beginning_nanosec, + end_nanosec); QUrl gst_url = FixupUrl(url); - bool crossfade = current_pipeline_ && - ((crossfade_enabled_ && change & Engine::Manual) || - (autocrossfade_enabled_ && change & Engine::Auto)); + bool crossfade = + current_pipeline_ && ((crossfade_enabled_ && change & Engine::Manual) || + (autocrossfade_enabled_ && change & Engine::Auto)); - if (change & Engine::Auto && change & Engine::SameAlbum && !crossfade_same_album_) + if (change & Engine::Auto && change & Engine::SameAlbum && + !crossfade_same_album_) crossfade = false; if (!crossfade && current_pipeline_ && current_pipeline_->url() == gst_url && @@ -271,13 +272,11 @@ bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, return true; } - shared_ptr pipeline = CreatePipeline(gst_url, - force_stop_at_end ? end_nanosec : 0); - if (!pipeline) - return false; + shared_ptr pipeline = + CreatePipeline(gst_url, force_stop_at_end ? end_nanosec : 0); + if (!pipeline) return false; - if (crossfade) - StartFadeout(); + if (crossfade) StartFadeout(); BufferingFinished(); current_pipeline_ = pipeline; @@ -289,21 +288,22 @@ bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, // Maybe fade in this track if (crossfade) - current_pipeline_->StartFader(fadeout_duration_nanosec_, QTimeLine::Forward); + current_pipeline_->StartFader(fadeout_duration_nanosec_, + QTimeLine::Forward); return true; } void GstEngine::StartFadeout() { - if (is_fading_out_to_pause_) - return; + if (is_fading_out_to_pause_) return; fadeout_pipeline_ = current_pipeline_; disconnect(fadeout_pipeline_.get(), 0, 0, 0); fadeout_pipeline_->RemoveAllBufferConsumers(); fadeout_pipeline_->StartFader(fadeout_duration_nanosec_, QTimeLine::Backward); - connect(fadeout_pipeline_.get(), SIGNAL(FaderFinished()), SLOT(FadeoutFinished())); + connect(fadeout_pipeline_.get(), SIGNAL(FaderFinished()), + SLOT(FadeoutFinished())); } void GstEngine::StartFadeoutPause() { @@ -312,27 +312,26 @@ void GstEngine::StartFadeoutPause() { fadeout_pause_pipeline_->StartFader(fadeout_pause_duration_nanosec_, QTimeLine::Backward, - QTimeLine::EaseInOutCurve, - false); + QTimeLine::EaseInOutCurve, false); if (fadeout_pipeline_ && fadeout_pipeline_->state() == GST_STATE_PLAYING) { fadeout_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Backward, - QTimeLine::LinearCurve, + QTimeLine::Backward, QTimeLine::LinearCurve, false); } - connect(fadeout_pause_pipeline_.get(), SIGNAL(FaderFinished()), SLOT(FadeoutPauseFinished())); + connect(fadeout_pause_pipeline_.get(), SIGNAL(FaderFinished()), + SLOT(FadeoutPauseFinished())); is_fading_out_to_pause_ = true; } bool GstEngine::Play(quint64 offset_nanosec) { EnsureInitialised(); - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return false; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return false; - QFuture future = current_pipeline_->SetState(GST_STATE_PLAYING); + QFuture future = + current_pipeline_->SetState(GST_STATE_PLAYING); PlayFutureWatcher* watcher = new PlayFutureWatcher( - PlayFutureWatcherArg(offset_nanosec, current_pipeline_->id()), this); + PlayFutureWatcherArg(offset_nanosec, current_pipeline_->id()), this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(PlayDone())); @@ -374,7 +373,7 @@ void GstEngine::PlayDone() { StartTimers(); // initial offset - if(offset_nanosec != 0 || beginning_nanosec_ != 0) { + if (offset_nanosec != 0 || beginning_nanosec_ != 0) { Seek(offset_nanosec); } @@ -383,15 +382,13 @@ void GstEngine::PlayDone() { emit ValidSongRequested(url_); } - void GstEngine::Stop() { StopTimers(); - url_ = QUrl(); // To ensure we return Empty from state() + url_ = QUrl(); // To ensure we return Empty from state() beginning_nanosec_ = end_nanosec_ = 0; - if (fadeout_enabled_ && current_pipeline_) - StartFadeout(); + if (fadeout_enabled_ && current_pipeline_) StartFadeout(); current_pipeline_.reset(); BufferingFinished(); @@ -418,16 +415,14 @@ void GstEngine::FadeoutPauseFinished() { } void GstEngine::Pause() { - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return; // Check if we started a fade out. If it isn't finished yet and the user // pressed play, we inverse the fader and resume the playback. if (is_fading_out_to_pause_) { disconnect(current_pipeline_.get(), SIGNAL(FaderFinished()), 0, 0); current_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Forward, - QTimeLine::EaseInOutCurve, + QTimeLine::Forward, QTimeLine::EaseInOutCurve, false); is_fading_out_to_pause_ = false; has_faded_out_ = false; @@ -435,7 +430,7 @@ void GstEngine::Pause() { return; } - if ( current_pipeline_->state() == GST_STATE_PLAYING ) { + if (current_pipeline_->state() == GST_STATE_PLAYING) { if (fadeout_pause_enabled_) { StartFadeoutPause(); } else { @@ -447,10 +442,9 @@ void GstEngine::Pause() { } void GstEngine::Unpause() { - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return; - if ( current_pipeline_->state() == GST_STATE_PAUSED ) { + if (current_pipeline_->state() == GST_STATE_PAUSED) { current_pipeline_->SetState(GST_STATE_PLAYING); // Check if we faded out last time. If yes, fade in no matter what the @@ -459,9 +453,8 @@ void GstEngine::Unpause() { if (has_faded_out_) { disconnect(current_pipeline_.get(), SIGNAL(FaderFinished()), 0, 0); current_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Forward, - QTimeLine::EaseInOutCurve, - false); + QTimeLine::Forward, + QTimeLine::EaseInOutCurve, false); has_faded_out_ = false; } @@ -472,15 +465,14 @@ void GstEngine::Unpause() { } void GstEngine::Seek(quint64 offset_nanosec) { - if (!current_pipeline_) - return; + if (!current_pipeline_) return; seek_pos_ = beginning_nanosec_ + offset_nanosec; waiting_to_seek_ = true; if (!seek_timer_->isActive()) { SeekNow(); - seek_timer_->start(); // Stop us from seeking again for a little while + seek_timer_->start(); // Stop us from seeking again for a little while } } @@ -488,8 +480,7 @@ void GstEngine::SeekNow() { if (!waiting_to_seek_) return; waiting_to_seek_ = false; - if (!current_pipeline_) - return; + if (!current_pipeline_) return; if (!current_pipeline_->Seek(seek_pos_)) { qLog(Warning) << "Seek failed"; @@ -497,14 +488,13 @@ void GstEngine::SeekNow() { } void GstEngine::SetEqualizerEnabled(bool enabled) { - equalizer_enabled_= enabled; + equalizer_enabled_ = enabled; - if (current_pipeline_) - current_pipeline_->SetEqualizerEnabled(enabled); + if (current_pipeline_) current_pipeline_->SetEqualizerEnabled(enabled); } - -void GstEngine::SetEqualizerParameters(int preamp, const QList& band_gains) { +void GstEngine::SetEqualizerParameters(int preamp, + const QList& band_gains) { equalizer_preamp_ = preamp; equalizer_gains_ = band_gains; @@ -515,13 +505,11 @@ void GstEngine::SetEqualizerParameters(int preamp, const QList& band_gains) void GstEngine::SetStereoBalance(float value) { stereo_balance_ = value; - if (current_pipeline_) - current_pipeline_->SetStereoBalance(value); + if (current_pipeline_) current_pipeline_->SetStereoBalance(value); } -void GstEngine::SetVolumeSW( uint percent ) { - if (current_pipeline_) - current_pipeline_->SetVolume(percent); +void GstEngine::SetVolumeSW(uint percent) { + if (current_pipeline_) current_pipeline_->SetVolume(percent); } void GstEngine::StartTimers() { @@ -538,8 +526,7 @@ void GstEngine::StopTimers() { } void GstEngine::timerEvent(QTimerEvent* e) { - if (e->timerId() != timer_id_) - return; + if (e->timerId() != timer_id_) return; if (current_pipeline_) { const qint64 current_position = position_nanosec(); @@ -547,14 +534,14 @@ void GstEngine::timerEvent(QTimerEvent* e) { const qint64 remaining = current_length - current_position; - const qint64 fudge = kTimerIntervalNanosec + 100 * kNsecPerMsec; // Mmm fudge - const qint64 gap = buffer_duration_nanosec_ + ( - autocrossfade_enabled_ ? - fadeout_duration_nanosec_ : - kPreloadGapNanosec); + const qint64 fudge = + kTimerIntervalNanosec + 100 * kNsecPerMsec; // Mmm fudge + const qint64 gap = buffer_duration_nanosec_ + + (autocrossfade_enabled_ ? fadeout_duration_nanosec_ + : kPreloadGapNanosec); // only if we know the length of the current stream... - if(current_length > 0) { + if (current_length > 0) { // emit TrackAboutToEnd when we're a few seconds away from finishing if (remaining < gap + fudge) { EmitAboutToEnd(); @@ -577,15 +564,18 @@ void GstEngine::HandlePipelineError(int pipeline_id, const QString& message, // unable to play media stream with this url emit InvalidSongRequested(url_); - // TODO: the types of errors listed below won't be shown to user - they will - // get logged and the current song will be skipped; instead of maintaining + // TODO: the types of errors listed below won't be shown to user - they will + // get logged and the current song will be skipped; instead of maintaining // the list we should probably: // - don't report any engine's errors to user (always just log and skip) // - come up with a less intrusive error box (not a dialog but a notification // popup of some kind) and then report all errors - if(!(domain == GST_RESOURCE_ERROR && error_code == GST_RESOURCE_ERROR_NOT_FOUND) && - !(domain == GST_STREAM_ERROR && error_code == GST_STREAM_ERROR_TYPE_NOT_FOUND) && - !(domain == GST_RESOURCE_ERROR && error_code == GST_RESOURCE_ERROR_OPEN_READ)) { + if (!(domain == GST_RESOURCE_ERROR && + error_code == GST_RESOURCE_ERROR_NOT_FOUND) && + !(domain == GST_STREAM_ERROR && + error_code == GST_STREAM_ERROR_TYPE_NOT_FOUND) && + !(domain == GST_RESOURCE_ERROR && + error_code == GST_RESOURCE_ERROR_OPEN_READ)) { emit Error(message); } } @@ -601,36 +591,38 @@ void GstEngine::EndOfStreamReached(int pipeline_id, bool has_next_track) { emit TrackEnded(); } -void GstEngine::NewMetaData(int pipeline_id, const Engine::SimpleMetaBundle& bundle) { +void GstEngine::NewMetaData(int pipeline_id, + const Engine::SimpleMetaBundle& bundle) { if (!current_pipeline_.get() || current_pipeline_->id() != pipeline_id) return; emit MetaData(bundle); } -GstElement* GstEngine::CreateElement(const QString& factoryName, GstElement* bin) { +GstElement* GstEngine::CreateElement(const QString& factoryName, + GstElement* bin) { // Make a unique name - QString name = factoryName + "-" + QString::number(next_element_id_ ++); + QString name = factoryName + "-" + QString::number(next_element_id_++); GstElement* element = gst_element_factory_make( factoryName.toAscii().constData(), name.toAscii().constData()); if (!element) { - emit Error(QString("GStreamer could not create the element: %1. " - "Please make sure that you have installed all necessary GStreamer plugins (e.g. OGG and MP3)").arg( factoryName ) ); + emit Error(QString( + "GStreamer could not create the element: %1. " + "Please make sure that you have installed all necessary " + "GStreamer plugins (e.g. OGG and MP3)").arg(factoryName)); gst_object_unref(GST_OBJECT(bin)); return nullptr; } - if (bin) - gst_bin_add(GST_BIN(bin), element); + if (bin) gst_bin_add(GST_BIN(bin), element); return element; } - -GstEngine::PluginDetailsList - GstEngine::GetPluginList(const QString& classname) const { +GstEngine::PluginDetailsList GstEngine::GetPluginList(const QString& classname) + const { const_cast(this)->EnsureInitialised(); PluginDetailsList ret; @@ -667,16 +659,19 @@ shared_ptr GstEngine::CreatePipeline() { ret->set_mono_playback(mono_playback_); ret->AddBufferConsumer(this); - foreach (BufferConsumer* consumer, buffer_consumers_) { + foreach(BufferConsumer * consumer, buffer_consumers_) { ret->AddBufferConsumer(consumer); } - connect(ret.get(), SIGNAL(EndOfStreamReached(int, bool)), SLOT(EndOfStreamReached(int, bool))); - connect(ret.get(), SIGNAL(Error(int, QString,int,int)), SLOT(HandlePipelineError(int, QString,int,int))); + connect(ret.get(), SIGNAL(EndOfStreamReached(int, bool)), + SLOT(EndOfStreamReached(int, bool))); + connect(ret.get(), SIGNAL(Error(int, QString, int, int)), + SLOT(HandlePipelineError(int, QString, int, int))); connect(ret.get(), SIGNAL(MetadataFound(int, Engine::SimpleMetaBundle)), SLOT(NewMetaData(int, Engine::SimpleMetaBundle))); connect(ret.get(), SIGNAL(BufferingStarted()), SLOT(BufferingStarted())); - connect(ret.get(), SIGNAL(BufferingProgress(int)), SLOT(BufferingProgress(int))); + connect(ret.get(), SIGNAL(BufferingProgress(int)), + SLOT(BufferingProgress(int))); connect(ret.get(), SIGNAL(BufferingFinished()), SLOT(BufferingFinished())); return ret; @@ -696,33 +691,33 @@ shared_ptr GstEngine::CreatePipeline(const QUrl& url, return ret; } - if (!ret->InitFromUrl(url, end_nanosec)) - ret.reset(); + if (!ret->InitFromUrl(url, end_nanosec)) ret.reset(); return ret; } -bool GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(const QString &name) { +bool GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString( + const QString& name) { return (name == "alsasink" || name == "osssink" || name == "pulsesink"); } -void GstEngine::AddBufferConsumer(BufferConsumer *consumer) { +void GstEngine::AddBufferConsumer(BufferConsumer* consumer) { buffer_consumers_ << consumer; - if (current_pipeline_) - current_pipeline_->AddBufferConsumer(consumer); + if (current_pipeline_) current_pipeline_->AddBufferConsumer(consumer); } -void GstEngine::RemoveBufferConsumer(BufferConsumer *consumer) { +void GstEngine::RemoveBufferConsumer(BufferConsumer* consumer) { buffer_consumers_.removeAll(consumer); - if (current_pipeline_) - current_pipeline_->RemoveBufferConsumer(consumer); + if (current_pipeline_) current_pipeline_->RemoveBufferConsumer(consumer); } int GstEngine::AddBackgroundStream(shared_ptr pipeline) { // We don't want to get metadata messages or end notifications. - disconnect(pipeline.get(), SIGNAL(MetadataFound(int,Engine::SimpleMetaBundle)), this, 0); - disconnect(pipeline.get(), SIGNAL(EndOfStreamReached(int,bool)), this, 0); - connect(pipeline.get(), SIGNAL(EndOfStreamReached(int,bool)), SLOT(BackgroundStreamFinished())); + disconnect(pipeline.get(), + SIGNAL(MetadataFound(int, Engine::SimpleMetaBundle)), this, 0); + disconnect(pipeline.get(), SIGNAL(EndOfStreamReached(int, bool)), this, 0); + connect(pipeline.get(), SIGNAL(EndOfStreamReached(int, bool)), + SLOT(BackgroundStreamFinished())); const int stream_id = next_background_stream_id_++; background_streams_[stream_id] = pipeline; diff --git a/src/engines/gstengine.h b/src/engines/gstengine.h index 3f3a6c8bf..25b8f5fac 100644 --- a/src/engines/gstengine.h +++ b/src/engines/gstengine.h @@ -80,20 +80,23 @@ class GstEngine : public Engine::Base, public BufferConsumer { Engine::State state() const; const Engine::Scope& scope(); - PluginDetailsList GetOutputsList() const { return GetPluginList( "Sink/Audio" ); } - static bool DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(const QString& name); + PluginDetailsList GetOutputsList() const { + return GetPluginList("Sink/Audio"); + } + static bool DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString( + const QString& name); GstElement* CreateElement(const QString& factoryName, GstElement* bin = 0); // BufferConsumer - void ConsumeBuffer(GstBuffer *buffer, int pipeline_id); + void ConsumeBuffer(GstBuffer* buffer, int pipeline_id); public slots: void StartPreloading(const QUrl& url, bool force_stop_at_end, qint64 beginning_nanosec, qint64 end_nanosec); bool Load(const QUrl&, Engine::TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec); + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec); bool Play(quint64 offset_nanosec); void Stop(); void Pause(); @@ -120,7 +123,8 @@ class GstEngine : public Engine::Base, public BufferConsumer { private slots: void EndOfStreamReached(int pipeline_id, bool has_next_track); - void HandlePipelineError(int pipeline_id, const QString& message, int domain, int error_code); + void HandlePipelineError(int pipeline_id, const QString& message, int domain, + int error_code); void NewMetaData(int pipeline_id, const Engine::SimpleMetaBundle& bundle); void AddBufferToScope(GstBuffer* buf, int pipeline_id); void FadeoutFinished(); @@ -136,7 +140,8 @@ class GstEngine : public Engine::Base, public BufferConsumer { private: typedef QPair PlayFutureWatcherArg; - typedef BoundFutureWatcher PlayFutureWatcher; + typedef BoundFutureWatcher + PlayFutureWatcher; static void SetEnv(const char* key, const QString& value); PluginDetailsList GetPluginList(const QString& classname) const; @@ -148,8 +153,8 @@ class GstEngine : public Engine::Base, public BufferConsumer { void StopTimers(); std::shared_ptr CreatePipeline(); - std::shared_ptr CreatePipeline( - const QUrl& url, qint64 end_nanosec); + std::shared_ptr CreatePipeline(const QUrl& url, + qint64 end_nanosec); void UpdateScope(); @@ -158,9 +163,9 @@ class GstEngine : public Engine::Base, public BufferConsumer { static QUrl FixupUrl(const QUrl& url); private: - static const qint64 kTimerIntervalNanosec = 1000 * kNsecPerMsec; // 1s - static const qint64 kPreloadGapNanosec = 2000 * kNsecPerMsec; // 2s - static const qint64 kSeekDelayNanosec = 100 * kNsecPerMsec; // 100msec + static const qint64 kTimerIntervalNanosec = 1000 * kNsecPerMsec; // 1s + static const qint64 kPreloadGapNanosec = 2000 * kNsecPerMsec; // 2s + static const qint64 kSeekDelayNanosec = 100 * kNsecPerMsec; // 100msec static const char* kHypnotoadPipeline; static const char* kEnterprisePipeline; @@ -213,5 +218,4 @@ class GstEngine : public Engine::Base, public BufferConsumer { bool has_faded_out_; }; - #endif /*AMAROK_GSTENGINE_H*/ diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 67c47b1c0..8936e4d66 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -32,72 +32,69 @@ #include "internet/spotifyserver.h" #include "internet/spotifyservice.h" - const int GstEnginePipeline::kGstStateTimeoutNanosecs = 10000000; const int GstEnginePipeline::kFaderFudgeMsec = 2000; const int GstEnginePipeline::kEqBandCount = 10; const int GstEnginePipeline::kEqBandFrequencies[] = { - 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; + 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; int GstEnginePipeline::sId = 1; GstElementDeleter* GstEnginePipeline::sElementDeleter = nullptr; - GstEnginePipeline::GstEnginePipeline(GstEngine* engine) - : QObject(nullptr), - engine_(engine), - id_(sId++), - valid_(false), - sink_(GstEngine::kAutoSink), - segment_start_(0), - segment_start_received_(false), - emit_track_ended_on_segment_start_(false), - emit_track_ended_on_time_discontinuity_(false), - last_buffer_offset_(0), - eq_enabled_(false), - eq_preamp_(0), - stereo_balance_(0.0f), - rg_enabled_(false), - rg_mode_(0), - rg_preamp_(0.0), - rg_compression_(true), - buffer_duration_nanosec_(1 * kNsecPerSec), - buffering_(false), - mono_playback_(false), - end_offset_nanosec_(-1), - next_beginning_offset_nanosec_(-1), - next_end_offset_nanosec_(-1), - ignore_next_seek_(false), - ignore_tags_(false), - pipeline_is_initialised_(false), - pipeline_is_connected_(false), - pending_seek_nanosec_(-1), - volume_percent_(100), - volume_modifier_(1.0), - pipeline_(nullptr), - uridecodebin_(nullptr), - audiobin_(nullptr), - queue_(nullptr), - audioconvert_(nullptr), - rgvolume_(nullptr), - rglimiter_(nullptr), - audioconvert2_(nullptr), - equalizer_(nullptr), - stereo_panorama_(nullptr), - volume_(nullptr), - audioscale_(nullptr), - audiosink_(nullptr) -{ + : QObject(nullptr), + engine_(engine), + id_(sId++), + valid_(false), + sink_(GstEngine::kAutoSink), + segment_start_(0), + segment_start_received_(false), + emit_track_ended_on_segment_start_(false), + emit_track_ended_on_time_discontinuity_(false), + last_buffer_offset_(0), + eq_enabled_(false), + eq_preamp_(0), + stereo_balance_(0.0f), + rg_enabled_(false), + rg_mode_(0), + rg_preamp_(0.0), + rg_compression_(true), + buffer_duration_nanosec_(1 * kNsecPerSec), + buffering_(false), + mono_playback_(false), + end_offset_nanosec_(-1), + next_beginning_offset_nanosec_(-1), + next_end_offset_nanosec_(-1), + ignore_next_seek_(false), + ignore_tags_(false), + pipeline_is_initialised_(false), + pipeline_is_connected_(false), + pending_seek_nanosec_(-1), + volume_percent_(100), + volume_modifier_(1.0), + pipeline_(nullptr), + uridecodebin_(nullptr), + audiobin_(nullptr), + queue_(nullptr), + audioconvert_(nullptr), + rgvolume_(nullptr), + rglimiter_(nullptr), + audioconvert2_(nullptr), + equalizer_(nullptr), + stereo_panorama_(nullptr), + volume_(nullptr), + audioscale_(nullptr), + audiosink_(nullptr) { if (!sElementDeleter) { sElementDeleter = new GstElementDeleter; } - for (int i=0 ; iCreateElement("tcpserversrc", new_bin); GstElement* gdp = engine_->CreateElement("gdpdepay", new_bin); - if (!src || !gdp) - return false; + if (!src || !gdp) return false; // Pick a port number const int port = Utilities::PickUnusedPort(); @@ -163,13 +160,17 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { gst_object_unref(GST_OBJECT(pad)); // Tell spotify to start sending data to us. - InternetModel::Service()->server()->StartPlaybackLater(url.toString(), port); + InternetModel::Service()->server()->StartPlaybackLater( + url.toString(), port); } else { new_bin = engine_->CreateElement("uridecodebin"); - g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), nullptr); - CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, this); + g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), + nullptr); + CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, + this); CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this); - CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, this); + CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, + this); } return ReplaceDecodeBin(new_bin); @@ -218,31 +219,34 @@ bool GstEnginePipeline::Init() { gst_bin_add(GST_BIN(pipeline_), audiobin_); // Create the sink - if (!(audiosink_ = engine_->CreateElement(sink_, audiobin_))) - return false; + if (!(audiosink_ = engine_->CreateElement(sink_, audiobin_))) return false; - if (GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(sink_) && !device_.isEmpty()) - g_object_set(G_OBJECT(audiosink_), "device", device_.toUtf8().constData(), nullptr); + if (GstEngine:: + DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString( + sink_) && + !device_.isEmpty()) + g_object_set(G_OBJECT(audiosink_), "device", device_.toUtf8().constData(), + nullptr); // Create all the other elements - GstElement *tee, *probe_queue, *probe_converter, *probe_sink, *audio_queue, - *convert; + GstElement* tee, *probe_queue, *probe_converter, *probe_sink, *audio_queue, + *convert; - queue_ = engine_->CreateElement("queue2", audiobin_); - audioconvert_ = engine_->CreateElement("audioconvert", audiobin_); - tee = engine_->CreateElement("tee", audiobin_); + queue_ = engine_->CreateElement("queue2", audiobin_); + audioconvert_ = engine_->CreateElement("audioconvert", audiobin_); + tee = engine_->CreateElement("tee", audiobin_); - probe_queue = engine_->CreateElement("queue", audiobin_); - probe_converter = engine_->CreateElement("audioconvert", audiobin_); - probe_sink = engine_->CreateElement("fakesink", audiobin_); + probe_queue = engine_->CreateElement("queue", audiobin_); + probe_converter = engine_->CreateElement("audioconvert", audiobin_); + probe_sink = engine_->CreateElement("fakesink", audiobin_); - audio_queue = engine_->CreateElement("queue", audiobin_); - equalizer_preamp_ = engine_->CreateElement("volume", audiobin_); - equalizer_ = engine_->CreateElement("equalizer-nbands", audiobin_); - stereo_panorama_ = engine_->CreateElement("audiopanorama", audiobin_); - volume_ = engine_->CreateElement("volume", audiobin_); - audioscale_ = engine_->CreateElement("audioresample", audiobin_); - convert = engine_->CreateElement("audioconvert", audiobin_); + audio_queue = engine_->CreateElement("queue", audiobin_); + equalizer_preamp_ = engine_->CreateElement("volume", audiobin_); + equalizer_ = engine_->CreateElement("equalizer-nbands", audiobin_); + stereo_panorama_ = engine_->CreateElement("audiopanorama", audiobin_); + volume_ = engine_->CreateElement("volume", audiobin_); + audioscale_ = engine_->CreateElement("audioresample", audiobin_); + convert = engine_->CreateElement("audioconvert", audiobin_); if (!queue_ || !audioconvert_ || !tee || !probe_queue || !probe_converter || !probe_sink || !audio_queue || !equalizer_preamp_ || !equalizer_ || @@ -258,8 +262,8 @@ bool GstEnginePipeline::Init() { GstElement* convert_sink = tee; if (rg_enabled_) { - rgvolume_ = engine_->CreateElement("rgvolume", audiobin_); - rglimiter_ = engine_->CreateElement("rglimiter", audiobin_); + rgvolume_ = engine_->CreateElement("rgvolume", audiobin_); + rglimiter_ = engine_->CreateElement("rglimiter", audiobin_); audioconvert2_ = engine_->CreateElement("audioconvert", audiobin_); event_probe = audioconvert2_; convert_sink = rgvolume_; @@ -271,7 +275,8 @@ bool GstEnginePipeline::Init() { // Set replaygain settings g_object_set(G_OBJECT(rgvolume_), "album-mode", rg_mode_, nullptr); g_object_set(G_OBJECT(rgvolume_), "pre-amp", double(rg_preamp_), nullptr); - g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), nullptr); + g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), + nullptr); } // Create a pad on the outside of the audiobin and connect it to the pad of @@ -294,21 +299,22 @@ bool GstEnginePipeline::Init() { g_object_set(G_OBJECT(equalizer_), "num-bands", 10, nullptr); int last_band_frequency = 0; - for (int i=0 ; i 0) { @@ -328,13 +335,11 @@ bool GstEnginePipeline::Init() { // Create the caps to put in each path in the tee. The scope path gets 16-bit // ints and the audiosink path gets float32. - GstCaps* caps16 = gst_caps_new_simple ("audio/x-raw-int", - "width", G_TYPE_INT, 16, - "signed", G_TYPE_BOOLEAN, true, - nullptr); - GstCaps* caps32 = gst_caps_new_simple ("audio/x-raw-float", - "width", G_TYPE_INT, 32, - nullptr); + GstCaps* caps16 = + gst_caps_new_simple("audio/x-raw-int", "width", G_TYPE_INT, 16, "signed", + G_TYPE_BOOLEAN, true, nullptr); + GstCaps* caps32 = gst_caps_new_simple("audio/x-raw-float", "width", + G_TYPE_INT, 32, nullptr); if (mono_playback_) { gst_caps_set_simple(caps32, "channels", G_TYPE_INT, 1, nullptr); } @@ -346,8 +351,10 @@ bool GstEnginePipeline::Init() { gst_caps_unref(caps32); // Link the outputs of tee to the queues on each path. - gst_pad_link(gst_element_get_request_pad(tee, "src%d"), gst_element_get_static_pad(probe_queue, "sink")); - gst_pad_link(gst_element_get_request_pad(tee, "src%d"), gst_element_get_static_pad(audio_queue, "sink")); + gst_pad_link(gst_element_get_request_pad(tee, "src%d"), + gst_element_get_static_pad(probe_queue, "sink")); + gst_pad_link(gst_element_get_request_pad(tee, "src%d"), + gst_element_get_static_pad(audio_queue, "sink")); // Link replaygain elements if enabled. if (rg_enabled_) { @@ -356,13 +363,17 @@ bool GstEnginePipeline::Init() { // Link everything else. gst_element_link(probe_queue, probe_converter); - gst_element_link_many(audio_queue, equalizer_preamp_, equalizer_, stereo_panorama_, - volume_, audioscale_, convert, audiosink_, nullptr); + gst_element_link_many(audio_queue, equalizer_preamp_, equalizer_, + stereo_panorama_, volume_, audioscale_, convert, + audiosink_, nullptr); // Add probes and handlers. - gst_pad_add_buffer_probe(gst_element_get_static_pad(probe_converter, "src"), G_CALLBACK(HandoffCallback), this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); - bus_cb_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); + gst_pad_add_buffer_probe(gst_element_get_static_pad(probe_converter, "src"), + G_CALLBACK(HandoffCallback), this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); + bus_cb_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallback, this); MaybeLinkDecodeToAudio(); @@ -370,12 +381,10 @@ bool GstEnginePipeline::Init() { } void GstEnginePipeline::MaybeLinkDecodeToAudio() { - if (!uridecodebin_ || !audiobin_) - return; + if (!uridecodebin_ || !audiobin_) return; GstPad* pad = gst_element_get_static_pad(uridecodebin_, "src"); - if (!pad) - return; + if (!pad) return; gst_object_unref(pad); gst_element_link(uridecodebin_, audiobin_); @@ -384,7 +393,8 @@ void GstEnginePipeline::MaybeLinkDecodeToAudio() { bool GstEnginePipeline::InitFromString(const QString& pipeline) { pipeline_ = gst_pipeline_new("pipeline"); - GstElement* new_bin = CreateDecodeBinFromString(pipeline.toAscii().constData()); + GstElement* new_bin = + CreateDecodeBinFromString(pipeline.toAscii().constData()); if (!new_bin) { return false; } @@ -395,9 +405,9 @@ bool GstEnginePipeline::InitFromString(const QString& pipeline) { return gst_element_link(new_bin, audiobin_); } -bool GstEnginePipeline::InitFromUrl(const QUrl &url, qint64 end_nanosec) { +bool GstEnginePipeline::InitFromUrl(const QUrl& url, qint64 end_nanosec) { pipeline_ = gst_pipeline_new("pipeline"); - + if (url.scheme() == "cdda" && !url.path().isEmpty()) { // Currently, Gstreamer can't handle input CD devices inside cdda URL. So // we handle them ourselve: we extract the track number and re-create an @@ -420,17 +430,16 @@ bool GstEnginePipeline::InitFromUrl(const QUrl &url, qint64 end_nanosec) { GstEnginePipeline::~GstEnginePipeline() { if (pipeline_) { - gst_bus_set_sync_handler( - gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr, nullptr); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); g_source_remove(bus_cb_id_); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(GST_OBJECT(pipeline_)); } } - - -gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, gpointer self) { +gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); qLog(Debug) << instance->id() << "bus message" << GST_MESSAGE_TYPE_NAME(msg); @@ -455,10 +464,12 @@ gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, gpointer self) return FALSE; } -GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg, gpointer self) { +GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); - qLog(Debug) << instance->id() << "sync bus message" << GST_MESSAGE_TYPE_NAME(msg); + qLog(Debug) << instance->id() << "sync bus message" + << GST_MESSAGE_TYPE_NAME(msg); switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_EOS: @@ -516,7 +527,7 @@ void GstEnginePipeline::StreamStatusMessageReceived(GstMessage* msg) { } void GstEnginePipeline::TaskEnterCallback(GstTask*, GThread*, gpointer) { - // Bump the priority of the thread only on OS X +// Bump the priority of the thread only on OS X #ifdef Q_OS_DARWIN sched_param param; @@ -552,8 +563,10 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage* msg) { g_error_free(error); free(debugs); - if (!redirect_url_.isEmpty() && debugstr.contains( - "A redirect message was posted on the bus and should have been handled by the application.")) { + if (!redirect_url_.isEmpty() && + debugstr.contains( + "A redirect message was posted on the bus and should have been " + "handled by the application.")) { // mmssrc posts a message on the bus *and* makes an error message when it // wants to do a redirect. We handle the message, but now we have to // ignore the error too. @@ -577,8 +590,7 @@ void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { gst_tag_list_free(taglist); - if (ignore_tags_) - return; + if (ignore_tags_) return; if (!bundle.title.isEmpty() || !bundle.artist.isEmpty() || !bundle.comment.isEmpty() || !bundle.album.isEmpty()) @@ -606,7 +618,8 @@ void GstEnginePipeline::StateChangedMessageReceived(GstMessage* msg) { GstState old_state, new_state, pending; gst_message_parse_state_changed(msg, &old_state, &new_state, &pending); - if (!pipeline_is_initialised_ && (new_state == GST_STATE_PAUSED || new_state == GST_STATE_PLAYING)) { + if (!pipeline_is_initialised_ && + (new_state == GST_STATE_PAUSED || new_state == GST_STATE_PLAYING)) { pipeline_is_initialised_ = true; if (pending_seek_nanosec_ != -1 && pipeline_is_connected_) { QMetaObject::invokeMethod(this, "Seek", Qt::QueuedConnection, @@ -614,7 +627,8 @@ void GstEnginePipeline::StateChangedMessageReceived(GstMessage* msg) { } } - if (pipeline_is_initialised_ && new_state != GST_STATE_PAUSED && new_state != GST_STATE_PLAYING) { + if (pipeline_is_initialised_ && new_state != GST_STATE_PAUSED && + new_state != GST_STATE_PLAYING) { pipeline_is_initialised_ = false; } } @@ -646,12 +660,15 @@ void GstEnginePipeline::BufferingMessageReceived(GstMessage* msg) { } } -void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer self) { +void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); - GstPad* const audiopad = gst_element_get_static_pad(instance->audiobin_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(instance->audiobin_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { - qLog(Warning) << instance->id() << "audiopad is already linked, unlinking old pad"; + qLog(Warning) << instance->id() + << "audiopad is already linked, unlinking old pad"; gst_pad_unlink(audiopad, GST_PAD_PEER(audiopad)); } @@ -660,13 +677,15 @@ void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer self) gst_object_unref(audiopad); instance->pipeline_is_connected_ = true; - if (instance->pending_seek_nanosec_ != -1 && instance->pipeline_is_initialised_) { + if (instance->pending_seek_nanosec_ != -1 && + instance->pipeline_is_initialised_) { QMetaObject::invokeMethod(instance, "Seek", Qt::QueuedConnection, Q_ARG(qint64, instance->pending_seek_nanosec_)); } } -bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) { +bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); QList consumers; @@ -675,7 +694,7 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) consumers = instance->buffer_consumers_; } - foreach (BufferConsumer* consumer, consumers) { + foreach(BufferConsumer * consumer, consumers) { gst_buffer_ref(buf); consumer->ConsumeBuffer(buf, instance->id()); } @@ -690,7 +709,8 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) if (end_time > instance->end_offset_nanosec_) { if (instance->has_next_valid_url()) { if (instance->next_url_ == instance->url_ && - instance->next_beginning_offset_nanosec_ == instance->end_offset_nanosec_) { + instance->next_beginning_offset_nanosec_ == + instance->end_offset_nanosec_) { // The "next" song is actually the next segment of this file - so // cheat and keep on playing, but just tell the Engine we've moved on. instance->end_offset_nanosec_ = instance->next_end_offset_nanosec_; @@ -727,17 +747,19 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) return true; } -bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, gpointer self) { +bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); qLog(Debug) << instance->id() << "event" << GST_EVENT_TYPE_NAME(e); - if (GST_EVENT_TYPE(e) == GST_EVENT_NEWSEGMENT && !instance->segment_start_received_) { + if (GST_EVENT_TYPE(e) == GST_EVENT_NEWSEGMENT && + !instance->segment_start_received_) { // The segment start time is used to calculate the proper offset of data // buffers from the start of the stream gint64 start = 0; - gst_event_parse_new_segment( - e, nullptr, nullptr, nullptr, &start, nullptr, nullptr); + gst_event_parse_new_segment(e, nullptr, nullptr, nullptr, &start, nullptr, + nullptr); instance->segment_start_ = start; instance->segment_start_received_ = true; @@ -752,7 +774,8 @@ bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, gpointer self return true; } -void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer self) { +void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); if (instance->has_next_valid_url()) { @@ -760,7 +783,8 @@ void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer sel } } -void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *pspec, gpointer self) { +void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, + GParamSpec* pspec, gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); GstElement* element; g_object_get(bin, "source", &element, nullptr); @@ -774,38 +798,40 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps // documentation, this might be added in the future). Despite that, for now // we include device inside URL: we decompose it during Init and set device // here, when this callback is called. - g_object_set(element, "device", instance->source_device().toLocal8Bit().constData(), nullptr); + g_object_set(element, "device", + instance->source_device().toLocal8Bit().constData(), nullptr); } - if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "extra-headers") && + if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), + "extra-headers") && instance->url().host().contains("grooveshark")) { // Grooveshark streaming servers will answer with a 400 error 'Bad request' // if we don't specify 'Range' field in HTTP header. // Maybe it could be usefull in some other cases, but for now, I prefer to // keep this grooveshark specific. GstStructure* headers; - headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, "bytes=0-", nullptr); + headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, + "bytes=0-", nullptr); g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } - if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "extra-headers") && + if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), + "extra-headers") && instance->url().host().contains("files.one.ubuntu.com")) { GstStructure* headers; - headers = gst_structure_new( - "extra-headers", - "Authorization", - G_TYPE_STRING, - instance->url().fragment().toAscii().data(), - nullptr); + headers = + gst_structure_new("extra-headers", "Authorization", G_TYPE_STRING, + instance->url().fragment().toAscii().data(), nullptr); g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "user-agent")) { - QString user_agent = QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); - g_object_set(element, "user-agent", user_agent.toUtf8().constData(), nullptr); + QString user_agent = + QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); + g_object_set(element, "user-agent", user_agent.toUtf8().constData(), + nullptr); } } @@ -847,7 +873,7 @@ qint64 GstEnginePipeline::position() const { qint64 GstEnginePipeline::length() const { GstFormat fmt = GST_FORMAT_TIME; gint64 value = 0; - gst_element_query_duration(pipeline_, &fmt, &value); + gst_element_query_duration(pipeline_, &fmt, &value); return value; } @@ -887,7 +913,8 @@ void GstEnginePipeline::SetEqualizerEnabled(bool enabled) { UpdateEqualizer(); } -void GstEnginePipeline::SetEqualizerParams(int preamp, const QList& band_gains) { +void GstEnginePipeline::SetEqualizerParams(int preamp, + const QList& band_gains) { eq_preamp_ = preamp; eq_band_gains_ = band_gains; UpdateEqualizer(); @@ -900,14 +927,15 @@ void GstEnginePipeline::SetStereoBalance(float value) { void GstEnginePipeline::UpdateEqualizer() { // Update band gains - for (int i=0 ; icurrentTime()) / qreal(fader_->duration())); + qreal time = qreal(duration_msec) * + (qreal(fader_->currentTime()) / qreal(fader_->duration())); start_time = qRound(time); } } fader_.reset(new QTimeLine(duration_msec, this)); - connect(fader_.get(), SIGNAL(valueChanged(qreal)), SLOT(SetVolumeModifier(qreal))); + connect(fader_.get(), SIGNAL(valueChanged(qreal)), + SLOT(SetVolumeModifier(qreal))); connect(fader_.get(), SIGNAL(finished()), SLOT(FaderTimelineFinished())); fader_->setDirection(direction); fader_->setCurveShape(shape); @@ -1002,12 +1033,12 @@ void GstEnginePipeline::timerEvent(QTimerEvent* e) { QObject::timerEvent(e); } -void GstEnginePipeline::AddBufferConsumer(BufferConsumer *consumer) { +void GstEnginePipeline::AddBufferConsumer(BufferConsumer* consumer) { QMutexLocker l(&buffer_consumers_mutex_); buffer_consumers_ << consumer; } -void GstEnginePipeline::RemoveBufferConsumer(BufferConsumer *consumer) { +void GstEnginePipeline::RemoveBufferConsumer(BufferConsumer* consumer) { QMutexLocker l(&buffer_consumers_mutex_); buffer_consumers_.removeAll(consumer); } @@ -1017,8 +1048,7 @@ void GstEnginePipeline::RemoveAllBufferConsumers() { buffer_consumers_.clear(); } -void GstEnginePipeline::SetNextUrl(const QUrl& url, - qint64 beginning_nanosec, +void GstEnginePipeline::SetNextUrl(const QUrl& url, qint64 beginning_nanosec, qint64 end_nanosec) { next_url_ = url; next_beginning_offset_nanosec_ = beginning_nanosec; diff --git a/src/engines/gstenginepipeline.h b/src/engines/gstenginepipeline.h index 65e23003f..34d45d09b 100644 --- a/src/engines/gstenginepipeline.h +++ b/src/engines/gstenginepipeline.h @@ -78,7 +78,8 @@ class GstEnginePipeline : public QObject { // If this is set then it will be loaded automatically when playback finishes // for gapless playback - void SetNextUrl(const QUrl& url, qint64 beginning_nanosec, qint64 end_nanosec); + void SetNextUrl(const QUrl& url, qint64 beginning_nanosec, + qint64 end_nanosec); bool has_next_valid_url() const { return next_url_.isValid(); } // Get information about the music playback @@ -106,12 +107,13 @@ class GstEnginePipeline : public QObject { public slots: void SetVolumeModifier(qreal mod); - signals: +signals: void EndOfStreamReached(int pipeline_id, bool has_next_track); void MetadataFound(int pipeline_id, const Engine::SimpleMetaBundle& bundle); // This indicates an error, delegated from GStreamer, in the pipeline. // The message, domain and error_code are related to GStreamer's GError. - void Error(int pipeline_id, const QString& message, int domain, int error_code); + void Error(int pipeline_id, const QString& message, int domain, + int error_code); void FaderFinished(); void BufferingStarted(); @@ -119,7 +121,7 @@ class GstEnginePipeline : public QObject { void BufferingFinished(); protected: - void timerEvent(QTimerEvent *); + void timerEvent(QTimerEvent*); private: // Static callbacks. The GstEnginePipeline instance is passed in the last @@ -130,7 +132,8 @@ class GstEnginePipeline : public QObject { static bool HandoffCallback(GstPad*, GstBuffer*, gpointer); static bool EventHandoffCallback(GstPad*, GstEvent*, gpointer); static void SourceDrainedCallback(GstURIDecodeBin*, gpointer); - static void SourceSetupCallback(GstURIDecodeBin*, GParamSpec *pspec, gpointer); + static void SourceSetupCallback(GstURIDecodeBin*, GParamSpec* pspec, + gpointer); static void TaskEnterCallback(GstTask*, GThread*, gpointer); void TagMessageReceived(GstMessage*); @@ -283,4 +286,4 @@ class GstEnginePipeline : public QObject { QThreadPool set_state_threadpool_; }; -#endif // GSTENGINEPIPELINE_H +#endif // GSTENGINEPIPELINE_H diff --git a/src/globalsearch/digitallyimportedsearchprovider.cpp b/src/globalsearch/digitallyimportedsearchprovider.cpp index 06437a1a6..26046ed85 100644 --- a/src/globalsearch/digitallyimportedsearchprovider.cpp +++ b/src/globalsearch/digitallyimportedsearchprovider.cpp @@ -20,14 +20,15 @@ #include "internet/digitallyimportedservicebase.h" DigitallyImportedSearchProvider::DigitallyImportedSearchProvider( - DigitallyImportedServiceBase* service, Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ + DigitallyImportedServiceBase* service, Application* app, QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { Init(service_->name(), service->api_service_name(), service_->icon(), ArtIsInSongMetadata | CanGiveSuggestions | CanShowConfig); - set_safe_words(QStringList() << "sky.fm" << "skyfm" << "di.fm" << "difm" + set_safe_words(QStringList() << "sky.fm" + << "skyfm" + << "di.fm" + << "difm" << "digitallyimported"); set_max_suggestion_count(5); @@ -35,8 +36,7 @@ DigitallyImportedSearchProvider::DigitallyImportedSearchProvider( // Load the channel list on startup only if it doesn't involve going to update // info from the server. - if (!service_->IsChannelListStale()) - RecreateItems(); + if (!service_->IsChannelListStale()) RecreateItems(); } void DigitallyImportedSearchProvider::RecreateItems() { @@ -44,7 +44,7 @@ void DigitallyImportedSearchProvider::RecreateItems() { DigitallyImportedClient::ChannelList channels = service_->Channels(); - foreach (const DigitallyImportedClient::Channel& channel, channels) { + foreach(const DigitallyImportedClient::Channel & channel, channels) { Song song; service_->SongFromChannel(channel, &song); items << Item(song); diff --git a/src/globalsearch/digitallyimportedsearchprovider.h b/src/globalsearch/digitallyimportedsearchprovider.h index a2aeebd6d..4630da96e 100644 --- a/src/globalsearch/digitallyimportedsearchprovider.h +++ b/src/globalsearch/digitallyimportedsearchprovider.h @@ -23,17 +23,17 @@ class DigitallyImportedServiceBase; class DigitallyImportedSearchProvider : public SimpleSearchProvider { -public: + public: DigitallyImportedSearchProvider(DigitallyImportedServiceBase* service, Application* app, QObject* parent); void ShowConfig(); -protected: + protected: void RecreateItems(); -private: + private: DigitallyImportedServiceBase* service_; }; -#endif // DIGITALLYIMPORTEDSEARCHPROVIDER_H +#endif // DIGITALLYIMPORTEDSEARCHPROVIDER_H diff --git a/src/globalsearch/globalsearch.cpp b/src/globalsearch/globalsearch.cpp index b3c2912ae..7330b336f 100644 --- a/src/globalsearch/globalsearch.cpp +++ b/src/globalsearch/globalsearch.cpp @@ -33,31 +33,27 @@ const int GlobalSearch::kDelayedSearchTimeoutMs = 200; const char* GlobalSearch::kSettingsGroup = "GlobalSearch"; const int GlobalSearch::kMaxResultsPerEmission = 500; - GlobalSearch::GlobalSearch(Application* app, QObject* parent) - : QObject(parent), - app_(app), - next_id_(1), - url_provider_(new UrlSearchProvider(app, this)) -{ + : QObject(parent), + app_(app), + next_id_(1), + url_provider_(new UrlSearchProvider(app, this)) { cover_loader_options_.desired_height_ = SearchProvider::kArtHeight; cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(AlbumArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(AlbumArtLoaded(quint64, QImage))); ConnectProvider(url_provider_); } void GlobalSearch::ConnectProvider(SearchProvider* provider) { - connect(provider, SIGNAL(ResultsAvailable(int,SearchProvider::ResultList)), - SLOT(ResultsAvailableSlot(int,SearchProvider::ResultList))); - connect(provider, SIGNAL(SearchFinished(int)), - SLOT(SearchFinishedSlot(int))); - connect(provider, SIGNAL(ArtLoaded(int,QImage)), - SLOT(ArtLoadedSlot(int,QImage))); + connect(provider, SIGNAL(ResultsAvailable(int, SearchProvider::ResultList)), + SLOT(ResultsAvailableSlot(int, SearchProvider::ResultList))); + connect(provider, SIGNAL(SearchFinished(int)), SLOT(SearchFinishedSlot(int))); + connect(provider, SIGNAL(ArtLoaded(int, QImage)), + SLOT(ArtLoadedSlot(int, QImage))); connect(provider, SIGNAL(destroyed(QObject*)), SLOT(ProviderDestroyedSlot(QObject*))); } @@ -85,7 +81,7 @@ void GlobalSearch::AddProvider(SearchProvider* provider) { } int GlobalSearch::SearchAsync(const QString& query) { - const int id = next_id_ ++; + const int id = next_id_++; pending_search_providers_[id] = 0; int timer_id = -1; @@ -93,11 +89,10 @@ int GlobalSearch::SearchAsync(const QString& query) { if (url_provider_->LooksLikeUrl(query)) { url_provider_->SearchAsync(id, query); } else { - foreach (SearchProvider* provider, providers_.keys()) { - if (!is_provider_usable(provider)) - continue; + foreach(SearchProvider * provider, providers_.keys()) { + if (!is_provider_usable(provider)) continue; - pending_search_providers_[id] ++; + pending_search_providers_[id]++; if (provider->wants_delayed_queries()) { if (timer_id == -1) { @@ -117,7 +112,7 @@ int GlobalSearch::SearchAsync(const QString& query) { void GlobalSearch::CancelSearch(int id) { QMap::iterator it; - for (it = delayed_searches_.begin() ; it != delayed_searches_.end() ; ++it) { + for (it = delayed_searches_.begin(); it != delayed_searches_.end(); ++it) { if (it.value().id_ == id) { killTimer(it.key()); delayed_searches_.erase(it); @@ -129,7 +124,7 @@ void GlobalSearch::CancelSearch(int id) { void GlobalSearch::timerEvent(QTimerEvent* e) { QMap::iterator it = delayed_searches_.find(e->timerId()); if (it != delayed_searches_.end()) { - foreach (SearchProvider* provider, it.value().providers_) { + foreach(SearchProvider * provider, it.value().providers_) { provider->SearchAsync(it.value().id_, it.value().query_); } delayed_searches_.erase(it); @@ -139,15 +134,15 @@ void GlobalSearch::timerEvent(QTimerEvent* e) { QObject::timerEvent(e); } -QString GlobalSearch::PixmapCacheKey(const SearchProvider::Result& result) const { - return "globalsearch:" - % QString::number(qulonglong(result.provider_)) - % "," % result.metadata_.url().toString(); +QString GlobalSearch::PixmapCacheKey(const SearchProvider::Result& result) + const { + return "globalsearch:" % QString::number(qulonglong(result.provider_)) % "," % + result.metadata_.url().toString(); } -void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList results) { - if (results.isEmpty()) - return; +void GlobalSearch::ResultsAvailableSlot(int id, + SearchProvider::ResultList results) { + if (results.isEmpty()) return; // Limit the number of results that are used from each emission. // Just a sanity check to stop some providers (Jamendo) returning thousands @@ -159,7 +154,8 @@ void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList resul } // Load cached pixmaps into the results - for (SearchProvider::ResultList::iterator it = results.begin() ; it != results.end() ; ++it) { + for (SearchProvider::ResultList::iterator it = results.begin(); + it != results.end(); ++it) { it->pixmap_cache_key_ = PixmapCacheKey(*it); } @@ -167,8 +163,7 @@ void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList resul } void GlobalSearch::SearchFinishedSlot(int id) { - if (!pending_search_providers_.contains(id)) - return; + if (!pending_search_providers_.contains(id)) return; SearchProvider* provider = static_cast(sender()); const int remaining = --pending_search_providers_[id]; @@ -182,17 +177,14 @@ void GlobalSearch::SearchFinishedSlot(int id) { void GlobalSearch::ProviderDestroyedSlot(QObject* object) { SearchProvider* provider = static_cast(object); - if (!providers_.contains(provider)) - return; + if (!providers_.contains(provider)) return; providers_.remove(provider); emit ProviderRemoved(provider); // We have to abort any pending searches since we can't tell whether they // were on this provider. - foreach (int id, pending_search_providers_.keys()) { - emit SearchFinished(id); - } + foreach(int id, pending_search_providers_.keys()) { emit SearchFinished(id); } pending_search_providers_.clear(); } @@ -201,7 +193,7 @@ QList GlobalSearch::providers() const { } int GlobalSearch::LoadArtAsync(const SearchProvider::Result& result) { - const int id = next_id_ ++; + const int id = next_id_++; pending_art_searches_[id] = result.pixmap_cache_key_; @@ -213,7 +205,7 @@ int GlobalSearch::LoadArtAsync(const SearchProvider::Result& result) { if (result.provider_->art_is_in_song_metadata()) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } else if (providers_.contains(result.provider_) && result.provider_->wants_serialised_art()) { @@ -240,7 +232,7 @@ void GlobalSearch::TakeNextQueuedArt(SearchProvider* provider) { providers_[provider].queued_art_.isEmpty()) return; - const QueuedArt& data = providers_[provider].queued_art_.first(); + const QueuedArt& data = providers_[provider].queued_art_.first(); provider->LoadArtAsync(data.id_, data.result_); } @@ -250,14 +242,14 @@ void GlobalSearch::ArtLoadedSlot(int id, const QImage& image) { } void GlobalSearch::AlbumArtLoaded(quint64 id, const QImage& image) { - if (!cover_loader_tasks_.contains(id)) - return; + if (!cover_loader_tasks_.contains(id)) return; int orig_id = cover_loader_tasks_.take(id); HandleLoadedArt(orig_id, image, nullptr); } -void GlobalSearch::HandleLoadedArt(int id, const QImage& image, SearchProvider* provider) { +void GlobalSearch::HandleLoadedArt(int id, const QImage& image, + SearchProvider* provider) { const QString key = pending_art_searches_.take(id); QPixmap pixmap = QPixmap::fromImage(image); @@ -265,10 +257,9 @@ void GlobalSearch::HandleLoadedArt(int id, const QImage& image, SearchProvider* emit ArtLoaded(id, pixmap); - if (provider && - providers_.contains(provider) && + if (provider && providers_.contains(provider) && !providers_[provider].queued_art_.isEmpty()) { - providers_[provider].queued_art_.removeFirst(); + providers_[provider].queued_art_.removeFirst(); TakeNextQueuedArt(provider); } } @@ -288,7 +279,7 @@ MimeData* GlobalSearch::LoadTracks(const SearchProvider::ResultList& results) { SearchProvider* first_provider = results[0].provider_; SearchProvider::ResultList results_copy; - foreach (const SearchProvider::Result& result, results) { + foreach(const SearchProvider::Result & result, results) { if (result.provider_ == first_provider) { results_copy << result; } @@ -300,8 +291,7 @@ MimeData* GlobalSearch::LoadTracks(const SearchProvider::ResultList& results) { bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider, bool enabled) { SearchProvider* provider = const_cast(const_provider); - if (!providers_.contains(provider)) - return true; + if (!providers_.contains(provider)) return true; if (providers_[provider].enabled_ != enabled) { // If we try to enable this provider but it is not logged in, don't change @@ -319,11 +309,11 @@ bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider, return true; } -bool GlobalSearch::is_provider_enabled(const SearchProvider* const_provider) const { +bool GlobalSearch::is_provider_enabled(const SearchProvider* const_provider) + const { SearchProvider* provider = const_cast(const_provider); - if (!providers_.contains(provider)) - return false; + if (!providers_.contains(provider)) return false; return providers_[provider].enabled_; } @@ -335,10 +325,9 @@ void GlobalSearch::ReloadSettings() { QSettings s; s.beginGroup(kSettingsGroup); - foreach (SearchProvider* provider, providers_.keys()) { + foreach(SearchProvider * provider, providers_.keys()) { QVariant value = s.value("enabled_" + provider->id()); - if (!value.isValid()) - continue; + if (!value.isValid()) continue; const bool enabled = value.toBool(); if (enabled != providers_[provider].enabled_) { @@ -351,7 +340,7 @@ void GlobalSearch::ReloadSettings() { void GlobalSearch::SaveProvidersSettings() { QSettings s; s.beginGroup(kSettingsGroup); - foreach (SearchProvider* provider, providers_.keys()) { + foreach(SearchProvider * provider, providers_.keys()) { s.setValue("enabled_" + provider->id(), providers_[provider].enabled_); } } @@ -360,9 +349,9 @@ QStringList GlobalSearch::GetSuggestions(int count) { QStringList ret; // Get count suggestions from each provider - foreach (SearchProvider* provider, providers_.keys()) { + foreach(SearchProvider * provider, providers_.keys()) { if (is_provider_enabled(provider) && provider->can_give_suggestions()) { - foreach (QString suggestion, provider->GetSuggestions(count)) { + foreach(QString suggestion, provider->GetSuggestions(count)) { suggestion = suggestion.trimmed().toLower(); if (!suggestion.isEmpty()) { diff --git a/src/globalsearch/globalsearch.h b/src/globalsearch/globalsearch.h index d6ec36d48..53d644f28 100644 --- a/src/globalsearch/globalsearch.h +++ b/src/globalsearch/globalsearch.h @@ -31,7 +31,7 @@ class UrlSearchProvider; class GlobalSearch : public QObject { Q_OBJECT -public: + public: GlobalSearch(Application* app, QObject* parent = 0); static const int kDelayedSearchTimeoutMs; @@ -53,14 +53,15 @@ public: void CancelSearch(int id); void CancelArt(int id); - bool FindCachedPixmap(const SearchProvider::Result& result, QPixmap* pixmap) const; + bool FindCachedPixmap(const SearchProvider::Result& result, + QPixmap* pixmap) const; // "enabled" is the user preference. "usable" is enabled AND logged in. QList providers() const; bool is_provider_enabled(const SearchProvider* provider) const; bool is_provider_usable(SearchProvider* provider) const; -public slots: + public slots: void ReloadSettings(); signals: @@ -74,10 +75,10 @@ signals: void ProviderRemoved(const SearchProvider* provider); void ProviderToggled(const SearchProvider* provider, bool enabled); -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ResultsAvailableSlot(int id, SearchProvider::ResultList results); void SearchFinishedSlot(int id); @@ -86,7 +87,7 @@ private slots: void ProviderDestroyedSlot(QObject* object); -private: + private: void ConnectProvider(SearchProvider* provider); void HandleLoadedArt(int id, const QImage& image, SearchProvider* provider); void TakeNextQueuedArt(SearchProvider* provider); @@ -94,7 +95,7 @@ private: void SaveProvidersSettings(); -private: + private: struct DelayedSearch { int id_; QString query_; @@ -131,4 +132,4 @@ private: UrlSearchProvider* url_provider_; }; -#endif // GLOBALSEARCH_H +#endif // GLOBALSEARCH_H diff --git a/src/globalsearch/globalsearchitemdelegate.cpp b/src/globalsearch/globalsearchitemdelegate.cpp index bd5f8d763..b8a6f02fa 100644 --- a/src/globalsearch/globalsearchitemdelegate.cpp +++ b/src/globalsearch/globalsearchitemdelegate.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,14 +19,11 @@ #include "globalsearchview.h" GlobalSearchItemDelegate::GlobalSearchItemDelegate(GlobalSearchView* view) - : LibraryItemDelegate(view), - view_(view) -{ -} + : LibraryItemDelegate(view), view_(view) {} -void GlobalSearchItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, - const QModelIndex& index) const { +void GlobalSearchItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Tell the view we painted this item so it can lazy load some art. const_cast(view_)->LazyLoadArt(index); diff --git a/src/globalsearch/globalsearchitemdelegate.h b/src/globalsearch/globalsearchitemdelegate.h index 72536a57d..f5c7d398a 100644 --- a/src/globalsearch/globalsearchitemdelegate.h +++ b/src/globalsearch/globalsearchitemdelegate.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,14 +23,14 @@ class GlobalSearchView; class GlobalSearchItemDelegate : public LibraryItemDelegate { -public: + public: GlobalSearchItemDelegate(GlobalSearchView* view); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; -private: + private: GlobalSearchView* view_; }; -#endif // GLOBALSEARCHITEMDELEGATE_H +#endif // GLOBALSEARCHITEMDELEGATE_H diff --git a/src/globalsearch/globalsearchmodel.cpp b/src/globalsearch/globalsearchmodel.cpp index ca0aa6e58..3fa1611d8 100644 --- a/src/globalsearch/globalsearchmodel.cpp +++ b/src/globalsearch/globalsearchmodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,20 +22,19 @@ #include GlobalSearchModel::GlobalSearchModel(GlobalSearch* engine, QObject* parent) - : QStandardItemModel(parent), - engine_(engine), - proxy_(nullptr), - use_pretty_covers_(true), - artist_icon_(":/icons/22x22/x-clementine-artist.png"), - album_icon_(":/icons/22x22/x-clementine-album.png") -{ + : QStandardItemModel(parent), + engine_(engine), + proxy_(nullptr), + use_pretty_covers_(true), + artist_icon_(":/icons/22x22/x-clementine-artist.png"), + album_icon_(":/icons/22x22/x-clementine-album.png") { group_by_[0] = LibraryModel::GroupBy_Artist; group_by_[1] = LibraryModel::GroupBy_Album; group_by_[2] = LibraryModel::GroupBy_None; no_cover_icon_ = QPixmap(":nocover.png").scaled( - LibraryModel::kPrettyCoverSize, LibraryModel::kPrettyCoverSize, - Qt::KeepAspectRatio, Qt::SmoothTransformation); + LibraryModel::kPrettyCoverSize, LibraryModel::kPrettyCoverSize, + Qt::KeepAspectRatio, Qt::SmoothTransformation); } void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { @@ -50,10 +49,11 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { if (configured_index != -1) { sort_index = configured_index; } else { - sort_index = next_provider_sort_index_ ++; + sort_index = next_provider_sort_index_++; } - QStandardItem* divider = new QStandardItem(provider->icon(), provider->name()); + QStandardItem* divider = + new QStandardItem(provider->icon(), provider->name()); divider->setData(true, LibraryModel::Role_IsDivider); divider->setData(sort_index, Role_ProviderIndex); divider->setFlags(Qt::ItemIsEnabled); @@ -64,7 +64,7 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { sort_index = provider_sort_indices_[provider]; } - foreach (const SearchProvider::Result& result, results) { + foreach(const SearchProvider::Result & result, results) { QStandardItem* parent = invisibleRootItem(); // Find (or create) the container nodes for this result if we can. @@ -85,8 +85,10 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { } } -QStandardItem* GlobalSearchModel::BuildContainers( - const Song& s, QStandardItem* parent, ContainerKey* key, int level) { +QStandardItem* GlobalSearchModel::BuildContainers(const Song& s, + QStandardItem* parent, + ContainerKey* key, + int level) { if (level >= 3) { return parent; } @@ -99,60 +101,64 @@ QStandardItem* GlobalSearchModel::BuildContainers( int year = 0; switch (group_by_[level]) { - case LibraryModel::GroupBy_Artist: - if (s.is_compilation()) { - display_text = tr("Various artists"); - sort_text = "aaaaaa"; - } else { - display_text = LibraryModel::TextOrUnknown(s.artist()); - sort_text = LibraryModel::SortTextForArtist(s.artist()); - } - has_artist_icon = true; - break; + case LibraryModel::GroupBy_Artist: + if (s.is_compilation()) { + display_text = tr("Various artists"); + sort_text = "aaaaaa"; + } else { + display_text = LibraryModel::TextOrUnknown(s.artist()); + sort_text = LibraryModel::SortTextForArtist(s.artist()); + } + has_artist_icon = true; + break; - case LibraryModel::GroupBy_YearAlbum: - year = qMax(0, s.year()); - display_text = LibraryModel::PrettyYearAlbum(year, s.album()); - sort_text = LibraryModel::SortTextForYear(year) + s.album(); - unique_tag = s.album_id(); - has_album_icon = true; - break; + case LibraryModel::GroupBy_YearAlbum: + year = qMax(0, s.year()); + display_text = LibraryModel::PrettyYearAlbum(year, s.album()); + sort_text = LibraryModel::SortTextForYear(year) + s.album(); + unique_tag = s.album_id(); + has_album_icon = true; + break; - case LibraryModel::GroupBy_Year: - year = qMax(0, s.year()); - display_text = QString::number(year); - sort_text = LibraryModel::SortTextForYear(year) + " "; - break; + case LibraryModel::GroupBy_Year: + year = qMax(0, s.year()); + display_text = QString::number(year); + sort_text = LibraryModel::SortTextForYear(year) + " "; + break; - case LibraryModel::GroupBy_Composer: display_text = s.composer(); - case LibraryModel::GroupBy_Performer: display_text = s.performer(); - case LibraryModel::GroupBy_Grouping: display_text = s.grouping(); - case LibraryModel::GroupBy_Genre: if (display_text.isNull()) display_text = s.genre(); - case LibraryModel::GroupBy_Album: - unique_tag = s.album_id(); - if (display_text.isNull()) { - display_text = s.album(); - } + case LibraryModel::GroupBy_Composer: + display_text = s.composer(); + case LibraryModel::GroupBy_Performer: + display_text = s.performer(); + case LibraryModel::GroupBy_Grouping: + display_text = s.grouping(); + case LibraryModel::GroupBy_Genre: + if (display_text.isNull()) display_text = s.genre(); + case LibraryModel::GroupBy_Album: + unique_tag = s.album_id(); + if (display_text.isNull()) { + display_text = s.album(); + } // fallthrough - case LibraryModel::GroupBy_AlbumArtist: if (display_text.isNull()) display_text = s.effective_albumartist(); - display_text = LibraryModel::TextOrUnknown(display_text); - sort_text = LibraryModel::SortTextForArtist(display_text); - has_album_icon = true; - break; + case LibraryModel::GroupBy_AlbumArtist: + if (display_text.isNull()) display_text = s.effective_albumartist(); + display_text = LibraryModel::TextOrUnknown(display_text); + sort_text = LibraryModel::SortTextForArtist(display_text); + has_album_icon = true; + break; - case LibraryModel::GroupBy_FileType: - display_text = s.TextForFiletype(); - sort_text = display_text; - break; + case LibraryModel::GroupBy_FileType: + display_text = s.TextForFiletype(); + sort_text = display_text; + break; - case LibraryModel::GroupBy_Bitrate: - display_text = QString(s.bitrate(), 1); - sort_text = display_text; - break; - - case LibraryModel::GroupBy_None: - return parent; + case LibraryModel::GroupBy_Bitrate: + display_text = QString(s.bitrate(), 1); + sort_text = display_text; + break; + case LibraryModel::GroupBy_None: + return parent; } // Find a container for this level @@ -192,9 +198,7 @@ void GlobalSearchModel::Clear() { SearchProvider::ResultList GlobalSearchModel::GetChildResults( const QModelIndexList& indexes) const { QList items; - foreach (const QModelIndex& index, indexes) { - items << itemFromIndex(index); - } + foreach(const QModelIndex & index, indexes) { items << itemFromIndex(index); } return GetChildResults(items); } @@ -203,16 +207,16 @@ SearchProvider::ResultList GlobalSearchModel::GetChildResults( SearchProvider::ResultList results; QSet visited; - foreach (QStandardItem* item, items) { + foreach(QStandardItem * item, items) { GetChildResults(item, &results, &visited); } return results; } -void GlobalSearchModel::GetChildResults(const QStandardItem* item, - SearchProvider::ResultList* results, - QSet* visited) const { +void GlobalSearchModel::GetChildResults( + const QStandardItem* item, SearchProvider::ResultList* results, + QSet* visited) const { if (visited->contains(item)) { return; } @@ -224,7 +228,7 @@ void GlobalSearchModel::GetChildResults(const QStandardItem* item, // Yes - visit all the children, but do so through the proxy so we get them // in the right order. - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < item->rowCount(); ++i) { const QModelIndex proxy_index = parent_proxy_index.child(i, 0); const QModelIndex index = proxy_->mapToSource(proxy_index); GetChildResults(itemFromIndex(index), results, visited); @@ -244,11 +248,12 @@ void GatherResults(const QStandardItem* parent, QMap* results) { QVariant result_variant = parent->data(GlobalSearchModel::Role_Result); if (result_variant.isValid()) { - SearchProvider::Result result = result_variant.value(); + SearchProvider::Result result = + result_variant.value(); (*results)[result.provider_].append(result); } - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < parent->rowCount(); ++i) { GatherResults(parent->child(i), results); } } @@ -267,7 +272,7 @@ void GlobalSearchModel::SetGroupBy(const LibraryModel::Grouping& grouping, // Reset the model and re-add all the results using the new grouping. Clear(); - foreach (const SearchProvider::ResultList& result_list, results) { + foreach(const SearchProvider::ResultList & result_list, results) { AddResults(result_list); } } diff --git a/src/globalsearch/globalsearchmodel.h b/src/globalsearch/globalsearchmodel.h index 05c13ca10..cb286fdba 100644 --- a/src/globalsearch/globalsearchmodel.h +++ b/src/globalsearch/globalsearchmodel.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,14 +30,13 @@ class QSortFilterProxyModel; class GlobalSearchModel : public QStandardItemModel { Q_OBJECT -public: + public: GlobalSearchModel(GlobalSearch* engine, QObject* parent = 0); enum Role { Role_Result = LibraryModel::LastRole, Role_LazyLoadingArt, Role_ProviderIndex, - LastRole }; @@ -48,28 +47,32 @@ public: void set_proxy(QSortFilterProxyModel* proxy) { proxy_ = proxy; } void set_use_pretty_covers(bool pretty) { use_pretty_covers_ = pretty; } - void set_provider_order(const QStringList& provider_order) { provider_order_ = provider_order; } + void set_provider_order(const QStringList& provider_order) { + provider_order_ = provider_order; + } void SetGroupBy(const LibraryModel::Grouping& grouping, bool regroup_now); void Clear(); - SearchProvider::ResultList GetChildResults(const QModelIndexList& indexes) const; - SearchProvider::ResultList GetChildResults(const QList& items) const; + SearchProvider::ResultList GetChildResults(const QModelIndexList& indexes) + const; + SearchProvider::ResultList GetChildResults(const QList& items) + const; // QAbstractItemModel QMimeData* mimeData(const QModelIndexList& indexes) const; -public slots: + public slots: void AddResults(const SearchProvider::ResultList& results); -private: + private: QStandardItem* BuildContainers(const Song& metadata, QStandardItem* parent, ContainerKey* key, int level = 0); void GetChildResults(const QStandardItem* item, SearchProvider::ResultList* results, QSet* visited) const; - -private: + + private: GlobalSearch* engine_; QSortFilterProxyModel* proxy_; @@ -87,17 +90,15 @@ private: }; inline uint qHash(const GlobalSearchModel::ContainerKey& key) { - return qHash(key.provider_index_) - ^ qHash(key.group_[0]) - ^ qHash(key.group_[1]) - ^ qHash(key.group_[2]); + return qHash(key.provider_index_) ^ qHash(key.group_[0]) ^ + qHash(key.group_[1]) ^ qHash(key.group_[2]); } -inline bool operator <(const GlobalSearchModel::ContainerKey& left, - const GlobalSearchModel::ContainerKey& right) { - #define CMP(field) \ - if (left.field < right.field) return true; \ - if (left.field > right.field) return false +inline bool operator<(const GlobalSearchModel::ContainerKey& left, + const GlobalSearchModel::ContainerKey& right) { +#define CMP(field) \ + if (left.field < right.field) return true; \ + if (left.field > right.field) return false CMP(provider_index_); CMP(group_[0]); @@ -105,7 +106,7 @@ inline bool operator <(const GlobalSearchModel::ContainerKey& left, CMP(group_[2]); return false; - #undef CMP +#undef CMP } -#endif // GLOBALSEARCHMODEL_H +#endif // GLOBALSEARCHMODEL_H diff --git a/src/globalsearch/globalsearchsettingspage.cpp b/src/globalsearch/globalsearchsettingspage.cpp index ef137767b..ba32bd8e3 100644 --- a/src/globalsearch/globalsearchsettingspage.cpp +++ b/src/globalsearch/globalsearchsettingspage.cpp @@ -25,9 +25,7 @@ #include GlobalSearchSettingsPage::GlobalSearchSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui::GlobalSearchSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui::GlobalSearchSettingsPage) { ui_->setupUi(this); ui_->sources->header()->setResizeMode(0, QHeaderView::Stretch); @@ -38,12 +36,12 @@ GlobalSearchSettingsPage::GlobalSearchSettingsPage(SettingsDialog* dialog) connect(ui_->up, SIGNAL(clicked()), SLOT(MoveUp())); connect(ui_->down, SIGNAL(clicked()), SLOT(MoveDown())); connect(ui_->configure, SIGNAL(clicked()), SLOT(ConfigureProvider())); - connect(ui_->sources, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + connect(ui_->sources, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(CurrentProviderChanged(QTreeWidgetItem*))); } -GlobalSearchSettingsPage::~GlobalSearchSettingsPage() { -} +GlobalSearchSettingsPage::~GlobalSearchSettingsPage() {} static bool CompareProviderId(SearchProvider* left, SearchProvider* right) { return left->id() < right->id(); @@ -62,10 +60,12 @@ void GlobalSearchSettingsPage::Load() { // Add the ones in the configured list first ui_->sources->clear(); - foreach (const QString& id, s.value("provider_order", QStringList() << "library").toStringList()) { + foreach( + const QString & id, + s.value("provider_order", QStringList() << "library").toStringList()) { // Find a matching provider for this id for (QList::iterator it = providers.begin(); - it != providers.end() ; ++it) { + it != providers.end(); ++it) { if ((*it)->id() == id) { AddProviderItem(engine, *it); providers.erase(it); @@ -75,7 +75,7 @@ void GlobalSearchSettingsPage::Load() { } // Now add any others that are remaining - foreach (SearchProvider* provider, providers) { + foreach(SearchProvider * provider, providers) { AddProviderItem(engine, provider); } @@ -98,18 +98,18 @@ void GlobalSearchSettingsPage::AddProviderItem(GlobalSearch* engine, void GlobalSearchSettingsPage::UpdateLoggedInState(GlobalSearch* engine, QTreeWidgetItem* item, bool set_checked_state) { - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); const bool enabled = engine->is_provider_enabled(provider); const bool logged_in = provider->IsLoggedIn(); - Qt::CheckState check_state = logged_in && enabled ? Qt::Checked : Qt::Unchecked; + Qt::CheckState check_state = + logged_in && enabled ? Qt::Checked : Qt::Unchecked; Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable; - if (logged_in) - flags |= Qt::ItemIsUserCheckable; + if (logged_in) flags |= Qt::ItemIsUserCheckable; - if (set_checked_state) - item->setData(0, Qt::CheckStateRole, check_state); + if (set_checked_state) item->setData(0, Qt::CheckStateRole, check_state); item->setFlags(flags); if (logged_in) { @@ -127,16 +127,17 @@ void GlobalSearchSettingsPage::Save() { QStringList provider_order; - for (int i=0 ; isources->invisibleRootItem()->childCount() ; ++i) { + for (int i = 0; i < ui_->sources->invisibleRootItem()->childCount(); ++i) { const QTreeWidgetItem* item = ui_->sources->invisibleRootItem()->child(i); - const SearchProvider* provider = item->data(0, Qt::UserRole).value(); + const SearchProvider* provider = + item->data(0, Qt::UserRole).value(); provider_order << provider->id(); // Only save the enabled state for this provider if it's logged in. if (item->flags() & Qt::ItemIsUserCheckable) { s.setValue("enabled_" + provider->id(), - item->data(0, Qt::CheckStateRole).toInt() == Qt::Checked); + item->data(0, Qt::CheckStateRole).toInt() == Qt::Checked); } } @@ -145,26 +146,20 @@ void GlobalSearchSettingsPage::Save() { s.setValue("show_suggestions", ui_->show_suggestions->isChecked()); } -void GlobalSearchSettingsPage::MoveUp() { - MoveCurrentItem(-1); -} +void GlobalSearchSettingsPage::MoveUp() { MoveCurrentItem(-1); } -void GlobalSearchSettingsPage::MoveDown() { - MoveCurrentItem(+1); -} +void GlobalSearchSettingsPage::MoveDown() { MoveCurrentItem(+1); } void GlobalSearchSettingsPage::MoveCurrentItem(int d) { QTreeWidgetItem* item = ui_->sources->currentItem(); - if (!item) - return; + if (!item) return; QTreeWidgetItem* root = ui_->sources->invisibleRootItem(); const int row = root->indexOfChild(item); const int new_row = qBound(0, row + d, root->childCount()); - if (row == new_row) - return; + if (row == new_row) return; root->removeChild(item); root->insertChild(new_row, item); @@ -174,19 +169,19 @@ void GlobalSearchSettingsPage::MoveCurrentItem(int d) { void GlobalSearchSettingsPage::ConfigureProvider() { QTreeWidgetItem* item = ui_->sources->currentItem(); - if (!item) - return; + if (!item) return; - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); provider->ShowConfig(); } void GlobalSearchSettingsPage::CurrentProviderChanged(QTreeWidgetItem* item) { - if (!item) - return; + if (!item) return; QTreeWidgetItem* root = ui_->sources->invisibleRootItem(); - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); const int row = root->indexOfChild(item); ui_->up->setEnabled(row != 0); @@ -199,9 +194,8 @@ void GlobalSearchSettingsPage::showEvent(QShowEvent* e) { // Update the logged-in state of each item when we come back to this page in // the dialog. - for (int i = 0 ; i < ui_->sources->invisibleRootItem()->childCount() ; ++i) { + for (int i = 0; i < ui_->sources->invisibleRootItem()->childCount(); ++i) { UpdateLoggedInState(dialog()->global_search(), - ui_->sources->invisibleRootItem()->child(i), - false); + ui_->sources->invisibleRootItem()->child(i), false); } } diff --git a/src/globalsearch/globalsearchsettingspage.h b/src/globalsearch/globalsearchsettingspage.h index 0ef0c08aa..d656a9646 100644 --- a/src/globalsearch/globalsearchsettingspage.h +++ b/src/globalsearch/globalsearchsettingspage.h @@ -32,33 +32,33 @@ class QTreeWidgetItem; class GlobalSearchSettingsPage : public SettingsPage { Q_OBJECT -public: + public: GlobalSearchSettingsPage(SettingsDialog* dialog); ~GlobalSearchSettingsPage(); void Load(); void Save(); -protected: + protected: void showEvent(QShowEvent* e); -private slots: + private slots: void MoveUp(); void MoveDown(); void ConfigureProvider(); void CurrentProviderChanged(QTreeWidgetItem* item); -private: + private: void AddProviderItem(GlobalSearch* engine, SearchProvider* provider); void UpdateLoggedInState(GlobalSearch* engine, QTreeWidgetItem* item, bool set_checked_state); void MoveCurrentItem(int d); -private: + private: QScopedPointer ui_; QIcon warning_icon_; }; -#endif // GLOBALSEARCHSETTINGSPAGE_H +#endif // GLOBALSEARCHSETTINGSPAGE_H diff --git a/src/globalsearch/globalsearchsortmodel.cpp b/src/globalsearch/globalsearchsortmodel.cpp index 9e2758cdc..9a19899f4 100644 --- a/src/globalsearch/globalsearchsortmodel.cpp +++ b/src/globalsearch/globalsearchsortmodel.cpp @@ -21,49 +21,53 @@ #include "core/logging.h" GlobalSearchSortModel::GlobalSearchSortModel(QObject* parent) - : QSortFilterProxyModel(parent) -{ -} + : QSortFilterProxyModel(parent) {} -bool GlobalSearchSortModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { +bool GlobalSearchSortModel::lessThan(const QModelIndex& left, + const QModelIndex& right) const { // Compare the provider sort index first. - const int index_left = left.data(GlobalSearchModel::Role_ProviderIndex).toInt(); - const int index_right = right.data(GlobalSearchModel::Role_ProviderIndex).toInt(); + const int index_left = + left.data(GlobalSearchModel::Role_ProviderIndex).toInt(); + const int index_right = + right.data(GlobalSearchModel::Role_ProviderIndex).toInt(); if (index_left < index_right) return true; if (index_left > index_right) return false; // Dividers always go first - if (left.data(LibraryModel::Role_IsDivider).toBool()) return true; + if (left.data(LibraryModel::Role_IsDivider).toBool()) return true; if (right.data(LibraryModel::Role_IsDivider).toBool()) return false; // Containers go before songs if they're at the same level - const bool left_is_container = left.data(LibraryModel::Role_ContainerType).isValid(); - const bool right_is_container = right.data(LibraryModel::Role_ContainerType).isValid(); + const bool left_is_container = + left.data(LibraryModel::Role_ContainerType).isValid(); + const bool right_is_container = + right.data(LibraryModel::Role_ContainerType).isValid(); if (left_is_container && !right_is_container) return true; if (right_is_container && !left_is_container) return false; // Containers get sorted on their sort text. if (left_is_container) { return QString::localeAwareCompare( - left.data(LibraryModel::Role_SortText).toString(), - right.data(LibraryModel::Role_SortText).toString()) < 0; + left.data(LibraryModel::Role_SortText).toString(), + right.data(LibraryModel::Role_SortText).toString()) < 0; } // Otherwise we're comparing songs. Sort by disc, track, then title. - const SearchProvider::Result r1 = left.data(GlobalSearchModel::Role_Result) - .value(); + const SearchProvider::Result r1 = + left.data(GlobalSearchModel::Role_Result).value(); const SearchProvider::Result r2 = right.data(GlobalSearchModel::Role_Result) - .value(); + .value(); -#define CompareInt(field) \ +#define CompareInt(field) \ if (r1.metadata_.field() < r2.metadata_.field()) return true; \ if (r1.metadata_.field() > r2.metadata_.field()) return false int ret = 0; -#define CompareString(field) \ - ret = QString::localeAwareCompare(r1.metadata_.field(), r2.metadata_.field()); \ - if (ret < 0) return true; \ +#define CompareString(field) \ + ret = \ + QString::localeAwareCompare(r1.metadata_.field(), r2.metadata_.field()); \ + if (ret < 0) return true; \ if (ret > 0) return false CompareInt(disc); diff --git a/src/globalsearch/globalsearchsortmodel.h b/src/globalsearch/globalsearchsortmodel.h index b66de2f4e..19a5cedee 100644 --- a/src/globalsearch/globalsearchsortmodel.h +++ b/src/globalsearch/globalsearchsortmodel.h @@ -21,11 +21,11 @@ #include class GlobalSearchSortModel : public QSortFilterProxyModel { -public: + public: GlobalSearchSortModel(QObject* parent = 0); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; }; -#endif // GLOBALSEARCHSORTMODEL_H +#endif // GLOBALSEARCHSORTMODEL_H diff --git a/src/globalsearch/globalsearchview.cpp b/src/globalsearch/globalsearchview.cpp index 7314e588a..9302f2c33 100644 --- a/src/globalsearch/globalsearchview.cpp +++ b/src/globalsearch/globalsearchview.cpp @@ -48,25 +48,24 @@ const int GlobalSearchView::kMaxSuggestions = 10; const int GlobalSearchView::kUpdateSuggestionsTimeoutMsec = 60 * kMsecPerSec; GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) - : QWidget(parent), - app_(app), - engine_(app_->global_search()), - ui_(new Ui_GlobalSearchView), - context_menu_(nullptr), - last_search_id_(0), - front_model_(new GlobalSearchModel(engine_, this)), - back_model_(new GlobalSearchModel(engine_, this)), - current_model_(front_model_), - front_proxy_(new GlobalSearchSortModel(this)), - back_proxy_(new GlobalSearchSortModel(this)), - current_proxy_(front_proxy_), - swap_models_timer_(new QTimer(this)), - update_suggestions_timer_(new QTimer(this)), - search_icon_(IconLoader::Load("search")), - warning_icon_(IconLoader::Load("dialog-warning")), - show_providers_(true), - show_suggestions_(true) -{ + : QWidget(parent), + app_(app), + engine_(app_->global_search()), + ui_(new Ui_GlobalSearchView), + context_menu_(nullptr), + last_search_id_(0), + front_model_(new GlobalSearchModel(engine_, this)), + back_model_(new GlobalSearchModel(engine_, this)), + current_model_(front_model_), + front_proxy_(new GlobalSearchSortModel(this)), + back_proxy_(new GlobalSearchSortModel(this)), + current_proxy_(front_proxy_), + swap_models_timer_(new QTimer(this)), + update_suggestions_timer_(new QTimer(this)), + search_icon_(IconLoader::Load("search")), + warning_icon_(IconLoader::Load("dialog-warning")), + show_providers_(true), + show_suggestions_(true) { ui_->setupUi(this); front_model_->set_proxy(front_proxy_); @@ -78,11 +77,14 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) ui_->settings->setIcon(IconLoader::Load("configure")); // Must be a queued connection to ensure the GlobalSearch handles it first. - connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings()), Qt::QueuedConnection); + connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings()), + Qt::QueuedConnection); connect(ui_->search, SIGNAL(textChanged(QString)), SLOT(TextEdited(QString))); - connect(ui_->results, SIGNAL(AddToPlaylistSignal(QMimeData*)), SIGNAL(AddToPlaylist(QMimeData*))); - connect(ui_->results, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->results, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SIGNAL(AddToPlaylist(QMimeData*))); + connect(ui_->results, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); // Set the appearance of the results list ui_->results->setItemDelegate(new GlobalSearchItemDelegate(this)); @@ -101,15 +103,17 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) // Set the colour of the help text to the disabled text colour QPalette help_palette = ui_->help_text->palette(); - const QColor help_color = help_palette.color(QPalette::Disabled, QPalette::Text); + const QColor help_color = + help_palette.color(QPalette::Disabled, QPalette::Text); help_palette.setColor(QPalette::Normal, QPalette::Text, help_color); help_palette.setColor(QPalette::Inactive, QPalette::Text, help_color); ui_->help_text->setPalette(help_palette); // Create suggestion widgets - for (int i=0 ; iaddWidget(widget); suggestion_widgets_ << widget; } @@ -133,7 +137,8 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) connect(swap_models_timer_, SIGNAL(timeout()), SLOT(SwapModels())); update_suggestions_timer_->setInterval(kUpdateSuggestionsTimeoutMsec); - connect(update_suggestions_timer_, SIGNAL(timeout()), SLOT(UpdateSuggestions())); + connect(update_suggestions_timer_, SIGNAL(timeout()), + SLOT(UpdateSuggestions())); // Add actions to the settings menu group_by_actions_ = LibraryFilterWidget::CreateGroupByActions(this); @@ -141,41 +146,41 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) settings_menu->addActions(group_by_actions_->actions()); settings_menu->addSeparator(); settings_menu->addAction(IconLoader::Load("configure"), - tr("Configure global search..."), this, SLOT(OpenSettingsDialog())); + tr("Configure global search..."), this, + SLOT(OpenSettingsDialog())); ui_->settings->setMenu(settings_menu); - connect(group_by_actions_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*))); + connect(group_by_actions_, SIGNAL(triggered(QAction*)), + SLOT(GroupByClicked(QAction*))); // These have to be queued connections because they may get emitted before // our call to Search() (or whatever) returns and we add the ID to the map. - connect(engine_, SIGNAL(ResultsAvailable(int,SearchProvider::ResultList)), - SLOT(AddResults(int,SearchProvider::ResultList)), - Qt::QueuedConnection); - connect(engine_, SIGNAL(ArtLoaded(int,QPixmap)), SLOT(ArtLoaded(int,QPixmap)), + connect(engine_, SIGNAL(ResultsAvailable(int, SearchProvider::ResultList)), + SLOT(AddResults(int, SearchProvider::ResultList)), Qt::QueuedConnection); + connect(engine_, SIGNAL(ArtLoaded(int, QPixmap)), + SLOT(ArtLoaded(int, QPixmap)), Qt::QueuedConnection); } -GlobalSearchView::~GlobalSearchView() { - delete ui_; -} +GlobalSearchView::~GlobalSearchView() { delete ui_; } namespace { - bool CompareProvider(const QStringList& provider_order, - SearchProvider* left, SearchProvider* right) { - const int left_index = provider_order.indexOf(left->id()); - const int right_index = provider_order.indexOf(right->id()); - if (left_index == -1 && right_index == -1) { - // None are in our provider list: compare name instead - return left->name() < right->name(); - } else if (left_index == -1) { - // Left provider not in provider list - return false; - } else if (right_index == -1) { - // Right provider not in provider list - return true; - } - return left_index < right_index; +bool CompareProvider(const QStringList& provider_order, SearchProvider* left, + SearchProvider* right) { + const int left_index = provider_order.indexOf(left->id()); + const int right_index = provider_order.indexOf(right->id()); + if (left_index == -1 && right_index == -1) { + // None are in our provider list: compare name instead + return left->name() < right->name(); + } else if (left_index == -1) { + // Left provider not in provider list + return false; + } else if (right_index == -1) { + // Right provider not in provider list + return true; } + return left_index < right_index; +} } void GlobalSearchView::ReloadSettings() { @@ -197,9 +202,12 @@ void GlobalSearchView::ReloadSettings() { show_providers_ = s.value("show_providers", true).toBool(); show_suggestions_ = s.value("show_suggestions", true).toBool(); SetGroupBy(LibraryModel::Grouping( - LibraryModel::GroupBy(s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), - LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), - LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); + LibraryModel::GroupBy( + s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), + LibraryModel::GroupBy( + s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), + LibraryModel::GroupBy( + s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); s.endGroup(); // Delete any old status widgets @@ -217,7 +225,7 @@ void GlobalSearchView::ReloadSettings() { bool any_disabled = false; - foreach (SearchProvider* provider, providers) { + foreach(SearchProvider * provider, providers) { QWidget* parent = ui_->enabled_list; if (!engine_->is_provider_usable(provider)) { parent = ui_->disabled_list; @@ -243,12 +251,12 @@ void GlobalSearchView::ReloadSettings() { void GlobalSearchView::UpdateSuggestions() { const QStringList suggestions = engine_->GetSuggestions(kMaxSuggestions); - for (int i=0 ; iSetText(suggestions[i]); suggestion_widgets_[i]->show(); } - for (int i=suggestions.count() ; ihide(); } } @@ -281,9 +289,9 @@ void GlobalSearchView::TextEdited(const QString& text) { } } -void GlobalSearchView::AddResults(int id, const SearchProvider::ResultList& results) { - if (id != last_search_id_ || results.isEmpty()) - return; +void GlobalSearchView::AddResults(int id, + const SearchProvider::ResultList& results) { + if (id != last_search_id_ || results.isEmpty()) return; current_model_->AddResults(results); } @@ -320,7 +328,7 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { // Is this an album? const LibraryModel::GroupBy container_type = LibraryModel::GroupBy( - proxy_index.data(LibraryModel::Role_ContainerType).toInt()); + proxy_index.data(LibraryModel::Role_ContainerType).toInt()); if (container_type != LibraryModel::GroupBy_Album && container_type != LibraryModel::GroupBy_AlbumArtist && container_type != LibraryModel::GroupBy_YearAlbum) { @@ -339,7 +347,8 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { // Get the track's Result const SearchProvider::Result result = - item->data(GlobalSearchModel::Role_Result).value(); + item->data(GlobalSearchModel::Role_Result) + .value(); // Load the art. int id = engine_->LoadArtAsync(result); @@ -347,8 +356,7 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { } void GlobalSearchView::ArtLoaded(int id, const QPixmap& pixmap) { - if (!art_requests_.contains(id)) - return; + if (!art_requests_.contains(id)) return; QModelIndex index = art_requests_.take(id); if (!pixmap.isNull()) { @@ -357,15 +365,14 @@ void GlobalSearchView::ArtLoaded(int id, const QPixmap& pixmap) { } MimeData* GlobalSearchView::SelectedMimeData() { - if (!ui_->results->selectionModel()) - return nullptr; + if (!ui_->results->selectionModel()) return nullptr; // Get all selected model indexes QModelIndexList indexes = ui_->results->selectionModel()->selectedRows(); if (indexes.isEmpty()) { // There's nothing selected - take the first thing in the model that isn't // a divider. - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < front_proxy_->rowCount(); ++i) { QModelIndex index = front_proxy_->index(i, 0); if (!index.data(LibraryModel::Role_IsDivider).toBool()) { indexes << index; @@ -382,7 +389,7 @@ MimeData* GlobalSearchView::SelectedMimeData() { // Get items for these indexes QList items; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { items << (front_model_->itemFromIndex(front_proxy_->mapToSource(index))); } @@ -395,7 +402,8 @@ bool GlobalSearchView::eventFilter(QObject* object, QEvent* event) { if (SearchKeyEvent(static_cast(event))) { return true; } - } else if (object == ui_->results_stack && event->type() == QEvent::ContextMenu) { + } else if (object == ui_->results_stack && + event->type() == QEvent::ContextMenu) { if (ResultsContextMenuEvent(static_cast(event))) { return true; } @@ -406,24 +414,24 @@ bool GlobalSearchView::eventFilter(QObject* object, QEvent* event) { bool GlobalSearchView::SearchKeyEvent(QKeyEvent* event) { switch (event->key()) { - case Qt::Key_Up: - ui_->results->UpAndFocus(); - break; + case Qt::Key_Up: + ui_->results->UpAndFocus(); + break; - case Qt::Key_Down: - ui_->results->DownAndFocus(); - break; + case Qt::Key_Down: + ui_->results->DownAndFocus(); + break; - case Qt::Key_Escape: - ui_->search->clear(); - break; + case Qt::Key_Escape: + ui_->search->clear(); + break; - case Qt::Key_Return: - AddSelectedToPlaylist(); - break; + case Qt::Key_Return: + AddSelectedToPlaylist(); + break; - default: - return false; + default: + return false; } event->accept(); @@ -433,28 +441,37 @@ bool GlobalSearchView::SearchKeyEvent(QKeyEvent* event) { bool GlobalSearchView::ResultsContextMenuEvent(QContextMenuEvent* event) { if (!context_menu_) { context_menu_ = new QMenu(this); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Append to current playlist"), this, SLOT(AddSelectedToPlaylist())); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Replace current playlist"), this, SLOT(LoadSelected())); - context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenSelectedInNewPlaylist())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("media-playback-start"), + tr("Append to current playlist"), this, + SLOT(AddSelectedToPlaylist())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("media-playback-start"), + tr("Replace current playlist"), this, + SLOT(LoadSelected())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("document-new"), + tr("Open in new playlist"), this, + SLOT(OpenSelectedInNewPlaylist())); context_menu_->addSeparator(); - context_actions_ << context_menu_->addAction(IconLoader::Load("go-next"), - tr("Queue track"), this, SLOT(AddSelectedToPlaylistEnqueue())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("go-next"), tr("Queue track"), + this, SLOT(AddSelectedToPlaylistEnqueue())); context_menu_->addSeparator(); - context_menu_->addMenu(tr("Group by"))->addActions(group_by_actions_->actions()); + context_menu_->addMenu(tr("Group by")) + ->addActions(group_by_actions_->actions()); context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure global search..."), this, SLOT(OpenSettingsDialog())); + tr("Configure global search..."), this, + SLOT(OpenSettingsDialog())); } const bool enable_context_actions = ui_->results->selectionModel() && ui_->results->selectionModel()->hasSelection(); - foreach (QAction* action, context_actions_) { + foreach(QAction * action, context_actions_) { action->setEnabled(enable_context_actions); } @@ -469,8 +486,7 @@ void GlobalSearchView::AddSelectedToPlaylist() { void GlobalSearchView::LoadSelected() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->clear_first_ = true; emit AddToPlaylist(data); @@ -478,8 +494,7 @@ void GlobalSearchView::LoadSelected() { void GlobalSearchView::AddSelectedToPlaylistEnqueue() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->enqueue_now_ = true; emit AddToPlaylist(data); @@ -487,8 +502,7 @@ void GlobalSearchView::AddSelectedToPlaylistEnqueue() { void GlobalSearchView::OpenSelectedInNewPlaylist() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->open_in_new_playlist_ = true; emit AddToPlaylist(data); @@ -551,9 +565,8 @@ void GlobalSearchView::SetGroupBy(const LibraryModel::Grouping& g) { s.setValue("group_by3", int(g.third)); // Make sure the correct action is checked. - foreach (QAction* action, group_by_actions_->actions()) { - if (action->property("group_by").isNull()) - continue; + foreach(QAction * action, group_by_actions_->actions()) { + if (action->property("group_by").isNull()) continue; if (g == action->property("group_by").value()) { action->setChecked(true); diff --git a/src/globalsearch/globalsearchview.h b/src/globalsearch/globalsearchview.h index 6a0e963c8..41d9d0186 100644 --- a/src/globalsearch/globalsearchview.h +++ b/src/globalsearch/globalsearchview.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -39,8 +39,8 @@ class QStandardItemModel; class GlobalSearchView : public QWidget { Q_OBJECT - -public: + + public: GlobalSearchView(Application* app, QWidget* parent = 0); ~GlobalSearchView(); @@ -58,7 +58,7 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void ReloadSettings(); void StartSearch(const QString& query); void FocusSearchField(); @@ -67,7 +67,7 @@ public slots: signals: void AddToPlaylist(QMimeData* data); -private slots: + private slots: void UpdateSuggestions(); void SwapModels(); @@ -85,13 +85,13 @@ private slots: void GroupByClicked(QAction* action); void SetGroupBy(const LibraryModel::Grouping& grouping); -private: + private: MimeData* SelectedMimeData(); bool SearchKeyEvent(QKeyEvent* event); bool ResultsContextMenuEvent(QContextMenuEvent* event); - -private: + + private: Application* app_; GlobalSearch* engine_; Ui_GlobalSearchView* ui_; @@ -125,9 +125,9 @@ private: QIcon search_icon_; QIcon warning_icon_; - + bool show_providers_; bool show_suggestions_; }; -#endif // GLOBALSEARCHVIEW_H +#endif // GLOBALSEARCHVIEW_H diff --git a/src/globalsearch/groovesharksearchprovider.cpp b/src/globalsearch/groovesharksearchprovider.cpp index 2c1ee44ee..24b9206fd 100644 --- a/src/globalsearch/groovesharksearchprovider.cpp +++ b/src/globalsearch/groovesharksearchprovider.cpp @@ -24,17 +24,15 @@ #include "covers/albumcoverloader.h" #include "internet/groovesharkservice.h" -GroovesharkSearchProvider::GroovesharkSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - service_(nullptr) -{ -} +GroovesharkSearchProvider::GroovesharkSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent), service_(nullptr) {} void GroovesharkSearchProvider::Init(GroovesharkService* service) { service_ = service; - SearchProvider::Init("Grooveshark", "grooveshark", - QIcon(":providers/grooveshark.png"), - WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); + SearchProvider::Init( + "Grooveshark", "grooveshark", QIcon(":providers/grooveshark.png"), + WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); connect(service_, SIGNAL(SimpleSearchResults(int, SongList)), SLOT(SearchDone(int, SongList))); @@ -47,14 +45,14 @@ void GroovesharkSearchProvider::Init(GroovesharkService* service) { cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64, QImage)), + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), SLOT(AlbumArtLoaded(quint64, QImage))); } void GroovesharkSearchProvider::SearchAsync(int id, const QString& query) { const int service_id = service_->SimpleSearch(query); - pending_searches_[service_id] = PendingState(id, TokenizeQuery(query));; + pending_searches_[service_id] = PendingState(id, TokenizeQuery(query)); + ; const int album_id = service_->SearchAlbums(query); pending_searches_[album_id] = PendingState(id, TokenizeQuery(query)); @@ -66,7 +64,7 @@ void GroovesharkSearchProvider::SearchDone(int id, const SongList& songs) { const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { Result result(this); result.metadata_ = song; @@ -77,7 +75,8 @@ void GroovesharkSearchProvider::SearchDone(int id, const SongList& songs) { MaybeSearchFinished(global_search_id); } -void GroovesharkSearchProvider::AlbumSearchResult(int id, const QList& albums_ids) { +void GroovesharkSearchProvider::AlbumSearchResult( + int id, const QList& albums_ids) { // Map back to the original id. const PendingState state = pending_searches_.take(id); const int global_search_id = state.orig_id_; @@ -85,10 +84,9 @@ void GroovesharkSearchProvider::AlbumSearchResult(int id, const QList& MaybeSearchFinished(global_search_id); return; } - foreach (const quint64 album_id, albums_ids) { + foreach(const quint64 album_id, albums_ids) { pending_searches_[album_id] = PendingState(global_search_id, QStringList()); } - } void GroovesharkSearchProvider::MaybeSearchFinished(int id) { @@ -97,14 +95,14 @@ void GroovesharkSearchProvider::MaybeSearchFinished(int id) { } } - void GroovesharkSearchProvider::LoadArtAsync(int id, const Result& result) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } -void GroovesharkSearchProvider::AlbumArtLoaded(quint64 id, const QImage& image) { +void GroovesharkSearchProvider::AlbumArtLoaded(quint64 id, + const QImage& image) { if (!cover_loader_tasks_.contains(id)) { return; } @@ -116,15 +114,14 @@ bool GroovesharkSearchProvider::IsLoggedIn() { return (service_ && service_->IsLoggedIn()); } -void GroovesharkSearchProvider::ShowConfig() { - service_->ShowConfig(); -} +void GroovesharkSearchProvider::ShowConfig() { service_->ShowConfig(); } -void GroovesharkSearchProvider::AlbumSongsLoaded(quint64 id, const SongList& songs) { +void GroovesharkSearchProvider::AlbumSongsLoaded(quint64 id, + const SongList& songs) { const PendingState state = pending_searches_.take(id); const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& s, songs) { + foreach(const Song & s, songs) { Result result(this); result.metadata_ = s; ret << result; diff --git a/src/globalsearch/icecastsearchprovider.cpp b/src/globalsearch/icecastsearchprovider.cpp index ace22a63e..a0ad688e7 100644 --- a/src/globalsearch/icecastsearchprovider.cpp +++ b/src/globalsearch/icecastsearchprovider.cpp @@ -20,19 +20,18 @@ IcecastSearchProvider::IcecastSearchProvider(IcecastBackend* backend, Application* app, QObject* parent) - : BlockingSearchProvider(app, parent), - backend_(backend) -{ - Init("Icecast", "icecast", QIcon(":last.fm/icon_radio.png"), DisabledByDefault); + : BlockingSearchProvider(app, parent), backend_(backend) { + Init("Icecast", "icecast", QIcon(":last.fm/icon_radio.png"), + DisabledByDefault); } -SearchProvider::ResultList IcecastSearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList IcecastSearchProvider::Search(int id, + const QString& query) { IcecastBackend::StationList stations = backend_->GetStations(query); ResultList ret; - foreach (const IcecastBackend::Station& station, stations) { - if (ret.count() > 3) - break; + foreach(const IcecastBackend::Station & station, stations) { + if (ret.count() > 3) break; Result result(this); result.group_automatically_ = false; diff --git a/src/globalsearch/icecastsearchprovider.h b/src/globalsearch/icecastsearchprovider.h index c9b3a775e..f8350dbcb 100644 --- a/src/globalsearch/icecastsearchprovider.h +++ b/src/globalsearch/icecastsearchprovider.h @@ -22,15 +22,15 @@ class IcecastBackend; - class IcecastSearchProvider : public BlockingSearchProvider { -public: - IcecastSearchProvider(IcecastBackend* backend, Application* app, QObject* parent); + public: + IcecastSearchProvider(IcecastBackend* backend, Application* app, + QObject* parent); ResultList Search(int id, const QString& query); -private: + private: IcecastBackend* backend_; }; -#endif // ICECASTSEARCHPROVIDER_H +#endif // ICECASTSEARCHPROVIDER_H diff --git a/src/globalsearch/lastfmsearchprovider.cpp b/src/globalsearch/lastfmsearchprovider.cpp index 200814710..4634918aa 100644 --- a/src/globalsearch/lastfmsearchprovider.cpp +++ b/src/globalsearch/lastfmsearchprovider.cpp @@ -19,24 +19,22 @@ #include "core/logging.h" #include "internet/lastfmservice.h" - LastFMSearchProvider::LastFMSearchProvider(LastFMService* service, Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) { + : SimpleSearchProvider(app, parent), service_(service) { Init("Last.fm", "lastfm", QIcon(":last.fm/as.png"), CanShowConfig | CanGiveSuggestions); icon_ = ScaleAndPad(QImage(":last.fm/as.png")); - set_safe_words(QStringList() << "lastfm" << "last.fm"); + set_safe_words(QStringList() << "lastfm" + << "last.fm"); set_max_suggestion_count(3); connect(service, SIGNAL(SavedItemsChanged()), SLOT(MaybeRecreateItems())); // Load the friends list on startup only if it doesn't involve going to update // info from the server. - if (!service_->IsFriendsListStale()) - RecreateItems(); + if (!service_->IsFriendsListStale()) RecreateItems(); } void LastFMSearchProvider::LoadArtAsync(int id, const Result& result) { @@ -52,8 +50,8 @@ void LastFMSearchProvider::RecreateItems() { QUrl("lastfm://user/USERNAME/recommended"), "recommended"); items << Item(tr("My Last.fm Library"), QUrl("lastfm://user/USERNAME/library"), "radio"); - items << Item(tr("My Last.fm Mix Radio"), - QUrl("lastfm://user/USERNAME/mix"), "mix"); + items << Item(tr("My Last.fm Mix Radio"), QUrl("lastfm://user/USERNAME/mix"), + "mix"); items << Item(tr("My Last.fm Neighborhood"), QUrl("lastfm://user/USERNAME/neighbours"), "neighborhood"); @@ -61,17 +59,17 @@ void LastFMSearchProvider::RecreateItems() { const QStringList tags = service_->SavedTagRadioNames(); const QStringList friends = service_->FriendNames(); - foreach (const QString& name, artists) { + foreach(const QString & name, artists) { items << Item(tr(LastFMService::kTitleArtist).arg(name), QUrl(QString(LastFMService::kUrlArtist).arg(name)), name); } - foreach (const QString& name, tags) { + foreach(const QString & name, tags) { items << Item(tr(LastFMService::kTitleTag).arg(name), QUrl(QString(LastFMService::kUrlTag).arg(name)), name); } - foreach (const QString& name, friends) { + foreach(const QString & name, friends) { items << Item(tr("Last.fm Radio Station - %1").arg(name), QUrl("lastfm://user/" + name + "/library"), name); items << Item(tr("Last.fm Mix Radio - %1").arg(name), @@ -83,10 +81,6 @@ void LastFMSearchProvider::RecreateItems() { SetItems(items); } -bool LastFMSearchProvider::IsLoggedIn() { - return service_->IsAuthenticated(); -} +bool LastFMSearchProvider::IsLoggedIn() { return service_->IsAuthenticated(); } -void LastFMSearchProvider::ShowConfig() { - service_->ShowConfig(); -} +void LastFMSearchProvider::ShowConfig() { service_->ShowConfig(); } diff --git a/src/globalsearch/lastfmsearchprovider.h b/src/globalsearch/lastfmsearchprovider.h index 849bb1a0f..a71d01584 100644 --- a/src/globalsearch/lastfmsearchprovider.h +++ b/src/globalsearch/lastfmsearchprovider.h @@ -23,20 +23,21 @@ class LastFMService; class LastFMSearchProvider : public SimpleSearchProvider { -public: - LastFMSearchProvider(LastFMService* service, Application* app, QObject* parent); + public: + LastFMSearchProvider(LastFMService* service, Application* app, + QObject* parent); void LoadArtAsync(int id, const Result& result); bool IsLoggedIn(); void ShowConfig(); -protected: + protected: void RecreateItems(); -private: + private: LastFMService* service_; QImage icon_; }; -#endif // LASTFMSEARCHPROVIDER_H +#endif // LASTFMSEARCHPROVIDER_H diff --git a/src/globalsearch/librarysearchprovider.cpp b/src/globalsearch/librarysearchprovider.cpp index de4a376d6..d1b3e787c 100644 --- a/src/globalsearch/librarysearchprovider.cpp +++ b/src/globalsearch/librarysearchprovider.cpp @@ -25,19 +25,15 @@ #include - LibrarySearchProvider::LibrarySearchProvider(LibraryBackendInterface* backend, const QString& name, const QString& id, const QIcon& icon, bool enabled_by_default, - Application* app, - QObject* parent) - : BlockingSearchProvider(app, parent), - backend_(backend) -{ - Hints hints = WantsSerialisedArtQueries | ArtIsInSongMetadata | - CanGiveSuggestions; + Application* app, QObject* parent) + : BlockingSearchProvider(app, parent), backend_(backend) { + Hints hints = + WantsSerialisedArtQueries | ArtIsInSongMetadata | CanGiveSuggestions; if (!enabled_by_default) { hints |= DisabledByDefault; @@ -46,7 +42,8 @@ LibrarySearchProvider::LibrarySearchProvider(LibraryBackendInterface* backend, Init(name, id, icon, hints); } -SearchProvider::ResultList LibrarySearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList LibrarySearchProvider::Search(int id, + const QString& query) { QueryOptions options; options.set_filter(query); @@ -94,7 +91,7 @@ QStringList LibrarySearchProvider::GetSuggestions(int count) { const int largest_rowid = q.Value(0).toInt(); - for (int attempt=0 ; attempt= count) { break; } @@ -110,7 +107,7 @@ QStringList LibrarySearchProvider::GetSuggestions(int count) { } const QString artist = q.Value(0).toString(); - const QString album = q.Value(1).toString(); + const QString album = q.Value(1).toString(); if (!artist.isEmpty() && !album.isEmpty()) ret << ((qrand() % 2 == 0) ? artist : album); diff --git a/src/globalsearch/librarysearchprovider.h b/src/globalsearch/librarysearchprovider.h index 2eb07f8a4..389845029 100644 --- a/src/globalsearch/librarysearchprovider.h +++ b/src/globalsearch/librarysearchprovider.h @@ -22,20 +22,19 @@ class LibraryBackendInterface; - class LibrarySearchProvider : public BlockingSearchProvider { -public: + public: LibrarySearchProvider(LibraryBackendInterface* backend, const QString& name, const QString& id, const QIcon& icon, - bool enabled_by_default, - Application* app, QObject* parent = 0); + bool enabled_by_default, Application* app, + QObject* parent = 0); ResultList Search(int id, const QString& query); MimeData* LoadTracks(const ResultList& results); QStringList GetSuggestions(int count); -private: + private: LibraryBackendInterface* backend_; }; -#endif // LIBRARYSEARCHPROVIDER_H +#endif // LIBRARYSEARCHPROVIDER_H diff --git a/src/globalsearch/savedradiosearchprovider.cpp b/src/globalsearch/savedradiosearchprovider.cpp index 5dd052dc2..8c1590442 100644 --- a/src/globalsearch/savedradiosearchprovider.cpp +++ b/src/globalsearch/savedradiosearchprovider.cpp @@ -21,12 +21,11 @@ #include "ui/iconloader.h" SavedRadioSearchProvider::SavedRadioSearchProvider(SavedRadio* service, - Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ - Init(tr("Your radio streams"), "savedradio", IconLoader::Load("document-open-remote"), - MimeDataContainsUrlsOnly); + Application* app, + QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { + Init(tr("Your radio streams"), "savedradio", + IconLoader::Load("document-open-remote"), MimeDataContainsUrlsOnly); set_max_suggestion_count(3); @@ -38,7 +37,7 @@ SavedRadioSearchProvider::SavedRadioSearchProvider(SavedRadio* service, void SavedRadioSearchProvider::RecreateItems() { QList items; - foreach (const SavedRadio::Stream& stream, service_->Streams()) { + foreach(const SavedRadio::Stream & stream, service_->Streams()) { Item item; item.metadata_.set_title(stream.name_); item.metadata_.set_url(stream.url_); diff --git a/src/globalsearch/savedradiosearchprovider.h b/src/globalsearch/savedradiosearchprovider.h index d6bb793c6..a4e43c87a 100644 --- a/src/globalsearch/savedradiosearchprovider.h +++ b/src/globalsearch/savedradiosearchprovider.h @@ -23,14 +23,15 @@ class SavedRadio; class SavedRadioSearchProvider : public SimpleSearchProvider { -public: - SavedRadioSearchProvider(SavedRadio* service, Application* app, QObject* parent); + public: + SavedRadioSearchProvider(SavedRadio* service, Application* app, + QObject* parent); -protected: + protected: void RecreateItems(); -private: + private: SavedRadio* service_; }; -#endif // SAVEDRADIOSEARCHPROVIDER_H +#endif // SAVEDRADIOSEARCHPROVIDER_H diff --git a/src/globalsearch/searchprovider.cpp b/src/globalsearch/searchprovider.cpp index 428355234..4398251f9 100644 --- a/src/globalsearch/searchprovider.cpp +++ b/src/globalsearch/searchprovider.cpp @@ -26,13 +26,8 @@ const int SearchProvider::kArtHeight = 32; - SearchProvider::SearchProvider(Application* app, QObject* parent) - : QObject(parent), - app_(app), - hints_(0) -{ -} + : QObject(parent), app_(app), hints_(0) {} void SearchProvider::Init(const QString& name, const QString& id, const QIcon& icon, Hints hints) { @@ -45,7 +40,7 @@ void SearchProvider::Init(const QString& name, const QString& id, QStringList SearchProvider::TokenizeQuery(const QString& query) { QStringList tokens(query.split(QRegExp("\\s+"))); - for (QStringList::iterator it = tokens.begin() ; it != tokens.end() ; ++it) { + for (QStringList::iterator it = tokens.begin(); it != tokens.end(); ++it) { (*it).remove('('); (*it).remove(')'); (*it).remove('"'); @@ -60,7 +55,7 @@ QStringList SearchProvider::TokenizeQuery(const QString& query) { } bool SearchProvider::Matches(const QStringList& tokens, const QString& string) { - foreach (const QString& token, tokens) { + foreach(const QString & token, tokens) { if (!string.contains(token, Qt::CaseInsensitive)) { return false; } @@ -69,13 +64,13 @@ bool SearchProvider::Matches(const QStringList& tokens, const QString& string) { return true; } -BlockingSearchProvider::BlockingSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent) { -} +BlockingSearchProvider::BlockingSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent) {} void BlockingSearchProvider::SearchAsync(int id, const QString& query) { - QFuture future = QtConcurrent::run( - this, &BlockingSearchProvider::Search, id, query); + QFuture future = + QtConcurrent::run(this, &BlockingSearchProvider::Search, id, query); BoundFutureWatcher* watcher = new BoundFutureWatcher(id); @@ -94,21 +89,19 @@ void BlockingSearchProvider::BlockingSearchFinished() { } QImage SearchProvider::ScaleAndPad(const QImage& image) { - if (image.isNull()) - return QImage(); + if (image.isNull()) return QImage(); const QSize target_size = QSize(kArtHeight, kArtHeight); - if (image.size() == target_size) - return image; + if (image.size() == target_size) return image; // Scale the image down QImage copy; - copy = image.scaled(target_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); + copy = + image.scaled(target_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); // Pad the image to kHeight x kHeight - if (copy.size() == target_size) - return copy; + if (copy.size() == target_size) return copy; QImage padded_image(kArtHeight, kArtHeight, QImage::Format_ARGB32); padded_image.fill(0); @@ -132,12 +125,11 @@ MimeData* SearchProvider::LoadTracks(const ResultList& results) { mime_data = new MimeData; } else { SongList songs; - foreach (const Result& result, results) { - songs << result.metadata_; - } + foreach(const Result & result, results) { songs << result.metadata_; } if (internet_service()) { - InternetSongMimeData* internet_song_mime_data = new InternetSongMimeData(internet_service()); + InternetSongMimeData* internet_song_mime_data = + new InternetSongMimeData(internet_service()); internet_song_mime_data->songs = songs; mime_data = internet_song_mime_data; } else { @@ -148,9 +140,7 @@ MimeData* SearchProvider::LoadTracks(const ResultList& results) { } QList urls; - foreach (const Result& result, results) { - urls << result.metadata_.url(); - } + foreach(const Result & result, results) { urls << result.metadata_.url(); } mime_data->setUrls(urls); return mime_data; diff --git a/src/globalsearch/searchprovider.h b/src/globalsearch/searchprovider.h index dd22186a7..92f6d387d 100644 --- a/src/globalsearch/searchprovider.h +++ b/src/globalsearch/searchprovider.h @@ -28,18 +28,17 @@ class Application; class InternetService; class MimeData; - class SearchProvider : public QObject { Q_OBJECT -public: + public: SearchProvider(Application* app, QObject* parent = 0); static const int kArtHeight; struct Result { Result(SearchProvider* provider = 0) - : provider_(provider), group_automatically_(true) {} + : provider_(provider), group_automatically_(true) {} // This must be set by the provider using the constructor. SearchProvider* provider_; @@ -108,14 +107,18 @@ public: Hints hints() const { return hints_; } bool wants_delayed_queries() const { return hints() & WantsDelayedQueries; } - bool wants_serialised_art() const { return hints() & WantsSerialisedArtQueries; } + bool wants_serialised_art() const { + return hints() & WantsSerialisedArtQueries; + } bool art_is_probably_remote() const { return hints() & ArtIsProbablyRemote; } bool art_is_in_song_metadata() const { return hints() & ArtIsInSongMetadata; } bool can_show_config() const { return hints() & CanShowConfig; } bool can_give_suggestions() const { return hints() & CanGiveSuggestions; } bool is_disabled_by_default() const { return hints() & DisabledByDefault; } bool is_enabled_by_default() const { return !is_disabled_by_default(); } - bool mime_data_contains_urls_only() const { return hints() & MimeDataContainsUrlsOnly; } + bool mime_data_contains_urls_only() const { + return hints() & MimeDataContainsUrlsOnly; + } // Starts a search. Must emit ResultsAvailable zero or more times and then // SearchFinished exactly once, using this ID. @@ -138,7 +141,7 @@ public: // If provider needs user login to search and play songs, this method should // be reimplemented virtual bool IsLoggedIn() { return true; } - virtual void ShowConfig() { } // Remember to set the CanShowConfig hint + virtual void ShowConfig() {} // Remember to set the CanShowConfig hint // Returns the Internet service in charge of this provider, or NULL if there // is none virtual InternetService* internet_service() { return NULL; } @@ -151,7 +154,7 @@ signals: void ArtLoaded(int id, const QImage& image); -protected: + protected: // These functions treat queries in the same way as LibraryQuery. They're // useful for figuring out whether you got a result because it matched in // the song title or the artist/album name. @@ -165,9 +168,7 @@ protected: struct PendingState { PendingState() : orig_id_(-1) {} PendingState(int orig_id, QStringList tokens) - : orig_id_(orig_id), - tokens_(tokens) { - } + : orig_id_(orig_id), tokens_(tokens) {} int orig_id_; QStringList tokens_; @@ -180,10 +181,10 @@ protected: } }; -protected: + protected: Application* app_; -private: + private: QString name_; QString id_; QIcon icon_; @@ -194,20 +195,19 @@ Q_DECLARE_METATYPE(SearchProvider::Result) Q_DECLARE_METATYPE(SearchProvider::ResultList) Q_DECLARE_OPERATORS_FOR_FLAGS(SearchProvider::Hints) - class BlockingSearchProvider : public SearchProvider { Q_OBJECT -public: + public: BlockingSearchProvider(Application* app, QObject* parent = 0); void SearchAsync(int id, const QString& query); virtual ResultList Search(int id, const QString& query) = 0; -private slots: + private slots: void BlockingSearchFinished(); }; Q_DECLARE_METATYPE(SearchProvider*) -#endif // SEARCHPROVIDER_H +#endif // SEARCHPROVIDER_H diff --git a/src/globalsearch/searchproviderstatuswidget.cpp b/src/globalsearch/searchproviderstatuswidget.cpp index d4f2d069c..8bb25738d 100644 --- a/src/globalsearch/searchproviderstatuswidget.cpp +++ b/src/globalsearch/searchproviderstatuswidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,14 +25,12 @@ #include SearchProviderStatusWidget::SearchProviderStatusWidget( - const QIcon& warning_icon, - GlobalSearch* engine, SearchProvider* provider, + const QIcon& warning_icon, GlobalSearch* engine, SearchProvider* provider, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SearchProviderStatusWidget), - engine_(engine), - provider_(provider) -{ + : QWidget(parent), + ui_(new Ui_SearchProviderStatusWidget), + engine_(engine), + provider_(provider) { ui_->setupUi(this); ui_->icon->setPixmap(provider->icon().pixmap(16)); @@ -44,23 +42,23 @@ SearchProviderStatusWidget::SearchProviderStatusWidget( if (enabled && logged_in) { ui_->disabled_group->hide(); } else { - const QString disabled_text = tr("Disabled", "Refers to search provider's status."); + const QString disabled_text = + tr("Disabled", "Refers to search provider's status."); const QString not_logged_in_text = tr("Not logged in"); - const int disabled_width = fontMetrics().width(" ") + qMax( - fontMetrics().width(disabled_text), - fontMetrics().width(not_logged_in_text)); + const int disabled_width = fontMetrics().width(" ") + + qMax(fontMetrics().width(disabled_text), + fontMetrics().width(not_logged_in_text)); ui_->disabled_reason->setMinimumWidth(disabled_width); - ui_->disabled_reason->setText(logged_in ? disabled_text : not_logged_in_text); + ui_->disabled_reason->setText(logged_in ? disabled_text + : not_logged_in_text); ui_->disabled_icon->setPixmap(warning_icon.pixmap(16)); ui_->disabled_reason->installEventFilter(this); } } -SearchProviderStatusWidget::~SearchProviderStatusWidget() { - delete ui_; -} +SearchProviderStatusWidget::~SearchProviderStatusWidget() { delete ui_; } bool SearchProviderStatusWidget::eventFilter(QObject* object, QEvent* event) { if (object != ui_->disabled_reason) { @@ -70,30 +68,31 @@ bool SearchProviderStatusWidget::eventFilter(QObject* object, QEvent* event) { QFont font(ui_->disabled_reason->font()); switch (event->type()) { - case QEvent::Enter: - font.setUnderline(true); - ui_->disabled_reason->setFont(font); - break; + case QEvent::Enter: + font.setUnderline(true); + ui_->disabled_reason->setFont(font); + break; - case QEvent::Leave: - font.setUnderline(false); - ui_->disabled_reason->setFont(font); - break; + case QEvent::Leave: + font.setUnderline(false); + ui_->disabled_reason->setFont(font); + break; - case QEvent::MouseButtonRelease: { - QMouseEvent* e = static_cast(event); - if (e->button() == Qt::LeftButton) { - if (!provider_->IsLoggedIn()) { - provider_->ShowConfig(); - } else { - engine_->application()->OpenSettingsDialogAtPage(SettingsDialog::Page_GlobalSearch); + case QEvent::MouseButtonRelease: { + QMouseEvent* e = static_cast(event); + if (e->button() == Qt::LeftButton) { + if (!provider_->IsLoggedIn()) { + provider_->ShowConfig(); + } else { + engine_->application()->OpenSettingsDialogAtPage( + SettingsDialog::Page_GlobalSearch); + } } + break; } - break; - } - default: - return false; + default: + return false; } return true; diff --git a/src/globalsearch/searchproviderstatuswidget.h b/src/globalsearch/searchproviderstatuswidget.h index a16cbd1ce..3bf871d2a 100644 --- a/src/globalsearch/searchproviderstatuswidget.h +++ b/src/globalsearch/searchproviderstatuswidget.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,19 +25,18 @@ class SearchProvider; class Ui_SearchProviderStatusWidget; class SearchProviderStatusWidget : public QWidget { -public: - SearchProviderStatusWidget(const QIcon& warning_icon, - GlobalSearch* engine, SearchProvider* provider, - QWidget* parent = 0); + public: + SearchProviderStatusWidget(const QIcon& warning_icon, GlobalSearch* engine, + SearchProvider* provider, QWidget* parent = 0); ~SearchProviderStatusWidget(); bool eventFilter(QObject* object, QEvent* event); - -private: + + private: Ui_SearchProviderStatusWidget* ui_; GlobalSearch* engine_; SearchProvider* provider_; }; -#endif // SEARCHPROVIDERSTATUSWIDGET_H +#endif // SEARCHPROVIDERSTATUSWIDGET_H diff --git a/src/globalsearch/simplesearchprovider.cpp b/src/globalsearch/simplesearchprovider.cpp index 84e715368..daa5db966 100644 --- a/src/globalsearch/simplesearchprovider.cpp +++ b/src/globalsearch/simplesearchprovider.cpp @@ -19,31 +19,24 @@ #include "core/logging.h" #include "playlist/songmimedata.h" - const int SimpleSearchProvider::kDefaultResultLimit = 6; -SimpleSearchProvider::Item::Item(const QString& title, const QUrl& url, const QString& keyword) - : keyword_(keyword) -{ +SimpleSearchProvider::Item::Item(const QString& title, const QUrl& url, + const QString& keyword) + : keyword_(keyword) { metadata_.set_title(title); metadata_.set_url(url); } SimpleSearchProvider::Item::Item(const Song& song, const QString& keyword) - : keyword_(keyword), - metadata_(song) -{ -} - + : keyword_(keyword), metadata_(song) {} SimpleSearchProvider::SimpleSearchProvider(Application* app, QObject* parent) - : BlockingSearchProvider(app, parent), - result_limit_(kDefaultResultLimit), - max_suggestion_count_(-1), - items_dirty_(true), - has_searched_before_(false) -{ -} + : BlockingSearchProvider(app, parent), + result_limit_(kDefaultResultLimit), + max_suggestion_count_(-1), + items_dirty_(true), + has_searched_before_(false) {} void SimpleSearchProvider::MaybeRecreateItems() { if (has_searched_before_) { @@ -53,7 +46,8 @@ void SimpleSearchProvider::MaybeRecreateItems() { } } -SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList SimpleSearchProvider::Search(int id, + const QString& query) { Q_UNUSED(id) if (items_dirty_) { @@ -67,9 +61,9 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q const QStringList tokens = TokenizeQuery(query); QMutexLocker l(&items_mutex_); - foreach (const Item& item, items_) { + foreach(const Item & item, items_) { bool matched = true; - foreach (const QString& token, tokens) { + foreach(const QString & token, tokens) { if (!item.keyword_.contains(token, Qt::CaseInsensitive) && !item.metadata_.title().contains(token, Qt::CaseInsensitive) && !safe_words_.contains(token, Qt::CaseInsensitive)) { @@ -85,8 +79,7 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q ret << result; } - if (ret.count() >= result_limit_) - break; + if (ret.count() >= result_limit_) break; } return ret; @@ -95,7 +88,7 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q void SimpleSearchProvider::SetItems(const ItemList& items) { QMutexLocker l(&items_mutex_); items_ = items; - for (ItemList::iterator it = items_.begin() ; it != items_.end() ; ++it) { + for (ItemList::iterator it = items_.begin(); it != items_.end(); ++it) { it->metadata_.set_filetype(Song::Type_Stream); } } @@ -108,19 +101,16 @@ QStringList SimpleSearchProvider::GetSuggestions(int count) { QStringList ret; QMutexLocker l(&items_mutex_); - if (items_.isEmpty()) - return ret; + if (items_.isEmpty()) return ret; - for (int attempt=0 ; attempt= count) { break; } const Item& item = items_[qrand() % items_.count()]; - if (!item.keyword_.isEmpty()) - ret << item.keyword_; - if (!item.metadata_.title().isEmpty()) - ret << item.metadata_.title(); + if (!item.keyword_.isEmpty()) ret << item.keyword_; + if (!item.metadata_.title().isEmpty()) ret << item.metadata_.title(); } return ret; diff --git a/src/globalsearch/simplesearchprovider.h b/src/globalsearch/simplesearchprovider.h index 10d24260f..26bc743a4 100644 --- a/src/globalsearch/simplesearchprovider.h +++ b/src/globalsearch/simplesearchprovider.h @@ -23,7 +23,7 @@ class SimpleSearchProvider : public BlockingSearchProvider { Q_OBJECT -public: + public: SimpleSearchProvider(Application* app, QObject* parent); static const int kDefaultResultLimit; @@ -34,13 +34,13 @@ public: // SearchProvider QStringList GetSuggestions(int count); -protected slots: + protected slots: // Calls RecreateItems now if the user has done a global search with this // provider at least once before. Otherwise will schedule RecreateItems the // next time the user does a search. void MaybeRecreateItems(); -protected: + protected: struct Item { Item() {} Item(const QString& title, const QUrl& url, @@ -56,7 +56,9 @@ protected: void set_result_limit(int result_limit) { result_limit_ = result_limit; } void set_max_suggestion_count(int count) { max_suggestion_count_ = count; } QStringList safe_words() const { return safe_words_; } - void set_safe_words(const QStringList& safe_words) { safe_words_ = safe_words; } + void set_safe_words(const QStringList& safe_words) { + safe_words_ = safe_words; + } void SetItems(const ItemList& items); @@ -64,7 +66,7 @@ protected: // call SetItems with the new list. virtual void RecreateItems() = 0; -private: + private: int result_limit_; QStringList safe_words_; int max_suggestion_count_; @@ -76,4 +78,4 @@ private: bool has_searched_before_; }; -#endif // SIMPLESEARCHPROVIDER_H +#endif // SIMPLESEARCHPROVIDER_H diff --git a/src/globalsearch/somafmsearchprovider.cpp b/src/globalsearch/somafmsearchprovider.cpp index 207e26b4b..a1680300e 100644 --- a/src/globalsearch/somafmsearchprovider.cpp +++ b/src/globalsearch/somafmsearchprovider.cpp @@ -18,12 +18,11 @@ #include "somafmsearchprovider.h" #include "internet/somafmservice.h" -SomaFMSearchProvider::SomaFMSearchProvider( - SomaFMServiceBase* service, Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ - Init(service->name(), service->url_scheme(), service->icon(), CanGiveSuggestions); +SomaFMSearchProvider::SomaFMSearchProvider(SomaFMServiceBase* service, + Application* app, QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { + Init(service->name(), service->url_scheme(), service->icon(), + CanGiveSuggestions); set_result_limit(3); set_max_suggestion_count(3); icon_ = ScaleAndPad( @@ -33,8 +32,7 @@ SomaFMSearchProvider::SomaFMSearchProvider( // Load the stream list on startup only if it doesn't involve going to update // info from the server. - if (!service_->IsStreamListStale()) - RecreateItems(); + if (!service_->IsStreamListStale()) RecreateItems(); } void SomaFMSearchProvider::LoadArtAsync(int id, const Result& result) { @@ -44,7 +42,7 @@ void SomaFMSearchProvider::LoadArtAsync(int id, const Result& result) { void SomaFMSearchProvider::RecreateItems() { QList items; - foreach (const SomaFMService::Stream& stream, service_->Streams()) { + foreach(const SomaFMService::Stream & stream, service_->Streams()) { Item item; item.metadata_ = stream.ToSong(service_->name()); item.keyword_ = stream.title_; diff --git a/src/globalsearch/somafmsearchprovider.h b/src/globalsearch/somafmsearchprovider.h index 5bd2f1971..40df8bf19 100644 --- a/src/globalsearch/somafmsearchprovider.h +++ b/src/globalsearch/somafmsearchprovider.h @@ -23,17 +23,18 @@ class SomaFMServiceBase; class SomaFMSearchProvider : public SimpleSearchProvider { -public: - SomaFMSearchProvider(SomaFMServiceBase* service, Application* app, QObject* parent); + public: + SomaFMSearchProvider(SomaFMServiceBase* service, Application* app, + QObject* parent); void LoadArtAsync(int id, const Result& result); -protected: + protected: void RecreateItems(); -private: + private: SomaFMServiceBase* service_; QImage icon_; }; -#endif // SOMAFMSEARCHPROVIDER_H +#endif // SOMAFMSEARCHPROVIDER_H diff --git a/src/globalsearch/soundcloudsearchprovider.cpp b/src/globalsearch/soundcloudsearchprovider.cpp index 5af8f456f..1c9966402 100644 --- a/src/globalsearch/soundcloudsearchprovider.cpp +++ b/src/globalsearch/soundcloudsearchprovider.cpp @@ -24,17 +24,15 @@ #include "covers/albumcoverloader.h" #include "internet/soundcloudservice.h" -SoundCloudSearchProvider::SoundCloudSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - service_(nullptr) -{ -} +SoundCloudSearchProvider::SoundCloudSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent), service_(nullptr) {} void SoundCloudSearchProvider::Init(SoundCloudService* service) { service_ = service; - SearchProvider::Init("SoundCloud", "soundcloud", - QIcon(":providers/soundcloud.png"), - WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); + SearchProvider::Init( + "SoundCloud", "soundcloud", QIcon(":providers/soundcloud.png"), + WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); connect(service_, SIGNAL(SimpleSearchResults(int, SongList)), SLOT(SearchDone(int, SongList))); @@ -43,14 +41,14 @@ void SoundCloudSearchProvider::Init(SoundCloudService* service) { cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64, QImage)), + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), SLOT(AlbumArtLoaded(quint64, QImage))); } void SoundCloudSearchProvider::SearchAsync(int id, const QString& query) { const int service_id = service_->SimpleSearch(query); - pending_searches_[service_id] = PendingState(id, TokenizeQuery(query));; + pending_searches_[service_id] = PendingState(id, TokenizeQuery(query)); + ; } void SoundCloudSearchProvider::SearchDone(int id, const SongList& songs) { @@ -59,7 +57,7 @@ void SoundCloudSearchProvider::SearchDone(int id, const SongList& songs) { const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { Result result(this); result.metadata_ = song; @@ -78,7 +76,7 @@ void SoundCloudSearchProvider::MaybeSearchFinished(int id) { void SoundCloudSearchProvider::LoadArtAsync(int id, const Result& result) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } diff --git a/src/globalsearch/spotifysearchprovider.cpp b/src/globalsearch/spotifysearchprovider.cpp index 3e08aa529..c1b2e25aa 100644 --- a/src/globalsearch/spotifysearchprovider.cpp +++ b/src/globalsearch/spotifysearchprovider.cpp @@ -32,21 +32,16 @@ const int kSearchAlbumLimit = 20; } SpotifySearchProvider::SpotifySearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - server_(nullptr), - service_(nullptr) -{ + : SearchProvider(app, parent), server_(nullptr), service_(nullptr) { Init("Spotify", "spotify", QIcon(":icons/32x32/spotify.png"), WantsDelayedQueries | WantsSerialisedArtQueries | ArtIsProbablyRemote | - CanShowConfig | CanGiveSuggestions); + CanShowConfig | CanGiveSuggestions); } SpotifyServer* SpotifySearchProvider::server() { - if (server_) - return server_; + if (server_) return server_; - if (!service_) - service_ = InternetModel::Service(); + if (!service_) service_ = InternetModel::Service(); if (service_->login_state() != SpotifyService::LoginState_LoggedIn) return nullptr; @@ -54,20 +49,19 @@ SpotifyServer* SpotifySearchProvider::server() { server_ = service_->server(); connect(server_, SIGNAL(SearchResults(pb::spotify::SearchResponse)), SLOT(SearchFinishedSlot(pb::spotify::SearchResponse))); - connect(server_, SIGNAL(ImageLoaded(QString,QImage)), - SLOT(ArtLoadedSlot(QString,QImage))); + connect(server_, SIGNAL(ImageLoaded(QString, QImage)), + SLOT(ArtLoadedSlot(QString, QImage))); connect(server_, SIGNAL(destroyed()), SLOT(ServerDestroyed())); connect(server_, SIGNAL(StarredLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(SuggestionsLoaded(pb::spotify::LoadPlaylistResponse))); - connect(server_, SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), + connect(server_, + SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), SLOT(SuggestionsLoaded(pb::spotify::BrowseToplistResponse))); return server_; } -void SpotifySearchProvider::ServerDestroyed() { - server_ = nullptr; -} +void SpotifySearchProvider::ServerDestroyed() { server_ = nullptr; } void SpotifySearchProvider::SearchAsync(int id, const QString& query) { SpotifyServer* s = server(); @@ -85,17 +79,17 @@ void SpotifySearchProvider::SearchAsync(int id, const QString& query) { queries_[query_string] = state; } -void SpotifySearchProvider::SearchFinishedSlot(const pb::spotify::SearchResponse& response) { +void SpotifySearchProvider::SearchFinishedSlot( + const pb::spotify::SearchResponse& response) { QString query_string = QString::fromUtf8(response.request().query().c_str()); QMap::iterator it = queries_.find(query_string); - if (it == queries_.end()) - return; + if (it == queries_.end()) return; PendingState state = it.value(); queries_.erase(it); ResultList ret; - for (int i=0; i < response.result_size() ; ++i) { + for (int i = 0; i < response.result_size(); ++i) { const pb::spotify::Track& track = response.result(i); Result result(this); @@ -104,10 +98,10 @@ void SpotifySearchProvider::SearchFinishedSlot(const pb::spotify::SearchResponse ret << result; } - for (int i=0 ; iLoadImage(image_id); } -void SpotifySearchProvider::ArtLoadedSlot(const QString& id, const QImage& image) { +void SpotifySearchProvider::ArtLoadedSlot(const QString& id, + const QImage& image) { QMap::iterator it = pending_art_.find(id); - if (it == pending_art_.end()) - return; + if (it == pending_art_.end()) return; const int orig_id = it.value(); pending_art_.erase(it); diff --git a/src/globalsearch/spotifysearchprovider.h b/src/globalsearch/spotifysearchprovider.h index b8f5fdba0..90b7f11a0 100644 --- a/src/globalsearch/spotifysearchprovider.h +++ b/src/globalsearch/spotifysearchprovider.h @@ -24,11 +24,10 @@ class SpotifyServer; class SpotifyService; - class SpotifySearchProvider : public SearchProvider { Q_OBJECT -public: + public: SpotifySearchProvider(Application* app, QObject* parent = 0); void SearchAsync(int id, const QString& query); @@ -38,21 +37,21 @@ public: bool IsLoggedIn(); void ShowConfig(); -private slots: + private slots: void ServerDestroyed(); void SearchFinishedSlot(const pb::spotify::SearchResponse& response); void ArtLoadedSlot(const QString& id, const QImage& image); void SuggestionsLoaded(const pb::spotify::LoadPlaylistResponse& response); void SuggestionsLoaded(const pb::spotify::BrowseToplistResponse& response); -private: + private: SpotifyServer* server(); void LoadSuggestions(); void AddSuggestionFromTrack(const pb::spotify::Track& track); void AddSuggestionFromAlbum(const pb::spotify::Album& album); -private: + private: SpotifyServer* server_; SpotifyService* service_; @@ -63,4 +62,4 @@ private: QSet suggestions_; }; -#endif // SPOTIFYSEARCHPROVIDER_H +#endif // SPOTIFYSEARCHPROVIDER_H diff --git a/src/globalsearch/suggestionwidget.cpp b/src/globalsearch/suggestionwidget.cpp index d22848ee5..cfcc232fa 100644 --- a/src/globalsearch/suggestionwidget.cpp +++ b/src/globalsearch/suggestionwidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,18 +22,14 @@ #include SuggestionWidget::SuggestionWidget(const QIcon& search_icon, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SuggestionWidget) -{ + : QWidget(parent), ui_(new Ui_SuggestionWidget) { ui_->setupUi(this); ui_->icon->setPixmap(search_icon.pixmap(16)); ui_->name->installEventFilter(this); } -SuggestionWidget::~SuggestionWidget() { - delete ui_; -} +SuggestionWidget::~SuggestionWidget() { delete ui_; } void SuggestionWidget::SetText(const QString& text) { ui_->name->setText(text); @@ -47,29 +43,29 @@ bool SuggestionWidget::eventFilter(QObject* object, QEvent* event) { QFont font(ui_->name->font()); switch (event->type()) { - case QEvent::Enter: - font.setUnderline(true); - ui_->name->setFont(font); - break; + case QEvent::Enter: + font.setUnderline(true); + ui_->name->setFont(font); + break; - case QEvent::Leave: - font.setUnderline(false); - ui_->name->setFont(font); - break; + case QEvent::Leave: + font.setUnderline(false); + ui_->name->setFont(font); + break; - case QEvent::MouseButtonRelease: { - QMouseEvent* e = static_cast(event); - if (e->button() == Qt::LeftButton) { - QString text = ui_->name->text(); - text.replace(QRegExp("\\W"), " "); + case QEvent::MouseButtonRelease: { + QMouseEvent* e = static_cast(event); + if (e->button() == Qt::LeftButton) { + QString text = ui_->name->text(); + text.replace(QRegExp("\\W"), " "); - emit SuggestionClicked(text.simplified()); + emit SuggestionClicked(text.simplified()); + } + break; } - break; - } - default: - return false; + default: + return false; } return true; diff --git a/src/globalsearch/suggestionwidget.h b/src/globalsearch/suggestionwidget.h index 850dfced5..771a05ca8 100644 --- a/src/globalsearch/suggestionwidget.h +++ b/src/globalsearch/suggestionwidget.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,20 +25,20 @@ class Ui_SuggestionWidget; class SuggestionWidget : public QWidget { Q_OBJECT -public: + public: SuggestionWidget(const QIcon& search_icon, QWidget* parent = 0); ~SuggestionWidget(); bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void SetText(const QString& text); signals: void SuggestionClicked(const QString& query); - -private: + + private: Ui_SuggestionWidget* ui_; }; -#endif // SUGGESTIONWIDGET_H +#endif // SUGGESTIONWIDGET_H diff --git a/src/globalsearch/urlsearchprovider.cpp b/src/globalsearch/urlsearchprovider.cpp index c14c150ad..82f8f20a3 100644 --- a/src/globalsearch/urlsearchprovider.cpp +++ b/src/globalsearch/urlsearchprovider.cpp @@ -25,9 +25,7 @@ const char* UrlSearchProvider::kUrlRegex = "^[a-zA-Z][a-zA-Z0-9+-.]*://"; UrlSearchProvider::UrlSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - url_regex_(kUrlRegex) -{ + : SearchProvider(app, parent), url_regex_(kUrlRegex) { QIcon icon = IconLoader::Load("applications-internet"); image_ = ScaleAndPad(icon.pixmap(kArtHeight, kArtHeight).toImage()); diff --git a/src/globalsearch/urlsearchprovider.h b/src/globalsearch/urlsearchprovider.h index 1ce91cc61..0f982dcc0 100644 --- a/src/globalsearch/urlsearchprovider.h +++ b/src/globalsearch/urlsearchprovider.h @@ -23,7 +23,7 @@ #include class UrlSearchProvider : public SearchProvider { -public: + public: UrlSearchProvider(Application* app, QObject* parent); bool LooksLikeUrl(const QString& query) const; @@ -31,11 +31,11 @@ public: void SearchAsync(int id, const QString& query); void LoadArtAsync(int id, const Result& result); -private: + private: static const char* kUrlRegex; QRegExp url_regex_; QImage image_; }; -#endif // URLSEARCHPROVIDER_H +#endif // URLSEARCHPROVIDER_H diff --git a/src/internet/boxservice.cpp b/src/internet/boxservice.cpp index 066e7b213..d1cd91e82 100644 --- a/src/internet/boxservice.cpp +++ b/src/internet/boxservice.cpp @@ -17,37 +17,25 @@ namespace { static const char* kClientId = "gbswb9wp7gjyldc3qrw68h2rk68jaf4h"; static const char* kClientSecret = "pZ6cUCQz5X0xaWoPVbCDg6GpmfTtz73s"; -static const char* kOAuthEndpoint = - "https://api.box.com/oauth2/authorize"; -static const char* kOAuthTokenEndpoint = - "https://api.box.com/oauth2/token"; +static const char* kOAuthEndpoint = "https://api.box.com/oauth2/authorize"; +static const char* kOAuthTokenEndpoint = "https://api.box.com/oauth2/token"; -static const char* kUserInfo = - "https://api.box.com/2.0/users/me"; -static const char* kFolderItems = - "https://api.box.com/2.0/folders/%1/items"; +static const char* kUserInfo = "https://api.box.com/2.0/users/me"; +static const char* kFolderItems = "https://api.box.com/2.0/folders/%1/items"; static const int kRootFolderId = 0; -static const char* kFileContent = - "https://api.box.com/2.0/files/%1/content"; - -static const char* kEvents = - "https://api.box.com/2.0/events"; +static const char* kFileContent = "https://api.box.com/2.0/files/%1/content"; +static const char* kEvents = "https://api.box.com/2.0/events"; } BoxService::BoxService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kSettingsGroup, - QIcon(":/providers/box.png"), - SettingsDialog::Page_Box) { + : CloudFileService(app, parent, kServiceName, kSettingsGroup, + QIcon(":/providers/box.png"), SettingsDialog::Page_Box) { app->player()->RegisterUrlHandler(new BoxUrlHandler(this, this)); } -bool BoxService::has_credentials() const { - return !refresh_token().isEmpty(); -} +bool BoxService::has_credentials() const { return !refresh_token().isEmpty(); } QString BoxService::refresh_token() const { QSettings s; @@ -58,7 +46,7 @@ QString BoxService::refresh_token() const { bool BoxService::is_authenticated() const { return !access_token_.isEmpty() && - QDateTime::currentDateTime().secsTo(expiry_time_) > 0; + QDateTime::currentDateTime().secsTo(expiry_time_) > 0; } void BoxService::EnsureConnected() { @@ -74,17 +62,14 @@ void BoxService::Connect() { OAuthenticator* oauth = new OAuthenticator( kClientId, kClientSecret, OAuthenticator::RedirectStyle::REMOTE, this); if (!refresh_token().isEmpty()) { - oauth->RefreshAuthorisation( - kOAuthTokenEndpoint, refresh_token()); + oauth->RefreshAuthorisation(kOAuthTokenEndpoint, refresh_token()); } else { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - QString::null); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, + QString::null); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(OAuthenticator*)), oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(OAuthenticator*)), oauth); } void BoxService::ConnectFinished(OAuthenticator* oauth) { @@ -103,8 +88,8 @@ void BoxService::ConnectFinished(OAuthenticator* oauth) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); } else { emit Connected(); } @@ -112,8 +97,8 @@ void BoxService::ConnectFinished(OAuthenticator* oauth) { } void BoxService::AddAuthorizationHeader(QNetworkRequest* request) const { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } void BoxService::FetchUserInfoFinished(QNetworkReply* reply) { @@ -161,8 +146,8 @@ void BoxService::InitialiseEventsCursor() { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(InitialiseEventsFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(InitialiseEventsFinished(QNetworkReply*)), reply); } void BoxService::InitialiseEventsFinished(QNetworkReply* reply) { @@ -176,7 +161,8 @@ void BoxService::InitialiseEventsFinished(QNetworkReply* reply) { } } -void BoxService::FetchRecursiveFolderItems(const int folder_id, const int offset) { +void BoxService::FetchRecursiveFolderItems(const int folder_id, + const int offset) { QUrl url(QString(kFolderItems).arg(folder_id)); QStringList fields; fields << "etag" @@ -191,13 +177,13 @@ void BoxService::FetchRecursiveFolderItems(const int folder_id, const int offset QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchFolderItemsFinished(QNetworkReply*, int)), - reply, folder_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchFolderItemsFinished(QNetworkReply*, int)), reply, + folder_id); } -void BoxService::FetchFolderItemsFinished( - QNetworkReply* reply, const int folder_id) { +void BoxService::FetchFolderItemsFinished(QNetworkReply* reply, + const int folder_id) { reply->deleteLater(); QByteArray data = reply->readAll(); @@ -213,7 +199,7 @@ void BoxService::FetchFolderItemsFinished( FetchRecursiveFolderItems(folder_id, offset + entries.size()); } - foreach (const QVariant& e, entries) { + foreach(const QVariant & e, entries) { QVariantMap entry = e.toMap(); if (entry["type"].toString() == "folder") { FetchRecursiveFolderItems(entry["id"].toInt()); @@ -238,9 +224,9 @@ void BoxService::MaybeAddFileEntry(const QVariantMap& entry) { // This is actually a redirect. Follow it now. QNetworkReply* reply = FetchContentUrlForFile(entry["id"].toString()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RedirectFollowed(QNetworkReply*, Song, QString)), - reply, song, mime_type); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RedirectFollowed(QNetworkReply*, Song, QString)), reply, song, + mime_type); } QNetworkReply* BoxService::FetchContentUrlForFile(const QString& file_id) { @@ -251,20 +237,18 @@ QNetworkReply* BoxService::FetchContentUrlForFile(const QString& file_id) { return reply; } -void BoxService::RedirectFollowed( - QNetworkReply* reply, const Song& song, const QString& mime_type) { +void BoxService::RedirectFollowed(QNetworkReply* reply, const Song& song, + const QString& mime_type) { reply->deleteLater(); - QVariant redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (!redirect.isValid()) { return; } QUrl real_url = redirect.toUrl(); - MaybeAddFileToDatabase( - song, - mime_type, - real_url, - QString("Bearer %1").arg(access_token_)); + MaybeAddFileToDatabase(song, mime_type, real_url, + QString("Bearer %1").arg(access_token_)); } void BoxService::UpdateFilesFromCursor(const QString& cursor) { @@ -274,8 +258,8 @@ void BoxService::UpdateFilesFromCursor(const QString& cursor) { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchEventsFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchEventsFinished(QNetworkReply*)), reply); } void BoxService::FetchEventsFinished(QNetworkReply* reply) { @@ -289,7 +273,7 @@ void BoxService::FetchEventsFinished(QNetworkReply* reply) { s.setValue("cursor", response["next_stream_position"]); QVariantList entries = response["entries"].toList(); - foreach (const QVariant& e, entries) { + foreach(const QVariant & e, entries) { QVariantMap event = e.toMap(); QString type = event["event_type"].toString(); QVariantMap source = event["source"].toMap(); diff --git a/src/internet/boxservice.h b/src/internet/boxservice.h index 084aa8875..97a822b24 100644 --- a/src/internet/boxservice.h +++ b/src/internet/boxservice.h @@ -24,15 +24,15 @@ class BoxService : public CloudFileService { void Connect(); void ForgetCredentials(); - signals: +signals: void Connected(); private slots: void ConnectFinished(OAuthenticator* oauth); void FetchUserInfoFinished(QNetworkReply* reply); void FetchFolderItemsFinished(QNetworkReply* reply, const int folder_id); - void RedirectFollowed( - QNetworkReply* reply, const Song& song, const QString& mime_type); + void RedirectFollowed(QNetworkReply* reply, const Song& song, + const QString& mime_type); void InitialiseEventsFinished(QNetworkReply* reply); void FetchEventsFinished(QNetworkReply* reply); diff --git a/src/internet/boxsettingspage.cpp b/src/internet/boxsettingspage.cpp index 3874829a5..f8889469a 100644 --- a/src/internet/boxsettingspage.cpp +++ b/src/internet/boxsettingspage.cpp @@ -26,10 +26,9 @@ #include "ui/settingsdialog.h" BoxSettingsPage::BoxSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::BoxSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::BoxSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -40,9 +39,7 @@ BoxSettingsPage::BoxSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -BoxSettingsPage::~BoxSettingsPage() { - delete ui_; -} +BoxSettingsPage::~BoxSettingsPage() { delete ui_; } void BoxSettingsPage::Load() { QSettings s; diff --git a/src/internet/boxsettingspage.h b/src/internet/boxsettingspage.h index 13b46c34f..5c094dd18 100644 --- a/src/internet/boxsettingspage.h +++ b/src/internet/boxsettingspage.h @@ -29,7 +29,7 @@ class Ui_BoxSettingsPage; class BoxSettingsPage : public SettingsPage { Q_OBJECT -public: + public: BoxSettingsPage(SettingsDialog* parent = 0); ~BoxSettingsPage(); @@ -39,15 +39,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(); -private: + private: Ui_BoxSettingsPage* ui_; BoxService* service_; }; -#endif // BOXSETTINGSPAGE_H +#endif // BOXSETTINGSPAGE_H diff --git a/src/internet/boxurlhandler.cpp b/src/internet/boxurlhandler.cpp index d296e6ba6..08d404ad3 100644 --- a/src/internet/boxurlhandler.cpp +++ b/src/internet/boxurlhandler.cpp @@ -3,9 +3,7 @@ #include "boxservice.h" BoxUrlHandler::BoxUrlHandler(BoxService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult BoxUrlHandler::StartLoading(const QUrl& url) { QString file_id = url.path(); diff --git a/src/internet/cloudfileservice.cpp b/src/internet/cloudfileservice.cpp index 55cb1ab7a..92b600ee1 100644 --- a/src/internet/cloudfileservice.cpp +++ b/src/internet/cloudfileservice.cpp @@ -17,29 +17,26 @@ #include "playlist/playlist.h" #include "ui/iconloader.h" -CloudFileService::CloudFileService( - Application* app, - InternetModel* parent, - const QString& service_name, - const QString& service_id, - const QIcon& icon, - SettingsDialog::Page settings_page) - : InternetService(service_name, app, parent, parent), - root_(nullptr), - network_(new NetworkAccessManager(this)), - library_sort_model_(new QSortFilterProxyModel(this)), - playlist_manager_(app->playlist_manager()), - task_manager_(app->task_manager()), - icon_(icon), - settings_page_(settings_page) { +CloudFileService::CloudFileService(Application* app, InternetModel* parent, + const QString& service_name, + const QString& service_id, const QIcon& icon, + SettingsDialog::Page settings_page) + : InternetService(service_name, app, parent, parent), + root_(nullptr), + network_(new NetworkAccessManager(this)), + library_sort_model_(new QSortFilterProxyModel(this)), + playlist_manager_(app->playlist_manager()), + task_manager_(app->task_manager()), + icon_(icon), + settings_page_(settings_page) { library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); QString songs_table = service_id + "_songs"; QString songs_fts_table = service_id + "_songs_fts"; - library_backend_->Init( - app->database(), songs_table, QString::null, QString::null, songs_fts_table); + library_backend_->Init(app->database(), songs_table, QString::null, + QString::null, songs_fts_table); library_model_ = new LibraryModel(library_backend_, app_, this); library_sort_model_->setSourceModel(library_model_); @@ -49,11 +46,7 @@ CloudFileService::CloudFileService( library_sort_model_->sort(0); app->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - service_name, - service_id, - icon_, - true, app_, this)); + library_backend_, service_name, service_id, icon_, true, app_, this)); } QStandardItem* CloudFileService::CreateRootItem() { @@ -83,11 +76,8 @@ void CloudFileService::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction( - IconLoader::Load("download"), - tr("Cover Manager"), - this, - SLOT(ShowCoverManager())); + context_menu_->addAction(IconLoader::Load("download"), tr("Cover Manager"), + this, SLOT(ShowCoverManager())); } context_menu_->popup(global_pos); } @@ -103,15 +93,16 @@ void CloudFileService::ShowCoverManager() { } void CloudFileService::AddToPlaylist(QMimeData* mime) { - playlist_manager_->current()->dropMimeData( - mime, Qt::CopyAction, -1, 0, QModelIndex()); + playlist_manager_->current()->dropMimeData(mime, Qt::CopyAction, -1, 0, + QModelIndex()); } void CloudFileService::ShowSettingsDialog() { app_->OpenSettingsDialogAtPage(settings_page_); } -bool CloudFileService::ShouldIndexFile(const QUrl& url, const QString& mime_type) const { +bool CloudFileService::ShouldIndexFile(const QUrl& url, + const QString& mime_type) const { if (!IsSupportedMimeType(mime_type)) { return false; } @@ -123,33 +114,28 @@ bool CloudFileService::ShouldIndexFile(const QUrl& url, const QString& mime_type return true; } -void CloudFileService::MaybeAddFileToDatabase( - const Song& metadata, - const QString& mime_type, - const QUrl& download_url, - const QString& authorisation) { +void CloudFileService::MaybeAddFileToDatabase(const Song& metadata, + const QString& mime_type, + const QUrl& download_url, + const QString& authorisation) { if (!ShouldIndexFile(metadata.url(), mime_type)) { return; } - const int task_id = task_manager_->StartTask( - tr("Indexing %1").arg(metadata.title())); + const int task_id = + task_manager_->StartTask(tr("Indexing %1").arg(metadata.title())); TagReaderClient::ReplyType* reply = app_->tag_reader_client()->ReadCloudFile( - download_url, - metadata.title(), - metadata.filesize(), - mime_type, + download_url, metadata.title(), metadata.filesize(), mime_type, authorisation); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(ReadTagsFinished(TagReaderClient::ReplyType*,Song,int)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(ReadTagsFinished(TagReaderClient::ReplyType*, Song, int)), reply, metadata, task_id); } -void CloudFileService::ReadTagsFinished( - TagReaderClient::ReplyType* reply, - const Song& metadata, - const int task_id) { +void CloudFileService::ReadTagsFinished(TagReaderClient::ReplyType* reply, + const Song& metadata, + const int task_id) { reply->deleteLater(); TaskManager::ScopedTask(task_id, task_manager_); @@ -173,14 +159,10 @@ void CloudFileService::ReadTagsFinished( } bool CloudFileService::IsSupportedMimeType(const QString& mime_type) const { - return mime_type == "audio/ogg" || - mime_type == "audio/mpeg" || - mime_type == "audio/mp4" || - mime_type == "audio/flac" || - mime_type == "audio/x-flac" || - mime_type == "application/ogg" || - mime_type == "application/x-flac" || - mime_type == "audio/x-ms-wma"; + return mime_type == "audio/ogg" || mime_type == "audio/mpeg" || + mime_type == "audio/mp4" || mime_type == "audio/flac" || + mime_type == "audio/x-flac" || mime_type == "application/ogg" || + mime_type == "application/x-flac" || mime_type == "audio/x-ms-wma"; } QString CloudFileService::GuessMimeTypeForFile(const QString& filename) const { diff --git a/src/internet/cloudfileservice.h b/src/internet/cloudfileservice.h index d31a54ccc..1fce347d4 100644 --- a/src/internet/cloudfileservice.h +++ b/src/internet/cloudfileservice.h @@ -20,13 +20,9 @@ class PlaylistManager; class CloudFileService : public InternetService { Q_OBJECT public: - CloudFileService( - Application* app, - InternetModel* parent, - const QString& service_name, - const QString& service_id, - const QIcon& icon, - SettingsDialog::Page settings_page); + CloudFileService(Application* app, InternetModel* parent, + const QString& service_name, const QString& service_id, + const QIcon& icon, SettingsDialog::Page settings_page); // InternetService virtual QStandardItem* CreateRootItem(); @@ -37,23 +33,19 @@ class CloudFileService : public InternetService { virtual bool has_credentials() const = 0; virtual void Connect() = 0; virtual bool ShouldIndexFile(const QUrl& url, const QString& mime_type) const; - virtual void MaybeAddFileToDatabase( - const Song& metadata, - const QString& mime_type, - const QUrl& download_url, - const QString& authorisation); + virtual void MaybeAddFileToDatabase(const Song& metadata, + const QString& mime_type, + const QUrl& download_url, + const QString& authorisation); virtual bool IsSupportedMimeType(const QString& mime_type) const; QString GuessMimeTypeForFile(const QString& filename) const; - protected slots: void ShowCoverManager(); void AddToPlaylist(QMimeData* mime); void ShowSettingsDialog(); - void ReadTagsFinished( - TagReaderClient::ReplyType* reply, - const Song& metadata, - const int task_id); + void ReadTagsFinished(TagReaderClient::ReplyType* reply, const Song& metadata, + const int task_id); protected: QStandardItem* root_; diff --git a/src/internet/digitallyimportedclient.cpp b/src/internet/digitallyimportedclient.cpp index 9f7bde819..a4b4c056f 100644 --- a/src/internet/digitallyimportedclient.cpp +++ b/src/internet/digitallyimportedclient.cpp @@ -35,20 +35,22 @@ const char* DigitallyImportedClient::kAuthUrl = "http://api.audioaddict.com/v1/%1/members/authenticate"; const char* DigitallyImportedClient::kChannelListUrl = - "http://api.v2.audioaddict.com/v1/%1/mobile/batch_update?asset_group_key=mobile_icons&stream_set_key="; + "http://api.v2.audioaddict.com/v1/%1/mobile/" + "batch_update?asset_group_key=mobile_icons&stream_set_key="; +DigitallyImportedClient::DigitallyImportedClient(const QString& service_name, + QObject* parent) + : QObject(parent), + network_(new NetworkAccessManager(this)), + service_name_(service_name) {} -DigitallyImportedClient::DigitallyImportedClient(const QString& service_name, QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - service_name_(service_name) -{ -} - -void DigitallyImportedClient::SetAuthorisationHeader(QNetworkRequest* req) const { +void DigitallyImportedClient::SetAuthorisationHeader(QNetworkRequest* req) + const { req->setRawHeader("Authorization", - "Basic " + QString("%1:%2").arg(kApiUsername, kApiPassword) - .toAscii().toBase64()); + "Basic " + QString("%1:%2") + .arg(kApiUsername, kApiPassword) + .toAscii() + .toBase64()); } QNetworkReply* DigitallyImportedClient::Auth(const QString& username, @@ -57,18 +59,19 @@ QNetworkReply* DigitallyImportedClient::Auth(const QString& username, SetAuthorisationHeader(&req); QByteArray postdata = "username=" + QUrl::toPercentEncoding(username) + - "&password=" + QUrl::toPercentEncoding(password); + "&password=" + QUrl::toPercentEncoding(password); return network_->post(req, postdata); } -DigitallyImportedClient::AuthReply -DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { +DigitallyImportedClient::AuthReply DigitallyImportedClient::ParseAuthReply( + QNetworkReply* reply) const { AuthReply ret; ret.success_ = false; ret.error_reason_ = tr("Unknown error"); - const int http_status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + const int http_status = + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (http_status == 403) { ret.error_reason_ = reply->readAll(); return ret; @@ -83,15 +86,15 @@ DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { return ret; } - QVariantList subscriptions = data.value("subscriptions", QVariantList()).toList(); + QVariantList subscriptions = + data.value("subscriptions", QVariantList()).toList(); if (subscriptions.isEmpty() || subscriptions[0].toMap().value("status").toString() != "active") { ret.error_reason_ = tr("You do not have an active subscription"); return ret; } - if (!data.contains("first_name") || - !data.contains("last_name") || + if (!data.contains("first_name") || !data.contains("last_name") || !subscriptions[0].toMap().contains("expires_on") || !data.contains("listen_key")) return ret; @@ -99,40 +102,40 @@ DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { ret.success_ = true; ret.first_name_ = data["first_name"].toString(); ret.last_name_ = data["last_name"].toString(); - ret.expires_ = QDateTime::fromString(subscriptions[0].toMap()["expires_on"].toString(), Qt::ISODate); + ret.expires_ = QDateTime::fromString( + subscriptions[0].toMap()["expires_on"].toString(), Qt::ISODate); ret.listen_hash_ = data["listen_key"].toString(); return ret; } QNetworkReply* DigitallyImportedClient::GetChannelList() { - //QNetworkRequest req(QUrl(QString(kChannelListUrl))); + // QNetworkRequest req(QUrl(QString(kChannelListUrl))); QNetworkRequest req(QUrl(QString(kChannelListUrl).arg(service_name_))); SetAuthorisationHeader(&req); return network_->get(req); } -DigitallyImportedClient::ChannelList -DigitallyImportedClient::ParseChannelList(QNetworkReply* reply) const { +DigitallyImportedClient::ChannelList DigitallyImportedClient::ParseChannelList( + QNetworkReply* reply) const { ChannelList ret; QJson::Parser parser; QVariantMap data = parser.parse(reply).toMap(); - if (!data.contains("channel_filters")) - return ret; + if (!data.contains("channel_filters")) return ret; QVariantList filters = data["channel_filters"].toList(); - foreach (const QVariant& filter, filters) { + foreach(const QVariant & filter, filters) { // Find the filter called "All" QVariantMap filter_map = filter.toMap(); - if (filter_map.value("name", QString()).toString() != "All") - continue; + if (filter_map.value("name", QString()).toString() != "All") continue; // Add all its stations to the result - QVariantList channels = filter_map.value("channels", QVariantList()).toList(); - foreach (const QVariant& channel_var, channels) { + QVariantList channels = + filter_map.value("channels", QVariantList()).toList(); + foreach(const QVariant & channel_var, channels) { QVariantMap channel_map = channel_var.toMap(); Channel channel; @@ -150,20 +153,16 @@ DigitallyImportedClient::ParseChannelList(QNetworkReply* reply) const { return ret; } -QDataStream& operator<<(QDataStream& out, const DigitallyImportedClient::Channel& channel) { - out << channel.art_url_ - << channel.director_ - << channel.description_ - << channel.name_ - << channel.key_; +QDataStream& operator<<(QDataStream& out, + const DigitallyImportedClient::Channel& channel) { + out << channel.art_url_ << channel.director_ << channel.description_ + << channel.name_ << channel.key_; return out; } -QDataStream& operator>>(QDataStream& in, DigitallyImportedClient::Channel& channel) { - in >> channel.art_url_ - >> channel.director_ - >> channel.description_ - >> channel.name_ - >> channel.key_; +QDataStream& operator>>(QDataStream& in, + DigitallyImportedClient::Channel& channel) { + in >> channel.art_url_ >> channel.director_ >> channel.description_ >> + channel.name_ >> channel.key_; return in; } diff --git a/src/internet/digitallyimportedclient.h b/src/internet/digitallyimportedclient.h index e42508f16..dbd0692e1 100644 --- a/src/internet/digitallyimportedclient.h +++ b/src/internet/digitallyimportedclient.h @@ -30,7 +30,7 @@ class QNetworkRequest; class DigitallyImportedClient : public QObject { Q_OBJECT -public: + public: DigitallyImportedClient(const QString& service_name, QObject* parent = 0); static const char* kApiUsername; @@ -59,7 +59,7 @@ public: QString name_; QString key_; - bool operator <(const Channel& other) const { return name_ < other.name_; } + bool operator<(const Channel& other) const { return name_ < other.name_; } }; typedef QList ChannelList; @@ -69,17 +69,19 @@ public: QNetworkReply* GetChannelList(); ChannelList ParseChannelList(QNetworkReply* reply) const; -private: + private: void SetAuthorisationHeader(QNetworkRequest* req) const; -private: + private: QNetworkAccessManager* network_; QString service_name_; }; -QDataStream& operator<<(QDataStream& out, const DigitallyImportedClient::Channel& channel); -QDataStream& operator>>(QDataStream& in, DigitallyImportedClient::Channel& channel); +QDataStream& operator<<(QDataStream& out, + const DigitallyImportedClient::Channel& channel); +QDataStream& operator>>(QDataStream& in, + DigitallyImportedClient::Channel& channel); Q_DECLARE_METATYPE(DigitallyImportedClient::Channel) -#endif // DIGITALLYIMPORTEDCLIENT_H +#endif // DIGITALLYIMPORTEDCLIENT_H diff --git a/src/internet/digitallyimportedservicebase.cpp b/src/internet/digitallyimportedservicebase.cpp index 3e363afbc..025b72d28 100644 --- a/src/internet/digitallyimportedservicebase.cpp +++ b/src/internet/digitallyimportedservicebase.cpp @@ -37,50 +37,43 @@ const char* DigitallyImportedServiceBase::kSettingsGroup = "digitally_imported"; const int DigitallyImportedServiceBase::kStreamsCacheDurationSecs = - 60 * 60 * 24 * 14; // 2 weeks - + 60 * 60 * 24 * 14; // 2 weeks DigitallyImportedServiceBase::DigitallyImportedServiceBase( - const QString& name, - const QString& description, - const QUrl& homepage_url, - const QIcon& icon, - const QString& api_service_name, - Application* app, InternetModel* model, QObject* parent) - : InternetService(name, app, model, parent), - homepage_url_(homepage_url), - icon_(icon), - service_description_(description), - api_service_name_(api_service_name), - network_(new NetworkAccessManager(this)), - url_handler_(new DigitallyImportedUrlHandler(app, this)), - basic_audio_type_(1), - premium_audio_type_(2), - root_(nullptr), - saved_channels_(kSettingsGroup, api_service_name, kStreamsCacheDurationSecs), - api_client_(new DigitallyImportedClient(api_service_name, this)) -{ + const QString& name, const QString& description, const QUrl& homepage_url, + const QIcon& icon, const QString& api_service_name, Application* app, + InternetModel* model, QObject* parent) + : InternetService(name, app, model, parent), + homepage_url_(homepage_url), + icon_(icon), + service_description_(description), + api_service_name_(api_service_name), + network_(new NetworkAccessManager(this)), + url_handler_(new DigitallyImportedUrlHandler(app, this)), + basic_audio_type_(1), + premium_audio_type_(2), + root_(nullptr), + saved_channels_(kSettingsGroup, api_service_name, + kStreamsCacheDurationSecs), + api_client_(new DigitallyImportedClient(api_service_name, this)) { ReloadSettings(); model->app()->player()->RegisterUrlHandler(url_handler_); model->app()->global_search()->AddProvider( - new DigitallyImportedSearchProvider(this, app_, this)); + new DigitallyImportedSearchProvider(this, app_, this)); - basic_playlists_ - << "http://%1/public3/%2.pls" - << "http://%1/public1/%2.pls" - << "http://%1/public5/%2.asx"; + basic_playlists_ << "http://%1/public3/%2.pls" + << "http://%1/public1/%2.pls" + << "http://%1/public5/%2.asx"; - premium_playlists_ - << "http://%1/premium_high/%2.pls?hash=%3" - << "http://%1/premium_medium/%2.pls?hash=%3" - << "http://%1/premium/%2.pls?hash=%3" - << "http://%1/premium_wma_low/%2.asx?hash=%3" - << "http://%1/premium_wma/%2.asx?hash=%3"; + premium_playlists_ << "http://%1/premium_high/%2.pls?hash=%3" + << "http://%1/premium_medium/%2.pls?hash=%3" + << "http://%1/premium/%2.pls?hash=%3" + << "http://%1/premium_wma_low/%2.asx?hash=%3" + << "http://%1/premium_wma/%2.asx?hash=%3"; } -DigitallyImportedServiceBase::~DigitallyImportedServiceBase() { -} +DigitallyImportedServiceBase::~DigitallyImportedServiceBase() {} QStandardItem* DigitallyImportedServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, service_description_); @@ -108,41 +101,41 @@ void DigitallyImportedServiceBase::ForceRefreshStreams() { int task_id = app_->task_manager()->StartTask(tr("Getting streams")); QNetworkReply* reply = api_client_->GetChannelList(); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RefreshStreamsFinished(QNetworkReply*,int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RefreshStreamsFinished(QNetworkReply*, int)), reply, task_id); } -void DigitallyImportedServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id) { +void DigitallyImportedServiceBase::RefreshStreamsFinished(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); // Parse the list and sort by name - DigitallyImportedClient::ChannelList channels = api_client_->ParseChannelList(reply); + DigitallyImportedClient::ChannelList channels = + api_client_->ParseChannelList(reply); qSort(channels); saved_channels_.Update(channels); // Only update the item's children if it's already been populated - if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) - PopulateStreams(); + if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) PopulateStreams(); emit StreamsChanged(); } void DigitallyImportedServiceBase::PopulateStreams() { - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); // Add each stream to the model - foreach (const DigitallyImportedClient::Channel& channel, saved_channels_) { + foreach(const DigitallyImportedClient::Channel & channel, saved_channels_) { Song song; SongFromChannel(channel, &song); - QStandardItem* item = new QStandardItem(QIcon(":/last.fm/icon_radio.png"), - song.title()); + QStandardItem* item = + new QStandardItem(QIcon(":/last.fm/icon_radio.png"), song.title()); item->setData(channel.description_, Qt::ToolTipRole); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); root_->appendRow(item); } @@ -179,11 +172,10 @@ void DigitallyImportedServiceBase::ShowContextMenu(const QPoint& global_pos) { tr("Open %1 in browser").arg(homepage_url_.host()), this, SLOT(Homepage())); context_menu_->addAction(IconLoader::Load("view-refresh"), - tr("Refresh streams"), - this, SLOT(ForceRefreshStreams())); + tr("Refresh streams"), this, + SLOT(ForceRefreshStreams())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure..."), + context_menu_->addAction(IconLoader::Load("configure"), tr("Configure..."), this, SLOT(ShowSettingsDialog())); } @@ -197,7 +189,8 @@ bool DigitallyImportedServiceBase::is_premium_account() const { void DigitallyImportedServiceBase::LoadPlaylistFinished(QNetworkReply* reply) { reply->deleteLater(); - if (reply->header(QNetworkRequest::ContentTypeHeader).toString() == "text/html") { + if (reply->header(QNetworkRequest::ContentTypeHeader).toString() == + "text/html") { url_handler_->CancelTask(); emit StreamError(tr("Error loading di.fm playlist")); @@ -212,7 +205,8 @@ void DigitallyImportedServiceBase::ShowSettingsDialog() { DigitallyImportedClient::ChannelList DigitallyImportedServiceBase::Channels() { if (IsChannelListStale()) { - metaObject()->invokeMethod(this, "ForceRefreshStreams", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "ForceRefreshStreams", + Qt::QueuedConnection); } return saved_channels_; @@ -225,11 +219,10 @@ void DigitallyImportedServiceBase::LoadStation(const QString& key) { const QString host = "listen." + homepage_url_.host().remove("www."); if (is_premium_account()) { - playlist_url = QUrl(premium_playlists_[premium_audio_type_].arg( - host, key, listen_hash_)); + playlist_url = QUrl( + premium_playlists_[premium_audio_type_].arg(host, key, listen_hash_)); } else { - playlist_url = QUrl(basic_playlists_[basic_audio_type_].arg( - host, key)); + playlist_url = QUrl(basic_playlists_[basic_audio_type_].arg(host, key)); } qLog(Debug) << "Getting playlist URL" << playlist_url; @@ -239,47 +232,30 @@ void DigitallyImportedServiceBase::LoadStation(const QString& key) { SLOT(LoadPlaylistFinished(QNetworkReply*)), reply); } +DigitallyImportedService::DigitallyImportedService(Application* app, + InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase("DigitallyImported", "Digitally Imported", + QUrl("http://www.di.fm"), + QIcon(":/providers/digitallyimported.png"), + "di", app, model, parent) {} -DigitallyImportedService::DigitallyImportedService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("DigitallyImported", - "Digitally Imported", - QUrl("http://www.di.fm"), - QIcon(":/providers/digitallyimported.png"), - "di", - app, model, parent) -{ +SkyFmService::SkyFmService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "SKY.fm", "SKY.fm", QUrl("http://www.sky.fm"), + QIcon(":/providers/skyfm.png"), "sky", app, model, parent) {} + +JazzRadioService::JazzRadioService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "JazzRadio", "JAZZRADIO.com", QUrl("http://www.jazzradio.com"), + QIcon(":/providers/jazzradio.png"), "jazzradio", app, model, parent) { } -SkyFmService::SkyFmService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("SKY.fm", - "SKY.fm", - QUrl("http://www.sky.fm"), - QIcon(":/providers/skyfm.png"), - "sky", - app, model, parent) -{ -} - -JazzRadioService::JazzRadioService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("JazzRadio", - "JAZZRADIO.com", - QUrl("http://www.jazzradio.com"), - QIcon(":/providers/jazzradio.png"), - "jazzradio", - app, model, parent) -{ -} - -RockRadioService::RockRadioService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("RockRadio", - "ROCKRADIO.com", - QUrl("http://www.rockradio.com"), - QIcon(":/providers/rockradio.png"), - "rockradio", - app, model, parent) -{ +RockRadioService::RockRadioService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "RockRadio", "ROCKRADIO.com", QUrl("http://www.rockradio.com"), + QIcon(":/providers/rockradio.png"), "rockradio", app, model, parent) { } diff --git a/src/internet/digitallyimportedservicebase.h b/src/internet/digitallyimportedservicebase.h index d58f3c614..5471c780e 100644 --- a/src/internet/digitallyimportedservicebase.h +++ b/src/internet/digitallyimportedservicebase.h @@ -29,19 +29,15 @@ class DigitallyImportedUrlHandler; class QNetworkAccessManager; - class DigitallyImportedServiceBase : public InternetService { Q_OBJECT friend class DigitallyImportedUrlHandler; -public: - DigitallyImportedServiceBase(const QString& name, - const QString& description, - const QUrl& homepage_url, - const QIcon& icon, + public: + DigitallyImportedServiceBase(const QString& name, const QString& description, + const QUrl& homepage_url, const QIcon& icon, const QString& api_service_name, - Application* app, - InternetModel* model, + Application* app, InternetModel* model, QObject* parent = NULL); ~DigitallyImportedServiceBase(); @@ -66,25 +62,25 @@ public: void SongFromChannel(const DigitallyImportedClient::Channel& channel, Song* song) const; -public slots: + public slots: void ShowSettingsDialog(); signals: void StreamsChanged(); -private slots: + private slots: void LoadPlaylistFinished(QNetworkReply* reply); void Homepage(); void ForceRefreshStreams(); void RefreshStreams(); void RefreshStreamsFinished(QNetworkReply* reply, int task_id); -private: + private: void PopulateStreams(); void LoadStation(const QString& key); -private: + private: // Set by subclasses through the constructor QUrl homepage_url_; QIcon icon_; @@ -113,23 +109,26 @@ private: }; class DigitallyImportedService : public DigitallyImportedServiceBase { -public: - DigitallyImportedService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + DigitallyImportedService(Application* app, InternetModel* model, + QObject* parent = NULL); }; class SkyFmService : public DigitallyImportedServiceBase { -public: + public: SkyFmService(Application* app, InternetModel* model, QObject* parent = NULL); }; class JazzRadioService : public DigitallyImportedServiceBase { -public: - JazzRadioService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + JazzRadioService(Application* app, InternetModel* model, + QObject* parent = NULL); }; class RockRadioService : public DigitallyImportedServiceBase { -public: - RockRadioService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + RockRadioService(Application* app, InternetModel* model, + QObject* parent = NULL); }; -#endif // DIGITALLYIMPORTEDSERVICEBASE_H +#endif // DIGITALLYIMPORTEDSERVICEBASE_H diff --git a/src/internet/digitallyimportedsettingspage.cpp b/src/internet/digitallyimportedsettingspage.cpp index 7a4470f57..f06a2db53 100644 --- a/src/internet/digitallyimportedsettingspage.cpp +++ b/src/internet/digitallyimportedsettingspage.cpp @@ -25,12 +25,11 @@ #include #include - -DigitallyImportedSettingsPage::DigitallyImportedSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_DigitallyImportedSettingsPage), - client_(new DigitallyImportedClient("di", this)) -{ +DigitallyImportedSettingsPage::DigitallyImportedSettingsPage( + SettingsDialog* dialog) + : SettingsPage(dialog), + ui_(new Ui_DigitallyImportedSettingsPage), + client_(new DigitallyImportedClient("di", this)) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/digitallyimported-32.png")); @@ -42,22 +41,21 @@ DigitallyImportedSettingsPage::DigitallyImportedSettingsPage(SettingsDialog* dia ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->credential_group); - ui_->login_state->SetAccountTypeText(tr( - "You can listen for free without an account, but Premium members can " - "listen to higher quality streams without advertisements.")); + ui_->login_state->SetAccountTypeText( + tr("You can listen for free without an account, but Premium members can " + "listen to higher quality streams without advertisements.")); ui_->login_state->SetAccountTypeVisible(true); } -DigitallyImportedSettingsPage::~DigitallyImportedSettingsPage() { - delete ui_; -} +DigitallyImportedSettingsPage::~DigitallyImportedSettingsPage() { delete ui_; } void DigitallyImportedSettingsPage::Login() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); - QNetworkReply* reply = client_->Auth(ui_->username->text(), ui_->password->text()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*)), reply); + QNetworkReply* reply = + client_->Auth(ui_->username->text(), ui_->password->text()); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*)), reply); } void DigitallyImportedSettingsPage::LoginFinished(QNetworkReply* reply) { @@ -84,8 +82,9 @@ void DigitallyImportedSettingsPage::LoginFinished(QNetworkReply* reply) { } } -void DigitallyImportedSettingsPage::UpdateLoginState( - const QString& listen_hash, const QString& name, const QDateTime& expires) { +void DigitallyImportedSettingsPage::UpdateLoginState(const QString& listen_hash, + const QString& name, + const QDateTime& expires) { if (listen_hash.isEmpty()) { ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); ui_->login_state->SetExpires(QDate()); @@ -114,8 +113,10 @@ void DigitallyImportedSettingsPage::Load() { QSettings s; s.beginGroup(DigitallyImportedServiceBase::kSettingsGroup); - ui_->basic_audio_type->setCurrentIndex(s.value("basic_audio_type", 1).toInt()); - ui_->premium_audio_type->setCurrentIndex(s.value("premium_audio_type", 2).toInt()); + ui_->basic_audio_type->setCurrentIndex( + s.value("basic_audio_type", 1).toInt()); + ui_->premium_audio_type->setCurrentIndex( + s.value("premium_audio_type", 2).toInt()); ui_->username->setText(s.value("username").toString()); UpdateLoginState(s.value("listen_hash").toString(), @@ -131,5 +132,3 @@ void DigitallyImportedSettingsPage::Save() { s.setValue("premium_audio_type", ui_->premium_audio_type->currentIndex()); s.setValue("username", ui_->username->text()); } - - diff --git a/src/internet/digitallyimportedsettingspage.h b/src/internet/digitallyimportedsettingspage.h index eaf31ef45..f22947925 100644 --- a/src/internet/digitallyimportedsettingspage.h +++ b/src/internet/digitallyimportedsettingspage.h @@ -28,27 +28,27 @@ class QNetworkReply; class DigitallyImportedSettingsPage : public SettingsPage { Q_OBJECT -public: + public: DigitallyImportedSettingsPage(SettingsDialog* dialog); ~DigitallyImportedSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void Logout(); void LoginFinished(QNetworkReply* reply); -private: + private: void UpdateLoginState(const QString& listen_hash, const QString& name, const QDateTime& expires); -private: + private: Ui_DigitallyImportedSettingsPage* ui_; DigitallyImportedClient* client_; }; -#endif // DIGITALLYIMPORTEDSETTINGSPAGE_H +#endif // DIGITALLYIMPORTEDSETTINGSPAGE_H diff --git a/src/internet/digitallyimportedurlhandler.cpp b/src/internet/digitallyimportedurlhandler.cpp index 651097148..c57cdf371 100644 --- a/src/internet/digitallyimportedurlhandler.cpp +++ b/src/internet/digitallyimportedurlhandler.cpp @@ -25,12 +25,7 @@ DigitallyImportedUrlHandler::DigitallyImportedUrlHandler( Application* app, DigitallyImportedServiceBase* service) - : UrlHandler(service), - app_(app), - service_(service), - task_id_(-1) -{ -} + : UrlHandler(service), app_(app), service_(service), task_id_(-1) {} QString DigitallyImportedUrlHandler::scheme() const { return service_->api_service_name(); @@ -49,7 +44,8 @@ QIcon DigitallyImportedUrlHandler::icon() const { return QIcon(); } -UrlHandler::LoadResult DigitallyImportedUrlHandler::StartLoading(const QUrl& url) { +UrlHandler::LoadResult DigitallyImportedUrlHandler::StartLoading( + const QUrl& url) { LoadResult ret(url); if (task_id_ != -1) { return ret; @@ -91,7 +87,7 @@ void DigitallyImportedUrlHandler::LoadPlaylistFinished(QIODevice* device) { } emit AsyncLoadComplete(LoadResult( - last_original_url_, LoadResult::TrackAvailable, songs[0].url())); + last_original_url_, LoadResult::TrackAvailable, songs[0].url())); } void DigitallyImportedUrlHandler::CancelTask() { diff --git a/src/internet/digitallyimportedurlhandler.h b/src/internet/digitallyimportedurlhandler.h index 9cd398c5f..3386a6257 100644 --- a/src/internet/digitallyimportedurlhandler.h +++ b/src/internet/digitallyimportedurlhandler.h @@ -23,10 +23,10 @@ class Application; class DigitallyImportedServiceBase; - class DigitallyImportedUrlHandler : public UrlHandler { -public: - DigitallyImportedUrlHandler(Application* app, DigitallyImportedServiceBase* service); + public: + DigitallyImportedUrlHandler(Application* app, + DigitallyImportedServiceBase* service); QString scheme() const; QIcon icon() const; @@ -35,7 +35,7 @@ public: void CancelTask(); void LoadPlaylistFinished(QIODevice* device); -private: + private: Application* app_; DigitallyImportedServiceBase* service_; int task_id_; @@ -43,4 +43,4 @@ private: QUrl last_original_url_; }; -#endif // DIGITALLYIMPORTEDURLHANDLER_H +#endif // DIGITALLYIMPORTEDURLHANDLER_H diff --git a/src/internet/dropboxauthenticator.cpp b/src/internet/dropboxauthenticator.cpp index ce3239df6..e5e8eac56 100644 --- a/src/internet/dropboxauthenticator.cpp +++ b/src/internet/dropboxauthenticator.cpp @@ -32,20 +32,18 @@ static const char* kAccountInfoEndpoint = } // namespace DropboxAuthenticator::DropboxAuthenticator(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)) { -} + : QObject(parent), network_(new NetworkAccessManager(this)) {} void DropboxAuthenticator::StartAuthorisation() { QUrl url(kRequestTokenEndpoint); - QByteArray authorisation_header = GenerateAuthorisationHeader( - QString::null, QString::null); + QByteArray authorisation_header = + GenerateAuthorisationHeader(QString::null, QString::null); QNetworkRequest request(url); request.setRawHeader("Authorization", authorisation_header); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestTokenFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestTokenFinished(QNetworkReply*)), reply); } namespace { @@ -54,7 +52,7 @@ namespace { QMap ParseParamList(const QString& params) { QMap ret; QStringList components = params.split("&"); - foreach (const QString& component, components) { + foreach(const QString & component, components) { QStringList pairs = component.split("="); if (pairs.size() != 2) { continue; @@ -63,7 +61,6 @@ QMap ParseParamList(const QString& params) { } return ret; } - } void DropboxAuthenticator::RequestTokenFinished(QNetworkReply* reply) { @@ -79,8 +76,8 @@ void DropboxAuthenticator::Authorise() { LocalRedirectServer* server = new LocalRedirectServer(this); server->Listen(); - NewClosure(server, SIGNAL(Finished()), - this, SLOT(RedirectArrived(LocalRedirectServer*)), server); + NewClosure(server, SIGNAL(Finished()), this, + SLOT(RedirectArrived(LocalRedirectServer*)), server); QUrl url(kAuthoriseEndpoint); url.addQueryItem("oauth_token", token_); @@ -100,13 +97,13 @@ void DropboxAuthenticator::RedirectArrived(LocalRedirectServer* server) { void DropboxAuthenticator::RequestAccessToken() { QUrl url(kAccessTokenEndpoint); QNetworkRequest request(url); - QByteArray authorisation_header = GenerateAuthorisationHeader( - token_, secret_); + QByteArray authorisation_header = + GenerateAuthorisationHeader(token_, secret_); request.setRawHeader("Authorization", authorisation_header); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestAccessTokenFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestAccessTokenFinished(QNetworkReply*)), reply); } void DropboxAuthenticator::RequestAccessTokenFinished(QNetworkReply* reply) { @@ -125,11 +122,10 @@ QByteArray DropboxAuthenticator::GenerateAuthorisationHeader() { } QByteArray DropboxAuthenticator::GenerateAuthorisationHeader( - const QString& token, - const QString& token_secret) { + const QString& token, const QString& token_secret) { typedef QPair Param; - QByteArray signature = QUrl::toPercentEncoding( - QString("%1&%2").arg(kAppSecret, token_secret)); + QByteArray signature = + QUrl::toPercentEncoding(QString("%1&%2").arg(kAppSecret, token_secret)); QList params; params << Param("oauth_consumer_key", kAppKey) << Param("oauth_signature_method", "PLAINTEXT") @@ -140,7 +136,7 @@ QByteArray DropboxAuthenticator::GenerateAuthorisationHeader( params << Param("oauth_token", token); } QStringList encoded_params; - foreach (const Param& p, params) { + foreach(const Param & p, params) { encoded_params << QString("%1=\"%2\"").arg(p.first, p.second); } QString authorisation_header = QString("OAuth ") + encoded_params.join(", "); @@ -153,11 +149,12 @@ void DropboxAuthenticator::RequestAccountInformation() { request.setRawHeader("Authorization", GenerateAuthorisationHeader()); qLog(Debug) << Q_FUNC_INFO << url << request.rawHeader("Authorization"); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestAccountInformationFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestAccountInformationFinished(QNetworkReply*)), reply); } -void DropboxAuthenticator::RequestAccountInformationFinished(QNetworkReply* reply) { +void DropboxAuthenticator::RequestAccountInformationFinished( + QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); diff --git a/src/internet/dropboxauthenticator.h b/src/internet/dropboxauthenticator.h index 7a7e0875f..7457390b4 100644 --- a/src/internet/dropboxauthenticator.h +++ b/src/internet/dropboxauthenticator.h @@ -19,10 +19,10 @@ class DropboxAuthenticator : public QObject { const QString& uid() const { return uid_; } const QString& name() const { return name_; } - static QByteArray GenerateAuthorisationHeader( - const QString& token, const QString& secret); + static QByteArray GenerateAuthorisationHeader(const QString& token, + const QString& secret); - signals: +signals: void Finished(); private slots: @@ -45,7 +45,6 @@ class DropboxAuthenticator : public QObject { QString token_; QString secret_; - // Permanent OAuth access tokens. QString access_token_; QString access_token_secret_; diff --git a/src/internet/dropboxservice.cpp b/src/internet/dropboxservice.cpp index 75637616e..b6863b7cc 100644 --- a/src/internet/dropboxservice.cpp +++ b/src/internet/dropboxservice.cpp @@ -24,21 +24,17 @@ namespace { static const char* kServiceId = "dropbox"; -static const char* kMediaEndpoint = - "https://api.dropbox.com/1/media/dropbox/"; -static const char* kDeltaEndpoint = - "https://api.dropbox.com/1/delta"; +static const char* kMediaEndpoint = "https://api.dropbox.com/1/media/dropbox/"; +static const char* kDeltaEndpoint = "https://api.dropbox.com/1/delta"; static const char* kLongPollEndpoint = "https://api-notify.dropbox.com/1/longpoll_delta"; } // namespace DropboxService::DropboxService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/dropbox.png"), - SettingsDialog::Page_Dropbox), + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":/providers/dropbox.png"), + SettingsDialog::Page_Dropbox), network_(new NetworkAccessManager(this)) { QSettings settings; settings.beginGroup(kSettingsGroup); @@ -59,7 +55,8 @@ void DropboxService::Connect() { } } -void DropboxService::AuthenticationFinished(DropboxAuthenticator* authenticator) { +void DropboxService::AuthenticationFinished( + DropboxAuthenticator* authenticator) { authenticator->deleteLater(); access_token_ = authenticator->access_token(); @@ -79,8 +76,7 @@ void DropboxService::AuthenticationFinished(DropboxAuthenticator* authenticator) QByteArray DropboxService::GenerateAuthorisationHeader() { return DropboxAuthenticator::GenerateAuthorisationHeader( - access_token_, - access_token_secret_); + access_token_, access_token_secret_); } void DropboxService::RequestFileList() { @@ -95,8 +91,8 @@ void DropboxService::RequestFileList() { request.setRawHeader("Authorization", GenerateAuthorisationHeader()); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestFileListFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestFileListFinished(QNetworkReply*)), reply); } void DropboxService::RequestFileListFinished(QNetworkReply* reply) { @@ -104,8 +100,7 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); - if (response.contains("reset") && - response["reset"].toBool()) { + if (response.contains("reset") && response["reset"].toBool()) { qLog(Debug) << "Resetting Dropbox DB"; library_backend_->DeleteAll(); } @@ -116,7 +111,7 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { QVariantList contents = response["entries"].toList(); qLog(Debug) << "Delta found:" << contents.size(); - foreach (const QVariant& c, contents) { + foreach(const QVariant & c, contents) { QVariantList item = c.toList(); QString path = item[0].toString(); @@ -139,16 +134,17 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { continue; } - // Workaround: Since Dropbox doesn't recognize Opus files and thus treats them + // Workaround: Since Dropbox doesn't recognize Opus files and thus treats + // them // as application/octet-stream, we overwrite the mime type here - if (metadata["mime_type"].toString() == "application/octet-stream" && + if (metadata["mime_type"].toString() == "application/octet-stream" && url.toString().endsWith(".opus")) metadata["mime_type"] = GuessMimeTypeForFile(url.toString()); if (ShouldIndexFile(url, metadata["mime_type"].toString())) { QNetworkReply* reply = FetchContentUrl(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchContentUrlFinished(QNetworkReply*, QVariantMap)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchContentUrlFinished(QNetworkReply*, QVariantMap)), reply, metadata); } } @@ -172,8 +168,8 @@ void DropboxService::LongPollDelta() { QNetworkRequest request(request_url); request.setRawHeader("Authorization", GenerateAuthorisationHeader()); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LongPollFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LongPollFinished(QNetworkReply*)), reply); } void DropboxService::LongPollFinished(QNetworkReply* reply) { @@ -201,8 +197,8 @@ QNetworkReply* DropboxService::FetchContentUrl(const QUrl& url) { return network_->post(request, QByteArray()); } -void DropboxService::FetchContentUrlFinished( - QNetworkReply* reply, const QVariantMap& data) { +void DropboxService::FetchContentUrlFinished(QNetworkReply* reply, + const QVariantMap& data) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); @@ -220,11 +216,9 @@ void DropboxService::FetchContentUrlFinished( song.set_filesize(data["bytes"].toInt()); song.set_ctime(0); - MaybeAddFileToDatabase( - song, - data["mime_type"].toString(), - QUrl::fromEncoded(response["url"].toByteArray()), - QString::null); + MaybeAddFileToDatabase(song, data["mime_type"].toString(), + QUrl::fromEncoded(response["url"].toByteArray()), + QString::null); } QUrl DropboxService::GetStreamingUrlFromSongId(const QUrl& url) { diff --git a/src/internet/dropboxservice.h b/src/internet/dropboxservice.h index 2e026ab10..9434fa5da 100644 --- a/src/internet/dropboxservice.h +++ b/src/internet/dropboxservice.h @@ -21,7 +21,7 @@ class DropboxService : public CloudFileService { QUrl GetStreamingUrlFromSongId(const QUrl& url); - signals: +signals: void Connected(); public slots: diff --git a/src/internet/dropboxsettingspage.cpp b/src/internet/dropboxsettingspage.cpp index a6ad9dee6..22418d9d5 100644 --- a/src/internet/dropboxsettingspage.cpp +++ b/src/internet/dropboxsettingspage.cpp @@ -25,10 +25,9 @@ #include "ui/settingsdialog.h" DropboxSettingsPage::DropboxSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::DropboxSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::DropboxSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -38,9 +37,7 @@ DropboxSettingsPage::DropboxSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -DropboxSettingsPage::~DropboxSettingsPage() { - delete ui_; -} +DropboxSettingsPage::~DropboxSettingsPage() { delete ui_; } void DropboxSettingsPage::Load() { QSettings s; @@ -60,11 +57,10 @@ void DropboxSettingsPage::Save() { void DropboxSettingsPage::LoginClicked() { DropboxAuthenticator* authenticator = new DropboxAuthenticator; - NewClosure(authenticator, SIGNAL(Finished()), - this, SLOT(Connected(DropboxAuthenticator*)), - authenticator); - NewClosure(authenticator, SIGNAL(Finished()), - service_, SLOT(AuthenticationFinished(DropboxAuthenticator*)), + NewClosure(authenticator, SIGNAL(Finished()), this, + SLOT(Connected(DropboxAuthenticator*)), authenticator); + NewClosure(authenticator, SIGNAL(Finished()), service_, + SLOT(AuthenticationFinished(DropboxAuthenticator*)), authenticator); authenticator->StartAuthorisation(); @@ -85,6 +81,6 @@ void DropboxSettingsPage::LogoutClicked() { } void DropboxSettingsPage::Connected(DropboxAuthenticator* authenticator) { - ui_->login_state->SetLoggedIn( - LoginStateWidget::LoggedIn, authenticator->name()); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, + authenticator->name()); } diff --git a/src/internet/dropboxsettingspage.h b/src/internet/dropboxsettingspage.h index ea646a4bd..a0712246b 100644 --- a/src/internet/dropboxsettingspage.h +++ b/src/internet/dropboxsettingspage.h @@ -30,7 +30,7 @@ class Ui_DropboxSettingsPage; class DropboxSettingsPage : public SettingsPage { Q_OBJECT -public: + public: DropboxSettingsPage(SettingsDialog* parent = 0); ~DropboxSettingsPage(); @@ -40,15 +40,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(DropboxAuthenticator* authenticator); -private: + private: Ui_DropboxSettingsPage* ui_; DropboxService* service_; }; -#endif // DROPBOXSETTINGSPAGE_H +#endif // DROPBOXSETTINGSPAGE_H diff --git a/src/internet/dropboxurlhandler.cpp b/src/internet/dropboxurlhandler.cpp index b5d381fdc..1a2068e2c 100644 --- a/src/internet/dropboxurlhandler.cpp +++ b/src/internet/dropboxurlhandler.cpp @@ -2,12 +2,8 @@ #include "internet/dropboxservice.h" -DropboxUrlHandler::DropboxUrlHandler( - DropboxService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +DropboxUrlHandler::DropboxUrlHandler(DropboxService* service, QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult DropboxUrlHandler::StartLoading(const QUrl& url) { return LoadResult(url, LoadResult::TrackAvailable, diff --git a/src/internet/fixlastfm.cpp b/src/internet/fixlastfm.cpp index 5bc36fad7..607f5c162 100644 --- a/src/internet/fixlastfm.cpp +++ b/src/internet/fixlastfm.cpp @@ -18,8 +18,5 @@ #include "fixlastfm.h" #ifdef QT_NO_DEBUG_OUTPUT - QDebug& operator<<(QDebug& d, const QUrl&) { - return d; - } +QDebug& operator<<(QDebug& d, const QUrl&) { return d; } #endif - diff --git a/src/internet/fixlastfm.h b/src/internet/fixlastfm.h index 139de00ec..f23e2702e 100644 --- a/src/internet/fixlastfm.h +++ b/src/internet/fixlastfm.h @@ -21,10 +21,10 @@ // Include this before to fix a compile error in release mode #ifdef QT_NO_DEBUG_OUTPUT -# include -# include - // Stub this out so lastfm/Track still compiles - QDebug& operator<<(QDebug&, const QUrl&); +#include +#include +// Stub this out so lastfm/Track still compiles +QDebug& operator<<(QDebug&, const QUrl&); #endif #endif diff --git a/src/internet/geolocator.cpp b/src/internet/geolocator.cpp index a2a2b4cc2..2c773b995 100644 --- a/src/internet/geolocator.cpp +++ b/src/internet/geolocator.cpp @@ -32,18 +32,14 @@ const char* Geolocator::kUrl = "http://data.clementine-player.org/geolocate"; using std::numeric_limits; Geolocator::LatLng::LatLng() - : lat_e6_(numeric_limits::min()), - lng_e6_(numeric_limits::min()) { -} + : lat_e6_(numeric_limits::min()), + lng_e6_(numeric_limits::min()) {} Geolocator::LatLng::LatLng(int lat_e6, int lng_e6) - : lat_e6_(lat_e6), - lng_e6_(lng_e6) { -} + : lat_e6_(lat_e6), lng_e6_(lng_e6) {} Geolocator::LatLng::LatLng(const QString& latlng) - : lat_e6_(numeric_limits::min()), - lng_e6_(numeric_limits::min()) { + : lat_e6_(numeric_limits::min()), lng_e6_(numeric_limits::min()) { QStringList split = latlng.split(","); if (split.length() != 2) { return; @@ -83,14 +79,13 @@ bool Geolocator::LatLng::IsValid() const { lng_e6_ != numeric_limits::min(); } -Geolocator::Geolocator(QObject* parent) - : QObject(parent) { -} +Geolocator::Geolocator(QObject* parent) : QObject(parent) {} void Geolocator::Geolocate() { QNetworkRequest req = QNetworkRequest(QUrl(kUrl)); QNetworkReply* reply = network_.get(req); - NewClosure(reply, SIGNAL(finished()), this, SLOT(RequestFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestFinished(QNetworkReply*)), reply); } void Geolocator::RequestFinished(QNetworkReply* reply) { diff --git a/src/internet/geolocator.h b/src/internet/geolocator.h index fabe4ccac..af8e4bf8e 100644 --- a/src/internet/geolocator.h +++ b/src/internet/geolocator.h @@ -47,7 +47,7 @@ class Geolocator : public QObject { int lng_e6_; }; - signals: +signals: void Finished(Geolocator::LatLng latlng); private slots: diff --git a/src/internet/googledriveclient.cpp b/src/internet/googledriveclient.cpp index fed872450..a0b2b543a 100644 --- a/src/internet/googledriveclient.cpp +++ b/src/internet/googledriveclient.cpp @@ -42,16 +42,14 @@ static const char* kOAuthTokenEndpoint = static const char* kOAuthScope = "https://www.googleapis.com/auth/drive.readonly " "https://www.googleapis.com/auth/userinfo.email"; -static const char* kClientId = - "679260893280.apps.googleusercontent.com"; -static const char* kClientSecret = - "l3cWb8efUZsrBI4wmY3uKl6i"; +static const char* kClientId = "679260893280.apps.googleusercontent.com"; +static const char* kClientSecret = "l3cWb8efUZsrBI4wmY3uKl6i"; } QStringList File::parent_ids() const { QStringList ret; - foreach (const QVariant& var, data_["parents"].toList()) { + foreach(const QVariant & var, data_["parents"].toList()) { QVariantMap map(var.toMap()); if (map["isRoot"].toBool()) { @@ -64,28 +62,16 @@ QStringList File::parent_ids() const { return ret; } -ConnectResponse::ConnectResponse(QObject* parent) - : QObject(parent) -{ -} +ConnectResponse::ConnectResponse(QObject* parent) : QObject(parent) {} GetFileResponse::GetFileResponse(const QString& file_id, QObject* parent) - : QObject(parent), - file_id_(file_id) -{ -} + : QObject(parent), file_id_(file_id) {} ListChangesResponse::ListChangesResponse(const QString& cursor, QObject* parent) - : QObject(parent), - cursor_(cursor) -{ -} + : QObject(parent), cursor_(cursor) {} Client::Client(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)) -{ -} + : QObject(parent), network_(new NetworkAccessManager(this)) {} ConnectResponse* Client::Connect(const QString& refresh_token) { ConnectResponse* ret = new ConnectResponse(this); @@ -93,17 +79,14 @@ ConnectResponse* Client::Connect(const QString& refresh_token) { kClientId, kClientSecret, OAuthenticator::RedirectStyle::LOCALHOST, this); if (refresh_token.isEmpty()) { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - kOAuthScope); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, kOAuthScope); } else { oauth->RefreshAuthorisation(kOAuthTokenEndpoint, refresh_token); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(ConnectResponse*,OAuthenticator*)), - ret, oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(ConnectResponse*, OAuthenticator*)), ret, + oauth); return ret; } @@ -118,13 +101,13 @@ void Client::ConnectFinished(ConnectResponse* response, OAuthenticator* oauth) { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(ConnectResponse*, QNetworkReply*)), - response, reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(ConnectResponse*, QNetworkReply*)), + response, reply); } -void Client::FetchUserInfoFinished( - ConnectResponse* response, QNetworkReply* reply) { +void Client::FetchUserInfoFinished(ConnectResponse* response, + QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) != 200) { qLog(Warning) << "Failed to get user info" << reply->readAll(); @@ -146,8 +129,8 @@ void Client::FetchUserInfoFinished( } void Client::AddAuthorizationHeader(QNetworkRequest* request) const { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } GetFileResponse* Client::GetFile(const QString& file_id) { @@ -158,13 +141,13 @@ GetFileResponse* Client::GetFile(const QString& file_id) { QNetworkRequest request = QNetworkRequest(url); AddAuthorizationHeader(&request); // Never cache these requests as we will get out of date download URLs. - request.setAttribute( - QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, + QNetworkRequest::AlwaysNetwork); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(GetFileFinished(GetFileResponse*,QNetworkReply*)), - ret, reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(GetFileFinished(GetFileResponse*, QNetworkReply*)), ret, + reply); return ret; } @@ -191,7 +174,8 @@ ListChangesResponse* Client::ListChanges(const QString& cursor) { return ret; } -void Client::MakeListChangesRequest(ListChangesResponse* response, const QString& page_token) { +void Client::MakeListChangesRequest(ListChangesResponse* response, + const QString& page_token) { QUrl url(kGoogleDriveChanges); if (!response->cursor().isEmpty()) { url.addQueryItem("startChangeId", response->cursor()); @@ -206,12 +190,13 @@ void Client::MakeListChangesRequest(ListChangesResponse* response, const QString AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(ListChangesFinished(ListChangesResponse*,QNetworkReply*)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ListChangesFinished(ListChangesResponse*, QNetworkReply*)), response, reply); } -void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* reply) { +void Client::ListChangesFinished(ListChangesResponse* response, + QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; @@ -231,7 +216,7 @@ void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* r // Emit the FilesFound signal for the files in the response. FileList files; QList files_deleted; - foreach (const QVariant& v, result["items"].toList()) { + foreach(const QVariant & v, result["items"].toList()) { QVariantMap change = v.toMap(); if (!change["deleted"].toBool()) { files << File(change["file"].toMap()); @@ -256,7 +241,7 @@ void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* r bool Client::is_authenticated() const { return !access_token_.isEmpty() && - QDateTime::currentDateTime().secsTo(expiry_time_) > 0; + QDateTime::currentDateTime().secsTo(expiry_time_) > 0; } void Client::ForgetCredentials() { diff --git a/src/internet/googledriveclient.h b/src/internet/googledriveclient.h index cecb2a1e9..07212698a 100644 --- a/src/internet/googledriveclient.h +++ b/src/internet/googledriveclient.h @@ -30,14 +30,13 @@ class QNetworkAccessManager; class QNetworkReply; class QNetworkRequest; - namespace google_drive { class Client; // Holds the metadata for a file on Google Drive. class File { -public: + public: File(const QVariantMap& data = QVariantMap()) : data_(data) {} static const char* kFolderMimeType; @@ -72,57 +71,55 @@ public: bool is_restricted() const { return has_label("restricted"); } bool is_viewed() const { return has_label("viewed"); } -private: + private: QVariantMap data_; }; typedef QList FileList; - class ConnectResponse : public QObject { Q_OBJECT friend class Client; -public: + public: const QString& refresh_token() const { return refresh_token_; } const QString& user_email() const { return user_email_; } signals: void Finished(); -private: + private: ConnectResponse(QObject* parent); QString refresh_token_; QString user_email_; }; - class GetFileResponse : public QObject { Q_OBJECT friend class Client; -public: + public: const QString& file_id() const { return file_id_; } const File& file() const { return file_; } signals: void Finished(); -private: + private: GetFileResponse(const QString& file_id, QObject* parent); QString file_id_; File file_; }; - class ListChangesResponse : public QObject { Q_OBJECT friend class Client; + public: const QString& cursor() const { return cursor_; } const QString& next_cursor() const { return next_cursor_; } - signals: +signals: void FilesFound(const QList& files); void FilesDeleted(const QList& files); void Finished(); @@ -133,11 +130,10 @@ class ListChangesResponse : public QObject { QString next_cursor_; }; - class Client : public QObject { Q_OBJECT -public: + public: Client(QObject* parent = 0); bool is_authenticated() const; @@ -149,28 +145,27 @@ public: GetFileResponse* GetFile(const QString& file_id); ListChangesResponse* ListChanges(const QString& cursor); - signals: void Authenticated(); -private slots: + private slots: void ConnectFinished(ConnectResponse* response, OAuthenticator* oauth); void FetchUserInfoFinished(ConnectResponse* response, QNetworkReply* reply); void GetFileFinished(GetFileResponse* response, QNetworkReply* reply); void ListChangesFinished(ListChangesResponse* response, QNetworkReply* reply); -private: + private: void AddAuthorizationHeader(QNetworkRequest* request) const; void MakeListChangesRequest(ListChangesResponse* response, const QString& page_token = QString()); -private: + private: QNetworkAccessManager* network_; QString access_token_; QDateTime expiry_time_; }; -} // namespace +} // namespace -#endif // GOOGLEDRIVECLIENT_H +#endif // GOOGLEDRIVECLIENT_H diff --git a/src/internet/googledriveservice.cpp b/src/internet/googledriveservice.cpp index 15fc3cc09..b8312eaaa 100644 --- a/src/internet/googledriveservice.cpp +++ b/src/internet/googledriveservice.cpp @@ -30,16 +30,12 @@ namespace { static const char* kDriveEditFileUrl = "https://docs.google.com/file/d/%1/edit"; static const char* kServiceId = "google_drive"; - } - GoogleDriveService::GoogleDriveService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/googledrive.png"), - SettingsDialog::Page_GoogleDrive), + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":/providers/googledrive.png"), + SettingsDialog::Page_GoogleDrive), client_(new google_drive::Client(this)) { app->player()->RegisterUrlHandler(new GoogleDriveUrlHandler(this, this)); } @@ -57,9 +53,8 @@ QString GoogleDriveService::refresh_token() const { void GoogleDriveService::Connect() { google_drive::ConnectResponse* response = client_->Connect(refresh_token()); - NewClosure(response, SIGNAL(Finished()), - this, SLOT(ConnectFinished(google_drive::ConnectResponse*)), - response); + NewClosure(response, SIGNAL(Finished()), this, + SLOT(ConnectFinished(google_drive::ConnectResponse*)), response); } void GoogleDriveService::ForgetCredentials() { @@ -73,24 +68,27 @@ void GoogleDriveService::ForgetCredentials() { } void GoogleDriveService::ListChanges(const QString& cursor) { - google_drive::ListChangesResponse* changes_response = client_->ListChanges(cursor); + google_drive::ListChangesResponse* changes_response = + client_->ListChanges(cursor); connect(changes_response, SIGNAL(FilesFound(QList)), SLOT(FilesFound(QList))); connect(changes_response, SIGNAL(FilesDeleted(QList)), SLOT(FilesDeleted(QList))); - NewClosure(changes_response, SIGNAL(Finished()), - this, SLOT(ListChangesFinished(google_drive::ListChangesResponse*)), + NewClosure(changes_response, SIGNAL(Finished()), this, + SLOT(ListChangesFinished(google_drive::ListChangesResponse*)), changes_response); } -void GoogleDriveService::ListChangesFinished(google_drive::ListChangesResponse* changes_response) { +void GoogleDriveService::ListChangesFinished( + google_drive::ListChangesResponse* changes_response) { changes_response->deleteLater(); QSettings s; s.beginGroup(kSettingsGroup); s.setValue("cursor", changes_response->next_cursor()); } -void GoogleDriveService::ConnectFinished(google_drive::ConnectResponse* response) { +void GoogleDriveService::ConnectFinished( + google_drive::ConnectResponse* response) { response->deleteLater(); // Save the refresh token @@ -121,7 +119,7 @@ void GoogleDriveService::EnsureConnected() { } void GoogleDriveService::FilesFound(const QList& files) { - foreach (const google_drive::File& file, files) { + foreach(const google_drive::File & file, files) { if (!IsSupportedMimeType(file.mime_type())) { continue; } @@ -145,16 +143,13 @@ void GoogleDriveService::FilesFound(const QList& files) { song.set_title(file.title()); } - MaybeAddFileToDatabase( - song, - file.mime_type(), - file.download_url(), - QString("Bearer %1").arg(client_->access_token())); + MaybeAddFileToDatabase(song, file.mime_type(), file.download_url(), + QString("Bearer %1").arg(client_->access_token())); } } void GoogleDriveService::FilesDeleted(const QList& files) { - foreach (const QUrl& url, files) { + foreach(const QUrl & url, files) { Song song = library_backend_->GetSongByUrl(url); qLog(Debug) << "Deleting:" << url << song.title(); if (song.is_valid()) { @@ -181,25 +176,20 @@ void GoogleDriveService::ShowContextMenu(const QPoint& global_pos) { context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); open_in_drive_action_ = context_menu_->addAction( - QIcon(":/providers/googledrive.png"), tr("Open in Google Drive"), - this, SLOT(OpenWithDrive())); + QIcon(":/providers/googledrive.png"), tr("Open in Google Drive"), this, + SLOT(OpenWithDrive())); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("download"), - tr("Cover Manager"), - this, - SLOT(ShowCoverManager())); - context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure..."), + context_menu_->addAction(IconLoader::Load("download"), tr("Cover Manager"), + this, SLOT(ShowCoverManager())); + context_menu_->addAction(IconLoader::Load("configure"), tr("Configure..."), this, SLOT(ShowSettingsDialog())); } // Only show some actions if there are real songs selected bool songs_selected = false; - foreach (const QModelIndex& index, model()->selected_indexes()) { + foreach(const QModelIndex & index, model()->selected_indexes()) { const int type = index.data(LibraryModel::Role_Type).toInt(); - if (type == LibraryItem::Type_Song || - type == LibraryItem::Type_Container) { + if (type == LibraryItem::Type_Song || type == LibraryItem::Type_Container) { songs_selected = true; break; } @@ -213,15 +203,15 @@ void GoogleDriveService::ShowContextMenu(const QPoint& global_pos) { void GoogleDriveService::OpenWithDrive() { // Map indexes to the actual library model. QModelIndexList library_indexes; - foreach (const QModelIndex& index, model()->selected_indexes()) { + foreach(const QModelIndex & index, model()->selected_indexes()) { if (index.model() == library_sort_model_) { library_indexes << library_sort_model_->mapToSource(index); } } // Ask the library for the songs for these indexes. - foreach (const Song& song, library_model_->GetChildSongs(library_indexes)) { + foreach(const Song & song, library_model_->GetChildSongs(library_indexes)) { QDesktopServices::openUrl( - QUrl(QString(kDriveEditFileUrl).arg(song.url().path()))); + QUrl(QString(kDriveEditFileUrl).arg(song.url().path()))); } } diff --git a/src/internet/googledriveservice.h b/src/internet/googledriveservice.h index a5760902b..0d86b1e20 100644 --- a/src/internet/googledriveservice.h +++ b/src/internet/googledriveservice.h @@ -4,11 +4,11 @@ #include "cloudfileservice.h" namespace google_drive { - class Client; - class ConnectResponse; - class File; - class ListFilesResponse; - class ListChangesResponse; +class Client; +class ConnectResponse; +class File; +class ListFilesResponse; +class ListChangesResponse; } class GoogleDriveService : public CloudFileService { @@ -31,7 +31,7 @@ class GoogleDriveService : public CloudFileService { void Connect(); void ForgetCredentials(); - signals: +signals: void Connected(); private slots: diff --git a/src/internet/googledrivesettingspage.cpp b/src/internet/googledrivesettingspage.cpp index c19f6f344..5a4ff2622 100644 --- a/src/internet/googledrivesettingspage.cpp +++ b/src/internet/googledrivesettingspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,10 +26,10 @@ #include GoogleDriveSettingsPage::GoogleDriveSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::GoogleDriveSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::GoogleDriveSettingsPage), + service_( + dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -40,9 +40,7 @@ GoogleDriveSettingsPage::GoogleDriveSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -GoogleDriveSettingsPage::~GoogleDriveSettingsPage() { - delete ui_; -} +GoogleDriveSettingsPage::~GoogleDriveSettingsPage() { delete ui_; } void GoogleDriveSettingsPage::Load() { QSettings s; diff --git a/src/internet/googledrivesettingspage.h b/src/internet/googledrivesettingspage.h index cbf39a417..7cd8088e9 100644 --- a/src/internet/googledrivesettingspage.h +++ b/src/internet/googledrivesettingspage.h @@ -29,7 +29,7 @@ class Ui_GoogleDriveSettingsPage; class GoogleDriveSettingsPage : public SettingsPage { Q_OBJECT -public: + public: GoogleDriveSettingsPage(SettingsDialog* parent = 0); ~GoogleDriveSettingsPage(); @@ -39,15 +39,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(); -private: + private: Ui_GoogleDriveSettingsPage* ui_; GoogleDriveService* service_; }; -#endif // GOOGLEDRIVESETTINGSPAGE_H +#endif // GOOGLEDRIVESETTINGSPAGE_H diff --git a/src/internet/googledriveurlhandler.cpp b/src/internet/googledriveurlhandler.cpp index 3c74e72dc..2a35297cb 100644 --- a/src/internet/googledriveurlhandler.cpp +++ b/src/internet/googledriveurlhandler.cpp @@ -2,12 +2,9 @@ #include "googledriveservice.h" -GoogleDriveUrlHandler::GoogleDriveUrlHandler( - GoogleDriveService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +GoogleDriveUrlHandler::GoogleDriveUrlHandler(GoogleDriveService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult GoogleDriveUrlHandler::StartLoading(const QUrl& url) { QString file_id = url.path(); diff --git a/src/internet/groovesharkradio.cpp b/src/internet/groovesharkradio.cpp index 80cec51ba..64e127908 100644 --- a/src/internet/groovesharkradio.cpp +++ b/src/internet/groovesharkradio.cpp @@ -22,25 +22,14 @@ #include "internet/internetplaylistitem.h" GroovesharkRadio::GroovesharkRadio(GroovesharkService* service) - : service_(service), - tag_id_(0), - use_tag_(false), - first_time_(true) { -} + : service_(service), tag_id_(0), use_tag_(false), first_time_(true) {} GroovesharkRadio::GroovesharkRadio(GroovesharkService* service, int tag_id) - : service_(service), - tag_id_(tag_id), - use_tag_(true), - first_time_(true) { -} + : service_(service), tag_id_(tag_id), use_tag_(true), first_time_(true) {} -void GroovesharkRadio::Load(const QByteArray& data) { -} +void GroovesharkRadio::Load(const QByteArray& data) {} -QByteArray GroovesharkRadio::Save() const { - return QByteArray(); -} +QByteArray GroovesharkRadio::Save() const { return QByteArray(); } PlaylistItemList GroovesharkRadio::Generate() { PlaylistItemList items; @@ -55,7 +44,8 @@ PlaylistItemList GroovesharkRadio::Generate() { if (!song.is_valid()) { return items; } - PlaylistItemPtr playlist_item = PlaylistItemPtr(new InternetPlaylistItem(service_, song)); + PlaylistItemPtr playlist_item = + PlaylistItemPtr(new InternetPlaylistItem(service_, song)); items << playlist_item; first_time_ = false; } @@ -63,7 +53,8 @@ PlaylistItemList GroovesharkRadio::Generate() { if (!song.is_valid()) { return items; } - PlaylistItemPtr playlist_item = PlaylistItemPtr(new InternetPlaylistItem(service_, song)); + PlaylistItemPtr playlist_item = + PlaylistItemPtr(new InternetPlaylistItem(service_, song)); items << playlist_item; return items; } diff --git a/src/internet/groovesharkradio.h b/src/internet/groovesharkradio.h index f1ccaf0d2..56df3d619 100644 --- a/src/internet/groovesharkradio.h +++ b/src/internet/groovesharkradio.h @@ -24,7 +24,7 @@ class GroovesharkService; class GroovesharkRadio : public smart_playlists::Generator { -public: + public: // Start Grooveshark radio for a particular type of music GroovesharkRadio(GroovesharkService* service, int tag_id); // Start Grooveshark radio based on last artists and songs you listen to @@ -37,7 +37,7 @@ public: PlaylistItemList GenerateMore(int count) { return Generate(); } bool is_dynamic() const { return true; } -private: + private: GroovesharkService* service_; int tag_id_; // Boolean to specify if we should use tag. If not, we will used autoplay @@ -47,5 +47,5 @@ private: bool first_time_; QVariantMap autoplay_state_; }; - -#endif // GROOVESHARKRADIO_H + +#endif // GROOVESHARKRADIO_H diff --git a/src/internet/groovesharkservice.cpp b/src/internet/groovesharkservice.cpp index d700d7e88..ff02b3cf7 100644 --- a/src/internet/groovesharkservice.cpp +++ b/src/internet/groovesharkservice.cpp @@ -67,12 +67,14 @@ using smart_playlists::GeneratorPtr; // accessible to third parties. Therefore this application key is obfuscated to // prevent third parties from viewing it. const char* GroovesharkService::kApiKey = "clementineplayer"; -const char* GroovesharkService::kApiSecret = "OzLDTB5XqmhkkhxMUK0/Mp5PQgD5O27DTEJa/jtkwEw="; +const char* GroovesharkService::kApiSecret = + "OzLDTB5XqmhkkhxMUK0/Mp5PQgD5O27DTEJa/jtkwEw="; const char* GroovesharkService::kServiceName = "Grooveshark"; const char* GroovesharkService::kSettingsGroup = "Grooveshark"; const char* GroovesharkService::kUrl = "http://api.grooveshark.com/ws/3.0/"; -const char* GroovesharkService::kUrlCover = "http://beta.grooveshark.com/static/amazonart/l"; +const char* GroovesharkService::kUrlCover = + "http://beta.grooveshark.com/static/amazonart/l"; const char* GroovesharkService::kHomepage = "http://grooveshark.com/"; const int GroovesharkService::kSongSearchLimit = 100; @@ -83,38 +85,38 @@ const int GroovesharkService::kSearchDelayMsec = 400; typedef QPair Param; -GroovesharkService::GroovesharkService(Application* app, InternetModel *parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new GroovesharkUrlHandler(this, this)), - next_pending_search_id_(0), - root_(nullptr), - search_(nullptr), - popular_month_(nullptr), - popular_today_(nullptr), - stations_(nullptr), - grooveshark_radio_(nullptr), - favorites_(nullptr), - library_(nullptr), - playlists_parent_(nullptr), - subscribed_playlists_parent_(nullptr), - network_(new NetworkAccessManager(this)), - context_menu_(nullptr), - create_playlist_(nullptr), - delete_playlist_(nullptr), - rename_playlist_(nullptr), - remove_from_playlist_(nullptr), - remove_from_favorites_(nullptr), - remove_from_library_(nullptr), - get_url_to_share_song_(nullptr), - get_url_to_share_playlist_(nullptr), - search_box_(new SearchBoxWidget(this)), - search_delay_(new QTimer(this)), - last_search_reply_(nullptr), - api_key_(QByteArray::fromBase64(kApiSecret)), - login_state_(LoginState_OtherError), - task_popular_id_(0), - task_playlists_id_(0), - task_search_id_(0) { +GroovesharkService::GroovesharkService(Application* app, InternetModel* parent) + : InternetService(kServiceName, app, parent, parent), + url_handler_(new GroovesharkUrlHandler(this, this)), + next_pending_search_id_(0), + root_(nullptr), + search_(nullptr), + popular_month_(nullptr), + popular_today_(nullptr), + stations_(nullptr), + grooveshark_radio_(nullptr), + favorites_(nullptr), + library_(nullptr), + playlists_parent_(nullptr), + subscribed_playlists_parent_(nullptr), + network_(new NetworkAccessManager(this)), + context_menu_(nullptr), + create_playlist_(nullptr), + delete_playlist_(nullptr), + rename_playlist_(nullptr), + remove_from_playlist_(nullptr), + remove_from_favorites_(nullptr), + remove_from_library_(nullptr), + get_url_to_share_song_(nullptr), + get_url_to_share_playlist_(nullptr), + search_box_(new SearchBoxWidget(this)), + search_delay_(new QTimer(this)), + last_search_reply_(nullptr), + api_key_(QByteArray::fromBase64(kApiSecret)), + login_state_(LoginState_OtherError), + task_popular_id_(0), + task_playlists_id_(0), + task_search_id_(0) { app_->player()->RegisterUrlHandler(url_handler_); @@ -128,27 +130,28 @@ GroovesharkService::GroovesharkService(Application* app, InternetModel *parent) session_id_ = s.value("sessionid").toString(); username_ = s.value("username").toString(); - GroovesharkSearchProvider* search_provider = new GroovesharkSearchProvider(app_, this); + GroovesharkSearchProvider* search_provider = + new GroovesharkSearchProvider(app_, this); search_provider->Init(this); app_->global_search()->AddProvider(search_provider); - // Init secret: this code is ugly, but that's good as nobody is supposed to wonder what it does - QByteArray ba = QByteArray::fromBase64(QCoreApplication::applicationName().toLatin1()); + // Init secret: this code is ugly, but that's good as nobody is supposed to + // wonder what it does + QByteArray ba = + QByteArray::fromBase64(QCoreApplication::applicationName().toLatin1()); int n = api_key_.length(), n2 = ba.length(); - for (int i=0; isetData(true, InternetModel::Role_CanLazyLoad); root_->setData(InternetModel::PlayBehaviour_DoubleClickAction, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); return root_; } @@ -168,8 +171,7 @@ void GroovesharkService::ShowConfig() { } QWidget* GroovesharkService::HeaderWidget() const { - if (IsLoggedIn()) - return search_box_; + if (IsLoggedIn()) return search_box_; return nullptr; } @@ -194,8 +196,7 @@ void GroovesharkService::Search(const QString& text, bool now) { int GroovesharkService::SimpleSearch(const QString& query) { QList parameters; - parameters << Param("query", query) - << Param("country", "") + parameters << Param("query", query) << Param("country", "") << Param("limit", QString::number(kSongSimpleSearchLimit)) << Param("offset", ""); @@ -216,17 +217,15 @@ void GroovesharkService::SimpleSearchFinished(QNetworkReply* reply, int id) { int GroovesharkService::SearchAlbums(const QString& query) { QList parameters; - parameters << Param("query", query) - << Param("country", "") + parameters << Param("query", query) << Param("country", "") << Param("limit", QString::number(kAlbumSearchLimit)); QNetworkReply* reply = CreateRequest("getAlbumSearchResults", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchAlbumsFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchAlbumsFinished(QNetworkReply*, int)), reply, id); return id; } @@ -238,7 +237,7 @@ void GroovesharkService::SearchAlbumsFinished(QNetworkReply* reply, int id) { QVariantList albums = result["albums"].toList(); QList ret; - foreach (const QVariant& v, albums) { + foreach(const QVariant & v, albums) { quint64 album_id = v.toMap()["AlbumID"].toULongLong(); GetAlbumSongs(album_id); ret << album_id; @@ -249,15 +248,15 @@ void GroovesharkService::SearchAlbumsFinished(QNetworkReply* reply, int id) { void GroovesharkService::GetAlbumSongs(quint64 album_id) { QList parameters; - parameters << Param("albumID", album_id) - << Param("country", ""); + parameters << Param("albumID", album_id) << Param("country", ""); QNetworkReply* reply = CreateRequest("getAlbumSongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(GetAlbumSongsFinished(QNetworkReply*,quint64)), - reply, album_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(GetAlbumSongsFinished(QNetworkReply*, quint64)), reply, + album_id); } -void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, quint64 album_id) { +void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, + quint64 album_id) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); @@ -267,16 +266,16 @@ void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, quint64 alb void GroovesharkService::DoSearch() { if (!task_search_id_) { - task_search_id_ = app_->task_manager()->StartTask(tr("Searching on Grooveshark")); + task_search_id_ = + app_->task_manager()->StartTask(tr("Searching on Grooveshark")); } ClearSearchResults(); QList parameters; - parameters << Param("query", pending_search_) - << Param("country", "") - << Param("limit", QString::number(kSongSearchLimit)) - << Param("offset", ""); + parameters << Param("query", pending_search_) << Param("country", "") + << Param("limit", QString::number(kSongSearchLimit)) + << Param("offset", ""); last_search_reply_ = CreateRequest("getSongSearchResults", parameters); NewClosure(last_search_reply_, SIGNAL(finished()), this, SLOT(SearchSongsFinished(QNetworkReply*)), last_search_reply_); @@ -285,8 +284,7 @@ void GroovesharkService::DoSearch() { void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { reply->deleteLater(); - if (reply != last_search_reply_) - return; + if (reply != last_search_reply_) return; QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); @@ -294,7 +292,7 @@ void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { task_search_id_ = 0; // Fill results list - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } @@ -304,30 +302,30 @@ void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { } void GroovesharkService::InitCountry() { - if (!country_.isEmpty()) - return; + if (!country_.isEmpty()) return; // Get country info - QNetworkReply *reply_country = CreateRequest("getCountry", QList()); + QNetworkReply* reply_country = CreateRequest("getCountry", QList()); if (WaitForReply(reply_country)) { country_ = ExtractResult(reply_country); } reply_country->deleteLater(); } -QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, const QString& artist_id, - QString* server_id, QString* stream_key, qint64* length_nanosec) { +QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, + const QString& artist_id, + QString* server_id, + QString* stream_key, + qint64* length_nanosec) { QList parameters; InitCountry(); - parameters << Param("songID", song_id) - << Param("country", country_); + parameters << Param("songID", song_id) << Param("country", country_); QNetworkReply* reply = CreateRequest("getSubscriberStreamKey", parameters); // Wait for the reply bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return QUrl(); + if (reply_has_timeouted) return QUrl(); QVariantMap result = ExtractResult(reply); server_id->clear(); @@ -339,23 +337,23 @@ QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, const last_songs_ids_.append(song_id.toInt()); last_artists_ids_.append(artist_id.toInt()); // If we have enough ids, remove the old ones - if (last_songs_ids_.size() > 100) - last_songs_ids_.removeFirst(); - if (last_artists_ids_.size() > 100) - last_artists_ids_.removeFirst(); + if (last_songs_ids_.size() > 100) last_songs_ids_.removeFirst(); + if (last_artists_ids_.size() > 100) last_artists_ids_.removeFirst(); return QUrl(result["url"].toString()); } -void GroovesharkService::Login(const QString& username, const QString& password) { +void GroovesharkService::Login(const QString& username, + const QString& password) { // To login, we first need to create a session. Next, we will authenticate // this session using the user's username and password (for now, we just keep // them in mind) username_ = username; - password_ = QCryptographicHash::hash(password.toLocal8Bit(), QCryptographicHash::Md5).toHex(); + password_ = QCryptographicHash::hash(password.toLocal8Bit(), + QCryptographicHash::Md5).toHex(); QList parameters; - QNetworkReply *reply = CreateRequest("startSession", parameters, true); + QNetworkReply* reply = CreateRequest("startSession", parameters, true); NewClosure(reply, SIGNAL(finished()), this, SLOT(SessionCreated(QNetworkReply*)), reply); @@ -364,7 +362,8 @@ void GroovesharkService::Login(const QString& username, const QString& password) void GroovesharkService::SessionCreated(QNetworkReply* reply) { reply->deleteLater(); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit StreamError("Failed to create Grooveshark session: " + reply->errorString()); emit LoginFinished(false); @@ -383,10 +382,9 @@ void GroovesharkService::SessionCreated(QNetworkReply* reply) { void GroovesharkService::AuthenticateSession() { QList parameters; - parameters << Param("login", username_) - << Param("password", password_); + parameters << Param("login", username_) << Param("password", password_); - QNetworkReply *reply = CreateRequest("authenticate", parameters, true); + QNetworkReply* reply = CreateRequest("authenticate", parameters, true); NewClosure(reply, SIGNAL(finished()), this, SLOT(Authenticated(QNetworkReply*)), reply); } @@ -400,12 +398,14 @@ void GroovesharkService::Authenticated(QNetworkReply* reply) { if (!result["success"].toBool() || result["UserID"].toInt() == 0) { error = tr("Invalid username and/or password"); login_state_ = LoginState_AuthFailed; - } else if(!result["IsAnywhere"].toBool() || !result["IsPremium"].toBool()) { - error = tr("User %1 doesn't have a Grooveshark Anywhere account").arg(username_); + } else if (!result["IsAnywhere"].toBool() || !result["IsPremium"].toBool()) { + error = tr("User %1 doesn't have a Grooveshark Anywhere account") + .arg(username_); login_state_ = LoginState_NoPremium; } if (!error.isEmpty()) { - QMessageBox::warning(nullptr, tr("Grooveshark login error"), error, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Grooveshark login error"), error, + QMessageBox::Close); ResetSessionId(); emit LoginFinished(false); return; @@ -417,8 +417,7 @@ void GroovesharkService::Authenticated(QNetworkReply* reply) { } void GroovesharkService::ClearSearchResults() { - if (search_) - search_->removeRows(0, search_->rowCount()); + if (search_) search_->removeRows(0, search_->rowCount()); } void GroovesharkService::Logout() { @@ -457,16 +456,16 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); // Check if we should display actions - bool display_delete_playlist_action = false, - display_remove_from_playlist_action = false, - display_remove_from_favorites_action = false, - display_remove_from_library_action = false, - display_share_song_url = false, - display_share_playlist_url = false; + bool display_delete_playlist_action = false, + display_remove_from_playlist_action = false, + display_remove_from_favorites_action = false, + display_remove_from_library_action = false, + display_share_song_url = false, display_share_playlist_url = false; QModelIndex index(model()->current_index()); - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_UserPlaylist && + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_UserPlaylist && index.data(Role_PlaylistType).toInt() == UserPlaylist) { display_delete_playlist_action = true; } @@ -491,19 +490,22 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { // Check if we can display actions to get URL for sharing songs/playlists: // - share song - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_Track) { + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_Track) { display_share_song_url = true; - current_song_id_ = ExtractSongId(index.data(InternetModel::Role_Url).toUrl()); + current_song_id_ = + ExtractSongId(index.data(InternetModel::Role_Url).toUrl()); } get_url_to_share_song_->setVisible(display_share_song_url); // - share playlist - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_UserPlaylist - && index.data(Role_UserPlaylistId).isValid()) { + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_UserPlaylist && + index.data(Role_UserPlaylistId).isValid()) { display_share_playlist_url = true; current_playlist_id_ = index.data(Role_UserPlaylistId).toInt(); - } else if (parent_type == InternetModel::Type_UserPlaylist - && index.parent().data(Role_UserPlaylistId).isValid()) { + } else if (parent_type == InternetModel::Type_UserPlaylist && + index.parent().data(Role_UserPlaylistId).isValid()) { display_share_playlist_url = true; current_playlist_id_ = index.parent().data(Role_UserPlaylistId).toInt(); } @@ -513,7 +515,7 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { } void GroovesharkService::EnsureMenuCreated() { - if(!context_menu_) { + if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); create_playlist_ = context_menu_->addAction( @@ -527,30 +529,30 @@ void GroovesharkService::EnsureMenuCreated() { this, SLOT(RenameCurrentPlaylist())); context_menu_->addSeparator(); remove_from_playlist_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from playlist"), - this, SLOT(RemoveCurrentFromPlaylist())); + IconLoader::Load("list-remove"), tr("Remove from playlist"), this, + SLOT(RemoveCurrentFromPlaylist())); remove_from_favorites_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from favorites"), - this, SLOT(RemoveCurrentFromFavorites())); + IconLoader::Load("list-remove"), tr("Remove from favorites"), this, + SLOT(RemoveCurrentFromFavorites())); remove_from_library_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from My Music"), - this, SLOT(RemoveCurrentFromLibrary())); - get_url_to_share_song_ = context_menu_->addAction( - tr("Get a URL to share this Grooveshark song"), - this, SLOT(GetCurrentSongUrlToShare())); + IconLoader::Load("list-remove"), tr("Remove from My Music"), this, + SLOT(RemoveCurrentFromLibrary())); + get_url_to_share_song_ = + context_menu_->addAction(tr("Get a URL to share this Grooveshark song"), + this, SLOT(GetCurrentSongUrlToShare())); get_url_to_share_playlist_ = context_menu_->addAction( - tr("Get a URL to share this Grooveshark playlist"), - this, SLOT(GetCurrentPlaylistUrlToShare())); + tr("Get a URL to share this Grooveshark playlist"), this, + SLOT(GetCurrentPlaylistUrlToShare())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("grooveshark.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), - tr("Refresh"), this, SLOT(RefreshItems())); + context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh"), + this, SLOT(RefreshItems())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure Grooveshark..."), - this, SLOT(ShowConfig())); + tr("Configure Grooveshark..."), this, + SLOT(ShowConfig())); } } @@ -565,48 +567,61 @@ void GroovesharkService::RefreshItems() { void GroovesharkService::EnsureItemsCreated() { if (IsLoggedIn() && !search_) { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); search_->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); root_->appendRow(search_); - QStandardItem* popular = new QStandardItem(QIcon(":/star-on.png"), - tr("Popular songs")); + QStandardItem* popular = + new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs")); root_->appendRow(popular); - popular_month_ = new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs of the Month")); - popular_month_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + popular_month_ = new QStandardItem(QIcon(":/star-on.png"), + tr("Popular songs of the Month")); + popular_month_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); popular_month_->setData(true, InternetModel::Role_CanLazyLoad); popular_month_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); popular->appendRow(popular_month_); - popular_today_ = new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs today")); - popular_today_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + popular_today_ = + new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs today")); + popular_today_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); popular_today_->setData(true, InternetModel::Role_CanLazyLoad); popular_today_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); popular->appendRow(popular_today_); - QStandardItem* radios_divider = new QStandardItem(QIcon(":last.fm/icon_radio.png"), - tr("Radios")); + QStandardItem* radios_divider = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Radios")); root_->appendRow(radios_divider); - stations_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Stations")); - stations_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + stations_ = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Stations")); + stations_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); stations_->setData(true, InternetModel::Role_CanLazyLoad); radios_divider->appendRow(stations_); - grooveshark_radio_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Grooveshark radio")); - grooveshark_radio_->setToolTip(tr("Listen to Grooveshark songs based on what you've listened to previously")); - grooveshark_radio_->setData(InternetModel::Type_SmartPlaylist, InternetModel::Role_Type); + grooveshark_radio_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), + tr("Grooveshark radio")); + grooveshark_radio_->setToolTip( + tr("Listen to Grooveshark songs based on what you've listened to " + "previously")); + grooveshark_radio_->setData(InternetModel::Type_SmartPlaylist, + InternetModel::Role_Type); radios_divider->appendRow(grooveshark_radio_); - library_ = new QStandardItem(IconLoader::Load("folder-sound"), tr("My Music")); - library_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + library_ = + new QStandardItem(IconLoader::Load("folder-sound"), tr("My Music")); + library_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); library_->setData(UserLibrary, Role_PlaylistType); library_->setData(true, InternetModel::Role_CanLazyLoad); library_->setData(true, InternetModel::Role_CanBeModified); @@ -614,8 +629,10 @@ void GroovesharkService::EnsureItemsCreated() { InternetModel::Role_PlayBehaviour); root_->appendRow(library_); - favorites_ = new QStandardItem(QIcon(":/last.fm/love.png"), tr("Favorites")); - favorites_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + favorites_ = + new QStandardItem(QIcon(":/last.fm/love.png"), tr("Favorites")); + favorites_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); favorites_->setData(UserFavorites, Role_PlaylistType); favorites_->setData(true, InternetModel::Role_CanLazyLoad); favorites_->setData(true, InternetModel::Role_CanBeModified); @@ -626,7 +643,8 @@ void GroovesharkService::EnsureItemsCreated() { playlists_parent_ = new QStandardItem(tr("Playlists")); root_->appendRow(playlists_parent_); - subscribed_playlists_parent_ = new QStandardItem(tr("Subscribed playlists")); + subscribed_playlists_parent_ = + new QStandardItem(tr("Subscribed playlists")); root_->appendRow(subscribed_playlists_parent_); RetrieveUserFavorites(); @@ -646,21 +664,22 @@ void GroovesharkService::EnsureConnected() { } } -QStandardItem* GroovesharkService::CreatePlaylistItem(const QString& playlist_name, - int playlist_id) { +QStandardItem* GroovesharkService::CreatePlaylistItem( + const QString& playlist_name, int playlist_id) { QStandardItem* item = new QStandardItem(playlist_name); item->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); item->setData(UserPlaylist, Role_PlaylistType); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(true, InternetModel::Role_CanBeModified); - item->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); item->setData(playlist_id, Role_UserPlaylistId); return item; } void GroovesharkService::RetrieveUserPlaylists() { task_playlists_id_ = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark playlists")); + app_->task_manager()->StartTask(tr("Retrieving Grooveshark playlists")); QNetworkReply* reply = CreateRequest("getUserPlaylists", QList()); NewClosure(reply, SIGNAL(finished()), this, @@ -673,7 +692,7 @@ void GroovesharkService::UserPlaylistsRetrieved(QNetworkReply* reply) { QVariantMap result = ExtractResult(reply); QList playlists = ExtractPlaylistInfo(result); - foreach(const PlaylistInfo& playlist_info, playlists) { + foreach(const PlaylistInfo & playlist_info, playlists) { int playlist_id = playlist_info.id_; const QString& playlist_name = playlist_info.name_; QStandardItem* playlist_item = @@ -693,19 +712,20 @@ void GroovesharkService::UserPlaylistsRetrieved(QNetworkReply* reply) { } } -void GroovesharkService::PlaylistSongsRetrieved( - QNetworkReply* reply, int playlist_id) { +void GroovesharkService::PlaylistSongsRetrieved(QNetworkReply* reply, + int playlist_id) { reply->deleteLater(); pending_retrieve_playlists_.remove(playlist_id); - PlaylistInfo* playlist_info = subscribed_playlists_.contains(playlist_id) ? - &subscribed_playlists_[playlist_id] : &playlists_[playlist_id]; + PlaylistInfo* playlist_info = subscribed_playlists_.contains(playlist_id) + ? &subscribed_playlists_[playlist_id] + : &playlists_[playlist_id]; playlist_info->item_->removeRows(0, playlist_info->item_->rowCount()); QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); Song::SortSongsListAlphabetically(&songs); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); child->setData(playlist_info->id_, Role_UserPlaylistId); child->setData(true, InternetModel::Role_CanBeModified); @@ -722,15 +742,16 @@ void GroovesharkService::PlaylistSongsRetrieved( } void GroovesharkService::RetrieveUserFavorites() { - int task_id = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark favorites songs")); + int task_id = app_->task_manager()->StartTask( + tr("Retrieving Grooveshark favorites songs")); QNetworkReply* reply = CreateRequest("getUserFavoriteSongs", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserFavoritesRetrieved(QNetworkReply*, int)), reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserFavoritesRetrieved(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -745,7 +766,7 @@ void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_i SongList songs = ExtractSongs(result); Song::SortSongsListAlphabetically(&songs); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); child->setData(true, InternetModel::Role_CanBeModified); @@ -754,15 +775,17 @@ void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_i } void GroovesharkService::RetrieveUserLibrarySongs() { - int task_id = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark My Music songs")); + int task_id = app_->task_manager()->StartTask( + tr("Retrieving Grooveshark My Music songs")); QNetworkReply* reply = CreateRequest("getUserLibrarySongs", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserLibrarySongsRetrieved(QNetworkReply*, int)), reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserLibrarySongsRetrieved(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -777,7 +800,7 @@ void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int tas SongList songs = ExtractSongs(result); Song::SortSongsListAlphabetically(&songs); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); child->setData(true, InternetModel::Role_CanBeModified); @@ -787,17 +810,17 @@ void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int tas void GroovesharkService::RetrievePopularSongs() { task_popular_id_ = - app_->task_manager()->StartTask(tr("Getting Grooveshark popular songs")); + app_->task_manager()->StartTask(tr("Getting Grooveshark popular songs")); RetrievePopularSongsMonth(); RetrievePopularSongsToday(); } void GroovesharkService::RetrievePopularSongsMonth() { QList parameters; - parameters << Param("limit", QString::number(kSongSearchLimit)); + parameters << Param("limit", QString::number(kSongSearchLimit)); QNetworkReply* reply = CreateRequest("getPopularSongsMonth", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PopularSongsMonthRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PopularSongsMonthRetrieved(QNetworkReply*)), reply); } void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { @@ -810,10 +833,9 @@ void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { app_->task_manager()->SetTaskFinished(task_popular_id_); } - if (!popular_month_) - return; + if (!popular_month_) return; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); popular_month_->appendRow(child); } @@ -821,10 +843,10 @@ void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { void GroovesharkService::RetrievePopularSongsToday() { QList parameters; - parameters << Param("limit", QString::number(kSongSearchLimit)); + parameters << Param("limit", QString::number(kSongSearchLimit)); QNetworkReply* reply = CreateRequest("getPopularSongsToday", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PopularSongsTodayRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PopularSongsTodayRetrieved(QNetworkReply*)), reply); } void GroovesharkService::PopularSongsTodayRetrieved(QNetworkReply* reply) { @@ -837,19 +859,19 @@ void GroovesharkService::PopularSongsTodayRetrieved(QNetworkReply* reply) { app_->task_manager()->SetTaskFinished(task_popular_id_); } - if (!popular_today_) - return; + if (!popular_today_) return; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); popular_today_->appendRow(child); } } void GroovesharkService::RetrieveSubscribedPlaylists() { - QNetworkReply* reply = CreateRequest("getUserPlaylistsSubscribed", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SubscribedPlaylistsRetrieved(QNetworkReply*)), reply); + QNetworkReply* reply = + CreateRequest("getUserPlaylistsSubscribed", QList()); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SubscribedPlaylistsRetrieved(QNetworkReply*)), reply); } void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { @@ -858,18 +880,19 @@ void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { QVariantMap result = ExtractResult(reply); QList playlists = ExtractPlaylistInfo(result); - foreach(const PlaylistInfo& playlist_info, playlists) { + foreach(const PlaylistInfo & playlist_info, playlists) { int playlist_id = playlist_info.id_; const QString& playlist_name = playlist_info.name_; - QStandardItem* playlist_item = CreatePlaylistItem(playlist_name, playlist_id); + QStandardItem* playlist_item = + CreatePlaylistItem(playlist_name, playlist_id); // Refine some playlist properties that should be different for subscribed // playlists playlist_item->setData(SubscribedPlaylist, Role_PlaylistType); playlist_item->setData(false, InternetModel::Role_CanBeModified); - - subscribed_playlists_.insert(playlist_id, - PlaylistInfo(playlist_id, playlist_name, playlist_item)); + + subscribed_playlists_.insert( + playlist_id, PlaylistInfo(playlist_id, playlist_name, playlist_item)); subscribed_playlists_parent_->appendRow(playlist_item); // Request playlist's songs @@ -879,16 +902,15 @@ void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { void GroovesharkService::RetrieveAutoplayTags() { QNetworkReply* reply = CreateRequest("getAutoplayTags", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AutoplayTagsRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(AutoplayTagsRetrieved(QNetworkReply*)), reply); } void GroovesharkService::AutoplayTagsRetrieved(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); QVariantMap::const_iterator it; - if (!stations_) - return; + if (!stations_) return; for (it = result.constBegin(); it != result.constEnd(); ++it) { int id = it.key().toInt(); QString name = it.value().toString().toLower(); @@ -896,24 +918,26 @@ void GroovesharkService::AutoplayTagsRetrieved(QNetworkReply* reply) { name.replace("_", " "); name[0] = name[0].toUpper(); - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_radio.png"), name); + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), name); item->setData(InternetModel::Type_SmartPlaylist, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); item->setData(id, Role_UserPlaylistId); stations_->appendRow(item); } } -Song GroovesharkService::StartAutoplayTag(int tag_id, QVariantMap& autoplay_state) { +Song GroovesharkService::StartAutoplayTag(int tag_id, + QVariantMap& autoplay_state) { QList parameters; parameters << Param("tagID", tag_id); QNetworkReply* reply = CreateRequest("startAutoplayTag", parameters); bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -923,21 +947,20 @@ Song GroovesharkService::StartAutoplayTag(int tag_id, QVariantMap& autoplay_stat Song GroovesharkService::StartAutoplay(QVariantMap& autoplay_state) { QList parameters; QVariantList artists_ids_qvariant; - foreach (int artist_id, last_artists_ids_) { + foreach(int artist_id, last_artists_ids_) { artists_ids_qvariant << QVariant(artist_id); } QVariantList songs_ids_qvariant; - foreach (int song_id, last_songs_ids_) { + foreach(int song_id, last_songs_ids_) { songs_ids_qvariant << QVariant(song_id); } - parameters << Param("artistIDs", artists_ids_qvariant) - << Param("songIDs", songs_ids_qvariant); + parameters << Param("artistIDs", artists_ids_qvariant) + << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("startAutoplay", parameters); bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -951,8 +974,7 @@ Song GroovesharkService::GetAutoplaySong(QVariantMap& autoplay_state) { bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -962,8 +984,8 @@ Song GroovesharkService::GetAutoplaySong(QVariantMap& autoplay_state) { void GroovesharkService::MarkStreamKeyOver30Secs(const QString& stream_key, const QString& server_id) { QList parameters; - parameters << Param("streamKey", stream_key) - << Param("streamServerID", server_id); + parameters << Param("streamKey", stream_key) + << Param("streamServerID", server_id); QNetworkReply* reply = CreateRequest("markStreamKeyOver30Secs", parameters); NewClosure(reply, SIGNAL(finished()), this, @@ -982,9 +1004,8 @@ void GroovesharkService::MarkSongComplete(const QString& song_id, const QString& stream_key, const QString& server_id) { QList parameters; - parameters << Param("songID", song_id) - << Param("streamKey", stream_key) - << Param("streamServerID", server_id); + parameters << Param("songID", song_id) << Param("streamKey", stream_key) + << Param("streamServerID", server_id); QNetworkReply* reply = CreateRequest("markSongComplete", parameters); NewClosure(reply, SIGNAL(finished()), this, @@ -1007,26 +1028,28 @@ void GroovesharkService::ItemDoubleClicked(QStandardItem* item) { GeneratorPtr GroovesharkService::CreateGenerator(QStandardItem* item) { GeneratorPtr ret; - if (!item || - item->data(InternetModel::Role_Type).toInt() != InternetModel::Type_SmartPlaylist) { + if (!item || item->data(InternetModel::Role_Type).toInt() != + InternetModel::Type_SmartPlaylist) { return ret; } if (item == grooveshark_radio_) { if (last_artists_ids_.isEmpty()) { QMessageBox::warning(nullptr, tr("Error"), - tr("To start Grooveshark radio, you should first listen to a few other Grooveshark songs")); + tr("To start Grooveshark radio, you should first " + "listen to a few other Grooveshark songs")); return ret; } ret = GeneratorPtr(new GroovesharkRadio(this)); } else { int tag_id = item->data(Role_UserPlaylistId).toInt(); - ret = GeneratorPtr(new GroovesharkRadio(this ,tag_id)); + ret = GeneratorPtr(new GroovesharkRadio(this, tag_id)); } return ret; } -void GroovesharkService::DropMimeData(const QMimeData* data, const QModelIndex& index) { +void GroovesharkService::DropMimeData(const QMimeData* data, + const QModelIndex& index) { if (!data) { return; } @@ -1046,17 +1069,17 @@ void GroovesharkService::DropMimeData(const QMimeData* data, const QModelIndex& int playlist_type = index.data(Role_PlaylistType).toInt(); int parent_playlist_type = index.parent().data(Role_PlaylistType).toInt(); // If dropped on Favorites list - if (playlist_type == UserFavorites || parent_playlist_type == UserFavorites) { - foreach (int song_id, data_songs_ids) { - AddUserFavoriteSong(song_id); - } - } else if (playlist_type == UserLibrary || parent_playlist_type == UserLibrary) { + if (playlist_type == UserFavorites || + parent_playlist_type == UserFavorites) { + foreach(int song_id, data_songs_ids) { AddUserFavoriteSong(song_id); } + } else if (playlist_type == UserLibrary || + parent_playlist_type == UserLibrary) { // FIXME: Adding songs to user libray doesn't work atm, but the problem // seems to be on Grooveshark server side, as it returns success=true // when calling addUserLibrarySongs with a valid song id. // So this code is deactivated for now to not mislead user - //AddUserLibrarySongs(data_songs_ids); - } else { // Dropped on a normal playlist + // AddUserLibrarySongs(data_songs_ids); + } else { // Dropped on a normal playlist // Get the playlist int playlist_id = index.data(Role_UserPlaylistId).toInt(); if (!playlists_.contains(playlist_id)) { @@ -1077,37 +1100,41 @@ QList GroovesharkService::playlistitem_actions(const Song& song) { while (!playlistitem_actions_.isEmpty()) { QAction* action = playlistitem_actions_.takeFirst(); QMenu* menu = action->menu(); - if (menu) - delete menu; + if (menu) delete menu; delete action; } // Create a 'add to favorites' action - QAction* add_to_favorites = new QAction(QIcon(":/last.fm/love.png"), - tr("Add to Grooveshark favorites"), this); - connect(add_to_favorites, SIGNAL(triggered()), SLOT(AddCurrentSongToUserFavorites())); + QAction* add_to_favorites = new QAction( + QIcon(":/last.fm/love.png"), tr("Add to Grooveshark favorites"), this); + connect(add_to_favorites, SIGNAL(triggered()), + SLOT(AddCurrentSongToUserFavorites())); playlistitem_actions_.append(add_to_favorites); // FIXME: as explained above, adding songs to library doesn't work currently - //QAction* add_to_library = new QAction(IconLoader::Load("folder-sound"), - // tr("Add to Grooveshark My Music"), this); - //connect(add_to_library, SIGNAL(triggered()), SLOT(AddCurrentSongToUserLibrary())); - //playlistitem_actions_.append(add_to_library); + // QAction* add_to_library = new QAction(IconLoader::Load("folder-sound"), + // tr("Add to Grooveshark My Music"), + // this); + // connect(add_to_library, SIGNAL(triggered()), + // SLOT(AddCurrentSongToUserLibrary())); + // playlistitem_actions_.append(add_to_library); // Create a menu with 'add to playlist' actions for each Grooveshark playlist - QAction* add_to_playlists = new QAction(IconLoader::Load("list-add"), - tr("Add to Grooveshark playlists"), this); + QAction* add_to_playlists = new QAction( + IconLoader::Load("list-add"), tr("Add to Grooveshark playlists"), this); QMenu* playlists_menu = new QMenu(); - foreach (PlaylistInfo playlist_info, playlists_.values()) { + foreach(PlaylistInfo playlist_info, playlists_.values()) { QAction* add_to_playlist = new QAction(playlist_info.name_, this); add_to_playlist->setData(playlist_info.id_); playlists_menu->addAction(add_to_playlist); } - connect(playlists_menu, SIGNAL(triggered(QAction*)), SLOT(AddCurrentSongToPlaylist(QAction*))); + connect(playlists_menu, SIGNAL(triggered(QAction*)), + SLOT(AddCurrentSongToPlaylist(QAction*))); add_to_playlists->setMenu(playlists_menu); playlistitem_actions_.append(add_to_playlists); - QAction* share_song = new QAction(tr("Get a URL to share this Grooveshark song"), this); + QAction* share_song = + new QAction(tr("Get a URL to share this Grooveshark song"), this); connect(share_song, SIGNAL(triggered()), SLOT(GetCurrentSongUrlToShare())); playlistitem_actions_.append(share_song); @@ -1134,8 +1161,7 @@ void GroovesharkService::SongUrlToShareReceived(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); - if (!result["url"].isValid()) - return; + if (!result["url"].isValid()) return; QString url = result["url"].toString(); ShowUrlBox(tr("Grooveshark song's URL"), url); } @@ -1147,7 +1173,8 @@ void GroovesharkService::GetCurrentPlaylistUrlToShare() { void GroovesharkService::GetPlaylistUrlToShare(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); - QNetworkReply* reply = CreateRequest("getPlaylistURLFromPlaylistID", parameters); + QNetworkReply* reply = + CreateRequest("getPlaylistURLFromPlaylistID", parameters); NewClosure(reply, SIGNAL(finished()), this, SLOT(PlaylistUrlToShareReceived(QNetworkReply*)), reply); @@ -1156,8 +1183,7 @@ void GroovesharkService::GetPlaylistUrlToShare(int playlist_id) { void GroovesharkService::PlaylistUrlToShareReceived(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); - if (!result["url"].isValid()) - return; + if (!result["url"].isValid()) return; QString url = result["url"].toString(); ShowUrlBox(tr("Grooveshark playlist's URL"), url); } @@ -1191,33 +1217,32 @@ void GroovesharkService::AddCurrentSongToPlaylist(QAction* action) { SetPlaylistSongs(playlist_id, songs_ids); } -void GroovesharkService::SetPlaylistSongs(int playlist_id, const QList& songs_ids) { +void GroovesharkService::SetPlaylistSongs(int playlist_id, + const QList& songs_ids) { // If we are still retrieving playlists songs, don't update playlist: don't // take the risk to erase all (not yet retrieved) playlist's songs. - if (!pending_retrieve_playlists_.isEmpty()) - return; + if (!pending_retrieve_playlists_.isEmpty()) return; int task_id = - app_->task_manager()->StartTask(tr("Update Grooveshark playlist")); + app_->task_manager()->StartTask(tr("Update Grooveshark playlist")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (int song_id, songs_ids) { - songs_ids_qvariant << QVariant(song_id); - } + foreach(int song_id, songs_ids) { songs_ids_qvariant << QVariant(song_id); } - parameters << Param("playlistID", playlist_id) - << Param("songIDs", songs_ids_qvariant); + parameters << Param("playlistID", playlist_id) + << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("setPlaylistSongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistSongsSet(QNetworkReply*, int, int)), - reply, playlist_id, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistSongsSet(QNetworkReply*, int, int)), reply, + playlist_id, task_id); } -void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, int task_id) { +void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1233,30 +1258,31 @@ void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, void GroovesharkService::RefreshPlaylist(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); - QNetworkReply* reply = CreateRequest("getPlaylistSongs", parameters); + QNetworkReply* reply = CreateRequest("getPlaylistSongs", parameters); NewClosure(reply, SIGNAL(finished()), this, - SLOT(PlaylistSongsRetrieved(QNetworkReply*, int)), reply, playlist_id); + SLOT(PlaylistSongsRetrieved(QNetworkReply*, int)), reply, + playlist_id); pending_retrieve_playlists_.insert(playlist_id); } void GroovesharkService::CreateNewPlaylist() { - QString name = QInputDialog::getText(nullptr, - tr("Create a new Grooveshark playlist"), - tr("Name"), - QLineEdit::Normal); + QString name = + QInputDialog::getText(nullptr, tr("Create a new Grooveshark playlist"), + tr("Name"), QLineEdit::Normal); if (name.isEmpty()) { return; } QList parameters; - parameters << Param("name", name) - << Param("songIDs", QVariantList()); + parameters << Param("name", name) << Param("songIDs", QVariantList()); QNetworkReply* reply = CreateRequest("createPlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(NewPlaylistCreated(QNetworkReply*, const QString&)), reply, name); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(NewPlaylistCreated(QNetworkReply*, const QString&)), reply, + name); } -void GroovesharkService::NewPlaylistCreated(QNetworkReply* reply, const QString& name) { +void GroovesharkService::NewPlaylistCreated(QNetworkReply* reply, + const QString& name) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); if (!result["success"].toBool() || !result["playlistID"].isValid()) { @@ -1287,10 +1313,10 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { return; } - std::unique_ptr confirmation_dialog(new QMessageBox( - QMessageBox::Question, tr("Delete Grooveshark playlist"), - tr("Are you sure you want to delete this playlist?"), - QMessageBox::Yes | QMessageBox::Cancel)); + std::unique_ptr confirmation_dialog( + new QMessageBox(QMessageBox::Question, tr("Delete Grooveshark playlist"), + tr("Are you sure you want to delete this playlist?"), + QMessageBox::Yes | QMessageBox::Cancel)); if (confirmation_dialog->exec() != QMessageBox::Yes) { return; } @@ -1298,11 +1324,12 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); QNetworkReply* reply = CreateRequest("deletePlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistDeleted(QNetworkReply*, int)), reply, playlist_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistDeleted(QNetworkReply*, int)), reply, playlist_id); } -void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, int playlist_id) { +void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, + int playlist_id) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); if (!result["success"].toBool()) { @@ -1319,8 +1346,9 @@ void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, int playlist_id) void GroovesharkService::RenameCurrentPlaylist() { const QModelIndex& index(model()->current_index()); - if (index.data(InternetModel::Role_Type).toInt() != InternetModel::Type_UserPlaylist - || index.data(Role_PlaylistType).toInt() != UserPlaylist) { + if (index.data(InternetModel::Role_Type).toInt() != + InternetModel::Type_UserPlaylist || + index.data(Role_PlaylistType).toInt() != UserPlaylist) { return; } @@ -1333,25 +1361,22 @@ void GroovesharkService::RenamePlaylist(int playlist_id) { return; } const QString& old_name = playlists_[playlist_id].name_; - QString new_name = QInputDialog::getText(nullptr, - tr("Rename \"%1\" playlist").arg(old_name), - tr("Name"), - QLineEdit::Normal, - old_name); + QString new_name = + QInputDialog::getText(nullptr, tr("Rename \"%1\" playlist").arg(old_name), + tr("Name"), QLineEdit::Normal, old_name); if (new_name.isEmpty()) { return; } QList parameters; - parameters << Param("playlistID", playlist_id) - << Param("name", new_name); + parameters << Param("playlistID", playlist_id) << Param("name", new_name); QNetworkReply* reply = CreateRequest("renamePlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistRenamed(QNetworkReply*, int, const QString&)), reply, playlist_id, new_name); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistRenamed(QNetworkReply*, int, const QString&)), reply, + playlist_id, new_name); } -void GroovesharkService::PlaylistRenamed(QNetworkReply* reply, - int playlist_id, +void GroovesharkService::PlaylistRenamed(QNetworkReply* reply, int playlist_id, const QString& new_name) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); @@ -1372,12 +1397,12 @@ void GroovesharkService::AddUserFavoriteSong(int song_id) { QList parameters; parameters << Param("songID", song_id); QNetworkReply* reply = CreateRequest("addUserFavoriteSong", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserFavoriteSongAdded(QNetworkReply*, int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserFavoriteSongAdded(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserFavoriteSongAdded(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserFavoriteSongAdded(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1396,9 +1421,7 @@ void GroovesharkService::AddUserLibrarySongs(const QList& songs_ids) { // Convert songs ids to QVariant QVariantList songs_ids_qvariant; - foreach (int song_id, songs_ids) { - songs_ids_qvariant << QVariant(song_id); - } + foreach(int song_id, songs_ids) { songs_ids_qvariant << QVariant(song_id); } QVariantList albums_ids_qvariant; QVariantList artists_ids_qvariant; @@ -1408,12 +1431,12 @@ void GroovesharkService::AddUserLibrarySongs(const QList& songs_ids) { parameters << Param("albumIDs", albums_ids_qvariant); parameters << Param("artistIDs", artists_ids_qvariant); QNetworkReply* reply = CreateRequest("addUserLibrarySongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserLibrarySongAdded(QNetworkReply*, int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserLibrarySongAdded(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1429,7 +1452,7 @@ void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, int task_id) void GroovesharkService::RemoveCurrentFromPlaylist() { const QModelIndexList& indexes(model()->selected_indexes()); QMap > playlists_songs_ids; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { if (index.parent().data(InternetModel::Role_Type).toInt() != InternetModel::Type_UserPlaylist) { @@ -1443,21 +1466,21 @@ void GroovesharkService::RemoveCurrentFromPlaylist() { } } - for (QMap >::const_iterator it = playlists_songs_ids.constBegin(); - it != playlists_songs_ids.constEnd(); - ++it) { + for (QMap >::const_iterator it = + playlists_songs_ids.constBegin(); + it != playlists_songs_ids.constEnd(); ++it) { RemoveFromPlaylist(it.key(), it.value()); } } -void GroovesharkService::RemoveFromPlaylist(int playlist_id, - const QList& songs_ids_to_remove) { +void GroovesharkService::RemoveFromPlaylist( + int playlist_id, const QList& songs_ids_to_remove) { if (!playlists_.contains(playlist_id)) { return; } QList songs_ids = playlists_[playlist_id].songs_ids_; - foreach (const int song_id, songs_ids_to_remove) { + foreach(const int song_id, songs_ids_to_remove) { songs_ids.removeOne(song_id); } @@ -1467,7 +1490,7 @@ void GroovesharkService::RemoveFromPlaylist(int playlist_id, void GroovesharkService::RemoveCurrentFromFavorites() { const QModelIndexList& indexes(model()->selected_indexes()); QList songs_ids; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { if (index.parent().data(Role_PlaylistType).toInt() != UserFavorites) { continue; @@ -1478,30 +1501,33 @@ void GroovesharkService::RemoveCurrentFromFavorites() { songs_ids << song_id; } } - + RemoveFromFavorites(songs_ids); } -void GroovesharkService::RemoveFromFavorites(const QList& songs_ids_to_remove) { - if (songs_ids_to_remove.isEmpty()) - return; +void GroovesharkService::RemoveFromFavorites( + const QList& songs_ids_to_remove) { + if (songs_ids_to_remove.isEmpty()) return; - int task_id = app_->task_manager()->StartTask(tr("Removing songs from favorites")); + int task_id = + app_->task_manager()->StartTask(tr("Removing songs from favorites")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (const int song_id, songs_ids_to_remove) { + foreach(const int song_id, songs_ids_to_remove) { songs_ids_qvariant << QVariant(song_id); } parameters << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("removeUserFavoriteSongs", parameters); NewClosure(reply, SIGNAL(finished()), this, - SLOT(SongsRemovedFromFavorites(QNetworkReply*, int)), reply, task_id); + SLOT(SongsRemovedFromFavorites(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::SongsRemovedFromFavorites(QNetworkReply* reply, int task_id) { +void GroovesharkService::SongsRemovedFromFavorites(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -1517,7 +1543,7 @@ void GroovesharkService::RemoveCurrentFromLibrary() { const QModelIndexList& indexes(model()->selected_indexes()); QList songs_ids; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { if (index.parent().data(Role_PlaylistType).toInt() != UserLibrary) { continue; @@ -1528,20 +1554,21 @@ void GroovesharkService::RemoveCurrentFromLibrary() { songs_ids << song_id; } } - + RemoveFromLibrary(songs_ids); } -void GroovesharkService::RemoveFromLibrary(const QList& songs_ids_to_remove) { - if (songs_ids_to_remove.isEmpty()) - return; +void GroovesharkService::RemoveFromLibrary( + const QList& songs_ids_to_remove) { + if (songs_ids_to_remove.isEmpty()) return; - int task_id = app_->task_manager()->StartTask(tr("Removing songs from My Music")); + int task_id = + app_->task_manager()->StartTask(tr("Removing songs from My Music")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (const int song_id, songs_ids_to_remove) { + foreach(const int song_id, songs_ids_to_remove) { songs_ids_qvariant << QVariant(song_id); } QVariantList albums_ids_qvariant; @@ -1555,10 +1582,12 @@ void GroovesharkService::RemoveFromLibrary(const QList& songs_ids_to_remove QNetworkReply* reply = CreateRequest("removeUserLibrarySongs", parameters); NewClosure(reply, SIGNAL(finished()), this, - SLOT(SongsRemovedFromLibrary(QNetworkReply*, int)), reply, task_id); + SLOT(SongsRemovedFromLibrary(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, int task_id) { +void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -1570,10 +1599,9 @@ void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, int task_ RetrieveUserLibrarySongs(); } -QNetworkReply* GroovesharkService::CreateRequest( - const QString& method_name, - const QList& params, - bool use_https) { +QNetworkReply* GroovesharkService::CreateRequest(const QString& method_name, + const QList& params, + bool use_https) { QVariantMap request_params; request_params.insert("method", method_name); @@ -1592,7 +1620,7 @@ QNetworkReply* GroovesharkService::CreateRequest( request_params.insert("header", header); QVariantMap parameters; - foreach(const Param& param, params) { + foreach(const Param & param, params) { parameters.insert(param.first, param.second); } request_params.insert("parameters", parameters); @@ -1604,9 +1632,12 @@ QNetworkReply* GroovesharkService::CreateRequest( if (use_https) { url.setScheme("https"); } - url.setQueryItems( QList >() << QPair("sig", Utilities::HmacMd5(api_key_, post_params).toHex())); + url.setQueryItems( + QList >() + << QPair( + "sig", Utilities::HmacMd5(api_key_, post_params).toHex())); QNetworkRequest req(url); - QNetworkReply *reply = network_->post(req, post_params); + QNetworkReply* reply = network_->post(req, post_params); if (use_https) { connect(reply, SIGNAL(sslErrors(QList)), @@ -1619,7 +1650,7 @@ QNetworkReply* GroovesharkService::CreateRequest( void GroovesharkService::RequestSslErrors(const QList& errors) { QNetworkReply* reply = qobject_cast(sender()); - foreach (const QSslError& error, errors) { + foreach(const QSslError & error, errors) { emit StreamError("SSL error occurred in Grooveshark request for " + reply->url().toString() + ": " + error.errorString()); } @@ -1651,14 +1682,16 @@ QVariantMap GroovesharkService::ExtractResult(QNetworkReply* reply) { QVariantList::iterator it; for (it = errors.begin(); it != errors.end(); ++it) { QVariantMap error = (*it).toMap(); - qLog(Error) << "Grooveshark error: (" << error["code"].toInt() <<") " << error["message"].toString(); + qLog(Error) << "Grooveshark error: (" << error["code"].toInt() << ") " + << error["message"].toString(); switch (error["code"].toInt()) { - case 100: // User auth required - case 102: // User premium required - case 300: // Session required - // These errors can happen if session_id is obsolete (e.g. we haven't use + case 100: // User auth required + case 102: // User premium required + case 300: // Session required + // These errors can happen if session_id is obsolete (e.g. we haven't + // use // it for more than two weeks): force the user to login again - Logout(); + Logout(); break; } } @@ -1668,7 +1701,7 @@ QVariantMap GroovesharkService::ExtractResult(QNetworkReply* reply) { SongList GroovesharkService::ExtractSongs(const QVariantMap& result) { QVariantList result_songs = result["songs"].toList(); SongList songs; - for (int i=0; i GroovesharkService::ExtractSongsIds(const QVariantMap& result) { QVariantList result_songs = result["songs"].toList(); QList songs_ids; - for (int i=0; i GroovesharkService::ExtractSongsIds(const QVariantMap& result) { QList GroovesharkService::ExtractSongsIds(const QList& urls) { QList songs_ids; - foreach (const QUrl& url, urls) { + foreach(const QUrl & url, urls) { int song_id = ExtractSongId(url); if (song_id) { songs_ids << song_id; @@ -1744,13 +1779,14 @@ int GroovesharkService::ExtractSongId(const QUrl& url) { return 0; } -QList GroovesharkService::ExtractPlaylistInfo(const QVariantMap& result) { +QList GroovesharkService::ExtractPlaylistInfo( + const QVariantMap& result) { QVariantList playlists_qvariant = result["playlists"].toList(); QList playlists; // Get playlists info - foreach (const QVariant& playlist_qvariant, playlists_qvariant) { + foreach(const QVariant & playlist_qvariant, playlists_qvariant) { QVariantMap playlist = playlist_qvariant.toMap(); int playlist_id = playlist["PlaylistID"].toInt(); QString playlist_name = playlist["PlaylistName"].toString(); diff --git a/src/internet/groovesharkservice.h b/src/internet/groovesharkservice.h index d39510f11..9141c09cc 100644 --- a/src/internet/groovesharkservice.h +++ b/src/internet/groovesharkservice.h @@ -36,7 +36,7 @@ class QSortFilterProxyModel; class GroovesharkService : public InternetService { Q_OBJECT public: - GroovesharkService(Application* app, InternetModel *parent); + GroovesharkService(Application* app, InternetModel* parent); ~GroovesharkService(); enum Role { @@ -63,7 +63,7 @@ class GroovesharkService : public InternetService { // Internet Service methods QStandardItem* CreateRootItem(); - void LazyPopulate(QStandardItem *parent); + void LazyPopulate(QStandardItem* parent); void ItemDoubleClicked(QStandardItem* item); smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item); @@ -73,9 +73,9 @@ class GroovesharkService : public InternetService { QWidget* HeaderWidget() const; // User should be logged in to be able to generate streaming urls - QUrl GetStreamingUrlFromSongId(const QString& song_id, const QString& artist_id, - QString* server_id, QString* stream_key, - qint64* length_nanosec); + QUrl GetStreamingUrlFromSongId(const QString& song_id, + const QString& artist_id, QString* server_id, + QString* stream_key, qint64* length_nanosec); void Login(const QString& username, const QString& password); void Logout(); bool IsLoggedIn() const { return !session_id_.isEmpty(); } @@ -88,7 +88,8 @@ class GroovesharkService : public InternetService { void RetrieveSubscribedPlaylists(); void RetrieveAutoplayTags(); void SetPlaylistSongs(int playlist_id, const QList& songs_ids); - void RemoveFromPlaylist(int playlist_id, const QList& songs_ids_to_remove); + void RemoveFromPlaylist(int playlist_id, + const QList& songs_ids_to_remove); // Refresh playlist_id playlist , or create it if it doesn't exist void RefreshPlaylist(int playlist_id); void DeletePlaylist(int playlist_id); @@ -103,10 +104,13 @@ class GroovesharkService : public InternetService { // first song to play Song StartAutoplayTag(int tag_id, QVariantMap& autoplay_state); Song StartAutoplay(QVariantMap& autoplay_state); - // Get another autoplay song. autoplay_state is the autoplay_state received from StartAutoplayTag + // Get another autoplay song. autoplay_state is the autoplay_state received + // from StartAutoplayTag Song GetAutoplaySong(QVariantMap& autoplay_state); - void MarkStreamKeyOver30Secs(const QString& stream_key, const QString& server_id); - void MarkSongComplete(const QString& song_id, const QString& stream_key, const QString& server_id); + void MarkStreamKeyOver30Secs(const QString& stream_key, + const QString& server_id); + void MarkSongComplete(const QString& song_id, const QString& stream_key, + const QString& server_id); // Persisted in the settings and updated on each Login(). LoginState login_state() const { return login_state_; } @@ -119,7 +123,7 @@ class GroovesharkService : public InternetService { static const char* kServiceName; static const char* kSettingsGroup; - signals: +signals: void LoginFinished(bool success); void SimpleSearchResults(int id, SongList songs); // AlbumSearchResult emits the search id and the Grooveshark ids of the @@ -136,9 +140,9 @@ class GroovesharkService : public InternetService { struct PlaylistInfo { PlaylistInfo() {} PlaylistInfo(int id, QString name, QStandardItem* item = NULL) - : id_(id), name_(name), item_(item) {} + : id_(id), name_(name), item_(item) {} - bool operator< (const PlaylistInfo other) const { + bool operator<(const PlaylistInfo other) const { return name_.localeAwareCompare(other.name_) < 0; } @@ -170,9 +174,14 @@ class GroovesharkService : public InternetService { void DeleteCurrentPlaylist(); void RenameCurrentPlaylist(); void PlaylistDeleted(QNetworkReply* reply, int playlist_id); - void PlaylistRenamed(QNetworkReply* reply, int playlist_id, const QString& new_name); - void AddCurrentSongToUserFavorites() { AddUserFavoriteSong(current_song_id_); } - void AddCurrentSongToUserLibrary() { AddUserLibrarySongs(QList() << current_song_id_); } + void PlaylistRenamed(QNetworkReply* reply, int playlist_id, + const QString& new_name); + void AddCurrentSongToUserFavorites() { + AddUserFavoriteSong(current_song_id_); + } + void AddCurrentSongToUserLibrary() { + AddUserLibrarySongs(QList() << current_song_id_); + } void AddCurrentSongToPlaylist(QAction* action); void UserFavoriteSongAdded(QNetworkReply* reply, int task_id); void UserLibrarySongAdded(QNetworkReply* reply, int task_id); @@ -203,7 +212,8 @@ class GroovesharkService : public InternetService { // Create a playlist item, with data set as excepted. Doesn't fill the item // with songs rows. - QStandardItem* CreatePlaylistItem(const QString& playlist_name, int playlist_id); + QStandardItem* CreatePlaylistItem(const QString& playlist_name, + int playlist_id); void AuthenticateSession(); void InitCountry(); @@ -211,10 +221,9 @@ class GroovesharkService : public InternetService { // Create a request for the given method, with the given params. // If need_authentication is true, add session_id to params. // Returns the reply object created - QNetworkReply* CreateRequest( - const QString& method_name, - const QList >& params, - bool use_https = false); + QNetworkReply* CreateRequest(const QString& method_name, + const QList >& params, + bool use_https = false); // Convenient function which block until 'reply' replies, or timeout after 10 // seconds. Returns false if reply has timeouted bool WaitForReply(QNetworkReply* reply); @@ -231,14 +240,14 @@ class GroovesharkService : public InternetService { // Convenient functions for extracting Grooveshark songs ids QList ExtractSongsIds(const QVariantMap& result); QList ExtractSongsIds(const QList& urls); - int ExtractSongId(const QUrl& url); // Returns 0 if url is not a Grooveshark url + int ExtractSongId( + const QUrl& url); // Returns 0 if url is not a Grooveshark url // Convenient function for extracting basic playlist info (only 'id' and // 'name': QStandardItem still need to be created), and sort them by name QList ExtractPlaylistInfo(const QVariantMap& result); void ResetSessionId(); - GroovesharkUrlHandler* url_handler_; QString pending_search_; @@ -288,7 +297,7 @@ class GroovesharkService : public InternetService { QNetworkReply* last_search_reply_; QString username_; - QString password_; // In fact, password's md5 hash + QString password_; // In fact, password's md5 hash QString user_id_; QString session_id_; QMap country_; @@ -318,5 +327,4 @@ class GroovesharkService : public InternetService { static const char* kApiSecret; }; - -#endif // GROOVESHARKSERVICE_H +#endif // GROOVESHARKSERVICE_H diff --git a/src/internet/groovesharksettingspage.cpp b/src/internet/groovesharksettingspage.cpp index b44b0b68e..71bd461a3 100644 --- a/src/internet/groovesharksettingspage.cpp +++ b/src/internet/groovesharksettingspage.cpp @@ -30,11 +30,10 @@ #include GroovesharkSettingsPage::GroovesharkSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_GroovesharkSettingsPage), - service_(InternetModel::Service()), - validated_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_GroovesharkSettingsPage), + service_(InternetModel::Service()), + validated_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/grooveshark.png")); @@ -50,9 +49,7 @@ GroovesharkSettingsPage::GroovesharkSettingsPage(SettingsDialog* dialog) ui_->login_state->AddCredentialGroup(ui_->account_group); } -GroovesharkSettingsPage::~GroovesharkSettingsPage() { - delete ui_; -} +GroovesharkSettingsPage::~GroovesharkSettingsPage() { delete ui_; } void GroovesharkSettingsPage::Login() { if (service_->IsLoggedIn()) { @@ -93,23 +90,26 @@ void GroovesharkSettingsPage::LoginFinished(bool success) { void GroovesharkSettingsPage::UpdateLoginState() { const bool logged_in = service_->IsLoggedIn(); - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in); switch (service_->login_state()) { - case GroovesharkService::LoginState_NoPremium: - ui_->login_state->SetAccountTypeText(tr("You do not have a Grooveshark Anywhere account.")); - break; + case GroovesharkService::LoginState_NoPremium: + ui_->login_state->SetAccountTypeText( + tr("You do not have a Grooveshark Anywhere account.")); + break; - case GroovesharkService::LoginState_AuthFailed: - ui_->login_state->SetAccountTypeText(tr("Your username or password was incorrect.")); - break; + case GroovesharkService::LoginState_AuthFailed: + ui_->login_state->SetAccountTypeText( + tr("Your username or password was incorrect.")); + break; - default: - ui_->login_state->SetAccountTypeText(tr("A Grooveshark Anywhere account is required.")); - break; + default: + ui_->login_state->SetAccountTypeText( + tr("A Grooveshark Anywhere account is required.")); + break; } } diff --git a/src/internet/groovesharksettingspage.h b/src/internet/groovesharksettingspage.h index 838cad311..88b74fbe4 100644 --- a/src/internet/groovesharksettingspage.h +++ b/src/internet/groovesharksettingspage.h @@ -27,22 +27,22 @@ class GroovesharkService; class GroovesharkSettingsPage : public SettingsPage { Q_OBJECT -public: + public: GroovesharkSettingsPage(SettingsDialog* dialog); ~GroovesharkSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void LoginFinished(bool success); void Logout(); -private: + private: void UpdateLoginState(); -private: + private: Ui_GroovesharkSettingsPage* ui_; GroovesharkService* service_; @@ -51,4 +51,4 @@ private: QString original_password_; }; -#endif // GROOVESHARKSETTINGSPAGE_H +#endif // GROOVESHARKSETTINGSPAGE_H diff --git a/src/internet/groovesharkurlhandler.cpp b/src/internet/groovesharkurlhandler.cpp index 1948526e9..c505baf1c 100644 --- a/src/internet/groovesharkurlhandler.cpp +++ b/src/internet/groovesharkurlhandler.cpp @@ -22,21 +22,23 @@ #include "groovesharkservice.h" #include "core/logging.h" - -GroovesharkUrlHandler::GroovesharkUrlHandler(GroovesharkService* service, QObject* parent) - : UrlHandler(parent), - service_(service), - timer_mark_stream_key_(new QTimer(this)) { +GroovesharkUrlHandler::GroovesharkUrlHandler(GroovesharkService* service, + QObject* parent) + : UrlHandler(parent), + service_(service), + timer_mark_stream_key_(new QTimer(this)) { // We have to warn Grooveshark when user has listened for more than 30 // seconds of a song, and when it ends. I guess this is used by Grooveshark // for statistics and user history. - // To do this, we have TrackAboutToEnd method, and timer_mark_stream_key_ timer. + // To do this, we have TrackAboutToEnd method, and timer_mark_stream_key_ + // timer. // It is not perfect, as we may call Grooveshark MarkStreamKeyOver30Secs even // if user hasn't actually listen to 30 seconds (e.g. stream set to pause // state) but this is not a big deal and it should be accurate enough anyway. timer_mark_stream_key_->setInterval(30000); timer_mark_stream_key_->setSingleShot(true); - connect(timer_mark_stream_key_, SIGNAL(timeout()), SLOT(MarkStreamKeyOver30Secs())); + connect(timer_mark_stream_key_, SIGNAL(timeout()), + SLOT(MarkStreamKeyOver30Secs())); } UrlHandler::LoadResult GroovesharkUrlHandler::StartLoading(const QUrl& url) { @@ -48,17 +50,19 @@ UrlHandler::LoadResult GroovesharkUrlHandler::StartLoading(const QUrl& url) { qLog(Error) << "Should be grooveshark://artist_id/album_id/song_id"; } else { last_artist_id_ = ids[0]; - last_album_id_ = ids[1]; - last_song_id_ = ids[2]; + last_album_id_ = ids[1]; + last_song_id_ = ids[2]; - streaming_url = service_->GetStreamingUrlFromSongId(last_song_id_, last_artist_id_, - &last_server_id_, &last_stream_key_, &length_nanosec); + streaming_url = service_->GetStreamingUrlFromSongId( + last_song_id_, last_artist_id_, &last_server_id_, &last_stream_key_, + &length_nanosec); qLog(Debug) << "Grooveshark Streaming URL: " << streaming_url; timer_mark_stream_key_->start(); } - return LoadResult(url, LoadResult::TrackAvailable, streaming_url, length_nanosec); + return LoadResult(url, LoadResult::TrackAvailable, streaming_url, + length_nanosec); } void GroovesharkUrlHandler::TrackAboutToEnd() { @@ -69,9 +73,7 @@ void GroovesharkUrlHandler::TrackAboutToEnd() { service_->MarkSongComplete(last_song_id_, last_stream_key_, last_server_id_); } -void GroovesharkUrlHandler::TrackSkipped() { - timer_mark_stream_key_->stop(); -} +void GroovesharkUrlHandler::TrackSkipped() { timer_mark_stream_key_->stop(); } void GroovesharkUrlHandler::MarkStreamKeyOver30Secs() { service_->MarkStreamKeyOver30Secs(last_stream_key_, last_server_id_); diff --git a/src/internet/groovesharkurlhandler.h b/src/internet/groovesharkurlhandler.h index c0ca3b228..cc5cad9e7 100644 --- a/src/internet/groovesharkurlhandler.h +++ b/src/internet/groovesharkurlhandler.h @@ -25,7 +25,7 @@ class QTimer; class GroovesharkUrlHandler : public UrlHandler { Q_OBJECT -public: + public: GroovesharkUrlHandler(GroovesharkService* service, QObject* parent); QString scheme() const { return "grooveshark"; } @@ -34,10 +34,10 @@ public: void TrackAboutToEnd(); void TrackSkipped(); -private slots: + private slots: void MarkStreamKeyOver30Secs(); -private: + private: GroovesharkService* service_; QTimer* timer_mark_stream_key_; QString last_artist_id_; @@ -47,4 +47,4 @@ private: QString last_stream_key_; }; -#endif // GROOVESHARKURLHANDLER_H +#endif // GROOVESHARKURLHANDLER_H diff --git a/src/internet/icecastbackend.cpp b/src/internet/icecastbackend.cpp index 51cfa3007..2d19e352c 100644 --- a/src/internet/icecastbackend.cpp +++ b/src/internet/icecastbackend.cpp @@ -24,14 +24,9 @@ const char* IcecastBackend::kTableName = "icecast_stations"; -IcecastBackend::IcecastBackend(QObject* parent) - : QObject(parent) -{ -} +IcecastBackend::IcecastBackend(QObject* parent) : QObject(parent) {} -void IcecastBackend::Init(Database* db) { - db_ = db; -} +void IcecastBackend::Init(Database* db) { db_ = db; } QStringList IcecastBackend::GetGenresAlphabetical(const QString& filter) { QStringList ret; @@ -41,7 +36,7 @@ QStringList IcecastBackend::GetGenresAlphabetical(const QString& filter) { QString where = filter.isEmpty() ? "" : "WHERE name LIKE :filter"; QString sql = QString("SELECT DISTINCT genre FROM %1 %2 ORDER BY genre") - .arg(kTableName, where); + .arg(kTableName, where); QSqlQuery q(sql, db); if (!filter.isEmpty()) { @@ -64,10 +59,11 @@ QStringList IcecastBackend::GetGenresByPopularity(const QString& filter) { QString where = filter.isEmpty() ? "" : "WHERE name LIKE :filter"; - QString sql = QString("SELECT genre, COUNT(*) AS count FROM %1 " - " %2" - " GROUP BY genre" - " ORDER BY count DESC").arg(kTableName, where); + QString sql = QString( + "SELECT genre, COUNT(*) AS count FROM %1 " + " %2" + " GROUP BY genre" + " ORDER BY count DESC").arg(kTableName, where); QSqlQuery q(sql, db); if (!filter.isEmpty()) { q.bindValue(":filter", QString("%" + filter + "%")); @@ -100,30 +96,29 @@ IcecastBackend::StationList IcecastBackend::GetStations(const QString& filter, bound_items << "%" + filter + "%"; } - QString sql = QString("SELECT name, url, mime_type, bitrate, channels," - " samplerate, genre" - " FROM %1").arg(kTableName); + QString sql = QString( + "SELECT name, url, mime_type, bitrate, channels," + " samplerate, genre" + " FROM %1").arg(kTableName); if (!where_clauses.isEmpty()) { sql += " WHERE " + where_clauses.join(" AND "); } QSqlQuery q(sql, db); - foreach (const QString& value, bound_items) { - q.addBindValue(value); - } + foreach(const QString & value, bound_items) { q.addBindValue(value); } q.exec(); if (db_->CheckErrors(q)) return ret; while (q.next()) { Station station; - station.name = q.value(0).toString(); - station.url = QUrl(q.value(1).toString()); - station.mime_type = q.value(2).toString(); - station.bitrate = q.value(3).toInt(); - station.channels = q.value(4).toInt(); + station.name = q.value(0).toString(); + station.url = QUrl(q.value(1).toString()); + station.mime_type = q.value(2).toString(); + station.bitrate = q.value(3).toInt(); + station.channels = q.value(4).toInt(); station.samplerate = q.value(5).toInt(); - station.genre = q.value(6).toString(); + station.genre = q.value(6).toString(); ret << station; } return ret; @@ -148,14 +143,16 @@ void IcecastBackend::ClearAndAddStations(const StationList& stations) { q.exec(); if (db_->CheckErrors(q)) return; - q = QSqlQuery(QString("INSERT INTO %1 (name, url, mime_type, bitrate," - " channels, samplerate, genre)" - " VALUES (:name, :url, :mime_type, :bitrate," - " :channels, :samplerate, :genre)") - .arg(kTableName), db); + q = QSqlQuery( + QString( + "INSERT INTO %1 (name, url, mime_type, bitrate," + " channels, samplerate, genre)" + " VALUES (:name, :url, :mime_type, :bitrate," + " :channels, :samplerate, :genre)").arg(kTableName), + db); // Add these ones - foreach (const Station& station, stations) { + foreach(const Station & station, stations) { q.bindValue(":name", station.name); q.bindValue(":url", station.url); q.bindValue(":mime_type", station.mime_type); diff --git a/src/internet/icecastbackend.h b/src/internet/icecastbackend.h index f5ffd1b87..f67203f45 100644 --- a/src/internet/icecastbackend.h +++ b/src/internet/icecastbackend.h @@ -28,18 +28,14 @@ class Database; class IcecastBackend : public QObject { Q_OBJECT -public: + public: IcecastBackend(QObject* parent = 0); void Init(Database* db); static const char* kTableName; struct Station { - Station() - : bitrate(0), - channels(0), - samplerate(0) { - } + Station() : bitrate(0), channels(0), samplerate(0) {} QString name; QUrl url; @@ -65,8 +61,8 @@ public: signals: void DatabaseReset(); -private: + private: Database* db_; }; -#endif // ICECASTBACKEND_H +#endif // ICECASTBACKEND_H diff --git a/src/internet/icecastfilterwidget.cpp b/src/internet/icecastfilterwidget.cpp index ce7e7f3f3..ba7bb9a9e 100644 --- a/src/internet/icecastfilterwidget.cpp +++ b/src/internet/icecastfilterwidget.cpp @@ -27,12 +27,11 @@ const char* IcecastFilterWidget::kSettingsGroup = "Icecast"; -IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) - : QWidget(parent), - ui_(new Ui_IcecastFilterWidget), - menu_(new QMenu(tr("Display options"), this)), - sort_mode_mapper_(new QSignalMapper(this)) -{ +IcecastFilterWidget::IcecastFilterWidget(QWidget* parent) + : QWidget(parent), + ui_(new Ui_IcecastFilterWidget), + menu_(new QMenu(tr("Display options"), this)), + sort_mode_mapper_(new QSignalMapper(this)) { ui_->setupUi(this); // Icons @@ -40,9 +39,12 @@ IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) // Options actions QActionGroup* group = new QActionGroup(this); - AddAction(group, ui_->action_sort_genre_popularity, IcecastModel::SortMode_GenreByPopularity); - AddAction(group, ui_->action_sort_genre_alphabetically, IcecastModel::SortMode_GenreAlphabetical); - AddAction(group, ui_->action_sort_station, IcecastModel::SortMode_StationAlphabetical); + AddAction(group, ui_->action_sort_genre_popularity, + IcecastModel::SortMode_GenreByPopularity); + AddAction(group, ui_->action_sort_genre_alphabetically, + IcecastModel::SortMode_GenreAlphabetical); + AddAction(group, ui_->action_sort_station, + IcecastModel::SortMode_StationAlphabetical); // Options menu menu_->setIcon(ui_->options->icon()); @@ -52,31 +54,30 @@ IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) connect(sort_mode_mapper_, SIGNAL(mapped(int)), SLOT(SortModeChanged(int))); } -void IcecastFilterWidget::AddAction( - QActionGroup* group, QAction* action, IcecastModel::SortMode mode) { +void IcecastFilterWidget::AddAction(QActionGroup* group, QAction* action, + IcecastModel::SortMode mode) { group->addAction(action); sort_mode_mapper_->setMapping(action, mode); connect(action, SIGNAL(triggered()), sort_mode_mapper_, SLOT(map())); } -IcecastFilterWidget::~IcecastFilterWidget() { - delete ui_; -} +IcecastFilterWidget::~IcecastFilterWidget() { delete ui_; } -void IcecastFilterWidget::FocusOnFilter(QKeyEvent *event) { +void IcecastFilterWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(Qt::OtherFocusReason); QApplication::sendEvent(ui_->filter, event); } void IcecastFilterWidget::SetIcecastModel(IcecastModel* model) { model_ = model; - connect(ui_->filter, SIGNAL(textChanged(QString)), - model_, SLOT(SetFilterText(QString))); + connect(ui_->filter, SIGNAL(textChanged(QString)), model_, + SLOT(SetFilterText(QString))); // Load settings QSettings s; s.beginGroup(kSettingsGroup); - switch (s.value("sort_by", IcecastModel::SortMode_GenreByPopularity).toInt()) { + switch ( + s.value("sort_by", IcecastModel::SortMode_GenreByPopularity).toInt()) { case IcecastModel::SortMode_GenreByPopularity: ui_->action_sort_genre_popularity->trigger(); break; diff --git a/src/internet/icecastfilterwidget.h b/src/internet/icecastfilterwidget.h index f99f5076c..44a8a5296 100644 --- a/src/internet/icecastfilterwidget.h +++ b/src/internet/icecastfilterwidget.h @@ -32,7 +32,7 @@ class QSignalMapper; class IcecastFilterWidget : public QWidget { Q_OBJECT -public: + public: IcecastFilterWidget(QWidget* parent = 0); ~IcecastFilterWidget(); @@ -42,16 +42,17 @@ public: QMenu* menu() const { return menu_; } -public slots: + public slots: void FocusOnFilter(QKeyEvent* e); -private slots: + private slots: void SortModeChanged(int mode); -private: - void AddAction(QActionGroup* group, QAction* action, IcecastModel::SortMode mode); + private: + void AddAction(QActionGroup* group, QAction* action, + IcecastModel::SortMode mode); -private: + private: Ui_IcecastFilterWidget* ui_; IcecastModel* model_; QMenu* menu_; @@ -59,4 +60,4 @@ private: QSignalMapper* sort_mode_mapper_; }; -#endif // ICECASTFILTERWIDGET_H +#endif // ICECASTFILTERWIDGET_H diff --git a/src/internet/icecastitem.h b/src/internet/icecastitem.h index c09485447..60d6c6dea 100644 --- a/src/internet/icecastitem.h +++ b/src/internet/icecastitem.h @@ -22,20 +22,15 @@ #include "core/simpletreeitem.h" class IcecastItem : public SimpleTreeItem { -public: - enum Type { - Type_Root, - Type_Genre, - Type_Station, - Type_Divider, - }; + public: + enum Type { Type_Root, Type_Genre, Type_Station, Type_Divider, }; IcecastItem(SimpleTreeModel* model) - : SimpleTreeItem(Type_Root, model) {} + : SimpleTreeItem(Type_Root, model) {} IcecastItem(Type type, IcecastItem* parent = NULL) - : SimpleTreeItem(type, parent) {} + : SimpleTreeItem(type, parent) {} IcecastBackend::Station station; }; -#endif // ICECASTITEM_H +#endif // ICECASTITEM_H diff --git a/src/internet/icecastmodel.cpp b/src/internet/icecastmodel.cpp index 5954c365d..70e78b7b0 100644 --- a/src/internet/icecastmodel.cpp +++ b/src/internet/icecastmodel.cpp @@ -19,18 +19,15 @@ #include "icecastmodel.h" #include "playlist/songmimedata.h" IcecastModel::IcecastModel(IcecastBackend* backend, QObject* parent) - : SimpleTreeModel(new IcecastItem(this), parent), - backend_(backend), - sort_mode_(SortMode_GenreByPopularity), - genre_icon_(":last.fm/icon_tag.png"), - station_icon_(":last.fm/icon_radio.png") -{ + : SimpleTreeModel(new IcecastItem(this), parent), + backend_(backend), + sort_mode_(SortMode_GenreByPopularity), + genre_icon_(":last.fm/icon_tag.png"), + station_icon_(":last.fm/icon_radio.png") { root_->lazy_loaded = true; } -IcecastModel::~IcecastModel() { - delete root_; -} +IcecastModel::~IcecastModel() { delete root_; } void IcecastModel::Init() { connect(backend_, SIGNAL(DatabaseReset()), SLOT(Reset())); @@ -50,8 +47,7 @@ void IcecastModel::Reset() { } void IcecastModel::LazyPopulate(IcecastItem* parent) { - if (parent->lazy_loaded) - return; + if (parent->lazy_loaded) return; parent->lazy_loaded = true; switch (parent->type) { @@ -85,9 +81,10 @@ void IcecastModel::PopulateGenre(IcecastItem* parent, const QString& genre, QChar last_divider; IcecastBackend::StationList stations = backend_->GetStations(filter_, genre); - foreach (const IcecastBackend::Station& station, stations) { + foreach(const IcecastBackend::Station & station, stations) { QChar divider_char = DividerKey(station.name); - if (create_dividers && !divider_char.isNull() && divider_char != last_divider) { + if (create_dividers && !divider_char.isNull() && + divider_char != last_divider) { last_divider = divider_char; IcecastItem* divider = new IcecastItem(IcecastItem::Type_Divider, parent); @@ -107,7 +104,7 @@ void IcecastModel::PopulateGenre(IcecastItem* parent, const QString& genre, void IcecastModel::AddGenres(const QStringList& genres, bool create_dividers) { QChar last_divider; - foreach (const QString& genre, genres) { + foreach(const QString & genre, genres) { QChar divider_char = DividerKey(genre); if (create_dividers && divider_char != last_divider) { last_divider = divider_char; @@ -123,16 +120,13 @@ void IcecastModel::AddGenres(const QStringList& genres, bool create_dividers) { } QChar IcecastModel::DividerKey(const QString& text) { - if (text.isEmpty()) - return QChar(); + if (text.isEmpty()) return QChar(); QChar c; c = text[0]; - if (c.isDigit()) - return '0'; - if (c.isPunct() || c.isSymbol()) - return QChar(); + if (c.isDigit()) return '0'; + if (c.isPunct() || c.isSymbol()) return QChar(); if (c.decompositionTag() != QChar::NoDecomposition) return QChar(c.decomposition()[0]); @@ -140,8 +134,7 @@ QChar IcecastModel::DividerKey(const QString& text) { } QString IcecastModel::DividerDisplayText(const QChar& key) { - if (key == '0') - return "0-9"; + if (key == '0') return "0-9"; return key; } @@ -158,8 +151,10 @@ QVariant IcecastModel::data(const IcecastItem* item, int role) const { case Qt::DecorationRole: switch (item->type) { - case IcecastItem::Type_Genre: return genre_icon_; - case IcecastItem::Type_Station: return station_icon_; + case IcecastItem::Type_Genre: + return genre_icon_; + case IcecastItem::Type_Station: + return station_icon_; } break; @@ -181,16 +176,13 @@ void IcecastModel::SetSortMode(SortMode mode) { Qt::ItemFlags IcecastModel::flags(const QModelIndex& index) const { switch (IndexToItem(index)->type) { - case IcecastItem::Type_Station: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDragEnabled; - case IcecastItem::Type_Genre: - case IcecastItem::Type_Root: - case IcecastItem::Type_Divider: - default: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled; + case IcecastItem::Type_Station: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled; + case IcecastItem::Type_Genre: + case IcecastItem::Type_Root: + case IcecastItem::Type_Divider: + default: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled; } } @@ -199,16 +191,14 @@ QStringList IcecastModel::mimeTypes() const { } QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return nullptr; + if (indexes.isEmpty()) return nullptr; SongMimeData* data = new SongMimeData; QList urls; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { IcecastItem* item = IndexToItem(index); - if (!item || item->type != IcecastItem::Type_Station) - continue; + if (!item || item->type != IcecastItem::Type_Station) continue; data->songs << item->station.ToSong(); urls << item->station.url; @@ -227,8 +217,7 @@ QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { Song IcecastModel::GetSong(const QModelIndex& index) const { IcecastItem* item = IndexToItem(index); - if (!item || item->type != IcecastItem::Type_Station) - return Song(); + if (!item || item->type != IcecastItem::Type_Station) return Song(); return item->station.ToSong(); } diff --git a/src/internet/icecastmodel.h b/src/internet/icecastmodel.h index 00297426e..e25fb94df 100644 --- a/src/internet/icecastmodel.h +++ b/src/internet/icecastmodel.h @@ -29,7 +29,7 @@ class IcecastBackend; class IcecastModel : public SimpleTreeModel { Q_OBJECT -public: + public: IcecastModel(IcecastBackend* backend, QObject* parent = 0); ~IcecastModel(); @@ -40,39 +40,38 @@ public: SortMode_StationAlphabetical = 2, }; - enum Role { - Role_IsDivider = LibraryModel::Role_IsDivider, - }; + enum Role { Role_IsDivider = LibraryModel::Role_IsDivider, }; IcecastBackend* backend() const { return backend_; } Song GetSong(const QModelIndex& index) const; // QAbstractItemModel - QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; -public slots: + public slots: void Init(); void Reset(); void SetFilterText(const QString& filter); void SetSortMode(SortMode mode); -protected: + protected: void LazyPopulate(IcecastItem* parent); -private: + private: QVariant data(const IcecastItem* item, int role) const; - void PopulateGenre(IcecastItem* parent, const QString& genre, bool create_dividers); + void PopulateGenre(IcecastItem* parent, const QString& genre, + bool create_dividers); void AddGenres(const QStringList& genres, bool create_dividers); static QChar DividerKey(const QString& text); static QString DividerDisplayText(const QChar& key); -private: + private: IcecastBackend* backend_; QString filter_; @@ -82,4 +81,4 @@ private: QIcon station_icon_; }; -#endif // ICECASTMODEL_H +#endif // ICECASTMODEL_H diff --git a/src/internet/icecastservice.cpp b/src/internet/icecastservice.cpp index 50ca8445b..d5a76f55b 100644 --- a/src/internet/icecastservice.cpp +++ b/src/internet/icecastservice.cpp @@ -44,9 +44,9 @@ using std::sort; using std::unique; - const char* IcecastService::kServiceName = "Icecast"; -const char* IcecastService::kDirectoryUrl = "http://data.clementine-player.org/icecast-directory"; +const char* IcecastService::kDirectoryUrl = + "http://data.clementine-player.org/icecast-directory"; const char* IcecastService::kHomepage = "http://dir.xiph.org/"; IcecastService::IcecastService(Application* app, InternetModel* parent) @@ -56,8 +56,7 @@ IcecastService::IcecastService(Application* app, InternetModel* parent) backend_(nullptr), model_(nullptr), filter_(new IcecastFilterWidget(0)), - load_directory_task_id_(0) -{ + load_directory_task_id_(0) { backend_ = new IcecastBackend; backend_->moveToThread(app_->database()->thread()); backend_->Init(app_->database()); @@ -65,11 +64,11 @@ IcecastService::IcecastService(Application* app, InternetModel* parent) model_ = new IcecastModel(backend_, this); filter_->SetIcecastModel(model_); - app_->global_search()->AddProvider(new IcecastSearchProvider(backend_, app_, this)); + app_->global_search()->AddProvider( + new IcecastSearchProvider(backend_, app_, this)); } -IcecastService::~IcecastService() { -} +IcecastService::~IcecastService() {} QStandardItem* IcecastService::CreateRootItem() { root_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), kServiceName); @@ -81,7 +80,8 @@ void IcecastService::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: model_->Init(); - model()->merged_model()->AddSubModel(model()->indexFromItem(item), model_); + model()->merged_model()->AddSubModel(model()->indexFromItem(item), + model_); if (backend_->IsEmpty()) { LoadDirectory(); @@ -97,8 +97,8 @@ void IcecastService::LoadDirectory() { RequestDirectory(QUrl(kDirectoryUrl)); if (!load_directory_task_id_) { - load_directory_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Icecast directory")); + load_directory_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Icecast directory")); } } @@ -116,7 +116,8 @@ void IcecastService::DownloadDirectoryFinished(QNetworkReply* reply) { if (reply->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { // Discard the old reply and follow the redirect reply->deleteLater(); - RequestDirectory(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + RequestDirectory( + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); return; } @@ -125,19 +126,17 @@ void IcecastService::DownloadDirectoryFinished(QNetworkReply* reply) { QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); NewClosure(watcher, SIGNAL(finished()), this, - SLOT(ParseDirectoryFinished(QFuture)), - future); + SLOT(ParseDirectoryFinished(QFuture)), + future); connect(watcher, SIGNAL(finished()), watcher, SLOT(deleteLater())); } namespace { template struct GenreSorter { - GenreSorter(const QMultiHash& genres) - : genres_(genres) { - } + GenreSorter(const QMultiHash& genres) : genres_(genres) {} - bool operator() (const QString& a, const QString& b) const { + bool operator()(const QString& a, const QString& b) const { return genres_.count(a) > genres_.count(b); } @@ -147,31 +146,30 @@ struct GenreSorter { template struct StationSorter { - bool operator() (const T& a, const T& b) const { + bool operator()(const T& a, const T& b) const { return a.name.compare(b.name, Qt::CaseInsensitive) < 0; } }; template struct StationSorter { - bool operator() (const T* a, const T* b) const { + bool operator()(const T* a, const T* b) const { return a->name.compare(b->name, Qt::CaseInsensitive) < 0; } }; template struct StationEquality { - bool operator() (T a, T b) const { - return a.name == b.name; - } + bool operator()(T a, T b) const { return a.name == b.name; } }; QStringList FilterGenres(const QStringList& genres) { QStringList ret; - foreach (const QString& genre, genres) { + foreach(const QString & genre, genres) { if (genre.length() < 2) continue; if (genre.contains("ÃÂ")) continue; // Broken unicode. - if (genre.contains(QRegExp("^#x[0-9a-f][0-9a-f]"))) continue; // Broken XML entities. + if (genre.contains(QRegExp("^#x[0-9a-f][0-9a-f]"))) + continue; // Broken XML entities. // Convert 80 -> 80s. if (genre.contains(QRegExp("^[0-9]0$"))) { @@ -186,23 +184,25 @@ QStringList FilterGenres(const QStringList& genres) { } return ret; } - } void IcecastService::ParseDirectoryFinished( QFuture future) { IcecastBackend::StationList all_stations = future.result(); - sort(all_stations.begin(), all_stations.end(), StationSorter()); - // Remove duplicates by name. These tend to be multiple URLs for the same station. + sort(all_stations.begin(), all_stations.end(), + StationSorter()); + // Remove duplicates by name. These tend to be multiple URLs for the same + // station. IcecastBackend::StationList::iterator it = - unique(all_stations.begin(), all_stations.end(), StationEquality()); + unique(all_stations.begin(), all_stations.end(), + StationEquality()); all_stations.erase(it, all_stations.end()); // Cluster stations by genre. QMultiHash genres; // Add stations. - for (int i=0 ; i genre_set = genres.keys().toSet(); // Merge genres with only 1 or 2 stations into "Other". - foreach (const QString& genre, genre_set) { + foreach(const QString & genre, genre_set) { if (genres.count(genre) < 3) { const QList& small_genre = genres.values(genre); - foreach (IcecastBackend::Station* s, small_genre) { - s->genre = "Other"; - } + foreach(IcecastBackend::Station * s, small_genre) { s->genre = "Other"; } } } @@ -225,7 +223,8 @@ void IcecastService::ParseDirectoryFinished( load_directory_task_id_ = 0; } -IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) const { +IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) + const { QXmlStreamReader reader(device); IcecastBackend::StationList stations; while (!reader.atEnd()) { @@ -239,25 +238,27 @@ IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) co return stations; } -IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) const { +IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) + const { IcecastBackend::Station station; while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { QStringRef name = reader->name(); - QString value = reader->readElementText(QXmlStreamReader::SkipChildElements); + QString value = + reader->readElementText(QXmlStreamReader::SkipChildElements); if (name == "server_name") station.name = value; - if (name == "listen_url") station.url = QUrl(value); + if (name == "listen_url") station.url = QUrl(value); if (name == "server_type") station.mime_type = value; - if (name == "bitrate") station.bitrate = value.toInt(); - if (name == "channels") station.channels = value.toInt(); - if (name == "samplerate") station.samplerate = value.toInt(); - if (name == "genre") station.genre = - FilterGenres(value.split(' ', QString::SkipEmptyParts))[0]; + if (name == "bitrate") station.bitrate = value.toInt(); + if (name == "channels") station.channels = value.toInt(); + if (name == "samplerate") station.samplerate = value.toInt(); + if (name == "genre") + station.genre = + FilterGenres(value.split(' ', QString::SkipEmptyParts))[0]; } } @@ -269,9 +270,7 @@ IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) co return station; } -QWidget* IcecastService::HeaderWidget() const { - return filter_; -} +QWidget* IcecastService::HeaderWidget() const { return filter_; } void IcecastService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); @@ -287,19 +286,20 @@ void IcecastService::ShowContextMenu(const QPoint& global_pos) { } void IcecastService::EnsureMenuCreated() { - if (context_menu_) - return; + if (context_menu_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("dir.xiph.org"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh station list"), this, SLOT(LoadDirectory())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("dir.xiph.org"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh station list"), this, + SLOT(LoadDirectory())); context_menu_->addSeparator(); context_menu_->addMenu(filter_->menu()); } -void IcecastService::Homepage() { - QDesktopServices::openUrl(QUrl(kHomepage)); -} +void IcecastService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } diff --git a/src/internet/icecastservice.h b/src/internet/icecastservice.h index 36e054da4..52c549597 100644 --- a/src/internet/icecastservice.h +++ b/src/internet/icecastservice.h @@ -33,7 +33,7 @@ class QNetworkReply; class IcecastService : public InternetService { Q_OBJECT -public: + public: IcecastService(Application* app, InternetModel* parent); ~IcecastService(); @@ -41,10 +41,7 @@ public: static const char* kDirectoryUrl; static const char* kHomepage; - enum ItemType { - Type_Stream = 3000, - Type_Genre, - }; + enum ItemType { Type_Stream = 3000, Type_Genre, }; QStandardItem* CreateRootItem(); void LazyPopulate(QStandardItem* item); @@ -53,14 +50,13 @@ public: QWidget* HeaderWidget() const; -private slots: + private slots: void LoadDirectory(); void Homepage(); void DownloadDirectoryFinished(QNetworkReply* reply); - void ParseDirectoryFinished( - QFuture future); + void ParseDirectoryFinished(QFuture future); -private: + private: void RequestDirectory(const QUrl& url); void EnsureMenuCreated(); IcecastBackend::StationList ParseDirectory(QIODevice* device) const; diff --git a/src/internet/internetmimedata.h b/src/internet/internetmimedata.h index f6d089f3f..3e0513a49 100644 --- a/src/internet/internetmimedata.h +++ b/src/internet/internetmimedata.h @@ -28,12 +28,11 @@ class InternetModel; class InternetMimeData : public MimeData { Q_OBJECT -public: - InternetMimeData(const InternetModel* _model) - : model(_model) {} + public: + InternetMimeData(const InternetModel* _model) : model(_model) {} const InternetModel* model; QModelIndexList indexes; }; -#endif // INTERNETMIMEDATA_H +#endif // INTERNETMIMEDATA_H diff --git a/src/internet/internetmodel.cpp b/src/internet/internetmodel.cpp index 9b01a7dfc..93a59664e 100644 --- a/src/internet/internetmodel.cpp +++ b/src/internet/internetmodel.cpp @@ -39,22 +39,22 @@ #include "smartplaylists/generatormimedata.h" #ifdef HAVE_LIBLASTFM - #include "lastfmservice.h" +#include "lastfmservice.h" #endif #ifdef HAVE_GOOGLE_DRIVE - #include "googledriveservice.h" +#include "googledriveservice.h" #endif #ifdef HAVE_UBUNTU_ONE - #include "ubuntuoneservice.h" +#include "ubuntuoneservice.h" #endif #ifdef HAVE_DROPBOX - #include "dropboxservice.h" +#include "dropboxservice.h" #endif #ifdef HAVE_SKYDRIVE - #include "skydriveservice.h" +#include "skydriveservice.h" #endif #ifdef HAVE_BOX - #include "boxservice.h" +#include "boxservice.h" #endif using smart_playlists::Generator; @@ -64,10 +64,9 @@ using smart_playlists::GeneratorPtr; QMap* InternetModel::sServices = nullptr; InternetModel::InternetModel(Application* app, QObject* parent) - : QStandardItemModel(parent), - app_(app), - merged_model_(new MergedProxyModel(this)) -{ + : QStandardItemModel(parent), + app_(app), + merged_model_(new MergedProxyModel(this)) { if (!sServices) { sServices = new QMap; } @@ -110,10 +109,11 @@ InternetModel::InternetModel(Application* app, QObject* parent) #endif } -void InternetModel::AddService(InternetService *service) { +void InternetModel::AddService(InternetService* service) { QStandardItem* root = service->CreateRootItem(); if (!root) { - qLog(Warning) << "Internet service" << service->name() << "did not return a root item"; + qLog(Warning) << "Internet service" << service->name() + << "did not return a root item"; return; } @@ -125,22 +125,25 @@ void InternetModel::AddService(InternetService *service) { sServices->insert(service->name(), service); connect(service, SIGNAL(StreamError(QString)), SIGNAL(StreamError(QString))); - connect(service, SIGNAL(StreamMetadataFound(QUrl,Song)), SIGNAL(StreamMetadataFound(QUrl,Song))); - connect(service, SIGNAL(AddToPlaylistSignal(QMimeData*)), SIGNAL(AddToPlaylist(QMimeData*))); - connect(service, SIGNAL(ScrollToIndex(QModelIndex)), SIGNAL(ScrollToIndex(QModelIndex))); + connect(service, SIGNAL(StreamMetadataFound(QUrl, Song)), + SIGNAL(StreamMetadataFound(QUrl, Song))); + connect(service, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SIGNAL(AddToPlaylist(QMimeData*))); + connect(service, SIGNAL(ScrollToIndex(QModelIndex)), + SIGNAL(ScrollToIndex(QModelIndex))); connect(service, SIGNAL(destroyed()), SLOT(ServiceDeleted())); service->ReloadSettings(); } void InternetModel::RemoveService(InternetService* service) { - if (!sServices->contains(service->name())) - return; + if (!sServices->contains(service->name())) return; // Find and remove the root item that this service created - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < invisibleRootItem()->rowCount(); ++i) { QStandardItem* item = invisibleRootItem()->child(i); - if (!item || item->data(Role_Service).value() == service) { + if (!item || + item->data(Role_Service).value() == service) { invisibleRootItem()->removeRow(i); break; } @@ -155,24 +158,25 @@ void InternetModel::RemoveService(InternetService* service) { void InternetModel::ServiceDeleted() { InternetService* service = qobject_cast(sender()); - if (service) - RemoveService(service); + if (service) RemoveService(service); } InternetService* InternetModel::ServiceByName(const QString& name) { - if (sServices->contains(name)) - return sServices->value(name); + if (sServices->contains(name)) return sServices->value(name); return nullptr; } -InternetService* InternetModel::ServiceForItem(const QStandardItem* item) const { +InternetService* InternetModel::ServiceForItem(const QStandardItem* item) + const { return ServiceForIndex(indexFromItem(item)); } -InternetService* InternetModel::ServiceForIndex(const QModelIndex& index) const { +InternetService* InternetModel::ServiceForIndex(const QModelIndex& index) + const { QModelIndex current_index = index; while (current_index.isValid()) { - InternetService* service = current_index.data(Role_Service).value(); + InternetService* service = + current_index.data(Role_Service).value(); if (service) { return service; } @@ -182,9 +186,8 @@ InternetService* InternetModel::ServiceForIndex(const QModelIndex& index) const } Qt::ItemFlags InternetModel::flags(const QModelIndex& index) const { - Qt::ItemFlags flags = Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDropEnabled; + Qt::ItemFlags flags = + Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled; if (IsPlayable(index)) { flags |= Qt::ItemIsDragEnabled; } @@ -192,8 +195,7 @@ Qt::ItemFlags InternetModel::flags(const QModelIndex& index) const { } bool InternetModel::hasChildren(const QModelIndex& parent) const { - if (parent.data(Role_CanLazyLoad).toBool()) - return true; + if (parent.data(Role_CanLazyLoad).toBool()) return true; return QStandardItemModel::hasChildren(parent); } @@ -212,8 +214,7 @@ int InternetModel::rowCount(const QModelIndex& parent) const { bool InternetModel::IsPlayable(const QModelIndex& index) const { QVariant behaviour = index.data(Role_PlayBehaviour); - if (!behaviour.isValid()) - return false; + if (!behaviour.isValid()) return false; PlayBehaviour pb = PlayBehaviour(behaviour.toInt()); return (pb == PlayBehaviour_MultipleItems || pb == PlayBehaviour_SingleItem || @@ -226,19 +227,18 @@ QStringList InternetModel::mimeTypes() const { QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { // Special case for when the user double clicked on a special item. - if (indexes.count() == 1 && - indexes[0].data(Role_PlayBehaviour).toInt() == - PlayBehaviour_DoubleClickAction) { - InternetModel::ServiceForIndex(indexes[0])->ItemDoubleClicked(itemFromIndex(indexes[0])); + if (indexes.count() == 1 && indexes[0].data(Role_PlayBehaviour).toInt() == + PlayBehaviour_DoubleClickAction) { + InternetModel::ServiceForIndex(indexes[0]) + ->ItemDoubleClicked(itemFromIndex(indexes[0])); return nullptr; } if (indexes.count() == 1 && indexes[0].data(Role_Type).toInt() == Type_SmartPlaylist) { - GeneratorPtr generator = - InternetModel::ServiceForIndex(indexes[0])->CreateGenerator(itemFromIndex(indexes[0])); - if (!generator) - return nullptr; + GeneratorPtr generator = InternetModel::ServiceForIndex(indexes[0]) + ->CreateGenerator(itemFromIndex(indexes[0])); + if (!generator) return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(LibraryModel::kSmartPlaylistsMimeType, QByteArray()); data->name_for_new_playlist_ = this->data(indexes.first()).toString(); @@ -249,9 +249,8 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { QModelIndexList new_indexes; QModelIndex last_valid_index; - foreach (const QModelIndex& index, indexes) { - if (!IsPlayable(index)) - continue; + foreach(const QModelIndex & index, indexes) { + if (!IsPlayable(index)) continue; last_valid_index = index; if (index.data(Role_PlayBehaviour).toInt() == PlayBehaviour_MultipleItems) { @@ -270,18 +269,20 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { } } - if (urls.isEmpty()) - return nullptr; + if (urls.isEmpty()) return nullptr; InternetMimeData* data = new InternetMimeData(this); data->setUrls(urls); data->indexes = new_indexes; - data->name_for_new_playlist_ = InternetModel::ServiceForIndex(last_valid_index)->name(); + data->name_for_new_playlist_ = + InternetModel::ServiceForIndex(last_valid_index)->name(); return data; } -bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { +bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, + int row, int column, + const QModelIndex& parent) { if (action == Qt::IgnoreAction) { return false; } @@ -292,23 +293,22 @@ bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, i return true; } -void InternetModel::ShowContextMenu(const QModelIndexList& selected_merged_model_indexes, - const QModelIndex& current_merged_model_index, - const QPoint& global_pos) { +void InternetModel::ShowContextMenu( + const QModelIndexList& selected_merged_model_indexes, + const QModelIndex& current_merged_model_index, const QPoint& global_pos) { current_index_ = merged_model_->mapToSource(current_merged_model_index); selected_indexes_.clear(); - foreach (const QModelIndex& index, selected_merged_model_indexes) { + foreach(const QModelIndex & index, selected_merged_model_indexes) { selected_indexes_ << merged_model_->mapToSource(index); } InternetService* service = ServiceForIndex(current_merged_model_index); - if (service) - service->ShowContextMenu(global_pos); + if (service) service->ShowContextMenu(global_pos); } void InternetModel::ReloadSettings() { - foreach (InternetService* service, sServices->values()) { + foreach(InternetService * service, sServices->values()) { service->ReloadSettings(); } } diff --git a/src/internet/internetmodel.h b/src/internet/internetmodel.h index e1f2b73b3..14433c1d1 100644 --- a/src/internet/internetmodel.h +++ b/src/internet/internetmodel.h @@ -35,13 +35,13 @@ class SettingsDialog; class TaskManager; #ifdef HAVE_LIBLASTFM - class LastFMService; +class LastFMService; #endif class InternetModel : public QStandardItemModel { Q_OBJECT -public: + public: InternetModel(Application* app, QObject* parent = 0); enum Role { @@ -77,9 +77,7 @@ public: // Setting this to true means that the item can be changed by user action // (e.g. changing remote playlists) Role_CanBeModified, - RoleCount, - Role_IsDivider = LibraryModel::Role_IsDivider, }; @@ -88,7 +86,6 @@ public: Type_Track, Type_UserPlaylist, Type_SmartPlaylist, - TypeCount }; @@ -120,7 +117,7 @@ public: // Needs to be static for InternetPlaylistItem::restore static InternetService* ServiceByName(const QString& name); - template + template static T* Service() { return static_cast(ServiceByName(T::kServiceName)); } @@ -143,7 +140,8 @@ public: Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); bool hasChildren(const QModelIndex& parent) const; int rowCount(const QModelIndex& parent) const; @@ -165,10 +163,10 @@ signals: void AddToPlaylist(QMimeData* data); void ScrollToIndex(const QModelIndex& index); -private slots: + private slots: void ServiceDeleted(); -private: + private: static QMap* sServices; Application* app_; @@ -180,4 +178,4 @@ private: QModelIndex current_index_; }; -#endif // INTERNETMODEL_H +#endif // INTERNETMODEL_H diff --git a/src/internet/internetplaylistitem.cpp b/src/internet/internetplaylistitem.cpp index 5db1781cf..803a0b029 100644 --- a/src/internet/internetplaylistitem.cpp +++ b/src/internet/internetplaylistitem.cpp @@ -27,23 +27,21 @@ #include InternetPlaylistItem::InternetPlaylistItem(const QString& type) - : PlaylistItem(type), - set_service_icon_(false) -{ -} + : PlaylistItem(type), set_service_icon_(false) {} -InternetPlaylistItem::InternetPlaylistItem(InternetService* service, const Song& metadata) - : PlaylistItem("Internet"), - service_name_(service->name()), - set_service_icon_(false), - metadata_(metadata) -{ +InternetPlaylistItem::InternetPlaylistItem(InternetService* service, + const Song& metadata) + : PlaylistItem("Internet"), + service_name_(service->name()), + set_service_icon_(false), + metadata_(metadata) { InitMetadata(); } bool InternetPlaylistItem::InitFromQuery(const SqlRow& query) { // The song tables gets joined first, plus one each for the song ROWIDs - const int row = (Song::kColumns.count() + 1) * PlaylistBackend::kSongTableJoins; + const int row = + (Song::kColumns.count() + 1) * PlaylistBackend::kSongTableJoins; service_name_ = query.value(row + 1).toString(); @@ -70,8 +68,10 @@ InternetService* InternetPlaylistItem::service() const { QVariant InternetPlaylistItem::DatabaseValue(DatabaseColumn column) const { switch (column) { - case Column_InternetService: return service_name_; - default: return PlaylistItem::DatabaseValue(column); + case Column_InternetService: + return service_name_; + default: + return PlaylistItem::DatabaseValue(column); } } @@ -88,25 +88,20 @@ Song InternetPlaylistItem::Metadata() const { service(); } - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return metadata_; } -QUrl InternetPlaylistItem::Url() const { - return metadata_.url(); -} +QUrl InternetPlaylistItem::Url() const { return metadata_.url(); } PlaylistItem::Options InternetPlaylistItem::options() const { InternetService* s = service(); - if (!s) - return Default; + if (!s) return Default; return s->playlistitem_options(); } QList InternetPlaylistItem::actions() { InternetService* s = service(); - if (!s) - return QList(); + if (!s) return QList(); return s->playlistitem_actions(metadata_); } diff --git a/src/internet/internetplaylistitem.h b/src/internet/internetplaylistitem.h index df14e1659..3f636397c 100644 --- a/src/internet/internetplaylistitem.h +++ b/src/internet/internetplaylistitem.h @@ -55,4 +55,4 @@ class InternetPlaylistItem : public PlaylistItem { Song metadata_; }; -#endif // INTERNETPLAYLISTITEM_H +#endif // INTERNETPLAYLISTITEM_H diff --git a/src/internet/internetservice.cpp b/src/internet/internetservice.cpp index 31d5bfd49..ee033e651 100644 --- a/src/internet/internetservice.cpp +++ b/src/internet/internetservice.cpp @@ -27,66 +27,68 @@ InternetService::InternetService(const QString& name, Application* app, InternetModel* model, QObject* parent) - : QObject(parent), - app_(app), - model_(model), - name_(name), - append_to_playlist_(nullptr), - replace_playlist_(nullptr), - open_in_new_playlist_(nullptr), - separator_(nullptr) -{ -} + : QObject(parent), + app_(app), + model_(model), + name_(name), + append_to_playlist_(nullptr), + replace_playlist_(nullptr), + open_in_new_playlist_(nullptr), + separator_(nullptr) {} QList InternetService::GetPlaylistActions() { - if(!separator_) { + if (!separator_) { separator_ = new QAction(this); separator_->setSeparator(true); } return QList() << GetAppendToPlaylistAction() << GetReplacePlaylistAction() - << GetOpenInNewPlaylistAction() - << separator_; + << GetOpenInNewPlaylistAction() << separator_; } QAction* InternetService::GetAppendToPlaylistAction() { - if(!append_to_playlist_) { + if (!append_to_playlist_) { append_to_playlist_ = new QAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this); - connect(append_to_playlist_, SIGNAL(triggered()), this, SLOT(AppendToPlaylist())); + connect(append_to_playlist_, SIGNAL(triggered()), this, + SLOT(AppendToPlaylist())); } return append_to_playlist_; } QAction* InternetService::GetReplacePlaylistAction() { - if(!replace_playlist_) { + if (!replace_playlist_) { replace_playlist_ = new QAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this); - connect(replace_playlist_, SIGNAL(triggered()), this, SLOT(ReplacePlaylist())); + connect(replace_playlist_, SIGNAL(triggered()), this, + SLOT(ReplacePlaylist())); } return replace_playlist_; } QAction* InternetService::GetOpenInNewPlaylistAction() { - if(!open_in_new_playlist_) { + if (!open_in_new_playlist_) { open_in_new_playlist_ = new QAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this); - connect(open_in_new_playlist_, SIGNAL(triggered()), this, SLOT(OpenInNewPlaylist())); + connect(open_in_new_playlist_, SIGNAL(triggered()), this, + SLOT(OpenInNewPlaylist())); } return open_in_new_playlist_; } -void InternetService::AddItemToPlaylist(const QModelIndex& index, AddMode add_mode) { +void InternetService::AddItemToPlaylist(const QModelIndex& index, + AddMode add_mode) { AddItemsToPlaylist(QModelIndexList() << index, add_mode); } -void InternetService::AddItemsToPlaylist(const QModelIndexList& indexes, AddMode add_mode) { +void InternetService::AddItemsToPlaylist(const QModelIndexList& indexes, + AddMode add_mode) { QMimeData* data = model()->merged_model()->mimeData( - model()->merged_model()->mapFromSource(indexes)); + model()->merged_model()->mapFromSource(indexes)); if (MimeData* mime_data = qobject_cast(data)) { mime_data->clear_first_ = add_mode == AddMode_Replace; mime_data->open_in_new_playlist_ = add_mode == AddMode_OpenInNew; @@ -107,12 +109,12 @@ void InternetService::OpenInNewPlaylist() { } QStandardItem* InternetService::CreateSongItem(const Song& song) { - QStandardItem* item = new QStandardItem(song.PrettyTitleWithArtist()); - item->setData(InternetModel::Type_Track, InternetModel::Role_Type); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - item->setData(song.url(), InternetModel::Role_Url); + QStandardItem* item = new QStandardItem(song.PrettyTitleWithArtist()); + item->setData(InternetModel::Type_Track, InternetModel::Role_Type); + item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); + item->setData(song.url(), InternetModel::Role_Url); - return item; + return item; } - diff --git a/src/internet/internetservice.h b/src/internet/internetservice.h index 482e472b3..3aeb355b2 100644 --- a/src/internet/internetservice.h +++ b/src/internet/internetservice.h @@ -36,7 +36,7 @@ class QStandardItem; class InternetService : public QObject { Q_OBJECT -public: + public: // Constructs a new internet service with the given name and model. The name // should be user-friendly (like 'DigitallyImported' or 'Last.fm'). InternetService(const QString& name, Application* app, InternetModel* model, @@ -52,13 +52,20 @@ public: virtual void ShowContextMenu(const QPoint& global_pos) {} virtual void ItemDoubleClicked(QStandardItem* item) {} // Create a generator for smart playlists - virtual smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item) { return smart_playlists::GeneratorPtr(); } + virtual smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item) { + return smart_playlists::GeneratorPtr(); + } // Give the service a chance to do a custom action when data is dropped on it virtual void DropMimeData(const QMimeData* data, const QModelIndex& index) {} - virtual PlaylistItem::Options playlistitem_options() const { return PlaylistItem::Default; } - // Redefine this function to add service' specific actions to the playlist item - virtual QList playlistitem_actions(const Song& song) { return QList(); } + virtual PlaylistItem::Options playlistitem_options() const { + return PlaylistItem::Default; + } + // Redefine this function to add service' specific actions to the playlist + // item + virtual QList playlistitem_actions(const Song& song) { + return QList(); + } virtual QWidget* HeaderWidget() const { return NULL; } @@ -73,15 +80,15 @@ signals: void AddToPlaylistSignal(QMimeData* data); void ScrollToIndex(const QModelIndex& index); -public slots: + public slots: virtual void ShowConfig() {} -private slots: + private slots: void AppendToPlaylist(); void ReplacePlaylist(); void OpenInNewPlaylist(); -protected: + protected: // Returns all the playlist insertion related QActions (see below). QList GetPlaylistActions(); @@ -111,10 +118,10 @@ protected: // Set some common properties (type=track, url, etc.) QStandardItem* CreateSongItem(const Song& song); -protected: + protected: Application* app_; -private: + private: InternetModel* model_; QString name_; @@ -126,4 +133,4 @@ private: Q_DECLARE_METATYPE(InternetService*); -#endif // INTERNETSERVICE_H +#endif // INTERNETSERVICE_H diff --git a/src/internet/internetsongmimedata.h b/src/internet/internetsongmimedata.h index 9b6f69ad0..07e86d237 100644 --- a/src/internet/internetsongmimedata.h +++ b/src/internet/internetsongmimedata.h @@ -26,12 +26,11 @@ class InternetService; class InternetSongMimeData : public MimeData { Q_OBJECT -public: - InternetSongMimeData(InternetService* _service) - : service(_service) {} + public: + InternetSongMimeData(InternetService* _service) : service(_service) {} InternetService* service; SongList songs; }; -#endif // INTERNETSONGMIMEDATA_H +#endif // INTERNETSONGMIMEDATA_H diff --git a/src/internet/internetview.cpp b/src/internet/internetview.cpp index 9a8c94b49..4b14dcf5e 100644 --- a/src/internet/internetview.cpp +++ b/src/internet/internetview.cpp @@ -22,9 +22,7 @@ #include -InternetView::InternetView(QWidget *parent) - : AutoExpandingTreeView(parent) -{ +InternetView::InternetView(QWidget* parent) : AutoExpandingTreeView(parent) { setItemDelegate(new LibraryItemDelegate(this)); SetExpandOnReset(false); setAttribute(Qt::WA_MacShowFocusRect, false); @@ -33,26 +31,27 @@ InternetView::InternetView(QWidget *parent) void InternetView::contextMenuEvent(QContextMenuEvent* e) { QModelIndex index = indexAt(e->pos()); - if (!index.isValid()) - return; + if (!index.isValid()) return; MergedProxyModel* merged_model = static_cast(model()); - InternetModel* internet_model = static_cast(merged_model->sourceModel()); + InternetModel* internet_model = + static_cast(merged_model->sourceModel()); internet_model->ShowContextMenu(selectionModel()->selectedRows(), index, e->globalPos()); } -void InternetView::currentChanged(const QModelIndex ¤t, const QModelIndex&) { +void InternetView::currentChanged(const QModelIndex& current, + const QModelIndex&) { emit CurrentIndexChanged(current); } -void InternetView::setModel(QAbstractItemModel *model) { +void InternetView::setModel(QAbstractItemModel* model) { AutoExpandingTreeView::setModel(model); if (MergedProxyModel* merged_model = qobject_cast(model)) { connect(merged_model, - SIGNAL(SubModelReset(QModelIndex,QAbstractItemModel*)), + SIGNAL(SubModelReset(QModelIndex, QAbstractItemModel*)), SLOT(RecursivelyExpand(QModelIndex))); } } diff --git a/src/internet/internetview.h b/src/internet/internetview.h index 334959401..5188deab3 100644 --- a/src/internet/internetview.h +++ b/src/internet/internetview.h @@ -30,11 +30,11 @@ class InternetView : public AutoExpandingTreeView { void contextMenuEvent(QContextMenuEvent* e); // QTreeView - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - void setModel(QAbstractItemModel *model); + void currentChanged(const QModelIndex& current, const QModelIndex& previous); + void setModel(QAbstractItemModel* model); - signals: +signals: void CurrentIndexChanged(const QModelIndex& index); }; -#endif // INTERNETVIEW_H +#endif // INTERNETVIEW_H diff --git a/src/internet/internetviewcontainer.cpp b/src/internet/internetviewcontainer.cpp index 1a731bbbb..d632d6974 100644 --- a/src/internet/internetviewcontainer.cpp +++ b/src/internet/internetviewcontainer.cpp @@ -29,27 +29,25 @@ const int InternetViewContainer::kAnimationDuration = 500; -InternetViewContainer::InternetViewContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui_InternetViewContainer), - app_(nullptr), - current_service_(nullptr), - current_header_(nullptr) -{ +InternetViewContainer::InternetViewContainer(QWidget* parent) + : QWidget(parent), + ui_(new Ui_InternetViewContainer), + app_(nullptr), + current_service_(nullptr), + current_header_(nullptr) { ui_->setupUi(this); - connect(ui_->tree, SIGNAL(collapsed(QModelIndex)), SLOT(Collapsed(QModelIndex))); - connect(ui_->tree, SIGNAL(expanded(QModelIndex)), SLOT(Expanded(QModelIndex))); - connect(ui_->tree, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->tree, SIGNAL(collapsed(QModelIndex)), + SLOT(Collapsed(QModelIndex))); + connect(ui_->tree, SIGNAL(expanded(QModelIndex)), + SLOT(Expanded(QModelIndex))); + connect(ui_->tree, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); } -InternetViewContainer::~InternetViewContainer() { - delete ui_; -} +InternetViewContainer::~InternetViewContainer() { delete ui_; } -InternetView* InternetViewContainer::tree() const { - return ui_->tree; -} +InternetView* InternetViewContainer::tree() const { return ui_->tree; } void InternetViewContainer::SetApplication(Application* app) { app_ = app; @@ -57,14 +55,14 @@ void InternetViewContainer::SetApplication(Application* app) { ui_->tree->setModel(app_->internet_model()->merged_model()); connect(ui_->tree->selectionModel(), - SIGNAL(currentChanged(QModelIndex,QModelIndex)), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(CurrentIndexChanged(QModelIndex))); } void InternetViewContainer::ServiceChanged(const QModelIndex& index) { - InternetService* service = index.data(InternetModel::Role_Service).value(); - if (!service || service == current_service_) - return; + InternetService* service = + index.data(InternetModel::Role_Service).value(); + if (!service || service == current_service_) return; current_service_ = service; QWidget* header = service->HeaderWidget(); @@ -78,7 +76,8 @@ void InternetViewContainer::ServiceChanged(const QModelIndex& index) { d.visible_ = false; d.animation_ = new QTimeLine(kAnimationDuration, this); d.animation_->setFrameRange(0, header->sizeHint().height()); - connect(d.animation_, SIGNAL(frameChanged(int)), SLOT(SetHeaderHeight(int))); + connect(d.animation_, SIGNAL(frameChanged(int)), + SLOT(SetHeaderHeight(int))); headers_.insert(header, d); } @@ -93,8 +92,9 @@ void InternetViewContainer::CurrentIndexChanged(const QModelIndex& index) { } void InternetViewContainer::Collapsed(const QModelIndex& index) { - if (app_->internet_model()->merged_model()->mapToSource(index).model() == app_->internet_model() - && index.data(InternetModel::Role_Type) == InternetModel::Type_Service) { + if (app_->internet_model()->merged_model()->mapToSource(index).model() == + app_->internet_model() && + index.data(InternetModel::Role_Type) == InternetModel::Type_Service) { SetHeaderVisible(current_header_, false); current_service_ = nullptr; current_header_ = nullptr; @@ -106,15 +106,14 @@ void InternetViewContainer::Expanded(const QModelIndex& index) { } void InternetViewContainer::SetHeaderVisible(QWidget* header, bool visible) { - if (!header) - return; + if (!header) return; HeaderData& d = headers_[header]; - if (d.visible_ == visible) - return; + if (d.visible_ == visible) return; d.visible_ = visible; - d.animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + d.animation_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); d.animation_->start(); } @@ -123,10 +122,10 @@ void InternetViewContainer::FocusOnFilter(QKeyEvent* event) { if (current_header_) { int slot = current_header_->metaObject()->indexOfSlot( - QMetaObject::normalizedSignature("FocusOnFilter(QKeyEvent*)")); + QMetaObject::normalizedSignature("FocusOnFilter(QKeyEvent*)")); if (slot != -1) { current_header_->metaObject()->method(slot).invoke( - current_header_, Q_ARG(QKeyEvent*, event)); + current_header_, Q_ARG(QKeyEvent*, event)); } } } @@ -134,15 +133,14 @@ void InternetViewContainer::FocusOnFilter(QKeyEvent* event) { void InternetViewContainer::SetHeaderHeight(int height) { QTimeLine* animation = qobject_cast(sender()); QWidget* header = nullptr; - foreach (QWidget* h, headers_.keys()) { + foreach(QWidget * h, headers_.keys()) { if (headers_[h].animation_ == animation) { header = h; break; } } - if (header) - header->setMaximumHeight(height); + if (header) header->setMaximumHeight(height); } void InternetViewContainer::ScrollToIndex(const QModelIndex& index) { diff --git a/src/internet/internetviewcontainer.h b/src/internet/internetviewcontainer.h index 5da4f8844..748c67074 100644 --- a/src/internet/internetviewcontainer.h +++ b/src/internet/internetviewcontainer.h @@ -72,4 +72,4 @@ class InternetViewContainer : public QWidget { QMap headers_; }; -#endif // INTERNETVIEWCONTAINER_H +#endif // INTERNETVIEWCONTAINER_H diff --git a/src/internet/jamendodynamicplaylist.cpp b/src/internet/jamendodynamicplaylist.cpp index c9c45de2f..4109b9e56 100644 --- a/src/internet/jamendodynamicplaylist.cpp +++ b/src/internet/jamendodynamicplaylist.cpp @@ -33,17 +33,17 @@ const char* JamendoDynamicPlaylist::kUrl = "http://api.jamendo.com/get2/id/track/plain/"; JamendoDynamicPlaylist::JamendoDynamicPlaylist() - : order_by_(OrderBy_Rating), - order_direction_(Order_Descending), - current_page_(0), - current_index_(0) { -} + : order_by_(OrderBy_Rating), + order_direction_(Order_Descending), + current_page_(0), + current_index_(0) {} -JamendoDynamicPlaylist::JamendoDynamicPlaylist(const QString& name, OrderBy order_by) - : order_by_(order_by), - order_direction_(Order_Descending), - current_page_(0), - current_index_(0) { +JamendoDynamicPlaylist::JamendoDynamicPlaylist(const QString& name, + OrderBy order_by) + : order_by_(order_by), + order_direction_(Order_Descending), + current_page_(0), + current_index_(0) { set_name(name); } @@ -52,7 +52,8 @@ void JamendoDynamicPlaylist::Load(const QByteArray& data) { s >> *this; } -void JamendoDynamicPlaylist::Load(OrderBy order_by, OrderDirection order_direction) { +void JamendoDynamicPlaylist::Load(OrderBy order_by, + OrderDirection order_direction) { order_by_ = order_by; order_direction_ = order_direction; } @@ -65,9 +66,7 @@ QByteArray JamendoDynamicPlaylist::Save() const { return ret; } -PlaylistItemList JamendoDynamicPlaylist::Generate() { - return GenerateMore(20); -} +PlaylistItemList JamendoDynamicPlaylist::Generate() { return GenerateMore(20); } PlaylistItemList JamendoDynamicPlaylist::GenerateMore(int count) { int tries = 0; @@ -91,14 +90,26 @@ PlaylistItemList JamendoDynamicPlaylist::GenerateMore(int count) { QString JamendoDynamicPlaylist::OrderSpec(OrderBy by, OrderDirection dir) { QString ret; switch (by) { - case OrderBy_Listened: ret += "listened"; break; - case OrderBy_Rating: ret += "rating"; break; - case OrderBy_RatingMonth: ret += "ratingmonth"; break; - case OrderBy_RatingWeek: ret += "ratingweek"; break; + case OrderBy_Listened: + ret += "listened"; + break; + case OrderBy_Rating: + ret += "rating"; + break; + case OrderBy_RatingMonth: + ret += "ratingmonth"; + break; + case OrderBy_RatingWeek: + ret += "ratingweek"; + break; } switch (dir) { - case Order_Ascending: ret += "_asc"; break; - case Order_Descending: ret += "_desc"; break; + case Order_Ascending: + ret += "_asc"; + break; + case Order_Descending: + ret += "_desc"; + break; } return ret; } @@ -111,7 +122,8 @@ void JamendoDynamicPlaylist::Fetch() { // We have to use QHttp here because there's no way to disable Keep-Alive // with QNetworkManager. - QHttpRequestHeader header("GET", QString(url.encodedPath() + "?" + url.encodedQuery())); + QHttpRequestHeader header( + "GET", QString(url.encodedPath() + "?" + url.encodedQuery())); header.setValue("Host", url.encodedHost()); QHttp http(url.host()); @@ -120,13 +132,14 @@ void JamendoDynamicPlaylist::Fetch() { // Wait for the reply { QEventLoop event_loop; - connect(&http, SIGNAL(requestFinished(int,bool)), &event_loop, SLOT(quit())); + connect(&http, SIGNAL(requestFinished(int, bool)), &event_loop, + SLOT(quit())); event_loop.exec(); } if (http.error() != QHttp::NoError) { qLog(Warning) << "HTTP error returned from Jamendo:" << http.errorString() - << ", url:" << url.toString(); + << ", url:" << url.toString(); return; } @@ -135,28 +148,27 @@ void JamendoDynamicPlaylist::Fetch() { // Get the songs from the database SongList songs = backend_->GetSongsByForeignId( - lines, JamendoService::kTrackIdsTable, JamendoService::kTrackIdsColumn); + lines, JamendoService::kTrackIdsTable, JamendoService::kTrackIdsColumn); if (songs.empty()) { - qLog(Warning) << "No songs returned from Jamendo:" - << url.toString(); + qLog(Warning) << "No songs returned from Jamendo:" << url.toString(); return; } current_items_.clear(); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song.is_valid()) current_items_ << PlaylistItemPtr(new JamendoPlaylistItem(song)); } current_index_ = 0; } -QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p) { +QDataStream& operator<<(QDataStream& s, const JamendoDynamicPlaylist& p) { s << quint8(p.order_by_) << quint8(p.order_direction_); return s; } -QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p) { +QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p) { quint8 order_by, order_direction; s >> order_by >> order_direction; p.order_by_ = JamendoDynamicPlaylist::OrderBy(order_by); diff --git a/src/internet/jamendodynamicplaylist.h b/src/internet/jamendodynamicplaylist.h index 266f46364..d69318208 100644 --- a/src/internet/jamendodynamicplaylist.h +++ b/src/internet/jamendodynamicplaylist.h @@ -22,10 +22,11 @@ class JamendoDynamicPlaylist : public smart_playlists::Generator { Q_OBJECT - friend QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p); - friend QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p); + friend QDataStream& operator<<(QDataStream& s, + const JamendoDynamicPlaylist& p); + friend QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p); -public: + public: // These values are persisted - only add to the end enum OrderBy { OrderBy_Rating = 0, @@ -35,10 +36,7 @@ public: }; // These values are persisted - only add to the end - enum OrderDirection { - Order_Ascending = 0, - Order_Descending = 1, - }; + enum OrderDirection { Order_Ascending = 0, Order_Descending = 1, }; JamendoDynamicPlaylist(); JamendoDynamicPlaylist(const QString& name, OrderBy order_by); @@ -46,7 +44,8 @@ public: QString type() const { return "Jamendo"; } void Load(const QByteArray& data); - void Load(OrderBy order_by, OrderDirection order_direction = Order_Descending); + void Load(OrderBy order_by, + OrderDirection order_direction = Order_Descending); QByteArray Save() const; PlaylistItemList Generate(); @@ -54,11 +53,11 @@ public: bool is_dynamic() const { return true; } PlaylistItemList GenerateMore(int count); -private: + private: void Fetch(); static QString OrderSpec(OrderBy by, OrderDirection dir); -private: + private: OrderBy order_by_; OrderDirection order_direction_; @@ -71,7 +70,7 @@ private: static const char* kUrl; }; -QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p); -QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p); +QDataStream& operator<<(QDataStream& s, const JamendoDynamicPlaylist& p); +QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p); #endif diff --git a/src/internet/jamendoplaylistitem.cpp b/src/internet/jamendoplaylistitem.cpp index f14d69829..253ac4134 100644 --- a/src/internet/jamendoplaylistitem.cpp +++ b/src/internet/jamendoplaylistitem.cpp @@ -18,13 +18,10 @@ #include "jamendoplaylistitem.h" JamendoPlaylistItem::JamendoPlaylistItem(const QString& type) - : LibraryPlaylistItem(type) -{ -} + : LibraryPlaylistItem(type) {} JamendoPlaylistItem::JamendoPlaylistItem(const Song& song) - : LibraryPlaylistItem("Jamendo") -{ + : LibraryPlaylistItem("Jamendo") { song_ = song; } @@ -35,6 +32,4 @@ bool JamendoPlaylistItem::InitFromQuery(const SqlRow& query) { return song_.is_valid(); } -QUrl JamendoPlaylistItem::Url() const { - return song_.url(); -} +QUrl JamendoPlaylistItem::Url() const { return song_.url(); } diff --git a/src/internet/jamendoplaylistitem.h b/src/internet/jamendoplaylistitem.h index 4faab507e..06e35a3e1 100644 --- a/src/internet/jamendoplaylistitem.h +++ b/src/internet/jamendoplaylistitem.h @@ -21,7 +21,7 @@ #include "library/libraryplaylistitem.h" class JamendoPlaylistItem : public LibraryPlaylistItem { -public: + public: JamendoPlaylistItem(const QString& type); JamendoPlaylistItem(const Song& song); @@ -30,4 +30,4 @@ public: QUrl Url() const; }; -#endif // JAMENDOPLAYLISTITEM_H +#endif // JAMENDOPLAYLISTITEM_H diff --git a/src/internet/jamendoservice.cpp b/src/internet/jamendoservice.cpp index c968909dd..3661a6379 100644 --- a/src/internet/jamendoservice.cpp +++ b/src/internet/jamendoservice.cpp @@ -51,14 +51,17 @@ const char* JamendoService::kServiceName = "Jamendo"; const char* JamendoService::kDirectoryUrl = "http://img.jamendo.com/data/dbdump_artistalbumtrack.xml.gz"; const char* JamendoService::kMp3StreamUrl = - "http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=mp31"; + "http://api.jamendo.com/get2/stream/track/redirect/" + "?id=%1&streamencoding=mp31"; const char* JamendoService::kOggStreamUrl = - "http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=ogg2"; + "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=300"; const char* JamendoService::kHomepage = "http://www.jamendo.com/"; const char* JamendoService::kAlbumInfoUrl = "http://www.jamendo.com/album/%1"; -const char* JamendoService::kDownloadAlbumUrl = "http://www.jamendo.com/download/album/%1"; +const char* JamendoService::kDownloadAlbumUrl = + "http://www.jamendo.com/download/album/%1"; const char* JamendoService::kSongsTable = "jamendo.songs"; const char* JamendoService::kFtsTable = "jamendo.songs_fts"; @@ -84,8 +87,8 @@ JamendoService::JamendoService(Application* app, InternetModel* parent) accepted_download_(false) { library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), kSongsTable, - QString::null, QString::null, kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -98,23 +101,27 @@ JamendoService::JamendoService(Application* app, InternetModel* parent) library_model_ = new LibraryModel(library_backend_, app_, this); library_model_->set_show_various_artists(false); library_model_->set_show_smart_playlists(false); - library_model_->set_default_smart_playlists(LibraryModel::DefaultGenerators() - << (LibraryModel::GeneratorList() - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks of the Month"), - JamendoDynamicPlaylist::OrderBy_RatingMonth)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks of the Week"), - JamendoDynamicPlaylist::OrderBy_RatingWeek)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks"), - JamendoDynamicPlaylist::OrderBy_Rating)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Most Listened Tracks"), - JamendoDynamicPlaylist::OrderBy_Listened)) - ) - << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(tr("Dynamic random mix"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title), true)) - ) - ); + library_model_->set_default_smart_playlists( + LibraryModel::DefaultGenerators() + << (LibraryModel::GeneratorList() + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks of the Month"), + JamendoDynamicPlaylist::OrderBy_RatingMonth)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks of the Week"), + JamendoDynamicPlaylist::OrderBy_RatingWeek)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks"), + JamendoDynamicPlaylist::OrderBy_Rating)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Most Listened Tracks"), + JamendoDynamicPlaylist::OrderBy_Listened))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + tr("Dynamic random mix"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title), + true)))); library_sort_model_->setSourceModel(library_model_); library_sort_model_->setSortRole(LibraryModel::Role_SortText); @@ -123,22 +130,19 @@ JamendoService::JamendoService(Application* app, InternetModel* parent) library_sort_model_->sort(0); search_provider_ = new LibrarySearchProvider( - library_backend_, - tr("Jamendo"), - "jamendo", - QIcon(":/providers/jamendo.png"), - false, app_, this); + library_backend_, tr("Jamendo"), "jamendo", + QIcon(":/providers/jamendo.png"), false, app_, this); app_->global_search()->AddProvider(search_provider_); connect(app_->global_search(), - SIGNAL(ProviderToggled(const SearchProvider*,bool)), - SLOT(SearchProviderToggled(const SearchProvider*,bool))); + SIGNAL(ProviderToggled(const SearchProvider*, bool)), + SLOT(SearchProviderToggled(const SearchProvider*, bool))); } -JamendoService::~JamendoService() { -} +JamendoService::~JamendoService() {} QStandardItem* JamendoService::CreateRootItem() { - QStandardItem* item = new QStandardItem(QIcon(":providers/jamendo.png"), kServiceName); + QStandardItem* item = + new QStandardItem(QIcon(":providers/jamendo.png"), kServiceName); item->setData(true, InternetModel::Role_CanLazyLoad); return item; } @@ -161,15 +165,19 @@ void JamendoService::UpdateTotalSongCount(int count) { total_song_count_ = count; if (total_song_count_ > 0) { library_model_->set_show_smart_playlists(true); - accepted_download_ = true; //the user has previously accepted + accepted_download_ = true; // the user has previously accepted } } void JamendoService::DownloadDirectory() { - //don't ask if we're refreshing the database + // don't ask if we're refreshing the database if (total_song_count_ == 0) { - if (QMessageBox::question(context_menu_, tr("Jamendo database"), tr("This action will create a database which could be as big as 150 MB.\n" - "Do you want to continue anyway?"), QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok) + if (QMessageBox::question(context_menu_, tr("Jamendo database"), + tr("This action will create a database which " + "could be as big as 150 MB.\n" + "Do you want to continue anyway?"), + QMessageBox::Ok | QMessageBox::Cancel) != + QMessageBox::Ok) return; } accepted_download_ = true; @@ -179,19 +187,19 @@ void JamendoService::DownloadDirectory() { QNetworkReply* reply = network_->get(req); connect(reply, SIGNAL(finished()), SLOT(DownloadDirectoryFinished())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), - SLOT(DownloadDirectoryProgress(qint64,qint64))); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(DownloadDirectoryProgress(qint64, qint64))); if (!load_database_task_id_) { - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Jamendo catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Jamendo catalogue")); } } void JamendoService::DownloadDirectoryProgress(qint64 received, qint64 total) { float progress = float(received) / total; app_->task_manager()->SetTaskProgress(load_database_task_id_, - int(progress * 100), 100); + int(progress * 100), 100); } void JamendoService::DownloadDirectoryFinished() { @@ -210,11 +218,11 @@ void JamendoService::DownloadDirectoryFinished() { return; } - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Parsing Jamendo catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Parsing Jamendo catalogue")); - QFuture future = QtConcurrent::run( - this, &JamendoService::ParseDirectory, gzip); + QFuture future = + QtConcurrent::run(this, &JamendoService::ParseDirectory, gzip); QFutureWatcher* watcher = new QFutureWatcher(); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(ParseDirectoryFinished())); @@ -226,8 +234,8 @@ void JamendoService::ParseDirectory(QIODevice* device) const { // Bit of a hack: don't update the model while we're parsing the xml disconnect(library_backend_, SIGNAL(SongsDiscovered(SongList)), library_model_, SLOT(SongsDiscovered(SongList))); - disconnect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), - this, SLOT(UpdateTotalSongCount(int))); + disconnect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), this, + SLOT(UpdateTotalSongCount(int))); // Delete the database and recreate it. This is faster than dropping tables // or removing rows. @@ -253,16 +261,16 @@ void JamendoService::ParseDirectory(QIODevice* device) const { track_ids.clear(); // Update progress info - app_->task_manager()->SetTaskProgress( - load_database_task_id_, total_count, kApproxDatabaseSize); + app_->task_manager()->SetTaskProgress(load_database_task_id_, total_count, + kApproxDatabaseSize); } } library_backend_->AddOrUpdateSongs(songs); InsertTrackIds(track_ids); - connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), - library_model_, SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), library_model_, + SLOT(SongsDiscovered(SongList))); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -276,9 +284,10 @@ void JamendoService::InsertTrackIds(const TrackIdList& ids) const { ScopedTransaction t(&db); QSqlQuery insert(QString("INSERT INTO %1 (%2) VALUES (:id)") - .arg(kTrackIdsTable, kTrackIdsColumn), db); + .arg(kTrackIdsTable, kTrackIdsColumn), + db); - foreach (int id, ids) { + foreach(int id, ids) { insert.bindValue(":id", id); if (!insert.exec()) { qLog(Warning) << "Query failed" << insert.lastQuery(); @@ -311,8 +320,9 @@ SongList JamendoService::ReadArtist(QXmlStreamReader* reader, return ret; } -SongList JamendoService::ReadAlbum( - const QString& artist, QXmlStreamReader* reader, TrackIdList* track_ids) const { +SongList JamendoService::ReadAlbum(const QString& artist, + QXmlStreamReader* reader, + TrackIdList* track_ids) const { SongList ret; QString current_album; QString cover; @@ -329,8 +339,8 @@ SongList JamendoService::ReadAlbum( cover = QString(kAlbumCoverUrl).arg(id); current_album_id = id.toInt(); } else if (reader->name() == "track") { - ret << ReadTrack(artist, current_album, cover, current_album_id, - reader, track_ids); + ret << ReadTrack(artist, current_album, cover, current_album_id, reader, + track_ids); } } else if (reader->isEndElement() && reader->name() == "album") { break; @@ -339,10 +349,8 @@ SongList JamendoService::ReadAlbum( return ret; } -Song JamendoService::ReadTrack(const QString& artist, - const QString& album, - const QString& album_cover, - int album_id, +Song JamendoService::ReadTrack(const QString& artist, const QString& album, + const QString& album_cover, int album_id, QXmlStreamReader* reader, TrackIdList* track_ids) const { Song song; @@ -375,8 +383,7 @@ Song JamendoService::ReadTrack(const QString& artist, } else if (name == "id") { QString id_text = reader->readElementText(); int id = id_text.toInt(); - if (id == 0) - continue; + if (id == 0) continue; QString mp3_url = QString(kMp3StreamUrl).arg(id_text); song.set_url(QUrl(mp3_url)); @@ -397,7 +404,7 @@ void JamendoService::ParseDirectoryFinished() { QFutureWatcher* watcher = static_cast*>(sender()); delete watcher; - //show smart playlists + // show smart playlists library_model_->set_show_smart_playlists(true); library_model_->Reset(); @@ -406,18 +413,23 @@ void JamendoService::ParseDirectoryFinished() { } void JamendoService::EnsureMenuCreated() { - if (library_filter_) - return; + if (library_filter_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); album_info_ = context_menu_->addAction(IconLoader::Load("view-media-lyrics"), - tr("Album info on jamendo.com..."), this, SLOT(AlbumInfo())); + tr("Album info on jamendo.com..."), + this, SLOT(AlbumInfo())); download_album_ = context_menu_->addAction(IconLoader::Load("download"), - tr("Download this album..."), this, SLOT(DownloadAlbum())); + tr("Download this album..."), this, + SLOT(DownloadAlbum())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("jamendo.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(DownloadDirectory())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("jamendo.com"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(DownloadDirectory())); if (accepted_download_) { library_filter_ = new LibraryFilterWidget(0); @@ -437,7 +449,7 @@ void JamendoService::ShowContextMenu(const QPoint& global_pos) { const bool enabled = accepted_download_ && model()->current_index().model() == library_sort_model_; - //make menu items visible and enabled only when needed + // make menu items visible and enabled only when needed GetAppendToPlaylistAction()->setVisible(accepted_download_); GetAppendToPlaylistAction()->setEnabled(enabled); GetReplacePlaylistAction()->setVisible(accepted_download_); @@ -460,13 +472,11 @@ QWidget* JamendoService::HeaderWidget() const { void JamendoService::AlbumInfo() { SongList songs(library_model_->GetChildSongs( library_sort_model_->mapToSource(model()->current_index()))); - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; // We put the album ID into the comment field int id = songs.first().comment().toInt(); - if (!id) - return; + if (!id) return; QDesktopServices::openUrl(QUrl(QString(kAlbumInfoUrl).arg(id))); } @@ -474,20 +484,16 @@ void JamendoService::AlbumInfo() { void JamendoService::DownloadAlbum() { SongList songs(library_model_->GetChildSongs( library_sort_model_->mapToSource(model()->current_index()))); - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; // We put the album ID into the comment field int id = songs.first().comment().toInt(); - if (!id) - return; + if (!id) return; QDesktopServices::openUrl(QUrl(QString(kDownloadAlbumUrl).arg(id))); } -void JamendoService::Homepage() { - QDesktopServices::openUrl(QUrl(kHomepage)); -} +void JamendoService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } void JamendoService::SearchProviderToggled(const SearchProvider* provider, bool enabled) { diff --git a/src/internet/jamendoservice.h b/src/internet/jamendoservice.h index c2000a1c7..b658da0ef 100644 --- a/src/internet/jamendoservice.h +++ b/src/internet/jamendoservice.h @@ -77,12 +77,9 @@ class JamendoService : public InternetService { SongList ReadArtist(QXmlStreamReader* reader, TrackIdList* track_ids) const; SongList ReadAlbum(const QString& artist, QXmlStreamReader* reader, TrackIdList* track_ids) const; - Song ReadTrack(const QString& artist, - const QString& album, - const QString& album_cover, - int album_id, - QXmlStreamReader* reader, - TrackIdList* track_ids) const; + Song ReadTrack(const QString& artist, const QString& album, + const QString& album_cover, int album_id, + QXmlStreamReader* reader, TrackIdList* track_ids) const; void InsertTrackIds(const TrackIdList& ids) const; void EnsureMenuCreated(); diff --git a/src/internet/lastfmcompat.cpp b/src/internet/lastfmcompat.cpp index 09603fb8c..8f4d1579e 100644 --- a/src/internet/lastfmcompat.cpp +++ b/src/internet/lastfmcompat.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,16 +23,15 @@ namespace compat { #ifdef HAVE_LIBLASTFM1 -XmlQuery EmptyXmlQuery() { - return XmlQuery(); -} +XmlQuery EmptyXmlQuery() { return XmlQuery(); } -bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_problems) { +bool ParseQuery(const QByteArray& data, XmlQuery* query, + bool* connection_problems) { const bool ret = query->parse(data); if (connection_problems) { - *connection_problems = - !ret && query->parseError().enumValue() == lastfm::ws::MalformedResponse; + *connection_problems = !ret && query->parseError().enumValue() == + lastfm::ws::MalformedResponse; } return ret; @@ -48,32 +47,33 @@ bool ParseUserList(QNetworkReply* reply, QList* users) { return true; } -uint ScrobbleTimeMin() { - return lastfm::ScrobblePoint::scrobbleTimeMin(); -} +uint ScrobbleTimeMin() { return lastfm::ScrobblePoint::scrobbleTimeMin(); } -#else // HAVE_LIBLASTFM1 +#else // HAVE_LIBLASTFM1 XmlQuery EmptyXmlQuery() { QByteArray dummy; return XmlQuery(dummy); } -bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_problems) { +bool ParseQuery(const QByteArray& data, XmlQuery* query, + bool* connection_problems) { try { *query = lastfm::XmlQuery(data); - #ifdef Q_OS_WIN32 - if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { - return false; - } - #endif // Q_OS_WIN32 - } catch (lastfm::ws::ParseError e) { +#ifdef Q_OS_WIN32 + if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { + return false; + } +#endif // Q_OS_WIN32 + } + catch (lastfm::ws::ParseError e) { qLog(Error) << "Last.fm parse error: " << e.enumValue(); if (connection_problems) { *connection_problems = e.enumValue() == lastfm::ws::MalformedResponse; } return false; - } catch(std::runtime_error& e) { + } + catch (std::runtime_error& e) { qLog(Error) << e.what(); return false; } @@ -93,23 +93,21 @@ bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_proble bool ParseUserList(QNetworkReply* reply, QList* users) { try { *users = lastfm::User::list(reply); - #ifdef Q_OS_WIN32 - if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { - return false; - } - #endif // Q_OS_WIN32 - } catch(std::runtime_error& e) { +#ifdef Q_OS_WIN32 + if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { + return false; + } +#endif // Q_OS_WIN32 + } + catch (std::runtime_error& e) { qLog(Error) << e.what(); return false; } return true; } -uint ScrobbleTimeMin() { - return ScrobblePoint::kScrobbleMinLength; -} - -#endif // HAVE_LIBLASTFM1 +uint ScrobbleTimeMin() { return ScrobblePoint::kScrobbleMinLength; } +#endif // HAVE_LIBLASTFM1 } } diff --git a/src/internet/lastfmcompat.h b/src/internet/lastfmcompat.h index ca24d2e8d..007dd2e06 100644 --- a/src/internet/lastfmcompat.h +++ b/src/internet/lastfmcompat.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,21 +22,21 @@ #include "fixlastfm.h" #ifdef HAVE_LIBLASTFM1 - #include - #include - #include - #include - #include - #include - #include +#include +#include +#include +#include +#include +#include +#include #else - #include - #include - #include - #include - #include - #include - #include +#include +#include +#include +#include +#include +#include +#include #endif namespace lastfm { @@ -52,14 +52,13 @@ bool ParseUserList(QNetworkReply* reply, QList* users); uint ScrobbleTimeMin(); #ifdef HAVE_LIBLASTFM1 - typedef lastfm::ScrobbleCache ScrobbleCache; - typedef lastfm::User AuthenticatedUser; +typedef lastfm::ScrobbleCache ScrobbleCache; +typedef lastfm::User AuthenticatedUser; #else - typedef ::ScrobbleCache ScrobbleCache; - typedef lastfm::AuthenticatedUser AuthenticatedUser; +typedef ::ScrobbleCache ScrobbleCache; +typedef lastfm::AuthenticatedUser AuthenticatedUser; #endif - } } -#endif // LASTFMCOMPAT_H +#endif // LASTFMCOMPAT_H diff --git a/src/internet/lastfmservice.cpp b/src/internet/lastfmservice.cpp index 756dd661f..2f594817a 100644 --- a/src/internet/lastfmservice.cpp +++ b/src/internet/lastfmservice.cpp @@ -15,20 +15,21 @@ along with Clementine. If not, see . */ -// StringBuilder is activated to speed-up QString concatenation. As explained here: +// StringBuilder is activated to speed-up QString concatenation. As explained +// here: // http://labs.qt.nokia.com/2011/06/13/string-concatenation-with-qstringbuilder/ // this cause some compilation errors in some cases. As Lasfm library inlines // some functions in their includes files, which aren't compatible with // QStringBuilder, we undef it here #include #if QT_VERSION >= 0x040600 - #if QT_VERSION >= 0x040800 - #undef QT_USE_QSTRINGBUILDER - #else - #undef QT_USE_FAST_CONCATENATION - #undef QT_USE_FAST_OPERATOR_PLUS - #endif // QT_VERSION >= 0x040800 -#endif // QT_VERSION >= 0x040600 +#if QT_VERSION >= 0x040800 +#undef QT_USE_QSTRINGBUILDER +#else +#undef QT_USE_FAST_CONCATENATION +#undef QT_USE_FAST_OPERATOR_PLUS +#endif // QT_VERSION >= 0x040800 +#endif // QT_VERSION >= 0x040600 #include "lastfmservice.h" @@ -36,9 +37,9 @@ #include #ifdef HAVE_LIBLASTFM1 - #include +#include #else - #include +#include #endif #include "lastfmcompat.h" @@ -62,8 +63,7 @@ using lastfm::XmlQuery; uint qHash(const lastfm::Track& track) { - return qHash(track.title()) ^ - qHash(track.artist().name()) ^ + return qHash(track.title()) ^ qHash(track.artist().name()) ^ qHash(track.album().title()); } @@ -73,54 +73,61 @@ const char* LastFMService::kAudioscrobblerClientId = "tng"; const char* LastFMService::kApiKey = "75d20fb472be99275392aefa2760ea09"; const char* LastFMService::kSecret = "d3072b60ae626be12be69448f5c46e70"; -const char* LastFMService::kUrlArtist = "lastfm://artist/%1/similarartists"; -const char* LastFMService::kUrlTag = "lastfm://globaltags/%1"; -const char* LastFMService::kUrlCustom = "lastfm://rql/%1"; +const char* LastFMService::kUrlArtist = "lastfm://artist/%1/similarartists"; +const char* LastFMService::kUrlTag = "lastfm://globaltags/%1"; +const char* LastFMService::kUrlCustom = "lastfm://rql/%1"; -const char* LastFMService::kTitleArtist = QT_TR_NOOP("Last.fm Similar Artists to %1"); -const char* LastFMService::kTitleTag = QT_TR_NOOP("Last.fm Tag Radio: %1"); -const char* LastFMService::kTitleCustom = QT_TR_NOOP("Last.fm Custom Radio: %1"); +const char* LastFMService::kTitleArtist = + QT_TR_NOOP("Last.fm Similar Artists to %1"); +const char* LastFMService::kTitleTag = QT_TR_NOOP("Last.fm Tag Radio: %1"); +const char* LastFMService::kTitleCustom = + QT_TR_NOOP("Last.fm Custom Radio: %1"); -const int LastFMService::kFriendsCacheDurationSecs = 60 * 60 * 24; // 1 day +const int LastFMService::kFriendsCacheDurationSecs = 60 * 60 * 24; // 1 day LastFMService::LastFMService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new LastFMUrlHandler(this, this)), - scrobbler_(nullptr), - already_scrobbled_(false), - station_dialog_(new LastFMStationDialog), - context_menu_(new QMenu), - initial_tune_(false), - tune_task_id_(0), - scrobbling_enabled_(false), - root_item_(nullptr), - artist_list_(nullptr), - tag_list_(nullptr), - custom_list_(nullptr), - friends_list_(nullptr), - neighbours_list_(nullptr), - friend_names_(kSettingsGroup, "friend_names", kFriendsCacheDurationSecs), - connection_problems_(false) -{ + : InternetService(kServiceName, app, parent, parent), + url_handler_(new LastFMUrlHandler(this, this)), + scrobbler_(nullptr), + already_scrobbled_(false), + station_dialog_(new LastFMStationDialog), + context_menu_(new QMenu), + initial_tune_(false), + tune_task_id_(0), + scrobbling_enabled_(false), + root_item_(nullptr), + artist_list_(nullptr), + tag_list_(nullptr), + custom_list_(nullptr), + friends_list_(nullptr), + neighbours_list_(nullptr), + friend_names_(kSettingsGroup, "friend_names", kFriendsCacheDurationSecs), + connection_problems_(false) { ReloadSettings(); - //we emit the signal the first time to be sure the buttons are in the right state + // we emit the signal the first time to be sure the buttons are in the right + // state emit ScrobblingEnabledChanged(scrobbling_enabled_); context_menu_->addActions(GetPlaylistActions()); - remove_action_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); + remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), + tr("Remove"), this, SLOT(Remove())); context_menu_->addSeparator(); add_artist_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_radio.png"), tr("Play artist radio..."), this, SLOT(AddArtistRadio())); - add_tag_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_tag.png"), tr("Play tag radio..."), this, SLOT(AddTagRadio())); + QIcon(":last.fm/icon_radio.png"), tr("Play artist radio..."), this, + SLOT(AddArtistRadio())); + add_tag_action_ = context_menu_->addAction(QIcon(":last.fm/icon_tag.png"), + tr("Play tag radio..."), this, + SLOT(AddTagRadio())); add_custom_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_radio.png"), tr("Play custom radio..."), this, SLOT(AddCustomRadio())); + QIcon(":last.fm/icon_radio.png"), tr("Play custom radio..."), this, + SLOT(AddCustomRadio())); refresh_friends_action_ = context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Refresh friends list"), this, SLOT(ForceRefreshFriends())); - context_menu_->addAction( - IconLoader::Load("configure"), tr("Configure Last.fm..."), this, SLOT(ShowConfig())); + IconLoader::Load("view-refresh"), tr("Refresh friends list"), this, + SLOT(ForceRefreshFriends())); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure Last.fm..."), this, + SLOT(ShowConfig())); remove_action_->setEnabled(false); add_artist_action_->setEnabled(false); @@ -130,11 +137,11 @@ LastFMService::LastFMService(Application* app, InternetModel* parent) app_->player()->RegisterUrlHandler(url_handler_); app_->cover_providers()->AddProvider(new LastFmCoverProvider(this)); - app_->global_search()->AddProvider(new LastFMSearchProvider(this, app_, this)); + app_->global_search()->AddProvider( + new LastFMSearchProvider(this, app_, this)); } -LastFMService::~LastFMService() { -} +LastFMService::~LastFMService() {} void LastFMService::ReloadSettings() { bool scrobbling_enabled_old = scrobbling_enabled_; @@ -144,12 +151,13 @@ void LastFMService::ReloadSettings() { lastfm::ws::SessionKey = settings.value("Session").toString(); scrobbling_enabled_ = settings.value("ScrobblingEnabled", true).toBool(); buttons_visible_ = settings.value("ShowLoveBanButtons", true).toBool(); - scrobble_button_visible_ = settings.value("ShowScrobbleButton", true).toBool(); + scrobble_button_visible_ = + settings.value("ShowScrobbleButton", true).toBool(); prefer_albumartist_ = settings.value("PreferAlbumArtist", false).toBool(); friend_names_.Load(); - //avoid emitting signal if it's not changed - if(scrobbling_enabled_old != scrobbling_enabled_) + // avoid emitting signal if it's not changed + if (scrobbling_enabled_old != scrobbling_enabled_) emit ScrobblingEnabledChanged(scrobbling_enabled_); emit ButtonVisibilityChanged(buttons_visible_); emit ScrobbleButtonVisibilityChanged(scrobble_button_visible_); @@ -180,56 +188,57 @@ void LastFMService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: // Normal radio types - CreateStationItem(parent, - tr("My Recommendations"), - ":last.fm/recommended_radio.png", - QUrl("lastfm://user/USERNAME/recommended"), - tr("My Last.fm Recommended Radio")); - CreateStationItem(parent, - tr("My Radio Station"), - ":last.fm/personal_radio.png", - QUrl("lastfm://user/USERNAME/library"), - tr("My Last.fm Library")); - CreateStationItem(parent, - tr("My Mix Radio"), - ":last.fm/loved_radio.png", - QUrl("lastfm://user/USERNAME/mix"), - tr("My Last.fm Mix Radio")); - CreateStationItem(parent, - tr("My Neighborhood"), - ":last.fm/neighbour_radio.png", - QUrl("lastfm://user/USERNAME/neighbours"), - tr("My Last.fm Neighborhood")); + CreateStationItem(parent, tr("My Recommendations"), + ":last.fm/recommended_radio.png", + QUrl("lastfm://user/USERNAME/recommended"), + tr("My Last.fm Recommended Radio")); + CreateStationItem( + parent, tr("My Radio Station"), ":last.fm/personal_radio.png", + QUrl("lastfm://user/USERNAME/library"), tr("My Last.fm Library")); + CreateStationItem(parent, tr("My Mix Radio"), ":last.fm/loved_radio.png", + QUrl("lastfm://user/USERNAME/mix"), + tr("My Last.fm Mix Radio")); + CreateStationItem(parent, tr("My Neighborhood"), + ":last.fm/neighbour_radio.png", + QUrl("lastfm://user/USERNAME/neighbours"), + tr("My Last.fm Neighborhood")); // Types that have children - artist_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Artist radio")); + artist_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), + tr("Artist radio")); artist_list_->setData(Type_Artists, InternetModel::Role_Type); parent->appendRow(artist_list_); - tag_list_ = new QStandardItem(QIcon(":last.fm/icon_tag.png"), tr("Tag radio")); + tag_list_ = + new QStandardItem(QIcon(":last.fm/icon_tag.png"), tr("Tag radio")); tag_list_->setData(Type_Tags, InternetModel::Role_Type); parent->appendRow(tag_list_); - custom_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Custom radio")); + custom_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), + tr("Custom radio")); custom_list_->setData(Type_Custom, InternetModel::Role_Type); parent->appendRow(custom_list_); - RestoreList("artists", kUrlArtist, tr(kTitleArtist), QIcon(":last.fm/icon_radio.png"), artist_list_); - RestoreList("tags", kUrlTag, tr(kTitleTag), QIcon(":last.fm/icon_tag.png"), tag_list_); - RestoreList("custom", kUrlCustom, tr(kTitleCustom), QIcon(":last.fm/icon_radio.png"), custom_list_); + RestoreList("artists", kUrlArtist, tr(kTitleArtist), + QIcon(":last.fm/icon_radio.png"), artist_list_); + RestoreList("tags", kUrlTag, tr(kTitleTag), + QIcon(":last.fm/icon_tag.png"), tag_list_); + RestoreList("custom", kUrlCustom, tr(kTitleCustom), + QIcon(":last.fm/icon_radio.png"), custom_list_); - friends_list_ = new QStandardItem(QIcon(":last.fm/my_friends.png"), tr("Friends")); + friends_list_ = + new QStandardItem(QIcon(":last.fm/my_friends.png"), tr("Friends")); friends_list_->setData(Type_Friends, InternetModel::Role_Type); friends_list_->setData(true, InternetModel::Role_CanLazyLoad); parent->appendRow(friends_list_); - neighbours_list_ = new QStandardItem(QIcon(":last.fm/my_neighbours.png"), tr("Neighbors")); + neighbours_list_ = new QStandardItem(QIcon(":last.fm/my_neighbours.png"), + tr("Neighbors")); neighbours_list_->setData(Type_Neighbours, InternetModel::Role_Type); neighbours_list_->setData(true, InternetModel::Role_CanLazyLoad); parent->appendRow(neighbours_list_); - if (!IsAuthenticated()) - ShowConfig(); + if (!IsAuthenticated()) ShowConfig(); add_artist_action_->setEnabled(true); add_tag_action_->setEnabled(true); @@ -246,20 +255,20 @@ void LastFMService::LazyPopulate(QStandardItem* parent) { case Type_OtherUser: CreateStationItem(parent, - tr("Last.fm Radio Station - %1").arg(parent->text()), - ":last.fm/personal_radio.png", - QUrl("lastfm://user/" + parent->text() + "/library"), - tr("Last.fm Library - %1").arg(parent->text())); + tr("Last.fm Radio Station - %1").arg(parent->text()), + ":last.fm/personal_radio.png", + QUrl("lastfm://user/" + parent->text() + "/library"), + tr("Last.fm Library - %1").arg(parent->text())); CreateStationItem(parent, - tr("Last.fm Mix Radio - %1").arg(parent->text()), - ":last.fm/loved_radio.png", - QUrl("lastfm://user/" + parent->text() + "/mix"), - tr("Last.fm Mix Radio - %1").arg(parent->text())); + tr("Last.fm Mix Radio - %1").arg(parent->text()), + ":last.fm/loved_radio.png", + QUrl("lastfm://user/" + parent->text() + "/mix"), + tr("Last.fm Mix Radio - %1").arg(parent->text())); CreateStationItem(parent, - tr("Last.fm Neighbor Radio - %1").arg(parent->text()), - ":last.fm/neighbour_radio.png", - QUrl("lastfm://user/" + parent->text() + "/neighbours"), - tr("Last.fm Neighbor Radio - %1").arg(parent->text())); + tr("Last.fm Neighbor Radio - %1").arg(parent->text()), + ":last.fm/neighbour_radio.png", + QUrl("lastfm://user/" + parent->text() + "/neighbours"), + tr("Last.fm Neighbor Radio - %1").arg(parent->text())); break; default: @@ -267,25 +276,30 @@ void LastFMService::LazyPopulate(QStandardItem* parent) { } } -QStandardItem* LastFMService::CreateStationItem( - QStandardItem* parent, const QString& name, const QString& icon, - const QUrl& url, const QString& title) { +QStandardItem* LastFMService::CreateStationItem(QStandardItem* parent, + const QString& name, + const QString& icon, + const QUrl& url, + const QString& title) { Song song; song.set_url(url); song.set_title(title); QStandardItem* ret = new QStandardItem(QIcon(icon), name); ret->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - ret->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + ret->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); parent->appendRow(ret); return ret; } -void LastFMService::Authenticate(const QString& username, const QString& password) { +void LastFMService::Authenticate(const QString& username, + const QString& password) { QMap params; params["method"] = "auth.getMobileSession"; params["username"] = username; - params["authToken"] = lastfm::md5((username + lastfm::md5(password.toUtf8())).toUtf8()); + params["authToken"] = + lastfm::md5((username + lastfm::md5(password.toUtf8())).toUtf8()); QNetworkReply* reply = lastfm::ws::post(params); NewClosure(reply, SIGNAL(finished()), this, @@ -351,7 +365,8 @@ void LastFMService::UpdateSubscriberStatusFinished(QNetworkReply* reply) { bool is_subscriber = false; lastfm::XmlQuery lfm(lastfm::compat::EmptyXmlQuery()); - if (lastfm::compat::ParseQuery(reply->readAll(), &lfm, &connection_problems_)) { + if (lastfm::compat::ParseQuery(reply->readAll(), &lfm, + &connection_problems_)) { QString subscriber = lfm["user"]["subscriber"].text(); is_subscriber = (subscriber.toInt() == 1); @@ -403,8 +418,7 @@ void LastFMService::StreamMetadataReady() { void LastFMService::TunerError(lastfm::ws::Error error) { qLog(Warning) << "Last.fm error" << error; - if (!initial_tune_) - return; + if (!initial_tune_) return; app_->task_manager()->SetTaskFinished(tune_task_id_); tune_task_id_ = 0; @@ -419,26 +433,43 @@ void LastFMService::TunerError(lastfm::ws::Error error) { QString LastFMService::ErrorString(lastfm::ws::Error error) const { switch (error) { - case lastfm::ws::InvalidService: return tr("Invalid service"); - case lastfm::ws::InvalidMethod: return tr("Invalid method"); - case lastfm::ws::AuthenticationFailed: return tr("Authentication failed"); - case lastfm::ws::InvalidFormat: return tr("Invalid format"); - case lastfm::ws::InvalidParameters: return tr("Invalid parameters"); - case lastfm::ws::InvalidResourceSpecified: return tr("Invalid resource specified"); - case lastfm::ws::OperationFailed: return tr("Operation failed"); - case lastfm::ws::InvalidSessionKey: return tr("Invalid session key"); - case lastfm::ws::InvalidApiKey: return tr("Invalid API key"); - case lastfm::ws::ServiceOffline: return tr("Service offline"); - case lastfm::ws::SubscribersOnly: return tr("This stream is for paid subscribers only"); + case lastfm::ws::InvalidService: + return tr("Invalid service"); + case lastfm::ws::InvalidMethod: + return tr("Invalid method"); + case lastfm::ws::AuthenticationFailed: + return tr("Authentication failed"); + case lastfm::ws::InvalidFormat: + return tr("Invalid format"); + case lastfm::ws::InvalidParameters: + return tr("Invalid parameters"); + case lastfm::ws::InvalidResourceSpecified: + return tr("Invalid resource specified"); + case lastfm::ws::OperationFailed: + return tr("Operation failed"); + case lastfm::ws::InvalidSessionKey: + return tr("Invalid session key"); + case lastfm::ws::InvalidApiKey: + return tr("Invalid API key"); + case lastfm::ws::ServiceOffline: + return tr("Service offline"); + case lastfm::ws::SubscribersOnly: + return tr("This stream is for paid subscribers only"); - case lastfm::ws::TryAgainLater: return tr("Last.fm is currently busy, please try again in a few minutes"); + case lastfm::ws::TryAgainLater: + return tr("Last.fm is currently busy, please try again in a few minutes"); - case lastfm::ws::NotEnoughContent: return tr("Not enough content"); - case lastfm::ws::NotEnoughMembers: return tr("Not enough members"); - case lastfm::ws::NotEnoughFans: return tr("Not enough fans"); - case lastfm::ws::NotEnoughNeighbours: return tr("Not enough neighbors"); + case lastfm::ws::NotEnoughContent: + return tr("Not enough content"); + case lastfm::ws::NotEnoughMembers: + return tr("Not enough members"); + case lastfm::ws::NotEnoughFans: + return tr("Not enough fans"); + case lastfm::ws::NotEnoughNeighbours: + return tr("Not enough neighbors"); - case lastfm::ws::MalformedResponse: return tr("Malformed response"); + case lastfm::ws::MalformedResponse: + return tr("Malformed response"); case lastfm::ws::UnknownError: default: @@ -454,16 +485,17 @@ void LastFMService::TunerTrackAvailable() { } bool LastFMService::InitScrobbler() { - if (!IsAuthenticated() || !IsScrobblingEnabled()) - return false; + if (!IsAuthenticated() || !IsScrobblingEnabled()) return false; if (!scrobbler_) scrobbler_ = new lastfm::Audioscrobbler(kAudioscrobblerClientId); - //reemit the signal since the sender is private +// reemit the signal since the sender is private #ifdef HAVE_LIBLASTFM1 - connect(scrobbler_, SIGNAL(scrobblesSubmitted(QList)), SIGNAL(ScrobbleSubmitted())); - connect(scrobbler_, SIGNAL(nowPlayingError(int,QString)), SIGNAL(ScrobbleError(int))); + connect(scrobbler_, SIGNAL(scrobblesSubmitted(QList)), + SIGNAL(ScrobbleSubmitted())); + connect(scrobbler_, SIGNAL(nowPlayingError(int, QString)), + SIGNAL(ScrobbleError(int))); #else connect(scrobbler_, SIGNAL(status(int)), SLOT(ScrobblerStatus(int))); #endif @@ -472,18 +504,18 @@ bool LastFMService::InitScrobbler() { void LastFMService::ScrobblerStatus(int value) { switch (value) { - case 2: - case 3: - emit ScrobbleSubmitted(); - break; + case 2: + case 3: + emit ScrobbleSubmitted(); + break; - default: - emit ScrobbleError(value); - break; + default: + emit ScrobbleError(value); + break; } } -lastfm::Track LastFMService::TrackFromSong(const Song &song) const { +lastfm::Track LastFMService::TrackFromSong(const Song& song) const { if (song.title() == last_track_.title() && song.artist() == last_track_.artist() && song.album() == last_track_.album()) @@ -492,12 +524,10 @@ lastfm::Track LastFMService::TrackFromSong(const Song &song) const { lastfm::Track ret; song.ToLastFM(&ret, PreferAlbumArtist()); return ret; - } -void LastFMService::NowPlaying(const Song &song) { - if (!InitScrobbler()) - return; +void LastFMService::NowPlaying(const Song& song) { + if (!InitScrobbler()) return; // Scrobbling streams is difficult if we don't have length of each individual // part. In Song::ToLastFm we set the Track's source to @@ -506,12 +536,14 @@ void LastFMService::NowPlaying(const Song &song) { // since it started playing. if (!last_track_.isNull() && last_track_.source() == lastfm::Track::NonPersonalisedBroadcast) { - const int duration_secs = last_track_.timestamp().secsTo(QDateTime::currentDateTime()); + const int duration_secs = + last_track_.timestamp().secsTo(QDateTime::currentDateTime()); if (duration_secs >= lastfm::compat::ScrobbleTimeMin()) { lastfm::MutableTrack mtrack(last_track_); mtrack.setDuration(duration_secs); - qLog(Info) << "Scrobbling stream track" << mtrack.title() << "length" << duration_secs; + qLog(Info) << "Scrobbling stream track" << mtrack.title() << "length" + << duration_secs; scrobbler_->cache(mtrack); scrobbler_->submit(); @@ -527,25 +559,25 @@ void LastFMService::NowPlaying(const Song &song) { #ifndef HAVE_LIBLASTFM1 // Check immediately if the song is valid Scrobble::Invalidity invalidity; - if (!lastfm::Scrobble(last_track_).isValid( &invalidity )) { - //for now just notify this, we can also see the cause + if (!lastfm::Scrobble(last_track_).isValid(&invalidity)) { + // for now just notify this, we can also see the cause emit ScrobbleError(-1); return; } #else - // TODO: validity was removed from liblastfm1 but might reappear, it should have - // no impact as we get a different error when actually trying to scrobble. +// TODO: validity was removed from liblastfm1 but might reappear, it should have +// no impact as we get a different error when actually trying to scrobble. #endif scrobbler_->nowPlaying(mtrack); } void LastFMService::Scrobble() { - if (!InitScrobbler()) - return; + if (!InitScrobbler()) return; lastfm::compat::ScrobbleCache cache(lastfm::ws::Username); - qLog(Debug) << "There are" << cache.tracks().count() << "tracks in the last.fm cache."; + qLog(Debug) << "There are" << cache.tracks().count() + << "tracks in the last.fm cache."; scrobbler_->cache(last_track_); // Let's mark a track as cached, useful when the connection is down @@ -556,8 +588,7 @@ void LastFMService::Scrobble() { } void LastFMService::Love() { - if (!IsAuthenticated()) - ShowConfig(); + if (!IsAuthenticated()) ShowConfig(); lastfm::MutableTrack mtrack(last_track_); mtrack.love(); @@ -580,7 +611,11 @@ void LastFMService::Ban() { } void LastFMService::ShowContextMenu(const QPoint& global_pos) { - switch (model()->current_index().parent().data(InternetModel::Role_Type).toInt()) { + switch (model() + ->current_index() + .parent() + .data(InternetModel::Role_Type) + .toInt()) { case Type_Artists: case Type_Tags: case Type_Custom: @@ -613,7 +648,7 @@ static QStringList SavedArtistOrTagRadioNames(const QString& name) { QSettings s; s.beginGroup(LastFMService::kSettingsGroup); int count = s.beginReadArray(name); - for (int i=0 ; ihasChildren()) friends_list_->removeRows(0, friends_list_->rowCount()); - foreach (const QString& name, friend_names_) { + foreach(const QString & name, friend_names_) { Song song; song.set_url(QUrl("lastfm://user/" + name + "/library")); song.set_title(tr("Last.fm Library - %1").arg(name)); - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_user.png"), name); + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/icon_user.png"), name); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(Type_OtherUser, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); friends_list_->appendRow(item); } } @@ -713,36 +743,35 @@ void LastFMService::RefreshNeighboursFinished(QNetworkReply* reply) { if (neighbours_list_->hasChildren()) neighbours_list_->removeRows(0, neighbours_list_->rowCount()); - foreach (const lastfm::User& n, neighbours) { + foreach(const lastfm::User & n, neighbours) { Song song; song.set_url(QUrl("lastfm://user/" + n.name() + "/library")); song.set_title(tr("Last.fm Library - %1").arg(n.name())); - QStandardItem* item = new QStandardItem(QIcon(":last.fm/user_purple.png"), n.name()); + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/user_purple.png"), n.name()); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(Type_OtherUser, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); neighbours_list_->appendRow(item); } } void LastFMService::AddArtistRadio() { - AddArtistOrTag("artists", LastFMStationDialog::Artist, - kUrlArtist, tr(kTitleArtist), - ":last.fm/icon_radio.png", artist_list_); + AddArtistOrTag("artists", LastFMStationDialog::Artist, kUrlArtist, + tr(kTitleArtist), ":last.fm/icon_radio.png", artist_list_); } void LastFMService::AddTagRadio() { - AddArtistOrTag("tags", LastFMStationDialog::Tag, - kUrlTag, tr(kTitleTag), + AddArtistOrTag("tags", LastFMStationDialog::Tag, kUrlTag, tr(kTitleTag), ":last.fm/icon_tag.png", tag_list_); } void LastFMService::AddCustomRadio() { - AddArtistOrTag("custom", LastFMStationDialog::Custom, - kUrlCustom, tr(kTitleCustom), - ":last.fm/icon_radio.png", custom_list_); + AddArtistOrTag("custom", LastFMStationDialog::Custom, kUrlCustom, + tr(kTitleCustom), ":last.fm/icon_radio.png", custom_list_); } void LastFMService::AddArtistOrTag(const QString& name, @@ -751,11 +780,9 @@ void LastFMService::AddArtistOrTag(const QString& name, const QString& title_pattern, const QString& icon, QStandardItem* list) { station_dialog_->SetType(dialog_type); - if (station_dialog_->exec() == QDialog::Rejected) - return; + if (station_dialog_->exec() == QDialog::Rejected) return; - if (station_dialog_->content().isEmpty()) - return; + if (station_dialog_->content().isEmpty()) return; QString content = station_dialog_->content(); QString url; @@ -773,7 +800,8 @@ void LastFMService::AddArtistOrTag(const QString& name, QStandardItem* item = new QStandardItem(QIcon(icon), content); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); list->appendRow(item); emit AddItemToPlaylist(item->index(), AddMode_Append); @@ -787,23 +815,21 @@ void LastFMService::SaveList(const QString& name, QStandardItem* list) const { settings.beginGroup(kSettingsGroup); settings.beginWriteArray(name, list->rowCount()); - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < list->rowCount(); ++i) { settings.setArrayIndex(i); settings.setValue("key", list->child(i)->text()); } settings.endArray(); } -void LastFMService::RestoreList(const QString& name, - const QString& url_pattern, - const QString& title_pattern, - const QIcon& icon, QStandardItem* parent) { - if (parent->hasChildren()) - parent->removeRows(0, parent->rowCount()); +void LastFMService::RestoreList(const QString& name, const QString& url_pattern, + const QString& title_pattern, const QIcon& icon, + QStandardItem* parent) { + if (parent->hasChildren()) parent->removeRows(0, parent->rowCount()); const QStringList keys = SavedArtistOrTagRadioNames(name); - foreach (const QString& key, keys) { + foreach(const QString & key, keys) { QString url; if (name == "custom" && key.startsWith("lastfm://")) { url = key; @@ -819,13 +845,15 @@ void LastFMService::RestoreList(const QString& name, QStandardItem* item = new QStandardItem(icon, key); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); parent->appendRow(item); } } void LastFMService::Remove() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); + QStandardItem* context_item = + model()->itemFromIndex(model()->current_index()); int type = context_item->parent()->data(InternetModel::Role_Type).toInt(); context_item->parent()->removeRow(context_item->row()); @@ -855,7 +883,7 @@ void LastFMService::FetchMoreTracksFinished(QNetworkReply* reply) { lastfm::XmlQuery query(lastfm::compat::EmptyXmlQuery()); if (lastfm::compat::ParseQuery(reply->readAll(), &query)) { const XmlQuery& playlist = query["playlist"]; - foreach (const XmlQuery& q, playlist["trackList"].children("track")) { + foreach(const XmlQuery & q, playlist["trackList"].children("track")) { lastfm::MutableTrack t; t.setUrl(QUrl(q["location"].text())); t.setExtra("trackauth", q["extension"]["trackauth"].text()); @@ -878,7 +906,8 @@ void LastFMService::FetchMoreTracksFinished(QNetworkReply* reply) { void LastFMService::Tune(const QUrl& url) { if (!tune_task_id_) - tune_task_id_ = app_->task_manager()->StartTask(tr("Loading Last.fm radio")); + tune_task_id_ = + app_->task_manager()->StartTask(tr("Loading Last.fm radio")); last_url_ = url; initial_tune_ = true; @@ -903,8 +932,7 @@ void LastFMService::TuneFinished(QNetworkReply* reply) { } PlaylistItem::Options LastFMService::playlistitem_options() const { - return PlaylistItem::LastFMControls | - PlaylistItem::PauseDisabled | + return PlaylistItem::LastFMControls | PlaylistItem::PauseDisabled | PlaylistItem::SeekDisabled; } @@ -912,15 +940,15 @@ PlaylistItemPtr LastFMService::PlaylistItemForUrl(const QUrl& url) { // This is a bit of a hack, it's only used by the artist/song info tag // widgets for tag radio and similar artists radio. - if (url.scheme() != "lastfm") - return PlaylistItemPtr(); + if (url.scheme() != "lastfm") return PlaylistItemPtr(); QStringList sections(url.path().split("/", QString::SkipEmptyParts)); Song song; song.set_url(url); - if (sections.count() == 2 && url.host() == "artist" && sections[1] == "similarartists") { + if (sections.count() == 2 && url.host() == "artist" && + sections[1] == "similarartists") { song.set_title(tr(kTitleArtist).arg(sections[0])); } else if (sections.count() == 1 && url.host() == "globaltags") { song.set_title(tr(kTitleTag).arg(sections[0])); @@ -932,10 +960,10 @@ PlaylistItemPtr LastFMService::PlaylistItemForUrl(const QUrl& url) { } void LastFMService::ToggleScrobbling() { - //toggle status + // toggle status scrobbling_enabled_ = !scrobbling_enabled_; - //save to the settings + // save to the settings QSettings s; s.beginGroup(kSettingsGroup); s.setValue("ScrobblingEnabled", scrobbling_enabled_); diff --git a/src/internet/lastfmservice.h b/src/internet/lastfmservice.h index 9b832ea7a..485e9a07f 100644 --- a/src/internet/lastfmservice.h +++ b/src/internet/lastfmservice.h @@ -85,7 +85,7 @@ class LastFMService : public InternetService { QStandardItem* CreateRootItem(); void LazyPopulate(QStandardItem* parent); - void ShowContextMenu(const QPoint &global_pos); + void ShowContextMenu(const QPoint& global_pos); PlaylistItem::Options playlistitem_options() const; @@ -126,7 +126,7 @@ class LastFMService : public InternetService { void ShowConfig(); void ToggleScrobbling(); - signals: +signals: void AuthenticationComplete(bool success, const QString& error_message); void ScrobblingEnabledChanged(bool value); void ButtonVisibilityChanged(bool value); @@ -163,9 +163,9 @@ class LastFMService : public InternetService { void StreamMetadataReady(); private: - QStandardItem* CreateStationItem(QStandardItem* parent, - const QString& name, const QString& icon, const QUrl& url, - const QString& title); + QStandardItem* CreateStationItem(QStandardItem* parent, const QString& name, + const QString& icon, const QUrl& url, + const QString& title); QString ErrorString(lastfm::ws::Error error) const; bool InitScrobbler(); lastfm::Track TrackFromSong(const Song& song) const; @@ -173,14 +173,12 @@ class LastFMService : public InternetService { void RefreshNeighbours(); void AddArtistOrTag(const QString& name, LastFMStationDialog::Type dialog_type, - const QString& url_pattern, - const QString& title_pattern, + const QString& url_pattern, const QString& title_pattern, const QString& icon, QStandardItem* list); void SaveList(const QString& name, QStandardItem* list) const; - void RestoreList(const QString& name, - const QString& url_pattern, - const QString& title_pattern, - const QIcon& icon, QStandardItem* parent); + void RestoreList(const QString& name, const QString& url_pattern, + const QString& title_pattern, const QIcon& icon, + QStandardItem* parent); static QUrl FixupUrl(const QUrl& url); void Tune(const QUrl& station); @@ -231,4 +229,4 @@ class LastFMService : public InternetService { bool connection_problems_; }; -#endif // LASTFMSERVICE_H +#endif // LASTFMSERVICE_H diff --git a/src/internet/lastfmsettingspage.cpp b/src/internet/lastfmsettingspage.cpp index e09812e5d..ba55a8a35 100644 --- a/src/internet/lastfmsettingspage.cpp +++ b/src/internet/lastfmsettingspage.cpp @@ -28,19 +28,20 @@ #include LastFMSettingsPage::LastFMSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - service_(static_cast(InternetModel::ServiceByName("Last.fm"))), - ui_(new Ui_LastFMSettingsPage), - waiting_for_auth_(false) -{ + : SettingsPage(dialog), + service_( + static_cast(InternetModel::ServiceByName("Last.fm"))), + ui_(new Ui_LastFMSettingsPage), + waiting_for_auth_(false) { ui_->setupUi(this); // Icons setWindowIcon(QIcon(":/last.fm/as.png")); - connect(service_, SIGNAL(AuthenticationComplete(bool,QString)), - SLOT(AuthenticationComplete(bool,QString))); - connect(service_, SIGNAL(UpdatedSubscriberStatus(bool)), SLOT(UpdatedSubscriberStatus(bool))); + connect(service_, SIGNAL(AuthenticationComplete(bool, QString)), + SLOT(AuthenticationComplete(bool, QString))); + connect(service_, SIGNAL(UpdatedSubscriberStatus(bool)), + SLOT(UpdatedSubscriberStatus(bool))); connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(Logout())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(Login())); connect(ui_->login, SIGNAL(clicked()), SLOT(Login())); @@ -53,9 +54,7 @@ LastFMSettingsPage::LastFMSettingsPage(SettingsDialog* dialog) resize(sizeHint()); } -LastFMSettingsPage::~LastFMSettingsPage() { - delete ui_; -} +LastFMSettingsPage::~LastFMSettingsPage() { delete ui_; } void LastFMSettingsPage::Login() { waiting_for_auth_ = true; @@ -66,8 +65,7 @@ void LastFMSettingsPage::Login() { void LastFMSettingsPage::AuthenticationComplete(bool success, const QString& message) { - if (!waiting_for_auth_) - return; // Wasn't us that was waiting for auth + if (!waiting_for_auth_) return; // Wasn't us that was waiting for auth waiting_for_auth_ = false; @@ -107,12 +105,14 @@ void LastFMSettingsPage::UpdatedSubscriberStatus(bool is_subscriber) { if (!is_subscriber) { if (service_->HasConnectionProblems()) { ui_->login_state->SetAccountTypeText( - tr("Clementine couldn't fetch your subscription status since there are problems " - "with your connection. Played tracks will be cached and sent later to Last.fm.")); + tr("Clementine couldn't fetch your subscription status since there " + "are problems " + "with your connection. Played tracks will be cached and sent " + "later to Last.fm.")); } else { ui_->login_state->SetAccountTypeText( - tr("You will not be able to play Last.fm radio stations " - "as you are not a Last.fm subscriber.")); + tr("You will not be able to play Last.fm radio stations " + "as you are not a Last.fm subscriber.")); } } } @@ -138,9 +138,9 @@ void LastFMSettingsPage::Logout() { } void LastFMSettingsPage::RefreshControls(bool authenticated) { - ui_->login_state->SetLoggedIn(authenticated ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - lastfm::ws::Username); + ui_->login_state->SetLoggedIn( + authenticated ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + lastfm::ws::Username); ui_->login_state->SetAccountTypeVisible(!authenticated); if (!authenticated) { diff --git a/src/internet/lastfmsettingspage.h b/src/internet/lastfmsettingspage.h index 30bbb604f..329be560b 100644 --- a/src/internet/lastfmsettingspage.h +++ b/src/internet/lastfmsettingspage.h @@ -26,20 +26,20 @@ class Ui_LastFMSettingsPage; class LastFMSettingsPage : public SettingsPage { Q_OBJECT -public: + public: LastFMSettingsPage(SettingsDialog* dialog); ~LastFMSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void AuthenticationComplete(bool success, const QString& error_message); void Logout(); void UpdatedSubscriberStatus(bool is_subscriber); -private: + private: LastFMService* service_; Ui_LastFMSettingsPage* ui_; QMovie* loading_icon_; @@ -49,4 +49,4 @@ private: void RefreshControls(bool authenticated); }; -#endif // LASTFMSETTINGSPAGE_H +#endif // LASTFMSETTINGSPAGE_H diff --git a/src/internet/lastfmstationdialog.cpp b/src/internet/lastfmstationdialog.cpp index 86fa75228..2a16dc3b3 100644 --- a/src/internet/lastfmstationdialog.cpp +++ b/src/internet/lastfmstationdialog.cpp @@ -19,17 +19,13 @@ #include "ui_lastfmstationdialog.h" LastFMStationDialog::LastFMStationDialog(QWidget* parent) - : QDialog(parent), - ui_(new Ui_LastFMStationDialog) -{ + : QDialog(parent), ui_(new Ui_LastFMStationDialog) { ui_->setupUi(this); resize(sizeHint()); } -LastFMStationDialog::~LastFMStationDialog() { - delete ui_; -} +LastFMStationDialog::~LastFMStationDialog() { delete ui_; } void LastFMStationDialog::SetType(Type type) { ui_->type->setCurrentIndex(type); @@ -37,6 +33,4 @@ void LastFMStationDialog::SetType(Type type) { ui_->content->setFocus(Qt::OtherFocusReason); } -QString LastFMStationDialog::content() const { - return ui_->content->text(); -} +QString LastFMStationDialog::content() const { return ui_->content->text(); } diff --git a/src/internet/lastfmstationdialog.h b/src/internet/lastfmstationdialog.h index 67d6cf9b2..de2ce3990 100644 --- a/src/internet/lastfmstationdialog.h +++ b/src/internet/lastfmstationdialog.h @@ -29,11 +29,7 @@ class LastFMStationDialog : public QDialog { LastFMStationDialog(QWidget* parent = 0); ~LastFMStationDialog(); - enum Type { - Artist, - Tag, - Custom, - }; + enum Type { Artist, Tag, Custom, }; void SetType(Type type); QString content() const; @@ -42,4 +38,4 @@ class LastFMStationDialog : public QDialog { Ui_LastFMStationDialog* ui_; }; -#endif // LASTFMSTATIONDIALOG_H +#endif // LASTFMSTATIONDIALOG_H diff --git a/src/internet/lastfmurlhandler.cpp b/src/internet/lastfmurlhandler.cpp index 5617fb9e2..2750c2294 100644 --- a/src/internet/lastfmurlhandler.cpp +++ b/src/internet/lastfmurlhandler.cpp @@ -19,13 +19,10 @@ #include "lastfmurlhandler.h" LastFMUrlHandler::LastFMUrlHandler(LastFMService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult LastFMUrlHandler::StartLoading(const QUrl& url) { - if (!service_->IsAuthenticated()) - return LoadResult(); + if (!service_->IsAuthenticated()) return LoadResult(); service_->Tune(url); return LoadResult(url, LoadResult::WillLoadAsynchronously); @@ -36,7 +33,8 @@ void LastFMUrlHandler::TunerTrackAvailable() { } void LastFMUrlHandler::TunerError() { - emit AsyncLoadComplete(LoadResult(service_->last_url_, LoadResult::NoMoreTracks)); + emit AsyncLoadComplete( + LoadResult(service_->last_url_, LoadResult::NoMoreTracks)); } UrlHandler::LoadResult LastFMUrlHandler::LoadNext(const QUrl& url) { diff --git a/src/internet/lastfmurlhandler.h b/src/internet/lastfmurlhandler.h index 3f3bf174b..4cfcb9757 100644 --- a/src/internet/lastfmurlhandler.h +++ b/src/internet/lastfmurlhandler.h @@ -22,11 +22,10 @@ class LastFMService; - class LastFMUrlHandler : public UrlHandler { friend class LastFMService; -public: + public: LastFMUrlHandler(LastFMService* service, QObject* parent); QString scheme() const { return "lastfm"; } @@ -37,8 +36,8 @@ public: void TunerTrackAvailable(); void TunerError(); -private: + private: LastFMService* service_; }; -#endif // LASTFMURLHANDLER_H +#endif // LASTFMURLHANDLER_H diff --git a/src/internet/localredirectserver.cpp b/src/internet/localredirectserver.cpp index ca51892ba..b961385d3 100644 --- a/src/internet/localredirectserver.cpp +++ b/src/internet/localredirectserver.cpp @@ -11,9 +11,7 @@ #include "core/closure.h" LocalRedirectServer::LocalRedirectServer(QObject* parent) - : QObject(parent), - server_(new QTcpServer(this)) { -} + : QObject(parent), server_(new QTcpServer(this)) {} void LocalRedirectServer::Listen() { server_->listen(QHostAddress::LocalHost); @@ -31,8 +29,8 @@ void LocalRedirectServer::NewConnection() { server_->close(); QByteArray buffer; - NewClosure(socket, SIGNAL(readyRead()), - this, SLOT(ReadyRead(QTcpSocket*,QByteArray)), socket, buffer); + NewClosure(socket, SIGNAL(readyRead()), this, + SLOT(ReadyRead(QTcpSocket*, QByteArray)), socket, buffer); } void LocalRedirectServer::ReadyRead(QTcpSocket* socket, QByteArray buffer) { @@ -43,8 +41,8 @@ void LocalRedirectServer::ReadyRead(QTcpSocket* socket, QByteArray buffer) { request_url_ = ParseUrlFromRequest(buffer); emit Finished(); } else { - NewClosure(socket, SIGNAL(readyRead()), - this, SLOT(ReadyReady(QTcpSocket*,QByteArray)), socket, buffer); + NewClosure(socket, SIGNAL(readyRead()), this, + SLOT(ReadyReady(QTcpSocket*, QByteArray)), socket, buffer); } } @@ -68,8 +66,11 @@ void LocalRedirectServer::WriteTemplate(QTcpSocket* socket) const { QBuffer image_buffer; image_buffer.open(QIODevice::ReadWrite); - QApplication::style()->standardIcon(QStyle::SP_DialogOkButton) - .pixmap(16).toImage().save(&image_buffer, "PNG"); + QApplication::style() + ->standardIcon(QStyle::SP_DialogOkButton) + .pixmap(16) + .toImage() + .save(&image_buffer, "PNG"); page_data.replace("@IMAGE_DATA@", image_buffer.data().toBase64()); socket->write("HTTP/1.0 200 OK\r\n"); diff --git a/src/internet/localredirectserver.h b/src/internet/localredirectserver.h index 2c6993add..77138a242 100644 --- a/src/internet/localredirectserver.h +++ b/src/internet/localredirectserver.h @@ -22,8 +22,7 @@ class LocalRedirectServer : public QObject { // Returns the URL requested by the OAuth redirect. const QUrl& request_url() const { return request_url_; } - - signals: +signals: void Finished(); private slots: diff --git a/src/internet/magnatunedownloaddialog.cpp b/src/internet/magnatunedownloaddialog.cpp index d8d92aca7..69ed878e0 100644 --- a/src/internet/magnatunedownloaddialog.cpp +++ b/src/internet/magnatunedownloaddialog.cpp @@ -39,14 +39,13 @@ #include "widgets/progressitemdelegate.h" MagnatuneDownloadDialog::MagnatuneDownloadDialog(MagnatuneService* service, - QWidget *parent) - : QDialog(parent), - ui_(new Ui_MagnatuneDownloadDialog), - service_(service), - network_(new NetworkAccessManager(this)), - current_reply_(nullptr), - next_row_(0) -{ + QWidget* parent) + : QDialog(parent), + ui_(new Ui_MagnatuneDownloadDialog), + service_(service), + network_(new NetworkAccessManager(this)), + current_reply_(nullptr), + next_row_(0) { ui_->setupUi(this); ui_->albums->header()->setResizeMode(QHeaderView::ResizeToContents); ui_->albums->header()->setResizeMode(1, QHeaderView::Fixed); @@ -71,7 +70,7 @@ void MagnatuneDownloadDialog::Show(const SongList& songs) { ui_->albums->clear(); QSet sku_codes; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (!sku_codes.contains(song.comment())) { sku_codes.insert(song.comment()); @@ -101,7 +100,7 @@ void MagnatuneDownloadDialog::accept() { ui_->options->setEnabled(false); // Reset all the progress bars - for (int i=0 ; ialbums->topLevelItemCount() ; ++i) { + for (int i = 0; i < ui_->albums->topLevelItemCount(); ++i) { ui_->albums->topLevelItem(i)->setData(1, Qt::DisplayRole, QVariant()); } @@ -130,7 +129,8 @@ void MagnatuneDownloadDialog::DownloadNext() { current_reply_ = network_->get(QNetworkRequest(url)); - connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(Error(QNetworkReply::NetworkError))); + connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), + SLOT(Error(QNetworkReply::NetworkError))); connect(current_reply_, SIGNAL(finished()), SLOT(MetadataFinished())); } @@ -144,8 +144,8 @@ void MagnatuneDownloadDialog::Error(QNetworkReply::NetworkError e) { QMetaEnum error_enum = QNetworkReply::staticMetaObject.enumerator( QNetworkReply::staticMetaObject.indexOfEnumerator("NetworkError")); - QString message = tr("Unable to download %1 (%2)") - .arg(url.toString()).arg(error_enum.valueToKey(e)); + QString message = tr("Unable to download %1 (%2)").arg(url.toString()).arg( + error_enum.valueToKey(e)); ShowError(message); } @@ -165,11 +165,21 @@ void MagnatuneDownloadDialog::MetadataFinished() { // Work out what format we want QString type; switch (ui_->format->currentIndex()) { - case MagnatuneService::Format_Ogg: type = "URL_OGGZIP"; break; - case MagnatuneService::Format_Flac: type = "URL_FLACZIP"; break; - case MagnatuneService::Format_Wav: type = "URL_WAVZIP"; break; - case MagnatuneService::Format_MP3_VBR: type = "URL_VBRZIP"; break; - case MagnatuneService::Format_MP3_128: type = "URL_128KMP3ZIP"; break; + case MagnatuneService::Format_Ogg: + type = "URL_OGGZIP"; + break; + case MagnatuneService::Format_Flac: + type = "URL_FLACZIP"; + break; + case MagnatuneService::Format_Wav: + type = "URL_WAVZIP"; + break; + case MagnatuneService::Format_MP3_VBR: + type = "URL_VBRZIP"; + break; + case MagnatuneService::Format_MP3_128: + type = "URL_128KMP3ZIP"; + break; } // Parse the XML (lol) to find the URL @@ -191,9 +201,11 @@ void MagnatuneDownloadDialog::MetadataFinished() { // Start the actual download current_reply_ = network_->get(QNetworkRequest(url)); - connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(Error(QNetworkReply::NetworkError))); + connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), + SLOT(Error(QNetworkReply::NetworkError))); connect(current_reply_, SIGNAL(finished()), SLOT(DownloadFinished())); - connect(current_reply_, SIGNAL(downloadProgress(qint64,qint64)), SLOT(DownloadProgress(qint64,qint64))); + connect(current_reply_, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(DownloadProgress(qint64, qint64))); connect(current_reply_, SIGNAL(readyRead()), SLOT(DownloadReadyRead())); // Close any open file @@ -210,7 +222,7 @@ void MagnatuneDownloadDialog::MetadataFinished() { void MagnatuneDownloadDialog::DownloadFinished() { current_reply_->deleteLater(); - next_row_ ++; + next_row_++; DownloadNext(); } @@ -224,7 +236,7 @@ void MagnatuneDownloadDialog::DownloadReadyRead() { download_file_->write(reply->readAll()); } -void MagnatuneDownloadDialog::ShowError(const QString &message) { +void MagnatuneDownloadDialog::ShowError(const QString& message) { QMessageBox::critical(this, tr("Error"), message, QMessageBox::Close); AllFinished(true); } @@ -232,8 +244,7 @@ void MagnatuneDownloadDialog::ShowError(const QString &message) { void MagnatuneDownloadDialog::AllFinished(bool error) { current_reply_ = nullptr; - if (error) - ui_->button_box->button(QDialogButtonBox::Ok)->show(); + if (error) ui_->button_box->button(QDialogButtonBox::Ok)->show(); ui_->button_box->button(QDialogButtonBox::Close)->show(); ui_->button_box->button(QDialogButtonBox::Cancel)->hide(); ui_->options->setEnabled(true); @@ -243,7 +254,7 @@ void MagnatuneDownloadDialog::AllFinished(bool error) { if (!error) { QStringList albums; - for (int i=0 ; ialbums->topLevelItemCount() ; ++i) { + for (int i = 0; i < ui_->albums->topLevelItemCount(); ++i) { albums << ui_->albums->topLevelItem(i)->text(0); } emit Finished(albums); @@ -266,11 +277,21 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { QString extension; switch (MagnatuneService::PreferredFormat(ui_->format->currentIndex())) { - case MagnatuneService::Format_Ogg: extension = "ogg"; break; - case MagnatuneService::Format_Flac: extension = "flac"; break; - case MagnatuneService::Format_Wav: extension = "wav"; break; - case MagnatuneService::Format_MP3_VBR: extension = "vbr"; break; - case MagnatuneService::Format_MP3_128: extension = "mp3"; break; + case MagnatuneService::Format_Ogg: + extension = "ogg"; + break; + case MagnatuneService::Format_Flac: + extension = "flac"; + break; + case MagnatuneService::Format_Wav: + extension = "wav"; + break; + case MagnatuneService::Format_MP3_VBR: + extension = "vbr"; + break; + case MagnatuneService::Format_MP3_128: + extension = "mp3"; + break; } return QString("%1/%2-%3.zip").arg(ui_->directory->text(), album, extension); @@ -278,10 +299,10 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { void MagnatuneDownloadDialog::closeEvent(QCloseEvent* e) { if (current_reply_ && current_reply_->isRunning()) { - std::unique_ptr message_box(new QMessageBox( - QMessageBox::Question, tr("Really cancel?"), - tr("Closing this window will cancel the download."), - QMessageBox::Abort, this)); + std::unique_ptr message_box( + new QMessageBox(QMessageBox::Question, tr("Really cancel?"), + tr("Closing this window will cancel the download."), + QMessageBox::Abort, this)); message_box->addButton(tr("Don't stop!"), QMessageBox::AcceptRole); if (message_box->exec() != QMessageBox::Abort) { diff --git a/src/internet/magnatunedownloaddialog.h b/src/internet/magnatunedownloaddialog.h index 7c0ffb438..d9743f5f9 100644 --- a/src/internet/magnatunedownloaddialog.h +++ b/src/internet/magnatunedownloaddialog.h @@ -34,8 +34,8 @@ class QXmlStreamReader; class MagnatuneDownloadDialog : public QDialog { Q_OBJECT -public: - MagnatuneDownloadDialog(MagnatuneService* service, QWidget *parent = 0); + public: + MagnatuneDownloadDialog(MagnatuneService* service, QWidget* parent = 0); ~MagnatuneDownloadDialog(); void Show(const SongList& songs); @@ -43,13 +43,13 @@ public: signals: void Finished(const QStringList& albums); -public slots: + public slots: void accept(); -protected: + protected: void closeEvent(QCloseEvent* e); -private slots: + private slots: void Browse(); void DownloadNext(); @@ -62,10 +62,10 @@ private slots: void ShowError(const QString& message); void AllFinished(bool error); -private: + private: QString GetOutputFilename(); -private: + private: Ui_MagnatuneDownloadDialog* ui_; MagnatuneService* service_; @@ -76,4 +76,4 @@ private: int next_row_; }; -#endif // MAGNATUNEDOWNLOADDIALOG_H +#endif // MAGNATUNEDOWNLOADDIALOG_H diff --git a/src/internet/magnatuneplaylistitem.cpp b/src/internet/magnatuneplaylistitem.cpp index 5702c8df6..c582517c6 100644 --- a/src/internet/magnatuneplaylistitem.cpp +++ b/src/internet/magnatuneplaylistitem.cpp @@ -19,13 +19,10 @@ #include "internetmodel.h" MagnatunePlaylistItem::MagnatunePlaylistItem(const QString& type) - : LibraryPlaylistItem(type) -{ -} + : LibraryPlaylistItem(type) {} MagnatunePlaylistItem::MagnatunePlaylistItem(const Song& song) - : LibraryPlaylistItem("Magnatune") -{ + : LibraryPlaylistItem("Magnatune") { song_ = song; } @@ -36,6 +33,4 @@ bool MagnatunePlaylistItem::InitFromQuery(const SqlRow& query) { return song_.is_valid(); } -QUrl MagnatunePlaylistItem::Url() const { - return song_.url(); -} +QUrl MagnatunePlaylistItem::Url() const { return song_.url(); } diff --git a/src/internet/magnatuneplaylistitem.h b/src/internet/magnatuneplaylistitem.h index c7066ddc1..e6b0f3ba2 100644 --- a/src/internet/magnatuneplaylistitem.h +++ b/src/internet/magnatuneplaylistitem.h @@ -30,4 +30,4 @@ class MagnatunePlaylistItem : public LibraryPlaylistItem { QUrl Url() const; }; -#endif // MAGNATUNEPLAYLISTITEM_H +#endif // MAGNATUNEPLAYLISTITEM_H diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index fe661be2f..a776eec12 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -57,33 +57,34 @@ const char* MagnatuneService::kSongsTable = "magnatune_songs"; const char* MagnatuneService::kFtsTable = "magnatune_songs_fts"; const char* MagnatuneService::kHomepage = "http://magnatune.com"; -const char* MagnatuneService::kDatabaseUrl = "http://magnatune.com/info/song_info_xml.gz"; +const char* MagnatuneService::kDatabaseUrl = + "http://magnatune.com/info/song_info_xml.gz"; const char* MagnatuneService::kStreamingHostname = "streaming.magnatune.com"; const char* MagnatuneService::kDownloadHostname = "download.magnatune.com"; const char* MagnatuneService::kPartnerId = "clementine"; -const char* MagnatuneService::kDownloadUrl = "http://download.magnatune.com/buy/membership_free_dl_xml"; +const char* MagnatuneService::kDownloadUrl = + "http://download.magnatune.com/buy/membership_free_dl_xml"; MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new MagnatuneUrlHandler(this, this)), - context_menu_(nullptr), - root_(nullptr), - library_backend_(nullptr), - library_model_(nullptr), - library_filter_(nullptr), - library_sort_model_(new QSortFilterProxyModel(this)), - load_database_task_id_(0), - membership_(Membership_None), - format_(Format_Ogg), - total_song_count_(0), - network_(new NetworkAccessManager(this)) -{ + : InternetService(kServiceName, app, parent, parent), + url_handler_(new MagnatuneUrlHandler(this, this)), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + load_database_task_id_(0), + membership_(Membership_None), + format_(Format_Ogg), + total_song_count_(0), + network_(new NetworkAccessManager(this)) { // Create the library backend in the database thread library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), kSongsTable, - QString::null, QString::null, kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); library_model_ = new LibraryModel(library_backend_, app_, this); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), @@ -97,16 +98,11 @@ MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) app_->player()->RegisterUrlHandler(url_handler_); app_->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - tr("Magnatune"), - "magnatune", - QIcon(":/providers/magnatune.png"), - true, app_, this)); + library_backend_, tr("Magnatune"), "magnatune", + QIcon(":/providers/magnatune.png"), true, app_, this)); } -MagnatuneService::~MagnatuneService() { - delete context_menu_; -} +MagnatuneService::~MagnatuneService() { delete context_menu_; } void MagnatuneService::ReloadSettings() { QSettings s; @@ -150,10 +146,10 @@ void MagnatuneService::ReloadDatabase() { QNetworkReply* reply = network_->get(request); connect(reply, SIGNAL(finished()), SLOT(ReloadDatabaseFinished())); - + if (!load_database_task_id_) - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Magnatune catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Magnatune catalogue")); } void MagnatuneService::ReloadDatabaseFinished() { @@ -168,8 +164,7 @@ void MagnatuneService::ReloadDatabaseFinished() { return; } - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); // The XML file is compressed QtIOCompressor gzip(reply); @@ -205,22 +200,22 @@ Song MagnatuneService::ReadTrack(QXmlStreamReader& reader) { while (!reader.atEnd()) { reader.readNext(); - if (reader.tokenType() == QXmlStreamReader::EndElement) - break; + if (reader.tokenType() == QXmlStreamReader::EndElement) break; if (reader.tokenType() == QXmlStreamReader::StartElement) { QStringRef name = reader.name(); QString value = ReadElementText(reader); - if (name == "artist") song.set_artist(value); - if (name == "albumname") song.set_album(value); - if (name == "trackname") song.set_title(value); - if (name == "tracknum") song.set_track(value.toInt()); - if (name == "year") song.set_year(value.toInt()); + if (name == "artist") song.set_artist(value); + if (name == "albumname") song.set_album(value); + if (name == "trackname") song.set_title(value); + if (name == "tracknum") song.set_track(value.toInt()); + if (name == "year") song.set_year(value.toInt()); if (name == "magnatunegenres") song.set_genre(value.section(',', 0, 0)); - if (name == "seconds") song.set_length_nanosec(value.toInt() * kNsecPerSec); - if (name == "cover_small") song.set_art_automatic(value); - if (name == "albumsku") song.set_comment(value); + if (name == "seconds") + song.set_length_nanosec(value.toInt() * kNsecPerSec); + if (name == "cover_small") song.set_art_automatic(value); + if (name == "albumsku") song.set_comment(value); if (name == "url") { QUrl url; // Magnatune's URLs are already encoded @@ -249,33 +244,43 @@ QString MagnatuneService::ReadElementText(QXmlStreamReader& reader) { QString ret; while (!reader.atEnd()) { switch (reader.readNext()) { - case QXmlStreamReader::StartElement: level++; break; - case QXmlStreamReader::EndElement: level--; break; + case QXmlStreamReader::StartElement: + level++; + break; + case QXmlStreamReader::EndElement: + level--; + break; case QXmlStreamReader::Characters: ret += reader.text().toString().trimmed(); break; - default: break; + default: + break; } - if (level == 0) - break; + if (level == 0) break; } return ret; } void MagnatuneService::EnsureMenuCreated() { - if (context_menu_) - return; + if (context_menu_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - download_ = context_menu_->addAction( - IconLoader::Load("download"), tr("Download this album"), this, SLOT(Download())); + download_ = context_menu_->addAction(IconLoader::Load("download"), + tr("Download this album"), this, + SLOT(Download())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("magnatune.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(ReloadDatabase())); - QAction* config_action = context_menu_->addAction(IconLoader::Load("configure"), tr("Configure Magnatune..."), this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("magnatune.com"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(ReloadDatabase())); + QAction* config_action = context_menu_->addAction( + IconLoader::Load("configure"), tr("Configure Magnatune..."), this, + SLOT(ShowConfig())); library_filter_ = new LibraryFilterWidget(0); library_filter_->SetSettingsGroup(kSettingsGroup); @@ -308,9 +313,9 @@ QUrl MagnatuneService::ModifyUrl(const QUrl& url) const { QUrl ret(url); ret.setScheme("http"); - switch(membership_) { + switch (membership_) { case Membership_None: - return ret; // Use the URL as-is + return ret; // Use the URL as-is // Otherwise add the hostname case Membership_Streaming: @@ -338,14 +343,16 @@ void MagnatuneService::ShowConfig() { } void MagnatuneService::Download() { - QModelIndex index = library_sort_model_->mapToSource(model()->current_index()); + QModelIndex index = + library_sort_model_->mapToSource(model()->current_index()); SongList songs = library_model_->GetChildSongs(index); MagnatuneDownloadDialog* dialog = new MagnatuneDownloadDialog(this, 0); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->Show(songs); - connect(dialog, SIGNAL(Finished(QStringList)), SIGNAL(DownloadFinished(QStringList))); + connect(dialog, SIGNAL(Finished(QStringList)), + SIGNAL(DownloadFinished(QStringList))); } QWidget* MagnatuneService::HeaderWidget() const { diff --git a/src/internet/magnatuneservice.h b/src/internet/magnatuneservice.h index bb70a6d94..4050d926c 100644 --- a/src/internet/magnatuneservice.h +++ b/src/internet/magnatuneservice.h @@ -86,7 +86,7 @@ class MagnatuneService : public InternetService { QUrl ModifyUrl(const QUrl& url) const; - signals: +signals: void DownloadFinished(const QStringList& albums); private slots: @@ -127,4 +127,4 @@ class MagnatuneService : public InternetService { QNetworkAccessManager* network_; }; -#endif // MAGNATUNESERVICE_H +#endif // MAGNATUNESERVICE_H diff --git a/src/internet/magnatunesettingspage.cpp b/src/internet/magnatunesettingspage.cpp index 58eafb07f..e87db600a 100644 --- a/src/internet/magnatunesettingspage.cpp +++ b/src/internet/magnatunesettingspage.cpp @@ -29,17 +29,18 @@ #include MagnatuneSettingsPage::MagnatuneSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - network_(new NetworkAccessManager(this)), - ui_(new Ui_MagnatuneSettingsPage), - logged_in_(false) -{ + : SettingsPage(dialog), + network_(new NetworkAccessManager(this)), + ui_(new Ui_MagnatuneSettingsPage), + logged_in_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/magnatune.png")); - connect(ui_->membership, SIGNAL(currentIndexChanged(int)), SLOT(MembershipChanged(int))); + connect(ui_->membership, SIGNAL(currentIndexChanged(int)), + SLOT(MembershipChanged(int))); - connect(network_, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), + connect(network_, + SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), SLOT(AuthenticationRequired(QNetworkReply*, QAuthenticator*))); connect(ui_->login, SIGNAL(clicked()), SLOT(Login())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(Login())); @@ -49,22 +50,21 @@ MagnatuneSettingsPage::MagnatuneSettingsPage(SettingsDialog* dialog) ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->login_container); - ui_->login_state->SetAccountTypeText(tr( - "You can listen to Magnatune songs for free without an account. " - "Purchasing a membership removes the messages at the end of each track.")); + ui_->login_state->SetAccountTypeText( + tr("You can listen to Magnatune songs for free without an account. " + "Purchasing a membership removes the messages at the end of each " + "track.")); } -MagnatuneSettingsPage::~MagnatuneSettingsPage() { - delete ui_; -} +MagnatuneSettingsPage::~MagnatuneSettingsPage() { delete ui_; } const char* kMagnatuneDownloadValidateUrl = "http://download.magnatune.com/"; const char* kMagnatuneStreamingValidateUrl = "http://streaming.magnatune.com/"; void MagnatuneSettingsPage::UpdateLoginState() { - ui_->login_state->SetLoggedIn(logged_in_ ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in_ ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in_); } @@ -72,9 +72,9 @@ void MagnatuneSettingsPage::Login() { MagnatuneService::MembershipType type = MagnatuneService::MembershipType(ui_->membership->currentIndex()); - QUrl url(type == MagnatuneService::Membership_Streaming ? - kMagnatuneStreamingValidateUrl : - kMagnatuneDownloadValidateUrl, + QUrl url(type == MagnatuneService::Membership_Streaming + ? kMagnatuneStreamingValidateUrl + : kMagnatuneDownloadValidateUrl, QUrl::StrictMode); url.setUserName(ui_->username->text()); @@ -109,8 +109,8 @@ void MagnatuneSettingsPage::LoginFinished() { reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200; if (!logged_in_) { - QMessageBox::warning( - this, tr("Authentication failed"), tr("Your Magnatune credentials were incorrect")); + QMessageBox::warning(this, tr("Authentication failed"), + tr("Your Magnatune credentials were incorrect")); } else { Save(); } @@ -118,8 +118,8 @@ void MagnatuneSettingsPage::LoginFinished() { UpdateLoginState(); } -void MagnatuneSettingsPage::AuthenticationRequired( - QNetworkReply* reply, QAuthenticator*) { +void MagnatuneSettingsPage::AuthenticationRequired(QNetworkReply* reply, + QAuthenticator*) { // We send the authentication with the first request so this means we got // a 401 Authentication Required, ie. the credentials are incorrect. reply->abort(); @@ -129,13 +129,15 @@ void MagnatuneSettingsPage::Load() { QSettings s; s.beginGroup(MagnatuneService::kSettingsGroup); - ui_->membership->setCurrentIndex(s.value("membership", MagnatuneService::Membership_None).toInt()); + ui_->membership->setCurrentIndex( + s.value("membership", MagnatuneService::Membership_None).toInt()); ui_->username->setText(s.value("username").toString()); ui_->password->setText(s.value("password").toString()); - ui_->format->setCurrentIndex(s.value("format", MagnatuneService::Format_Ogg).toInt()); - logged_in_ = s.value("logged_in", - !ui_->username->text().isEmpty() && - !ui_->password->text().isEmpty()).toBool(); + ui_->format->setCurrentIndex( + s.value("format", MagnatuneService::Format_Ogg).toInt()); + logged_in_ = + s.value("logged_in", !ui_->username->text().isEmpty() && + !ui_->password->text().isEmpty()).toBool(); UpdateLoginState(); } diff --git a/src/internet/magnatunesettingspage.h b/src/internet/magnatunesettingspage.h index 352996d1d..e9231ee8e 100644 --- a/src/internet/magnatunesettingspage.h +++ b/src/internet/magnatunesettingspage.h @@ -28,28 +28,28 @@ class Ui_MagnatuneSettingsPage; class MagnatuneSettingsPage : public SettingsPage { Q_OBJECT -public: + public: MagnatuneSettingsPage(SettingsDialog* dialog); ~MagnatuneSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void Logout(); void MembershipChanged(int value); void LoginFinished(); void AuthenticationRequired(QNetworkReply* reply, QAuthenticator* auth); -private: + private: void UpdateLoginState(); -private: + private: NetworkAccessManager* network_; Ui_MagnatuneSettingsPage* ui_; bool logged_in_; }; -#endif // MAGNATUNESETTINGSPAGE_H +#endif // MAGNATUNESETTINGSPAGE_H diff --git a/src/internet/magnatuneurlhandler.cpp b/src/internet/magnatuneurlhandler.cpp index 86785557a..c98ca552b 100644 --- a/src/internet/magnatuneurlhandler.cpp +++ b/src/internet/magnatuneurlhandler.cpp @@ -18,10 +18,9 @@ #include "magnatuneservice.h" #include "magnatuneurlhandler.h" -MagnatuneUrlHandler::MagnatuneUrlHandler(MagnatuneService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} +MagnatuneUrlHandler::MagnatuneUrlHandler(MagnatuneService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult MagnatuneUrlHandler::StartLoading(const QUrl& url) { return LoadResult(url, LoadResult::TrackAvailable, service_->ModifyUrl(url)); diff --git a/src/internet/magnatuneurlhandler.h b/src/internet/magnatuneurlhandler.h index 0d00fc196..e971c05fb 100644 --- a/src/internet/magnatuneurlhandler.h +++ b/src/internet/magnatuneurlhandler.h @@ -22,17 +22,16 @@ class MagnatuneService; - class MagnatuneUrlHandler : public UrlHandler { -public: + public: MagnatuneUrlHandler(MagnatuneService* service, QObject* parent); QString scheme() const { return "magnatune"; } QIcon icon() const { return QIcon(":providers/magnatune.png"); } LoadResult StartLoading(const QUrl& url); -private: + private: MagnatuneService* service_; }; -#endif // MAGNATUNEURLHANDLER_H +#endif // MAGNATUNEURLHANDLER_H diff --git a/src/internet/oauthenticator.cpp b/src/internet/oauthenticator.cpp index e44daee37..f92338890 100644 --- a/src/internet/oauthenticator.cpp +++ b/src/internet/oauthenticator.cpp @@ -10,21 +10,17 @@ #include "core/logging.h" #include "internet/localredirectserver.h" -OAuthenticator::OAuthenticator( - const QString& client_id, - const QString& client_secret, - RedirectStyle redirect, - QObject* parent) - : QObject(parent), - client_id_(client_id), - client_secret_(client_secret), - redirect_style_(redirect) { -} +OAuthenticator::OAuthenticator(const QString& client_id, + const QString& client_secret, + RedirectStyle redirect, QObject* parent) + : QObject(parent), + client_id_(client_id), + client_secret_(client_secret), + redirect_style_(redirect) {} -void OAuthenticator::StartAuthorisation( - const QString& oauth_endpoint, - const QString& token_endpoint, - const QString& scope) { +void OAuthenticator::StartAuthorisation(const QString& oauth_endpoint, + const QString& token_endpoint, + const QString& scope) { token_endpoint_ = QUrl(token_endpoint); LocalRedirectServer* server = new LocalRedirectServer(this); server->Listen(); @@ -35,28 +31,26 @@ void OAuthenticator::StartAuthorisation( QUrl redirect_url; if (redirect_style_ == RedirectStyle::REMOTE) { const int port = server->url().port(); - redirect_url = QUrl( - QString("https://clementine-data.appspot.com/skydrive?port=%1").arg(port)); + redirect_url = + QUrl(QString("https://clementine-data.appspot.com/skydrive?port=%1") + .arg(port)); } else { redirect_url = server->url(); } url.addQueryItem("redirect_uri", redirect_url.toString()); url.addQueryItem("scope", scope); - NewClosure(server, SIGNAL(Finished()), - this, &OAuthenticator::RedirectArrived, server, redirect_url); + NewClosure(server, SIGNAL(Finished()), this, &OAuthenticator::RedirectArrived, + server, redirect_url); QDesktopServices::openUrl(url); } -void OAuthenticator::RedirectArrived( - LocalRedirectServer* server, QUrl url) { +void OAuthenticator::RedirectArrived(LocalRedirectServer* server, QUrl url) { server->deleteLater(); QUrl request_url = server->request_url(); qLog(Debug) << Q_FUNC_INFO << request_url; - RequestAccessToken( - request_url.queryItemValue("code").toUtf8(), - url); + RequestAccessToken(request_url.queryItemValue("code").toUtf8(), url); } QByteArray OAuthenticator::ParseHttpRequest(const QByteArray& request) const { @@ -68,20 +62,21 @@ QByteArray OAuthenticator::ParseHttpRequest(const QByteArray& request) const { return code; } -void OAuthenticator::RequestAccessToken(const QByteArray& code, const QUrl& url) { +void OAuthenticator::RequestAccessToken(const QByteArray& code, + const QUrl& url) { typedef QPair Param; QList parameters; - parameters << Param("code", code) - << Param("client_id", client_id_) + parameters << Param("code", code) << Param("client_id", client_id_) << Param("client_secret", client_secret_) << Param("grant_type", "authorization_code") - // Even though we don't use this URI anymore, it must match the - // original one. + // Even though we don't use this URI anymore, it must match the + // original one. << Param("redirect_uri", url.toString()); QStringList params; - foreach (const Param& p, parameters) { - params.append(QString("%1=%2").arg(p.first, QString(QUrl::toPercentEncoding(p.second)))); + foreach(const Param & p, parameters) { + params.append(QString("%1=%2").arg( + p.first, QString(QUrl::toPercentEncoding(p.second)))); } QString post_data = params.join("&"); qLog(Debug) << post_data; @@ -99,8 +94,7 @@ void OAuthenticator::FetchAccessTokenFinished(QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) != 200) { - qLog(Error) << "Failed to get access token" - << reply->readAll(); + qLog(Error) << "Failed to get access token" << reply->readAll(); return; } @@ -121,9 +115,8 @@ void OAuthenticator::FetchAccessTokenFinished(QNetworkReply* reply) { emit Finished(); } -void OAuthenticator::RefreshAuthorisation( - const QString& token_endpoint, - const QString& refresh_token) { +void OAuthenticator::RefreshAuthorisation(const QString& token_endpoint, + const QString& refresh_token) { refresh_token_ = refresh_token; QUrl url(token_endpoint); @@ -135,8 +128,9 @@ void OAuthenticator::RefreshAuthorisation( << Param("grant_type", "refresh_token") << Param("refresh_token", refresh_token); QStringList params; - foreach (const Param& p, parameters) { - params.append(QString("%1=%2").arg(p.first, QString(QUrl::toPercentEncoding(p.second)))); + foreach(const Param & p, parameters) { + params.append(QString("%1=%2").arg( + p.first, QString(QUrl::toPercentEncoding(p.second)))); } QString post_data = params.join("&"); diff --git a/src/internet/oauthenticator.h b/src/internet/oauthenticator.h index 8c229bcd5..0e5cbbd3e 100644 --- a/src/internet/oauthenticator.h +++ b/src/internet/oauthenticator.h @@ -20,18 +20,12 @@ class OAuthenticator : public QObject { REMOTE = 1, }; - OAuthenticator( - const QString& client_id, - const QString& client_secret, - RedirectStyle redirect, - QObject* parent = 0); - void StartAuthorisation( - const QString& oauth_endpoint, - const QString& token_endpoint, - const QString& scope); - void RefreshAuthorisation( - const QString& token_endpoint, - const QString& refresh_token); + OAuthenticator(const QString& client_id, const QString& client_secret, + RedirectStyle redirect, QObject* parent = 0); + void StartAuthorisation(const QString& oauth_endpoint, + const QString& token_endpoint, const QString& scope); + void RefreshAuthorisation(const QString& token_endpoint, + const QString& refresh_token); // Token to use now. const QString& access_token() const { return access_token_; } @@ -41,7 +35,7 @@ class OAuthenticator : public QObject { const QDateTime& expiry_time() const { return expiry_time_; } - signals: +signals: void Finished(); private slots: diff --git a/src/internet/savedradio.cpp b/src/internet/savedradio.cpp index 478250c9b..ce5d409b5 100644 --- a/src/internet/savedradio.cpp +++ b/src/internet/savedradio.cpp @@ -31,18 +31,16 @@ const char* SavedRadio::kServiceName = "SavedRadio"; const char* SavedRadio::kSettingsGroup = "SavedRadio"; SavedRadio::SavedRadio(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - context_menu_(nullptr), - root_(nullptr) -{ + : InternetService(kServiceName, app, parent, parent), + context_menu_(nullptr), + root_(nullptr) { LoadStreams(); - app_->global_search()->AddProvider(new SavedRadioSearchProvider(this, app_, this)); + app_->global_search()->AddProvider( + new SavedRadioSearchProvider(this, app_, this)); } -SavedRadio::~SavedRadio() { - delete context_menu_; -} +SavedRadio::~SavedRadio() { delete context_menu_; } QStandardItem* SavedRadio::CreateRootItem() { root_ = new QStandardItem(IconLoader::Load("document-open-remote"), @@ -54,8 +52,8 @@ QStandardItem* SavedRadio::CreateRootItem() { void SavedRadio::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: - foreach (const Stream& stream, streams_) - AddStreamToList(stream, root_); + foreach(const Stream & stream, streams_) + AddStreamToList(stream, root_); break; @@ -70,9 +68,10 @@ void SavedRadio::LoadStreams() { s.beginGroup(kSettingsGroup); int count = s.beginReadArray("streams"); - for (int i=0 ; iaddActions(GetPlaylistActions()); - remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); - edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit..."), this, SLOT(Edit())); + remove_action_ = context_menu_->addAction( + IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); + edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), + tr("Edit..."), this, SLOT(Edit())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("document-open-remote"), tr("Add another stream..."), this, SIGNAL(ShowAddStreamDialog())); + context_menu_->addAction(IconLoader::Load("document-open-remote"), + tr("Add another stream..."), this, + SIGNAL(ShowAddStreamDialog())); } const bool is_root = @@ -117,15 +120,18 @@ void SavedRadio::ShowContextMenu(const QPoint& global_pos) { } void SavedRadio::Remove() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); + QStandardItem* context_item = + model()->itemFromIndex(model()->current_index()); - streams_.removeAll(Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); + streams_.removeAll( + Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); context_item->parent()->removeRow(context_item->row()); SaveStreams(); } void SavedRadio::Edit() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); + QStandardItem* context_item = + model()->itemFromIndex(model()->current_index()); if (!edit_dialog_) { edit_dialog_.reset(new AddStreamDialog); @@ -134,10 +140,10 @@ void SavedRadio::Edit() { edit_dialog_->set_name(context_item->text()); edit_dialog_->set_url(context_item->data(InternetModel::Role_Url).toUrl()); - if (edit_dialog_->exec() == QDialog::Rejected) - return; + if (edit_dialog_->exec() == QDialog::Rejected) return; - int i = streams_.indexOf(Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); + int i = streams_.indexOf( + Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); Stream* stream = &streams_[i]; stream->name_ = edit_dialog_->name(); stream->url_ = edit_dialog_->url(); @@ -149,15 +155,16 @@ void SavedRadio::Edit() { } void SavedRadio::AddStreamToList(const Stream& stream, QStandardItem* parent) { - QStandardItem* s = new QStandardItem(QIcon(":last.fm/icon_radio.png"), stream.name_); + QStandardItem* s = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), stream.name_); s->setData(stream.url_, InternetModel::Role_Url); - s->setData(InternetModel::PlayBehaviour_UseSongLoader, InternetModel::Role_PlayBehaviour); + s->setData(InternetModel::PlayBehaviour_UseSongLoader, + InternetModel::Role_PlayBehaviour); parent->appendRow(s); } -void SavedRadio::Add(const QUrl &url, const QString& name) { - if (streams_.contains(Stream(url))) - return; +void SavedRadio::Add(const QUrl& url, const QString& name) { + if (streams_.contains(Stream(url))) return; Stream stream(url, name); streams_ << stream; diff --git a/src/internet/savedradio.h b/src/internet/savedradio.h index 619aeec66..d96a5e524 100644 --- a/src/internet/savedradio.h +++ b/src/internet/savedradio.h @@ -33,16 +33,14 @@ class SavedRadio : public InternetService { SavedRadio(Application* app, InternetModel* parent); ~SavedRadio(); - enum ItemType { - Type_Stream = 2000, - }; + enum ItemType { Type_Stream = 2000, }; struct Stream { Stream(const QUrl& url, const QString& name = QString()) - : url_(url), name_(name) {} + : url_(url), name_(name) {} // For QList::contains - bool operator ==(const Stream& other) const { return url_ == other.url_; } + bool operator==(const Stream& other) const { return url_ == other.url_; } QUrl url_; QString name_; @@ -61,7 +59,7 @@ class SavedRadio : public InternetService { StreamList Streams() const { return streams_; } - signals: +signals: void ShowAddStreamDialog(); void StreamsChanged(); @@ -86,4 +84,4 @@ class SavedRadio : public InternetService { std::unique_ptr edit_dialog_; }; -#endif // SAVEDRADIO_H +#endif // SAVEDRADIO_H diff --git a/src/internet/searchboxwidget.cpp b/src/internet/searchboxwidget.cpp index 514f569ef..cf975c5a4 100644 --- a/src/internet/searchboxwidget.cpp +++ b/src/internet/searchboxwidget.cpp @@ -25,10 +25,9 @@ #include SearchBoxWidget::SearchBoxWidget(InternetService* service) - : service_(service), - ui_(new Ui_SearchBoxWidget), - menu_(new QMenu(tr("Display options"), this)) -{ + : service_(service), + ui_(new Ui_SearchBoxWidget), + menu_(new QMenu(tr("Display options"), this)) { ui_->setupUi(this); // Icons @@ -39,22 +38,22 @@ SearchBoxWidget::SearchBoxWidget(InternetService* service) ui_->options->setMenu(menu_); menu_->addAction(IconLoader::Load("configure"), - tr("Configure %1...").arg(service_->name()), - service_, SLOT(ShowConfig())); + tr("Configure %1...").arg(service_->name()), service_, + SLOT(ShowConfig())); - ui_->filter->setPlaceholderText(QString("Search on %1").arg(service_->name())); - connect(ui_->filter, SIGNAL(textChanged(QString)), SIGNAL(TextChanged(QString))); + ui_->filter->setPlaceholderText( + QString("Search on %1").arg(service_->name())); + connect(ui_->filter, SIGNAL(textChanged(QString)), + SIGNAL(TextChanged(QString))); did_you_mean_ = new DidYouMean(ui_->filter, this); - connect(did_you_mean_, SIGNAL(Accepted(QString)), - ui_->filter, SLOT(setText(QString))); + connect(did_you_mean_, SIGNAL(Accepted(QString)), ui_->filter, + SLOT(setText(QString))); } -SearchBoxWidget::~SearchBoxWidget() { - delete ui_; -} +SearchBoxWidget::~SearchBoxWidget() { delete ui_; } -void SearchBoxWidget::FocusOnFilter(QKeyEvent *event) { +void SearchBoxWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(Qt::OtherFocusReason); QApplication::sendEvent(ui_->filter, event); } diff --git a/src/internet/searchboxwidget.h b/src/internet/searchboxwidget.h index 9ba3c6b3b..7752c4530 100644 --- a/src/internet/searchboxwidget.h +++ b/src/internet/searchboxwidget.h @@ -30,7 +30,7 @@ class QMenu; class SearchBoxWidget : public QWidget { Q_OBJECT -public: + public: SearchBoxWidget(InternetService* service); ~SearchBoxWidget(); @@ -39,17 +39,17 @@ public: signals: void TextChanged(const QString& text); -public slots: + public slots: void FocusOnFilter(QKeyEvent* e); -protected: + protected: void keyReleaseEvent(QKeyEvent* e); -private: + private: InternetService* service_; Ui_SearchBoxWidget* ui_; QMenu* menu_; DidYouMean* did_you_mean_; }; -#endif // SEARCHBOXWIDGET_H +#endif // SEARCHBOXWIDGET_H diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index e3023f5c1..87431fd0c 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -30,18 +30,14 @@ static const char* kSkydriveBase = "https://apis.live.net/v5.0/"; } // namespace -SkydriveService::SkydriveService( - Application* app, - InternetModel* parent) - : CloudFileService( - app, parent, kServiceName, kServiceId, - QIcon(":providers/skydrive.png"), SettingsDialog::Page_Skydrive) { +SkydriveService::SkydriveService(Application* app, InternetModel* parent) + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":providers/skydrive.png"), + SettingsDialog::Page_Skydrive) { app->player()->RegisterUrlHandler(new SkydriveUrlHandler(this, this)); } -bool SkydriveService::has_credentials() const { - return true; -} +bool SkydriveService::has_credentials() const { return true; } void SkydriveService::Connect() { OAuthenticator* oauth = new OAuthenticator( @@ -49,17 +45,14 @@ void SkydriveService::Connect() { QSettings s; s.beginGroup(kSettingsGroup); if (s.contains("refresh_token")) { - oauth->RefreshAuthorisation( - kOAuthTokenEndpoint, s.value("refresh_token").toString()); + oauth->RefreshAuthorisation(kOAuthTokenEndpoint, + s.value("refresh_token").toString()); } else { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - kOAuthScope); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, kOAuthScope); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(OAuthenticator*)), oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(OAuthenticator*)), oauth); } void SkydriveService::ConnectFinished(OAuthenticator* oauth) { @@ -77,13 +70,13 @@ void SkydriveService::ConnectFinished(OAuthenticator* oauth) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); } void SkydriveService::AddAuthorizationHeader(QNetworkRequest* request) { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } void SkydriveService::FetchUserInfoFinished(QNetworkReply* reply) { @@ -111,8 +104,8 @@ void SkydriveService::ListFiles(const QString& folder) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(ListFilesFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ListFilesFinished(QNetworkReply*)), reply); } void SkydriveService::ListFilesFinished(QNetworkReply* reply) { @@ -122,7 +115,7 @@ void SkydriveService::ListFilesFinished(QNetworkReply* reply) { qLog(Debug) << response; QVariantList files = response["data"].toList(); - foreach (const QVariant& f, files) { + foreach(const QVariant & f, files) { QVariantMap file = f.toMap(); if (file["type"].toString() == "audio") { QString mime_type = GuessMimeTypeForFile(file["name"].toString()); @@ -142,11 +135,7 @@ void SkydriveService::ListFilesFinished(QNetworkReply* reply) { // HTTPS appears to be broken somehow between Qt & Skydrive downloads. // Fortunately, just changing the scheme to HTTP works. download_url.setScheme("http"); - MaybeAddFileToDatabase( - song, - mime_type, - download_url, - QString::null); + MaybeAddFileToDatabase(song, mime_type, download_url, QString::null); } } } diff --git a/src/internet/skydriveservice.h b/src/internet/skydriveservice.h index 2a6ede077..330abdba6 100644 --- a/src/internet/skydriveservice.h +++ b/src/internet/skydriveservice.h @@ -13,9 +13,7 @@ class SkydriveService : public CloudFileService { Q_OBJECT public: - SkydriveService( - Application* app, - InternetModel* parent); + SkydriveService(Application* app, InternetModel* parent); QUrl GetStreamingUrlFromSongId(const QString& song_id); protected: @@ -28,7 +26,7 @@ class SkydriveService : public CloudFileService { void FetchUserInfoFinished(QNetworkReply* reply); void ListFilesFinished(QNetworkReply* reply); - signals: +signals: void Connected(); private: diff --git a/src/internet/skydriveurlhandler.cpp b/src/internet/skydriveurlhandler.cpp index ec71ed4aa..ae00ed3d9 100644 --- a/src/internet/skydriveurlhandler.cpp +++ b/src/internet/skydriveurlhandler.cpp @@ -2,12 +2,9 @@ #include "skydriveservice.h" -SkydriveUrlHandler::SkydriveUrlHandler( - SkydriveService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +SkydriveUrlHandler::SkydriveUrlHandler(SkydriveService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult SkydriveUrlHandler::StartLoading(const QUrl& url) { QString file_id(url.path()); diff --git a/src/internet/somafmservice.cpp b/src/internet/somafmservice.cpp index 899866ac8..f29377ba1 100644 --- a/src/internet/somafmservice.cpp +++ b/src/internet/somafmservice.cpp @@ -38,43 +38,39 @@ #include const int SomaFMServiceBase::kStreamsCacheDurationSecs = - 60 * 60 * 24 * 28; // 4 weeks + 60 * 60 * 24 * 28; // 4 weeks -bool operator <(const SomaFMServiceBase::Stream& a, - const SomaFMServiceBase::Stream& b) { +bool operator<(const SomaFMServiceBase::Stream& a, + const SomaFMServiceBase::Stream& b) { return a.title_.compare(b.title_, Qt::CaseInsensitive) < 0; } -SomaFMServiceBase::SomaFMServiceBase( - Application* app, - InternetModel* parent, - const QString& name, - const QUrl& channel_list_url, - const QUrl& homepage_url, - const QUrl& donate_page_url, - const QIcon& icon) - : InternetService(name, app, parent, parent), - url_scheme_(name.toLower().remove(' ')), - url_handler_(new SomaFMUrlHandler(app, this, this)), - root_(nullptr), - context_menu_(nullptr), - network_(new NetworkAccessManager(this)), - streams_(name, "streams", kStreamsCacheDurationSecs), - name_(name), - channel_list_url_(channel_list_url), - homepage_url_(homepage_url), - donate_page_url_(donate_page_url), - icon_(icon) -{ +SomaFMServiceBase::SomaFMServiceBase(Application* app, InternetModel* parent, + const QString& name, + const QUrl& channel_list_url, + const QUrl& homepage_url, + const QUrl& donate_page_url, + const QIcon& icon) + : InternetService(name, app, parent, parent), + url_scheme_(name.toLower().remove(' ')), + url_handler_(new SomaFMUrlHandler(app, this, this)), + root_(nullptr), + context_menu_(nullptr), + network_(new NetworkAccessManager(this)), + streams_(name, "streams", kStreamsCacheDurationSecs), + name_(name), + channel_list_url_(channel_list_url), + homepage_url_(homepage_url), + donate_page_url_(donate_page_url), + icon_(icon) { ReloadSettings(); app_->player()->RegisterUrlHandler(url_handler_); - app_->global_search()->AddProvider(new SomaFMSearchProvider(this, app_, this)); + app_->global_search()->AddProvider( + new SomaFMSearchProvider(this, app_, this)); } -SomaFMServiceBase::~SomaFMServiceBase() { - delete context_menu_; -} +SomaFMServiceBase::~SomaFMServiceBase() { delete context_menu_; } QStandardItem* SomaFMServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, name_); @@ -97,13 +93,18 @@ void SomaFMServiceBase::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg(homepage_url_.host()), this, SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg(homepage_url_.host()), + this, SLOT(Homepage())); if (!donate_page_url_.isEmpty()) { - context_menu_->addAction(IconLoader::Load("download"), tr("Donate"), this, SLOT(Donate())); + context_menu_->addAction(IconLoader::Load("download"), tr("Donate"), this, + SLOT(Donate())); } - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh channels"), this, SLOT(ForceRefreshStreams())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh channels"), this, + SLOT(ForceRefreshStreams())); } context_menu_->popup(global_pos); @@ -113,12 +114,12 @@ void SomaFMServiceBase::ForceRefreshStreams() { QNetworkReply* reply = network_->get(QNetworkRequest(channel_list_url_)); int task_id = app_->task_manager()->StartTask(tr("Getting channels")); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RefreshStreamsFinished(QNetworkReply*,int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RefreshStreamsFinished(QNetworkReply*, int)), reply, task_id); } -void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id) { +void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -144,8 +145,7 @@ void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id streams_.Sort(); // Only update the item's children if it's already been populated - if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) - PopulateStreams(); + if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) PopulateStreams(); emit StreamsChanged(); } @@ -166,7 +166,8 @@ void SomaFMServiceBase::ReadChannel(QXmlStreamReader& reader, StreamList* ret) { stream.title_ = reader.readElementText(); } else if (reader.name() == "dj") { stream.dj_ = reader.readElementText(); - } else if (reader.name() == "fastpls" && reader.attributes().value("format") == "mp3") { + } else if (reader.name() == "fastpls" && + reader.attributes().value("format") == "mp3") { QUrl url(reader.readElementText()); url.setScheme(url_handler_->scheme()); @@ -196,9 +197,7 @@ Song SomaFMServiceBase::Stream::ToSong(const QString& prefix) const { return ret; } -void SomaFMServiceBase::Homepage() { - QDesktopServices::openUrl(homepage_url_); -} +void SomaFMServiceBase::Homepage() { QDesktopServices::openUrl(homepage_url_); } void SomaFMServiceBase::Donate() { QDesktopServices::openUrl(donate_page_url_); @@ -210,7 +209,8 @@ PlaylistItem::Options SomaFMServiceBase::playlistitem_options() const { SomaFMServiceBase::StreamList SomaFMServiceBase::Streams() { if (IsStreamListStale()) { - metaObject()->invokeMethod(this, "ForceRefreshStreams", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "ForceRefreshStreams", + Qt::QueuedConnection); } return streams_; } @@ -224,30 +224,29 @@ void SomaFMServiceBase::RefreshStreams() { } void SomaFMServiceBase::PopulateStreams() { - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); - foreach (const Stream& stream, streams_) { - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_radio.png"), QString()); + foreach(const Stream & stream, streams_) { + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), QString()); item->setText(stream.title_); - item->setData(QVariant::fromValue(stream.ToSong(name_)), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(QVariant::fromValue(stream.ToSong(name_)), + InternetModel::Role_SongMetadata); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); root_->appendRow(item); } } -QDataStream& operator<<(QDataStream& out, const SomaFMServiceBase::Stream& stream) { - out << stream.title_ - << stream.dj_ - << stream.url_; +QDataStream& operator<<(QDataStream& out, + const SomaFMServiceBase::Stream& stream) { + out << stream.title_ << stream.dj_ << stream.url_; return out; } QDataStream& operator>>(QDataStream& in, SomaFMServiceBase::Stream& stream) { - in >> stream.title_ - >> stream.dj_ - >> stream.url_; + in >> stream.title_ >> stream.dj_ >> stream.url_; return in; } @@ -256,26 +255,14 @@ void SomaFMServiceBase::ReloadSettings() { streams_.Sort(); } - SomaFMService::SomaFMService(Application* app, InternetModel* parent) - : SomaFMServiceBase( - app, - parent, - "SomaFM", - QUrl("http://somafm.com/channels.xml"), - QUrl("http://somafm.com"), - QUrl(), - QIcon(":providers/somafm.png")) { -} - + : SomaFMServiceBase( + app, parent, "SomaFM", QUrl("http://somafm.com/channels.xml"), + QUrl("http://somafm.com"), QUrl(), QIcon(":providers/somafm.png")) {} RadioGFMService::RadioGFMService(Application* app, InternetModel* parent) - : SomaFMServiceBase( - app, - parent, - "Radio GFM", - QUrl("http://streams.radio-gfm.net/channels.xml"), - QUrl("http://www.radio-gfm.net"), - QUrl("http://www.radio-gfm.net/spenden"), - QIcon(":providers/radiogfm.png")) { -} + : SomaFMServiceBase(app, parent, "Radio GFM", + QUrl("http://streams.radio-gfm.net/channels.xml"), + QUrl("http://www.radio-gfm.net"), + QUrl("http://www.radio-gfm.net/spenden"), + QIcon(":providers/radiogfm.png")) {} diff --git a/src/internet/somafmservice.h b/src/internet/somafmservice.h index 7d14eb50b..9c34e1c89 100644 --- a/src/internet/somafmservice.h +++ b/src/internet/somafmservice.h @@ -32,20 +32,14 @@ class QMenu; class SomaFMServiceBase : public InternetService { Q_OBJECT -public: - SomaFMServiceBase( - Application* app, - InternetModel* parent, - const QString& name, - const QUrl& channel_list_url, - const QUrl& homepage_url, - const QUrl& donate_page_url, - const QIcon& icon); + public: + SomaFMServiceBase(Application* app, InternetModel* parent, + const QString& name, const QUrl& channel_list_url, + const QUrl& homepage_url, const QUrl& donate_page_url, + const QIcon& icon); ~SomaFMServiceBase(); - enum ItemType { - Type_Stream = 2000, - }; + enum ItemType { Type_Stream = 2000, }; struct Stream { QString title_; @@ -76,7 +70,7 @@ public: signals: void StreamsChanged(); -private slots: + private slots: void ForceRefreshStreams(); void RefreshStreams(); void RefreshStreamsFinished(QNetworkReply* reply, int task_id); @@ -84,11 +78,11 @@ private slots: void Homepage(); void Donate(); -private: + private: void ReadChannel(QXmlStreamReader& reader, StreamList* ret); void PopulateStreams(); -private: + private: const QString url_scheme_; SomaFMUrlHandler* url_handler_; @@ -120,4 +114,4 @@ QDataStream& operator<<(QDataStream& out, const SomaFMService::Stream& stream); QDataStream& operator>>(QDataStream& in, SomaFMService::Stream& stream); Q_DECLARE_METATYPE(SomaFMService::Stream) -#endif // SOMAFMSERVICE_H +#endif // SOMAFMSERVICE_H diff --git a/src/internet/somafmurlhandler.cpp b/src/internet/somafmurlhandler.cpp index 062ff45a1..2e4f1cba7 100644 --- a/src/internet/somafmurlhandler.cpp +++ b/src/internet/somafmurlhandler.cpp @@ -28,30 +28,21 @@ #include #include -SomaFMUrlHandler::SomaFMUrlHandler(Application* app, - SomaFMServiceBase* service, +SomaFMUrlHandler::SomaFMUrlHandler(Application* app, SomaFMServiceBase* service, QObject* parent) - : UrlHandler(parent), - app_(app), - service_(service), - task_id_(0) -{ -} + : UrlHandler(parent), app_(app), service_(service), task_id_(0) {} -QString SomaFMUrlHandler::scheme() const { - return service_->url_scheme(); -} +QString SomaFMUrlHandler::scheme() const { return service_->url_scheme(); } -QIcon SomaFMUrlHandler::icon() const { - return service_->icon(); -} +QIcon SomaFMUrlHandler::icon() const { return service_->icon(); } UrlHandler::LoadResult SomaFMUrlHandler::StartLoading(const QUrl& url) { QUrl playlist_url = url; playlist_url.setScheme("http"); // Load the playlist - QNetworkReply* reply = service_->network()->get(QNetworkRequest(playlist_url)); + QNetworkReply* reply = + service_->network()->get(QNetworkRequest(playlist_url)); connect(reply, SIGNAL(finished()), SLOT(LoadPlaylistFinished())); if (!task_id_) @@ -88,6 +79,6 @@ void SomaFMUrlHandler::LoadPlaylistFinished() { return; } - emit AsyncLoadComplete(LoadResult(original_url, LoadResult::TrackAvailable, - songs[0].url())); + emit AsyncLoadComplete( + LoadResult(original_url, LoadResult::TrackAvailable, songs[0].url())); } diff --git a/src/internet/somafmurlhandler.h b/src/internet/somafmurlhandler.h index 1e4ea0121..e2919393e 100644 --- a/src/internet/somafmurlhandler.h +++ b/src/internet/somafmurlhandler.h @@ -23,28 +23,25 @@ class Application; class SomaFMServiceBase; - class SomaFMUrlHandler : public UrlHandler { Q_OBJECT -public: - SomaFMUrlHandler( - Application* app, - SomaFMServiceBase* service, - QObject* parent); + public: + SomaFMUrlHandler(Application* app, SomaFMServiceBase* service, + QObject* parent); QString scheme() const; QIcon icon() const; LoadResult StartLoading(const QUrl& url); -private slots: + private slots: void LoadPlaylistFinished(); -private: + private: Application* app_; SomaFMServiceBase* service_; int task_id_; }; -#endif // SOMAFMURLHANDLER_H +#endif // SOMAFMURLHANDLER_H diff --git a/src/internet/soundcloudservice.cpp b/src/internet/soundcloudservice.cpp index 8ebf2379b..1a4a3f79b 100644 --- a/src/internet/soundcloudservice.cpp +++ b/src/internet/soundcloudservice.cpp @@ -42,7 +42,8 @@ #include "globalsearch/soundcloudsearchprovider.h" #include "ui/iconloader.h" -const char* SoundCloudService::kApiClientId = "2add0f709fcfae1fd7a198ec7573d2d4"; +const char* SoundCloudService::kApiClientId = + "2add0f709fcfae1fd7a198ec7573d2d4"; const char* SoundCloudService::kServiceName = "SoundCloud"; const char* SoundCloudService::kSettingsGroup = "SoundCloud"; @@ -55,36 +56,35 @@ const int SoundCloudService::kSongSimpleSearchLimit = 10; typedef QPair Param; -SoundCloudService::SoundCloudService(Application* app, InternetModel *parent) - : InternetService(kServiceName, app, parent, parent), - root_(nullptr), - search_(nullptr), - network_(new NetworkAccessManager(this)), - context_menu_(nullptr), - search_box_(new SearchBoxWidget(this)), - search_delay_(new QTimer(this)), - next_pending_search_id_(0) { +SoundCloudService::SoundCloudService(Application* app, InternetModel* parent) + : InternetService(kServiceName, app, parent, parent), + root_(nullptr), + search_(nullptr), + network_(new NetworkAccessManager(this)), + context_menu_(nullptr), + search_box_(new SearchBoxWidget(this)), + search_delay_(new QTimer(this)), + next_pending_search_id_(0) { search_delay_->setInterval(kSearchDelayMsec); search_delay_->setSingleShot(true); connect(search_delay_, SIGNAL(timeout()), SLOT(DoSearch())); - SoundCloudSearchProvider* search_provider = new SoundCloudSearchProvider(app_, this); + SoundCloudSearchProvider* search_provider = + new SoundCloudSearchProvider(app_, this); search_provider->Init(this); app_->global_search()->AddProvider(search_provider); connect(search_box_, SIGNAL(TextChanged(QString)), SLOT(Search(QString))); } - -SoundCloudService::~SoundCloudService() { -} +SoundCloudService::~SoundCloudService() {} QStandardItem* SoundCloudService::CreateRootItem() { root_ = new QStandardItem(QIcon(":providers/soundcloud.png"), kServiceName); root_->setData(true, InternetModel::Role_CanLazyLoad); root_->setData(InternetModel::PlayBehaviour_DoubleClickAction, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); return root_; } @@ -100,18 +100,17 @@ void SoundCloudService::LazyPopulate(QStandardItem* item) { } void SoundCloudService::EnsureItemsCreated() { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); search_->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); root_->appendRow(search_); } -QWidget* SoundCloudService::HeaderWidget() const { - return search_box_; -} +QWidget* SoundCloudService::HeaderWidget() const { return search_box_; } void SoundCloudService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); @@ -140,12 +139,11 @@ void SoundCloudService::DoSearch() { ClearSearchResults(); QList parameters; - parameters << Param("q", pending_search_); + parameters << Param("q", pending_search_); QNetworkReply* reply = CreateRequest("tracks", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchFinished(QNetworkReply*, int)), reply, id); } void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { @@ -153,7 +151,7 @@ void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { SongList songs = ExtractSongs(ExtractResult(reply)); // Fill results list - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } @@ -163,18 +161,16 @@ void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { } void SoundCloudService::ClearSearchResults() { - if (search_) - search_->removeRows(0, search_->rowCount()); + if (search_) search_->removeRows(0, search_->rowCount()); } int SoundCloudService::SimpleSearch(const QString& text) { QList parameters; - parameters << Param("q", text); + parameters << Param("q", text); QNetworkReply* reply = CreateRequest("tracks", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SimpleSearchFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SimpleSearchFinished(QNetworkReply*, int)), reply, id); return id; } @@ -186,7 +182,7 @@ void SoundCloudService::SimpleSearchFinished(QNetworkReply* reply, int id) { } void SoundCloudService::EnsureMenuCreated() { - if(!context_menu_) { + if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); @@ -198,20 +194,19 @@ void SoundCloudService::EnsureMenuCreated() { void SoundCloudService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); - + context_menu_->popup(global_pos); } -QNetworkReply* SoundCloudService::CreateRequest( - const QString& ressource_name, - const QList& params) { +QNetworkReply* SoundCloudService::CreateRequest(const QString& ressource_name, + const QList& params) { QUrl url(kUrl); url.setPath(ressource_name); url.addQueryItem("client_id", kApiClientId); - foreach(const Param& param, params) { + foreach(const Param & param, params) { url.addQueryItem(param.first, param.second); } @@ -219,7 +214,7 @@ QNetworkReply* SoundCloudService::CreateRequest( QNetworkRequest req(url); req.setRawHeader("Accept", "application/json"); - QNetworkReply *reply = network_->get(req); + QNetworkReply* reply = network_->get(req); return reply; } @@ -237,7 +232,7 @@ SongList SoundCloudService::ExtractSongs(const QVariant& result) { SongList songs; QVariantList q_variant_list = result.toList(); - foreach(const QVariant& q, q_variant_list) { + foreach(const QVariant & q, q_variant_list) { Song song = ExtractSong(q.toMap()); if (song.is_valid()) { songs << song; diff --git a/src/internet/soundcloudservice.h b/src/internet/soundcloudservice.h index c51f45482..60ddd6e77 100644 --- a/src/internet/soundcloudservice.h +++ b/src/internet/soundcloudservice.h @@ -30,15 +30,15 @@ class QNetworkReply; class SoundCloudService : public InternetService { Q_OBJECT public: - SoundCloudService(Application* app, InternetModel *parent); + SoundCloudService(Application* app, InternetModel* parent); ~SoundCloudService(); // Internet Service methods QStandardItem* CreateRootItem(); - void LazyPopulate(QStandardItem *parent); + void LazyPopulate(QStandardItem* parent); // TODO - //QList playlistitem_actions(const Song& song); + // QList playlistitem_actions(const Song& song); void ShowContextMenu(const QPoint& global_pos); QWidget* HeaderWidget() const; @@ -47,7 +47,7 @@ class SoundCloudService : public InternetService { static const char* kServiceName; static const char* kSettingsGroup; - signals: +signals: void SimpleSearchResults(int id, SongList songs); private slots: @@ -93,5 +93,4 @@ class SoundCloudService : public InternetService { static const char* kApiClientId; }; - -#endif // SOUNDCLOUDSERVICE_H +#endif // SOUNDCLOUDSERVICE_H diff --git a/src/internet/spotifyblobdownloader.cpp b/src/internet/spotifyblobdownloader.cpp index 5bd12a057..b19e3a17b 100644 --- a/src/internet/spotifyblobdownloader.cpp +++ b/src/internet/spotifyblobdownloader.cpp @@ -30,24 +30,24 @@ #include #ifdef HAVE_QCA - #include -#endif // HAVE_QCA +#include +#endif // HAVE_QCA #ifdef Q_OS_UNIX - #include +#include #endif const char* SpotifyBlobDownloader::kSignatureSuffix = ".sha1"; - -SpotifyBlobDownloader::SpotifyBlobDownloader( - const QString& version, const QString& path, QObject* parent) - : QObject(parent), - version_(version), - path_(path), - network_(new NetworkAccessManager(this)), - progress_(new QProgressDialog(tr("Downloading Spotify plugin"), tr("Cancel"), 0, 0)) -{ +SpotifyBlobDownloader::SpotifyBlobDownloader(const QString& version, + const QString& path, + QObject* parent) + : QObject(parent), + version_(version), + path_(path), + network_(new NetworkAccessManager(this)), + progress_(new QProgressDialog(tr("Downloading Spotify plugin"), + tr("Cancel"), 0, 0)) { progress_->setWindowTitle(QCoreApplication::applicationName()); connect(progress_, SIGNAL(canceled()), SLOT(Cancel())); } @@ -60,9 +60,10 @@ SpotifyBlobDownloader::~SpotifyBlobDownloader() { } bool SpotifyBlobDownloader::Prompt() { - QMessageBox::StandardButton ret = QMessageBox::question(nullptr, - tr("Spotify plugin not installed"), - tr("An additional plugin is required to use Spotify in Clementine. Would you like to download and install it now?"), + QMessageBox::StandardButton ret = QMessageBox::question( + nullptr, tr("Spotify plugin not installed"), + tr("An additional plugin is required to use Spotify in Clementine. " + "Would you like to download and install it now?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); return ret == QMessageBox::Yes; } @@ -71,19 +72,21 @@ void SpotifyBlobDownloader::Start() { qDeleteAll(replies_); replies_.clear(); - const QStringList filenames = QStringList() - << "blob" - << "blob" + QString(kSignatureSuffix) - << "libspotify.so.12.1.45" - << "libspotify.so.12.1.45" + QString(kSignatureSuffix); + const QStringList filenames = + QStringList() << "blob" + << "blob" + QString(kSignatureSuffix) + << "libspotify.so.12.1.45" + << "libspotify.so.12.1.45" + QString(kSignatureSuffix); - foreach (const QString& filename, filenames) { - const QUrl url(SpotifyService::kBlobDownloadUrl + version_ + "/" + filename); + foreach(const QString & filename, filenames) { + const QUrl url(SpotifyService::kBlobDownloadUrl + version_ + "/" + + filename); qLog(Info) << "Downloading" << url; QNetworkReply* reply = network_->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(ReplyProgress())); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(ReplyProgress())); replies_ << reply; } @@ -100,7 +103,7 @@ void SpotifyBlobDownloader::ReplyFinished() { } // Is everything finished? - foreach (QNetworkReply* reply, replies_) { + foreach(QNetworkReply * reply, replies_) { if (!reply->isFinished()) { return; } @@ -110,7 +113,7 @@ void SpotifyBlobDownloader::ReplyFinished() { QMap file_data; QStringList signature_filenames; - foreach (QNetworkReply* reply, replies_) { + foreach(QNetworkReply * reply, replies_) { const QString filename = reply->url().path().section('/', -1, -1); if (filename.endsWith(kSignatureSuffix)) { @@ -123,37 +126,36 @@ void SpotifyBlobDownloader::ReplyFinished() { #ifdef HAVE_QCA // Load the public key QCA::ConvertResult conversion_result; - QCA::PublicKey key = QCA::PublicKey::fromPEMFile(":/clementine-spotify-public.pem", - &conversion_result); + QCA::PublicKey key = QCA::PublicKey::fromPEMFile( + ":/clementine-spotify-public.pem", &conversion_result); if (QCA::ConvertGood != conversion_result) { ShowError("Failed to load Spotify public key"); return; } // Verify signatures - foreach (const QString& signature_filename, signature_filenames) { + foreach(const QString & signature_filename, signature_filenames) { QString actual_filename = signature_filename; actual_filename.remove(kSignatureSuffix); - qLog(Debug) << "Verifying" << actual_filename << "against" << signature_filename; + qLog(Debug) << "Verifying" << actual_filename << "against" + << signature_filename; if (!key.verifyMessage(file_data[actual_filename], - file_data[signature_filename], - QCA::EMSA3_SHA1)) { + file_data[signature_filename], QCA::EMSA3_SHA1)) { ShowError("Invalid signature: " + actual_filename); return; } } -#endif // HAVE_QCA +#endif // HAVE_QCA // Make the destination directory and write the files into it QDir().mkpath(path_); - foreach (const QString& filename, file_data.keys()) { + foreach(const QString & filename, file_data.keys()) { const QString dest_path = path_ + "/" + filename; - if (filename.endsWith(kSignatureSuffix)) - continue; + if (filename.endsWith(kSignatureSuffix)) continue; qLog(Info) << "Writing" << dest_path; @@ -185,7 +187,7 @@ void SpotifyBlobDownloader::ReplyFinished() { link_path += "." + version_parts.takeFirst(); } } -#endif // Q_OS_UNIX +#endif // Q_OS_UNIX } EmitFinished(); @@ -195,7 +197,7 @@ void SpotifyBlobDownloader::ReplyProgress() { int progress = 0; int total = 0; - foreach (QNetworkReply* reply, replies_) { + foreach(QNetworkReply * reply, replies_) { progress += reply->bytesAvailable(); total += reply->rawHeader("Content-Length").toInt(); } @@ -204,14 +206,12 @@ void SpotifyBlobDownloader::ReplyProgress() { progress_->setValue(progress); } -void SpotifyBlobDownloader::Cancel() { - deleteLater(); -} +void SpotifyBlobDownloader::Cancel() { deleteLater(); } void SpotifyBlobDownloader::ShowError(const QString& message) { // Stop any remaining replies before showing the dialog so they don't // carry on in the background - foreach (QNetworkReply* reply, replies_) { + foreach(QNetworkReply * reply, replies_) { disconnect(reply, 0, this, 0); reply->abort(); } diff --git a/src/internet/spotifyblobdownloader.h b/src/internet/spotifyblobdownloader.h index 7304aed4c..c9ed9efba 100644 --- a/src/internet/spotifyblobdownloader.h +++ b/src/internet/spotifyblobdownloader.h @@ -27,7 +27,7 @@ class QProgressDialog; class SpotifyBlobDownloader : public QObject { Q_OBJECT -public: + public: SpotifyBlobDownloader(const QString& version, const QString& path, QObject* parent = 0); ~SpotifyBlobDownloader(); @@ -41,16 +41,16 @@ public: signals: void Finished(); -private slots: + private slots: void ReplyFinished(); void ReplyProgress(); void Cancel(); -private: + private: void ShowError(const QString& message); void EmitFinished(); -private: + private: QString version_; QString path_; @@ -60,4 +60,4 @@ private: QProgressDialog* progress_; }; -#endif // SPOTIFYBLOBDOWNLOADER_H +#endif // SPOTIFYBLOBDOWNLOADER_H diff --git a/src/internet/spotifyserver.cpp b/src/internet/spotifyserver.cpp index 3728b2449..566d6cd24 100644 --- a/src/internet/spotifyserver.cpp +++ b/src/internet/spotifyserver.cpp @@ -26,10 +26,9 @@ #include SpotifyServer::SpotifyServer(QObject* parent) - : AbstractMessageHandler(nullptr, parent), - server_(new QTcpServer(this)), - logged_in_(false) -{ + : AbstractMessageHandler(nullptr, parent), + server_(new QTcpServer(this)), + logged_in_(false) { connect(server_, SIGNAL(newConnection()), SLOT(NewConnection())); } @@ -39,9 +38,7 @@ void SpotifyServer::Init() { } } -int SpotifyServer::server_port() const { - return server_->serverPort(); -} +int SpotifyServer::server_port() const { return server_->serverPort(); } void SpotifyServer::NewConnection() { QTcpSocket* socket = server_->nextPendingConnection(); @@ -50,7 +47,7 @@ void SpotifyServer::NewConnection() { qLog(Info) << "Connection from port" << socket->peerPort(); // Send any login messages that were queued before the client connected - foreach (const pb::spotify::Message& message, queued_login_messages_) { + foreach(const pb::spotify::Message & message, queued_login_messages_) { SendOrQueueMessage(message); } queued_login_messages_.clear(); @@ -73,7 +70,8 @@ void SpotifyServer::SendOrQueueMessage(const pb::spotify::Message& message) { } void SpotifyServer::Login(const QString& username, const QString& password, - pb::spotify::Bitrate bitrate, bool volume_normalisation) { + pb::spotify::Bitrate bitrate, + bool volume_normalisation) { pb::spotify::Message message; pb::spotify::LoginRequest* request = message.mutable_login_request(); @@ -82,15 +80,18 @@ void SpotifyServer::Login(const QString& username, const QString& password, request->set_password(DataCommaSizeFromQString(password)); } request->mutable_playback_settings()->set_bitrate(bitrate); - request->mutable_playback_settings()->set_volume_normalisation(volume_normalisation); + request->mutable_playback_settings()->set_volume_normalisation( + volume_normalisation); SendOrQueueMessage(message); } -void SpotifyServer::SetPlaybackSettings(pb::spotify::Bitrate bitrate, bool volume_normalisation) { +void SpotifyServer::SetPlaybackSettings(pb::spotify::Bitrate bitrate, + bool volume_normalisation) { pb::spotify::Message message; - pb::spotify::PlaybackSettings* request = message.mutable_set_playback_settings_request(); + pb::spotify::PlaybackSettings* request = + message.mutable_set_playback_settings_request(); request->set_bitrate(bitrate); request->set_volume_normalisation(volume_normalisation); @@ -104,18 +105,20 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { if (response.success()) { // Send any messages that were queued before the client logged in - foreach (const pb::spotify::Message& message, queued_messages_) { + foreach(const pb::spotify::Message & message, queued_messages_) { SendOrQueueMessage(message); } queued_messages_.clear(); } - emit LoginCompleted(response.success(), QStringFromStdString(response.error()), + emit LoginCompleted(response.success(), + QStringFromStdString(response.error()), response.error_code()); } else if (message.has_playlists_updated()) { emit PlaylistsUpdated(message.playlists_updated()); } else if (message.has_load_playlist_response()) { - const pb::spotify::LoadPlaylistResponse& response = message.load_playlist_response(); + const pb::spotify::LoadPlaylistResponse& response = + message.load_playlist_response(); switch (response.request().type()) { case pb::spotify::Inbox: @@ -139,8 +142,9 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { const QString id = QStringFromStdString(response.id()); if (response.has_data()) { - emit ImageLoaded(id, QImage::fromData(QByteArray( - response.data().data(), response.data().size()))); + emit ImageLoaded( + id, QImage::fromData( + QByteArray(response.data().data(), response.data().size()))); } else { emit ImageLoaded(id, QImage()); } @@ -155,7 +159,8 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { void SpotifyServer::LoadPlaylist(pb::spotify::PlaylistType type, int index) { pb::spotify::Message message; - pb::spotify::LoadPlaylistRequest* req = message.mutable_load_playlist_request(); + pb::spotify::LoadPlaylistRequest* req = + message.mutable_load_playlist_request(); req->set_type(type); if (index != -1) { @@ -165,10 +170,11 @@ void SpotifyServer::LoadPlaylist(pb::spotify::PlaylistType type, int index) { SendOrQueueMessage(message); } -void SpotifyServer::SyncPlaylist( - pb::spotify::PlaylistType type, int index, bool offline) { +void SpotifyServer::SyncPlaylist(pb::spotify::PlaylistType type, int index, + bool offline) { pb::spotify::Message message; - pb::spotify::SyncPlaylistRequest* req = message.mutable_sync_playlist_request(); + pb::spotify::SyncPlaylistRequest* req = + message.mutable_sync_playlist_request(); req->mutable_request()->set_type(type); if (index != -1) { req->mutable_request()->set_user_playlist_index(index); @@ -178,9 +184,7 @@ void SpotifyServer::SyncPlaylist( SendOrQueueMessage(message); } -void SpotifyServer::SyncInbox() { - SyncPlaylist(pb::spotify::Inbox, -1, true); -} +void SpotifyServer::SyncInbox() { SyncPlaylist(pb::spotify::Inbox, -1, true); } void SpotifyServer::SyncStarred() { SyncPlaylist(pb::spotify::Starred, -1, true); @@ -191,13 +195,9 @@ void SpotifyServer::SyncUserPlaylist(int index) { SyncPlaylist(pb::spotify::UserPlaylist, index, true); } -void SpotifyServer::LoadInbox() { - LoadPlaylist(pb::spotify::Inbox); -} +void SpotifyServer::LoadInbox() { LoadPlaylist(pb::spotify::Inbox); } -void SpotifyServer::LoadStarred() { - LoadPlaylist(pb::spotify::Starred); -} +void SpotifyServer::LoadStarred() { LoadPlaylist(pb::spotify::Starred); } void SpotifyServer::LoadUserPlaylist(int index) { Q_ASSERT(index >= 0); @@ -208,10 +208,9 @@ void SpotifyServer::StartPlaybackLater(const QString& uri, quint16 port) { QTimer* timer = new QTimer(this); connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater())); - timer->start(100); // lol - NewClosure(timer, SIGNAL(timeout()), - this, SLOT(StartPlayback(QString,quint16)), - uri, port); + timer->start(100); // lol + NewClosure(timer, SIGNAL(timeout()), this, + SLOT(StartPlayback(QString, quint16)), uri, port); } void SpotifyServer::StartPlayback(const QString& uri, quint16 port) { @@ -259,7 +258,8 @@ void SpotifyServer::AlbumBrowse(const QString& uri) { void SpotifyServer::LoadToplist() { pb::spotify::Message message; - pb::spotify::BrowseToplistRequest* req = message.mutable_browse_toplist_request(); + pb::spotify::BrowseToplistRequest* req = + message.mutable_browse_toplist_request(); req->set_type(pb::spotify::BrowseToplistRequest::Tracks); req->set_region(pb::spotify::BrowseToplistRequest::Everywhere); diff --git a/src/internet/spotifyserver.h b/src/internet/spotifyserver.h index ca06d62c3..a235504f6 100644 --- a/src/internet/spotifyserver.h +++ b/src/internet/spotifyserver.h @@ -24,14 +24,13 @@ #include #include - class QTcpServer; class QTcpSocket; class SpotifyServer : public AbstractMessageHandler { Q_OBJECT -public: + public: SpotifyServer(QObject* parent = 0); void Init(); @@ -48,12 +47,13 @@ public: void Search(const QString& text, int limit, int limit_album = 0); void LoadImage(const QString& id); void AlbumBrowse(const QString& uri); - void SetPlaybackSettings(pb::spotify::Bitrate bitrate, bool volume_normalisation); + void SetPlaybackSettings(pb::spotify::Bitrate bitrate, + bool volume_normalisation); void LoadToplist(); int server_port() const; -public slots: + public slots: void StartPlayback(const QString& uri, quint16 port); void Seek(qint64 offset_bytes); @@ -72,13 +72,13 @@ signals: void AlbumBrowseResults(const pb::spotify::BrowseAlbumResponse& response); void ToplistBrowseResults(const pb::spotify::BrowseToplistResponse& response); -protected: + protected: void MessageArrived(const pb::spotify::Message& message); -private slots: + private slots: void NewConnection(); -private: + private: void LoadPlaylist(pb::spotify::PlaylistType type, int index = -1); void SyncPlaylist(pb::spotify::PlaylistType type, int index, bool offline); void SendOrQueueMessage(const pb::spotify::Message& message); @@ -90,4 +90,4 @@ private: QList queued_messages_; }; -#endif // SPOTIFYSERVER_H +#endif // SPOTIFYSERVER_H diff --git a/src/internet/spotifyservice.cpp b/src/internet/spotifyservice.cpp index e3f623121..82ef17648 100644 --- a/src/internet/spotifyservice.cpp +++ b/src/internet/spotifyservice.cpp @@ -38,7 +38,8 @@ Q_DECLARE_METATYPE(QStandardItem*); const char* SpotifyService::kServiceName = "Spotify"; const char* SpotifyService::kSettingsGroup = "Spotify"; -const char* SpotifyService::kBlobDownloadUrl = "http://spotify.clementine-player.org/"; +const char* SpotifyService::kBlobDownloadUrl = + "http://spotify.clementine-player.org/"; const int SpotifyService::kSearchDelayMsec = 400; SpotifyService::SpotifyService(Application* app, InternetModel* parent) @@ -56,22 +57,24 @@ SpotifyService::SpotifyService(Application* app, InternetModel* parent) search_delay_(new QTimer(this)), login_state_(LoginState_OtherError), bitrate_(pb::spotify::Bitrate320k), - volume_normalisation_(false) -{ - // Build the search path for the binary blob. - // Look for one distributed alongside clementine first, then check in the - // user's home directory for any that have been downloaded. + volume_normalisation_(false) { +// Build the search path for the binary blob. +// Look for one distributed alongside clementine first, then check in the +// user's home directory for any that have been downloaded. #ifdef Q_OS_MAC system_blob_path_ = QCoreApplication::applicationDirPath() + - "/../PlugIns/clementine-spotifyblob"; + "/../PlugIns/clementine-spotifyblob"; #else system_blob_path_ = QCoreApplication::applicationDirPath() + - "/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX; + "/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX; #endif - local_blob_version_ = QString("version%1-%2bit").arg(SPOTIFY_BLOB_VERSION).arg(sizeof(void*) * 8); - local_blob_path_ = Utilities::GetConfigPath(Utilities::Path_LocalSpotifyBlob) + - "/" + local_blob_version_ + "/blob"; + local_blob_version_ = QString("version%1-%2bit") + .arg(SPOTIFY_BLOB_VERSION) + .arg(sizeof(void*) * 8); + local_blob_path_ = + Utilities::GetConfigPath(Utilities::Path_LocalSpotifyBlob) + "/" + + local_blob_version_ + "/blob"; qLog(Debug) << "Spotify system blob path:" << system_blob_path_; qLog(Debug) << "Spotify local blob path:" << local_blob_path_; @@ -139,8 +142,9 @@ void SpotifyService::Login(const QString& username, const QString& password) { EnsureServerCreated(username, password); } -void SpotifyService::LoginCompleted(bool success, const QString& error, - pb::spotify::LoginResponse_Error error_code) { +void SpotifyService::LoginCompleted( + bool success, const QString& error, + pb::spotify::LoginResponse_Error error_code) { if (login_task_id_) { app_->task_manager()->SetTaskFinished(login_task_id_); login_task_id_ = 0; @@ -151,37 +155,40 @@ void SpotifyService::LoginCompleted(bool success, const QString& error, QString error_copy(error); switch (error_code) { - case pb::spotify::LoginResponse_Error_BadUsernameOrPassword: - login_state_ = LoginState_BadCredentials; - break; + case pb::spotify::LoginResponse_Error_BadUsernameOrPassword: + login_state_ = LoginState_BadCredentials; + break; - case pb::spotify::LoginResponse_Error_UserBanned: - login_state_ = LoginState_Banned; - break; + case pb::spotify::LoginResponse_Error_UserBanned: + login_state_ = LoginState_Banned; + break; - case pb::spotify::LoginResponse_Error_UserNeedsPremium: - login_state_ = LoginState_NoPremium; - break; + case pb::spotify::LoginResponse_Error_UserNeedsPremium: + login_state_ = LoginState_NoPremium; + break; - case pb::spotify::LoginResponse_Error_ReloginFailed: - if (login_state_ == LoginState_LoggedIn) { - // This is the first time the relogin has failed - show a message this - // time only. - error_copy = tr("You have been logged out of Spotify, please re-enter your password in the Settings dialog."); - } else { - show_error_dialog = false; - } + case pb::spotify::LoginResponse_Error_ReloginFailed: + if (login_state_ == LoginState_LoggedIn) { + // This is the first time the relogin has failed - show a message this + // time only. + error_copy = + tr("You have been logged out of Spotify, please re-enter your " + "password in the Settings dialog."); + } else { + show_error_dialog = false; + } - login_state_ = LoginState_ReloginFailed; - break; + login_state_ = LoginState_ReloginFailed; + break; - default: - login_state_ = LoginState_OtherError; - break; + default: + login_state_ = LoginState_OtherError; + break; } if (show_error_dialog) { - QMessageBox::warning(nullptr, tr("Spotify login error"), error_copy, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Spotify login error"), error_copy, + QMessageBox::Close); } } else { login_state_ = LoginState_LoggedIn; @@ -208,9 +215,10 @@ void SpotifyService::ReloadSettings() { QSettings s; s.beginGroup(kSettingsGroup); - login_state_ = LoginState(s.value("login_state", LoginState_OtherError).toInt()); + login_state_ = + LoginState(s.value("login_state", LoginState_OtherError).toInt()); bitrate_ = static_cast( - s.value("bitrate", pb::spotify::Bitrate320k).toInt()); + s.value("bitrate", pb::spotify::Bitrate320k).toInt()); volume_normalisation_ = s.value("volume_normalisation", false).toBool(); if (server_ && blob_process_) { @@ -227,25 +235,30 @@ void SpotifyService::EnsureServerCreated(const QString& username, delete server_; server_ = new SpotifyServer(this); - connect(server_, SIGNAL(LoginCompleted(bool,QString,pb::spotify::LoginResponse_Error)), - SLOT(LoginCompleted(bool,QString,pb::spotify::LoginResponse_Error))); + connect( + server_, + SIGNAL(LoginCompleted(bool, QString, pb::spotify::LoginResponse_Error)), + SLOT(LoginCompleted(bool, QString, pb::spotify::LoginResponse_Error))); connect(server_, SIGNAL(PlaylistsUpdated(pb::spotify::Playlists)), SLOT(PlaylistsUpdated(pb::spotify::Playlists))); connect(server_, SIGNAL(InboxLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(InboxLoaded(pb::spotify::LoadPlaylistResponse))); connect(server_, SIGNAL(StarredLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(StarredLoaded(pb::spotify::LoadPlaylistResponse))); - connect(server_, SIGNAL(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse)), + connect(server_, + SIGNAL(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse))); connect(server_, SIGNAL(PlaybackError(QString)), SIGNAL(StreamError(QString))); connect(server_, SIGNAL(SearchResults(pb::spotify::SearchResponse)), SLOT(SearchResults(pb::spotify::SearchResponse))); - connect(server_, SIGNAL(ImageLoaded(QString,QImage)), - SIGNAL(ImageLoaded(QString,QImage))); - connect(server_, SIGNAL(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress)), + connect(server_, SIGNAL(ImageLoaded(QString, QImage)), + SIGNAL(ImageLoaded(QString, QImage))); + connect(server_, + SIGNAL(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress)), SLOT(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress))); - connect(server_, SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), + connect(server_, + SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), SLOT(ToplistLoaded(pb::spotify::BrowseToplistResponse))); server_->Init(); @@ -263,7 +276,8 @@ void SpotifyService::EnsureServerCreated(const QString& username, login_password = QString(); } - server_->Login(login_username, login_password, bitrate_, volume_normalisation_); + server_->Login(login_username, login_password, bitrate_, + volume_normalisation_); StartBlobProcess(); } @@ -292,11 +306,11 @@ void SpotifyService::StartBlobProcess() { app_->task_manager()->SetTaskFinished(login_task_id_); } - #ifdef HAVE_SPOTIFY_DOWNLOADER - if (SpotifyBlobDownloader::Prompt()) { - InstallBlob(); - } - #endif +#ifdef HAVE_SPOTIFY_DOWNLOADER + if (SpotifyBlobDownloader::Prompt()) { + InstallBlob(); + } +#endif return; } @@ -306,34 +320,30 @@ void SpotifyService::StartBlobProcess() { blob_process_->setProcessChannelMode(QProcess::ForwardedChannels); blob_process_->setProcessEnvironment(env); - connect(blob_process_, - SIGNAL(error(QProcess::ProcessError)), + connect(blob_process_, SIGNAL(error(QProcess::ProcessError)), SLOT(BlobProcessError(QProcess::ProcessError))); qLog(Info) << "Starting" << blob_path; blob_process_->start( - blob_path, QStringList() << QString::number(server_->server_port())); + blob_path, QStringList() << QString::number(server_->server_port())); } bool SpotifyService::IsBlobInstalled() const { - return QFile::exists(system_blob_path_) || - QFile::exists(local_blob_path_); + return QFile::exists(system_blob_path_) || QFile::exists(local_blob_path_); } void SpotifyService::InstallBlob() { #ifdef HAVE_SPOTIFY_DOWNLOADER // The downloader deletes itself when it finishes SpotifyBlobDownloader* downloader = new SpotifyBlobDownloader( - local_blob_version_, QFileInfo(local_blob_path_).path(), this); + local_blob_version_, QFileInfo(local_blob_path_).path(), this); connect(downloader, SIGNAL(Finished()), SLOT(BlobDownloadFinished())); connect(downloader, SIGNAL(Finished()), SIGNAL(BlobStateChanged())); downloader->Start(); #endif // HAVE_SPOTIFY_DOWNLOADER } -void SpotifyService::BlobDownloadFinished() { - EnsureServerCreated(); -} +void SpotifyService::BlobDownloadFinished() { EnsureServerCreated(); } void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { if (login_task_id_) { @@ -343,31 +353,32 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { // Create starred and inbox playlists if they're not here already if (!search_) { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); search_->setData(Type_SearchResults, InternetModel::Role_Type); search_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); starred_ = new QStandardItem(QIcon(":/star-on.png"), tr("Starred")); starred_->setData(Type_StarredPlaylist, InternetModel::Role_Type); starred_->setData(true, InternetModel::Role_CanLazyLoad); starred_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); inbox_ = new QStandardItem(IconLoader::Load("mail-message"), tr("Inbox")); inbox_->setData(Type_InboxPlaylist, InternetModel::Role_Type); inbox_->setData(true, InternetModel::Role_CanLazyLoad); inbox_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); toplist_ = new QStandardItem(QIcon(), tr("Top tracks")); toplist_->setData(Type_Toplist, InternetModel::Role_Type); toplist_->setData(true, InternetModel::Role_CanLazyLoad); toplist_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); root_->appendRow(search_); root_->appendRow(toplist_); @@ -382,19 +393,20 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { } // Remove and recreate the other playlists - foreach (QStandardItem* item, playlists_) { + foreach(QStandardItem * item, playlists_) { item->parent()->removeRow(item->row()); } playlists_.clear(); - for (int i=0 ; isetData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(msg.index(), Role_UserPlaylistIndex); - item->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); root_->appendRow(item); playlists_ << item; @@ -404,12 +416,13 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { } } -bool SpotifyService::DoPlaylistsDiffer(const pb::spotify::Playlists& response) const { +bool SpotifyService::DoPlaylistsDiffer(const pb::spotify::Playlists& response) + const { if (playlists_.count() != response.playlist_size()) { return true; } - for (int i=0 ; idata(Role_UserPlaylistIndex).toInt() == index) { return item; } @@ -452,9 +468,11 @@ QStandardItem* SpotifyService::PlaylistBySpotifyIndex(int index) const { return nullptr; } -void SpotifyService::UserPlaylistLoaded(const pb::spotify::LoadPlaylistResponse& response) { +void SpotifyService::UserPlaylistLoaded( + const pb::spotify::LoadPlaylistResponse& response) { // Find a playlist with this index - QStandardItem* item = PlaylistBySpotifyIndex(response.request().user_playlist_index()); + QStandardItem* item = + PlaylistBySpotifyIndex(response.request().user_playlist_index()); if (item) { FillPlaylist(item, response); } @@ -463,10 +481,9 @@ void SpotifyService::UserPlaylistLoaded(const pb::spotify::LoadPlaylistResponse& void SpotifyService::FillPlaylist( QStandardItem* item, const google::protobuf::RepeatedPtrField& tracks) { - if (item->hasChildren()) - item->removeRows(0, item->rowCount()); + if (item->hasChildren()) item->removeRows(0, item->rowCount()); - for (int i=0 ; i < tracks.size() ; ++i) { + for (int i = 0; i < tracks.size(); ++i) { Song song; SongFromProtobuf(tracks.Get(i), &song); @@ -476,12 +493,14 @@ void SpotifyService::FillPlaylist( } } -void SpotifyService::FillPlaylist(QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response) { +void SpotifyService::FillPlaylist( + QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response) { qLog(Debug) << "Filling playlist:" << item->text(); FillPlaylist(item, response.track()); } -void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, Song* song) { +void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, + Song* song) { song->set_rating(track.starred() ? 1.0 : 0.0); song->set_title(QStringFromStdString(track.title())); song->set_album(QStringFromStdString(track.album())); @@ -491,10 +510,11 @@ void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, Song* son song->set_track(track.track()); song->set_year(track.year()); song->set_url(QUrl(QStringFromStdString(track.uri()))); - song->set_art_automatic("spotify://image/" + QStringFromStdString(track.album_art_id())); + song->set_art_automatic("spotify://image/" + + QStringFromStdString(track.album_art_id())); QStringList artists; - for (int i=0 ; iaddAction(IconLoader::Load("configure"), tr("Configure Spotify..."), this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure Spotify..."), this, + SLOT(ShowConfig())); playlist_context_menu_ = new QMenu; playlist_context_menu_->addActions(GetPlaylistActions()); playlist_context_menu_->addSeparator(); playlist_sync_action_ = playlist_context_menu_->addAction( - IconLoader::Load("view-refresh"), - tr("Make playlist available offline"), - this, - SLOT(SyncPlaylist())); + IconLoader::Load("view-refresh"), tr("Make playlist available offline"), + this, SLOT(SyncPlaylist())); playlist_context_menu_->addSeparator(); playlist_context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure Spotify..."), - this, SLOT(ShowConfig())); + tr("Configure Spotify..."), this, + SLOT(ShowConfig())); } void SpotifyService::ClearSearchResults() { - if (search_) - search_->removeRows(0, search_->rowCount()); + if (search_) search_->removeRows(0, search_->rowCount()); } void SpotifyService::SyncPlaylist() { @@ -558,11 +575,13 @@ void SpotifyService::SyncPlaylist() { } case Type_InboxPlaylist: server_->SyncInbox(); - inbox_sync_id_ = app_->task_manager()->StartTask(tr("Syncing Spotify inbox")); + inbox_sync_id_ = + app_->task_manager()->StartTask(tr("Syncing Spotify inbox")); break; case Type_StarredPlaylist: server_->SyncStarred(); - starred_sync_id_ = app_->task_manager()->StartTask(tr("Syncing Spotify starred tracks")); + starred_sync_id_ = + app_->task_manager()->StartTask(tr("Syncing Spotify starred tracks")); break; default: break; @@ -596,7 +615,8 @@ void SpotifyService::DoSearch() { } } -void SpotifyService::SearchResults(const pb::spotify::SearchResponse& response) { +void SpotifyService::SearchResults( + const pb::spotify::SearchResponse& response) { if (QStringFromStdString(response.request().query()) != pending_search_) { qLog(Debug) << "Old search result for" << QStringFromStdString(response.request().query()) @@ -606,7 +626,7 @@ void SpotifyService::SearchResults(const pb::spotify::SearchResponse& response) pending_search_.clear(); SongList songs; - for (int i=0 ; iappendRow(child); } - const QString did_you_mean_suggestion = QStringFromStdString(response.did_you_mean()); + const QString did_you_mean_suggestion = + QStringFromStdString(response.did_you_mean()); qLog(Debug) << "Did you mean suggestion: " << did_you_mean_suggestion; if (!did_you_mean_suggestion.isEmpty()) { search_box_->did_you_mean()->Show(did_you_mean_suggestion); @@ -653,8 +674,7 @@ void SpotifyService::ShowContextMenu(const QPoint& global_pos) { QStandardItem* item = model()->itemFromIndex(model()->current_index()); if (item) { int type = item->data(InternetModel::Role_Type).toInt(); - if (type == Type_InboxPlaylist || - type == Type_StarredPlaylist || + if (type == Type_InboxPlaylist || type == Type_StarredPlaylist || type == InternetModel::Type_UserPlaylist) { playlist_sync_action_->setData(qVariantFromValue(item)); playlist_context_menu_->popup(global_pos); @@ -665,10 +685,10 @@ void SpotifyService::ShowContextMenu(const QPoint& global_pos) { context_menu_->popup(global_pos); } -void SpotifyService::ItemDoubleClicked(QStandardItem* item) { -} +void SpotifyService::ItemDoubleClicked(QStandardItem* item) {} -void SpotifyService::DropMimeData(const QMimeData* data, const QModelIndex& index) { +void SpotifyService::DropMimeData(const QMimeData* data, + const QModelIndex& index) { qLog(Debug) << Q_FUNC_INFO << data->urls(); } diff --git a/src/internet/spotifyservice.h b/src/internet/spotifyservice.h index 530aa0a5d..39d7f5d0c 100644 --- a/src/internet/spotifyservice.h +++ b/src/internet/spotifyservice.h @@ -17,7 +17,7 @@ class QMenu; class SpotifyService : public InternetService { Q_OBJECT -public: + public: SpotifyService(Application* app, InternetModel* parent); ~SpotifyService(); @@ -29,9 +29,7 @@ public: Type_Toplist, }; - enum Role { - Role_UserPlaylistIndex = InternetModel::RoleCount, - }; + enum Role { Role_UserPlaylistIndex = InternetModel::RoleCount, }; // Values are persisted - don't change. enum LoginState { @@ -78,23 +76,24 @@ signals: void LoginFinished(bool success); void ImageLoaded(const QString& id, const QImage& image); -public slots: + public slots: void Search(const QString& text, bool now = false); void ShowConfig(); -private: + private: void StartBlobProcess(); void FillPlaylist( QStandardItem* item, const google::protobuf::RepeatedPtrField& tracks); - void FillPlaylist(QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response); + void FillPlaylist(QStandardItem* item, + const pb::spotify::LoadPlaylistResponse& response); void EnsureMenuCreated(); void ClearSearchResults(); QStandardItem* PlaylistBySpotifyIndex(int index) const; bool DoPlaylistsDiffer(const pb::spotify::Playlists& response) const; -private slots: + private slots: void EnsureServerCreated(const QString& username = QString(), const QString& password = QString()); void BlobProcessError(QProcess::ProcessError error); @@ -113,7 +112,7 @@ private slots: void SyncPlaylist(); void BlobDownloadFinished(); -private: + private: SpotifyServer* server_; QString system_blob_path_; diff --git a/src/internet/spotifysettingspage.cpp b/src/internet/spotifysettingspage.cpp index f1a73bfa7..011457674 100644 --- a/src/internet/spotifysettingspage.cpp +++ b/src/internet/spotifysettingspage.cpp @@ -32,11 +32,10 @@ #include SpotifySettingsPage::SpotifySettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_SpotifySettingsPage), - service_(InternetModel::Service()), - validated_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_SpotifySettingsPage), + service_(InternetModel::Service()), + validated_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/icons/48x48/spotify.png")); @@ -64,9 +63,7 @@ SpotifySettingsPage::SpotifySettingsPage(SettingsDialog* dialog) BlobStateChanged(); } -SpotifySettingsPage::~SpotifySettingsPage() { - delete ui_; -} +SpotifySettingsPage::~SpotifySettingsPage() { delete ui_; } void SpotifySettingsPage::BlobStateChanged() { const bool installed = service_->IsBlobInstalled(); @@ -81,9 +78,7 @@ void SpotifySettingsPage::BlobStateChanged() { #endif } -void SpotifySettingsPage::DownloadBlob() { - service_->InstallBlob(); -} +void SpotifySettingsPage::DownloadBlob() { service_->InstallBlob(); } void SpotifySettingsPage::Login() { if (!service_->IsBlobInstalled()) { @@ -124,7 +119,8 @@ void SpotifySettingsPage::Save() { s.setValue("username", ui_->username->text()); s.setValue("password", ui_->password->text()); - s.setValue("bitrate", ui_->bitrate->itemData(ui_->bitrate->currentIndex()).toInt()); + s.setValue("bitrate", + ui_->bitrate->itemData(ui_->bitrate->currentIndex()).toInt()); s.setValue("volume_normalisation", ui_->volume_normalisation->isChecked()); } @@ -139,28 +135,33 @@ void SpotifySettingsPage::UpdateLoginState() { const bool logged_in = service_->login_state() == SpotifyService::LoginState_LoggedIn; - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in); switch (service_->login_state()) { - case SpotifyService::LoginState_NoPremium: - ui_->login_state->SetAccountTypeText(tr("You do not have a Spotify Premium account.")); - break; + case SpotifyService::LoginState_NoPremium: + ui_->login_state->SetAccountTypeText( + tr("You do not have a Spotify Premium account.")); + break; - case SpotifyService::LoginState_Banned: - case SpotifyService::LoginState_BadCredentials: - ui_->login_state->SetAccountTypeText(tr("Your username or password was incorrect.")); - break; + case SpotifyService::LoginState_Banned: + case SpotifyService::LoginState_BadCredentials: + ui_->login_state->SetAccountTypeText( + tr("Your username or password was incorrect.")); + break; - case SpotifyService::LoginState_ReloginFailed: - ui_->login_state->SetAccountTypeText(tr("You have been logged out of Spotify, please re-enter your password.")); - break; + case SpotifyService::LoginState_ReloginFailed: + ui_->login_state->SetAccountTypeText( + tr("You have been logged out of Spotify, please re-enter your " + "password.")); + break; - default: - ui_->login_state->SetAccountTypeText(tr("A Spotify Premium account is required.")); - break; + default: + ui_->login_state->SetAccountTypeText( + tr("A Spotify Premium account is required.")); + break; } } diff --git a/src/internet/spotifysettingspage.h b/src/internet/spotifysettingspage.h index d36b8b4a9..68ac10c29 100644 --- a/src/internet/spotifysettingspage.h +++ b/src/internet/spotifysettingspage.h @@ -27,26 +27,26 @@ class SpotifyService; class SpotifySettingsPage : public SettingsPage { Q_OBJECT -public: + public: SpotifySettingsPage(SettingsDialog* dialog); ~SpotifySettingsPage(); void Load(); void Save(); -public slots: + public slots: void BlobStateChanged(); void DownloadBlob(); -private slots: + private slots: void Login(); void LoginFinished(bool success); void Logout(); -private: + private: void UpdateLoginState(); -private: + private: Ui_SpotifySettingsPage* ui_; SpotifyService* service_; @@ -55,4 +55,4 @@ private: QString original_password_; }; -#endif // SPOTIFYSETTINGSPAGE_H +#endif // SPOTIFYSETTINGSPAGE_H diff --git a/src/internet/subsonicservice.cpp b/src/internet/subsonicservice.cpp index bb9443d9c..64c7bed88 100644 --- a/src/internet/subsonicservice.cpp +++ b/src/internet/subsonicservice.cpp @@ -36,32 +36,28 @@ const char* SubsonicService::kFtsTable = "subsonic_songs_fts"; const int SubsonicService::kMaxRedirects = 10; SubsonicService::SubsonicService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - network_(new QNetworkAccessManager(this)), - url_handler_(new SubsonicUrlHandler(this, this)), - scanner_(new SubsonicLibraryScanner(this, this)), - load_database_task_id_(0), - context_menu_(nullptr), - root_(nullptr), - library_backend_(nullptr), - library_model_(nullptr), - library_filter_(nullptr), - library_sort_model_(new QSortFilterProxyModel(this)), - total_song_count_(0), - login_state_(LoginState_OtherError), - redirect_count_(0) { + : InternetService(kServiceName, app, parent, parent), + network_(new QNetworkAccessManager(this)), + url_handler_(new SubsonicUrlHandler(this, this)), + scanner_(new SubsonicLibraryScanner(this, this)), + load_database_task_id_(0), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + total_song_count_(0), + login_state_(LoginState_OtherError), + redirect_count_(0) { app_->player()->RegisterUrlHandler(url_handler_); - connect(scanner_, SIGNAL(ScanFinished()), - SLOT(ReloadDatabaseFinished())); + connect(scanner_, SIGNAL(ScanFinished()), SLOT(ReloadDatabaseFinished())); library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), - kSongsTable, - QString::null, - QString::null, - kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -87,29 +83,23 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("view-refresh"), - tr("Refresh catalogue"), - this, SLOT(ReloadDatabase())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(ReloadDatabase())); QAction* config_action = context_menu_->addAction( - IconLoader::Load("configure"), - tr("Configure Subsonic..."), - this, SLOT(ShowConfig())); + IconLoader::Load("configure"), tr("Configure Subsonic..."), this, + SLOT(ShowConfig())); context_menu_->addSeparator(); context_menu_->addMenu(library_filter_->menu()); library_filter_->AddMenuAction(config_action); app_->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - tr("Subsonic"), - "subsonic", - QIcon(":/providers/subsonic.png"), - true, app_, this)); + library_backend_, tr("Subsonic"), "subsonic", + QIcon(":/providers/subsonic.png"), true, app_, this)); } -SubsonicService::~SubsonicService() { -} +SubsonicService::~SubsonicService() {} QStandardItem* SubsonicService::CreateRootItem() { root_ = new QStandardItem(QIcon(":providers/subsonic.png"), kServiceName); @@ -143,9 +133,7 @@ void SubsonicService::ShowContextMenu(const QPoint& global_pos) { context_menu_->popup(global_pos); } -QWidget* SubsonicService::HeaderWidget() const { - return library_filter_; -} +QWidget* SubsonicService::HeaderWidget() const { return library_filter_; } void SubsonicService::ReloadSettings() { QSettings s; @@ -160,13 +148,13 @@ void SubsonicService::ReloadSettings() { } bool SubsonicService::IsConfigured() const { - return !configured_server_.isEmpty() && - !username_.isEmpty() && + return !configured_server_.isEmpty() && !username_.isEmpty() && !password_.isEmpty(); } void SubsonicService::Login() { - // Recreate fresh network state, otherwise old HTTPS settings seem to get reused + // Recreate fresh network state, otherwise old HTTPS settings seem to get + // reused network_->deleteLater(); network_ = new QNetworkAccessManager(this); network_->setCookieJar(new QNetworkCookieJar(network_)); @@ -182,8 +170,8 @@ void SubsonicService::Login() { } } -void SubsonicService::Login( - const QString& server, const QString& username, const QString& password, const bool& usesslv3) { +void SubsonicService::Login(const QString& server, const QString& username, + const QString& password, const bool& usesslv3) { UpdateServer(server); username_ = username; password_ = password; @@ -193,9 +181,8 @@ void SubsonicService::Login( void SubsonicService::Ping() { QNetworkReply* reply = Send(BuildRequestUrl("ping")); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnPingFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnPingFinished(QNetworkReply*)), reply); } QUrl SubsonicService::BuildRequestUrl(const QString& view) const { @@ -227,7 +214,7 @@ QNetworkReply* SubsonicService::Send(const QUrl& url) { sslconfig.setProtocol(QSsl::SslV3); } request.setSslConfiguration(sslconfig); - QNetworkReply *reply = network_->get(request); + QNetworkReply* reply = network_->get(request); return reply; } @@ -237,8 +224,8 @@ void SubsonicService::UpdateTotalSongCount(int count) { void SubsonicService::ReloadDatabase() { if (!load_database_task_id_) { - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Fetching Subsonic library")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Fetching Subsonic library")); } scanner_->Scan(); } @@ -252,7 +239,8 @@ void SubsonicService::ReloadDatabaseFinished() { library_model_->Reset(); } -void SubsonicService::OnLoginStateChanged(SubsonicService::LoginState newstate) { +void SubsonicService::OnLoginStateChanged( + SubsonicService::LoginState newstate) { // TODO: library refresh logic? } @@ -260,7 +248,7 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - switch(reply->error()) { + switch (reply->error()) { case QNetworkReply::ConnectionRefusedError: login_state_ = LoginState_ConnectionRefused; break; @@ -273,18 +261,20 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { case QNetworkReply::SslHandshakeFailedError: login_state_ = LoginState_SslError; break; - default: //Treat uncaught error types here as generic + default: // Treat uncaught error types here as generic login_state_ = LoginState_BadServer; break; } qLog(Error) << "Failed to connect (" - << Utilities::EnumToString(QNetworkReply::staticMetaObject, "NetworkError", reply->error()) + << Utilities::EnumToString(QNetworkReply::staticMetaObject, + "NetworkError", reply->error()) << "):" << reply->errorString(); } else { QXmlStreamReader reader(reply); reader.readNextStartElement(); QStringRef status = reader.attributes().value("status"); - int http_status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + int http_status_code = + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (status == "ok") { login_state_ = LoginState_Loggedin; } else if (http_status_code >= 300 && http_status_code <= 399) { @@ -292,18 +282,19 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { QUrl redirect_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); if (redirect_url.isEmpty()) { - qLog(Debug) << "Received HTTP code " << http_status_code << ", but no URL"; + qLog(Debug) << "Received HTTP code " << http_status_code + << ", but no URL"; login_state_ = LoginState_RedirectNoUrl; } else { redirect_count_++; qLog(Debug) << "Redirect receieved to " << redirect_url.toString(QUrl::RemoveQuery) - << ", current redirect count is " - << redirect_count_; + << ", current redirect count is " << redirect_count_; if (redirect_count_ <= kMaxRedirects) { working_server_ = ScrubUrl(redirect_url).toString(QUrl::RemoveQuery); Ping(); - // To avoid the LoginStateChanged, as it will come from the recursive request. + // To avoid the LoginStateChanged, as it will come from the recursive + // request. return; } else { // Redirect limit exceeded @@ -314,7 +305,8 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { reader.readNextStartElement(); int error = reader.attributes().value("code").toString().toInt(); qLog(Error) << "Subsonic error (" - << Utilities::EnumToString(SubsonicService::staticMetaObject, "ApiError", error) + << Utilities::EnumToString(SubsonicService::staticMetaObject, + "ApiError", error) << "):" << reader.attributes().value("message").toString(); switch (error) { // "Parameter missing" for "ping" is always blank username or password @@ -338,7 +330,8 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { } } qLog(Debug) << "Login state changed:" - << Utilities::EnumToString(SubsonicService::staticMetaObject, "LoginState", login_state_); + << Utilities::EnumToString(SubsonicService::staticMetaObject, + "LoginState", login_state_); emit LoginStateChanged(login_state_); } @@ -352,19 +345,14 @@ void SubsonicService::UpdateServer(const QString& server) { redirect_count_ = 0; } - const int SubsonicLibraryScanner::kAlbumChunkSize = 500; const int SubsonicLibraryScanner::kConcurrentRequests = 8; -SubsonicLibraryScanner::SubsonicLibraryScanner( - SubsonicService* service, QObject* parent) - : QObject(parent), - service_(service), - scanning_(false) { -} +SubsonicLibraryScanner::SubsonicLibraryScanner(SubsonicService* service, + QObject* parent) + : QObject(parent), service_(service), scanning_(false) {} -SubsonicLibraryScanner::~SubsonicLibraryScanner() { -} +SubsonicLibraryScanner::~SubsonicLibraryScanner() {} void SubsonicLibraryScanner::Scan() { if (scanning_) { @@ -378,8 +366,8 @@ void SubsonicLibraryScanner::Scan() { GetAlbumList(0); } -void SubsonicLibraryScanner::OnGetAlbumListFinished( - QNetworkReply* reply, int offset) { +void SubsonicLibraryScanner::OnGetAlbumListFinished(QNetworkReply* reply, + int offset) { reply->deleteLater(); QXmlStreamReader reader(reply); @@ -408,7 +396,8 @@ void SubsonicLibraryScanner::OnGetAlbumListFinished( scanning_ = false; } else { // Empty reply but we have some albums, time to start fetching songs - // Start up the maximum number of concurrent requests, finished requests get replaced with new ones + // Start up the maximum number of concurrent requests, finished requests get + // replaced with new ones for (int i = 0; i < kConcurrentRequests && !album_queue_.empty(); ++i) { GetAlbum(album_queue_.dequeue()); } @@ -478,17 +467,15 @@ void SubsonicLibraryScanner::GetAlbumList(int offset) { url.addQueryItem("size", QString::number(kAlbumChunkSize)); url.addQueryItem("offset", QString::number(offset)); QNetworkReply* reply = service_->Send(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnGetAlbumListFinished(QNetworkReply*,int)), - reply, offset); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnGetAlbumListFinished(QNetworkReply*, int)), reply, offset); } void SubsonicLibraryScanner::GetAlbum(const QString& id) { QUrl url = service_->BuildRequestUrl("getAlbum"); url.addQueryItem("id", id); QNetworkReply* reply = service_->Send(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnGetAlbumFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnGetAlbumFinished(QNetworkReply*)), reply); pending_requests_.insert(reply); } diff --git a/src/internet/subsonicservice.h b/src/internet/subsonicservice.h index 47f2c0d60..4deb88644 100644 --- a/src/internet/subsonicservice.h +++ b/src/internet/subsonicservice.h @@ -14,14 +14,13 @@ class QXmlStreamReader; class SubsonicUrlHandler; class SubsonicLibraryScanner; -class SubsonicService : public InternetService -{ +class SubsonicService : public InternetService { Q_OBJECT Q_ENUMS(LoginState) Q_ENUMS(ApiError) public: - SubsonicService(Application* app, InternetModel *parent); + SubsonicService(Application* app, InternetModel* parent); ~SubsonicService(); enum LoginState { @@ -53,15 +52,9 @@ class SubsonicService : public InternetService ApiError_NotFound = 70, }; - enum Type { - Type_Artist = InternetModel::TypeCount, - Type_Album, - Type_Track, - }; + enum Type { Type_Artist = InternetModel::TypeCount, Type_Album, Type_Track, }; - enum Role { - Role_Id = InternetModel::RoleCount, - }; + enum Role { Role_Id = InternetModel::RoleCount, }; typedef QMap RequestOptions; @@ -74,11 +67,8 @@ class SubsonicService : public InternetService void ReloadSettings(); void Login(); - void Login( - const QString& server, - const QString& username, - const QString& password, - const bool& usesslv3); + void Login(const QString& server, const QString& username, + const QString& password, const bool& usesslv3); LoginState login_state() const { return login_state_; } @@ -88,7 +78,8 @@ class SubsonicService : public InternetService QUrl BuildRequestUrl(const QString& view) const; // Scrubs the part of the path that we re-add in BuildRequestUrl(). static QUrl ScrubUrl(const QUrl& url); - // Convenience function to reduce QNetworkRequest/QSslConfiguration boilerplate. + // Convenience function to reduce QNetworkRequest/QSslConfiguration + // boilerplate. QNetworkReply* Send(const QUrl& url); static const char* kServiceName; @@ -101,7 +92,7 @@ class SubsonicService : public InternetService static const int kMaxRedirects; - signals: +signals: void LoginStateChanged(SubsonicService::LoginState newstate); private: @@ -132,7 +123,7 @@ class SubsonicService : public InternetService bool usesslv3_; LoginState login_state_; - QString working_server_; // The actual server, possibly post-redirect + QString working_server_; // The actual server, possibly post-redirect int redirect_count_; private slots: @@ -158,7 +149,7 @@ class SubsonicLibraryScanner : public QObject { static const int kAlbumChunkSize; static const int kConcurrentRequests; - signals: +signals: void ScanFinished(); private slots: @@ -178,4 +169,4 @@ class SubsonicLibraryScanner : public QObject { SongList songs_; }; -#endif // SUBSONICSERVICE_H +#endif // SUBSONICSERVICE_H diff --git a/src/internet/subsonicsettingspage.cpp b/src/internet/subsonicsettingspage.cpp index c9bf7f171..cafa9d607 100644 --- a/src/internet/subsonicsettingspage.cpp +++ b/src/internet/subsonicsettingspage.cpp @@ -5,11 +5,10 @@ #include -SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) - : SettingsPage(dialog), - ui_(new Ui_SubsonicSettingsPage), - service_(InternetModel::Service()) -{ +SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog* dialog) + : SettingsPage(dialog), + ui_(new Ui_SubsonicSettingsPage), + service_(InternetModel::Service()) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/subsonic-32.png")); @@ -26,18 +25,15 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) ui_->login_state->AddCredentialField(ui_->usesslv3); ui_->login_state->AddCredentialGroup(ui_->server_group); - ui_->login_state->SetAccountTypeText(tr( - "Streaming from a Subsonic server requires a valid server license after the 30-day trial period.")); + ui_->login_state->SetAccountTypeText( + tr("Streaming from a Subsonic server requires a valid server license " + "after the 30-day trial period.")); ui_->login_state->SetAccountTypeVisible(true); } -SubsonicSettingsPage::~SubsonicSettingsPage() -{ - delete ui_; -} +SubsonicSettingsPage::~SubsonicSettingsPage() { delete ui_; } -void SubsonicSettingsPage::Load() -{ +void SubsonicSettingsPage::Load() { QSettings s; s.beginGroup(SubsonicService::kSettingsGroup); @@ -46,15 +42,15 @@ void SubsonicSettingsPage::Load() ui_->password->setText(s.value("password").toString()); ui_->usesslv3->setChecked(s.value("usesslv3").toBool()); - // If the settings are complete, SubsonicService will have used them already and + // If the settings are complete, SubsonicService will have used them already + // and // we can tell the user if they worked if (ui_->server->text() != "" && ui_->username->text() != "") { LoginStateChanged(service_->login_state()); } } -void SubsonicSettingsPage::Save() -{ +void SubsonicSettingsPage::Save() { QSettings s; s.beginGroup(SubsonicService::kSettingsGroup); @@ -64,81 +60,90 @@ void SubsonicSettingsPage::Save() s.setValue("usesslv3", ui_->usesslv3->isChecked()); } -void SubsonicSettingsPage::LoginStateChanged(SubsonicService::LoginState newstate) -{ +void SubsonicSettingsPage::LoginStateChanged( + SubsonicService::LoginState newstate) { const bool logged_in = newstate == SubsonicService::LoginState_Loggedin; - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - QString("%1 (%2)") - .arg(ui_->username->text()) - .arg(ui_->server->text())); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + QString("%1 (%2)").arg(ui_->username->text()).arg(ui_->server->text())); ui_->login_state->SetAccountTypeVisible(!logged_in); - switch (newstate) - { - case SubsonicService::LoginState_BadServer: - ui_->login_state->SetAccountTypeText(tr("Could not connect to Subsonic, check server URL. " - "Example: http://localhost:4040/")); - break; + switch (newstate) { + case SubsonicService::LoginState_BadServer: + ui_->login_state->SetAccountTypeText( + tr("Could not connect to Subsonic, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_BadCredentials: - ui_->login_state->SetAccountTypeText(tr("Wrong username or password.")); - break; + case SubsonicService::LoginState_BadCredentials: + ui_->login_state->SetAccountTypeText(tr("Wrong username or password.")); + break; - case SubsonicService::LoginState_OutdatedClient: - ui_->login_state->SetAccountTypeText(tr("Incompatible Subsonic REST protocol version. Client must upgrade.")); - break; + case SubsonicService::LoginState_OutdatedClient: + ui_->login_state->SetAccountTypeText(tr( + "Incompatible Subsonic REST protocol version. Client must upgrade.")); + break; - case SubsonicService::LoginState_OutdatedServer: - ui_->login_state->SetAccountTypeText(tr("Incompatible Subsonic REST protocol version. Server must upgrade.")); - break; + case SubsonicService::LoginState_OutdatedServer: + ui_->login_state->SetAccountTypeText(tr( + "Incompatible Subsonic REST protocol version. Server must upgrade.")); + break; - case SubsonicService::LoginState_Unlicensed: - ui_->login_state->SetAccountTypeText(tr("The trial period for the Subsonic server is over. " - "Please donate to get a license key. Visit subsonic.org for details.")); - break; + case SubsonicService::LoginState_Unlicensed: + ui_->login_state->SetAccountTypeText( + tr("The trial period for the Subsonic server is over. " + "Please donate to get a license key. Visit subsonic.org for " + "details.")); + break; - case SubsonicService::LoginState_OtherError: - ui_->login_state->SetAccountTypeText(tr("An unspecified error occurred.")); - break; + case SubsonicService::LoginState_OtherError: + ui_->login_state->SetAccountTypeText( + tr("An unspecified error occurred.")); + break; - case SubsonicService::LoginState_ConnectionRefused: - ui_->login_state->SetAccountTypeText(tr("Connection refused by server, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_ConnectionRefused: + ui_->login_state->SetAccountTypeText( + tr("Connection refused by server, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_HostNotFound: - ui_->login_state->SetAccountTypeText(tr("Host not found, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_HostNotFound: + ui_->login_state->SetAccountTypeText( + tr("Host not found, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_Timeout: - ui_->login_state->SetAccountTypeText(tr("Connection timed out, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_Timeout: + ui_->login_state->SetAccountTypeText( + tr("Connection timed out, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_SslError: - ui_->login_state->SetAccountTypeText(tr("SSL handshake error, verify server configuration. " - "SSLv3 option below may workaround some issues.")); - break; + case SubsonicService::LoginState_SslError: + ui_->login_state->SetAccountTypeText( + tr("SSL handshake error, verify server configuration. " + "SSLv3 option below may workaround some issues.")); + break; - case SubsonicService::LoginState_IncompleteCredentials: - ui_->login_state->SetAccountTypeText(tr("Incomplete configuration, please ensure all fields are populated.")); - break; + case SubsonicService::LoginState_IncompleteCredentials: + ui_->login_state->SetAccountTypeText(tr( + "Incomplete configuration, please ensure all fields are populated.")); + break; - case SubsonicService::LoginState_RedirectLimitExceeded: - ui_->login_state->SetAccountTypeText(tr("Redirect limit exceeded, verify server configuration.")); - break; + case SubsonicService::LoginState_RedirectLimitExceeded: + ui_->login_state->SetAccountTypeText( + tr("Redirect limit exceeded, verify server configuration.")); + break; - case SubsonicService::LoginState_RedirectNoUrl: - ui_->login_state->SetAccountTypeText(tr("HTTP 3xx status code received without URL, " - "verify server configuration.")); - break; + case SubsonicService::LoginState_RedirectNoUrl: + ui_->login_state->SetAccountTypeText( + tr("HTTP 3xx status code received without URL, " + "verify server configuration.")); + break; - - default: - break; + default: + break; } } @@ -146,26 +151,27 @@ void SubsonicSettingsPage::ServerEditingFinished() { QString input = ui_->server->text(); QUrl url = QUrl::fromUserInput(input); - // Veto things that don't get guessed as an HTTP URL, the result will be unhelpful + // Veto things that don't get guessed as an HTTP URL, the result will be + // unhelpful if (!url.scheme().startsWith("http")) { return; } - // If the user specified a /rest location, remove it since we're going to re-add it later + // If the user specified a /rest location, remove it since we're going to + // re-add it later url = SubsonicService::ScrubUrl(url); ui_->server->setText(url.toString()); qLog(Debug) << "URL fixed:" << input << "to" << url; } -void SubsonicSettingsPage::Login() -{ +void SubsonicSettingsPage::Login() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); - service_->Login(ui_->server->text(), ui_->username->text(), ui_->password->text(), ui_->usesslv3->isChecked()); + service_->Login(ui_->server->text(), ui_->username->text(), + ui_->password->text(), ui_->usesslv3->isChecked()); } -void SubsonicSettingsPage::Logout() -{ +void SubsonicSettingsPage::Logout() { ui_->username->setText(""); ui_->password->setText(""); } diff --git a/src/internet/subsonicsettingspage.h b/src/internet/subsonicsettingspage.h index 07579c400..111f43140 100644 --- a/src/internet/subsonicsettingspage.h +++ b/src/internet/subsonicsettingspage.h @@ -6,12 +6,11 @@ class Ui_SubsonicSettingsPage; -class SubsonicSettingsPage : public SettingsPage -{ +class SubsonicSettingsPage : public SettingsPage { Q_OBJECT public: - SubsonicSettingsPage(SettingsDialog *dialog); + SubsonicSettingsPage(SettingsDialog* dialog); ~SubsonicSettingsPage(); void Load(); @@ -30,4 +29,4 @@ class SubsonicSettingsPage : public SettingsPage SubsonicService* service_; }; -#endif // SUBSONICSETTINGSPAGE_H +#endif // SUBSONICSETTINGSPAGE_H diff --git a/src/internet/subsonicurlhandler.cpp b/src/internet/subsonicurlhandler.cpp index 0e1e6fe5c..ba348868a 100644 --- a/src/internet/subsonicurlhandler.cpp +++ b/src/internet/subsonicurlhandler.cpp @@ -1,10 +1,9 @@ #include "subsonicservice.h" #include "subsonicurlhandler.h" -SubsonicUrlHandler::SubsonicUrlHandler(SubsonicService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} +SubsonicUrlHandler::SubsonicUrlHandler(SubsonicService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult SubsonicUrlHandler::StartLoading(const QUrl& url) { if (service_->login_state() != SubsonicService::LoginState_Loggedin) diff --git a/src/internet/subsonicurlhandler.h b/src/internet/subsonicurlhandler.h index 6d820f6fc..0b5117d5c 100644 --- a/src/internet/subsonicurlhandler.h +++ b/src/internet/subsonicurlhandler.h @@ -14,10 +14,10 @@ class SubsonicUrlHandler : public UrlHandler { QString scheme() const { return "subsonic"; } QIcon icon() const { return QIcon(":providers/subsonic-32.png"); } LoadResult StartLoading(const QUrl& url); - //LoadResult LoadNext(const QUrl& url); + // LoadResult LoadNext(const QUrl& url); private: SubsonicService* service_; }; -#endif // SUBSONICURLHANDLER_H +#endif // SUBSONICURLHANDLER_H diff --git a/src/internet/ubuntuoneauthenticator.cpp b/src/internet/ubuntuoneauthenticator.cpp index 9a62460a9..74be05984 100644 --- a/src/internet/ubuntuoneauthenticator.cpp +++ b/src/internet/ubuntuoneauthenticator.cpp @@ -24,22 +24,20 @@ static const char* kOAuthHeaderPrefix = "OAuth realm=\"\", "; } UbuntuOneAuthenticator::UbuntuOneAuthenticator(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - success_(false) { -} + : QObject(parent), + network_(new NetworkAccessManager(this)), + success_(false) {} -void UbuntuOneAuthenticator::StartAuthorisation( - const QString& email, - const QString& password) { +void UbuntuOneAuthenticator::StartAuthorisation(const QString& email, + const QString& password) { QUrl url(kUbuntuOneEndpoint); url.addQueryItem("ws.op", "authenticate"); QString token_name = QString(kTokenNameTemplate).arg( - QHostInfo::localHostName(), - QCoreApplication::applicationName()); + QHostInfo::localHostName(), QCoreApplication::applicationName()); url.addQueryItem("token_name", token_name); - QByteArray authentication = QString(email + ":" + password).toAscii().toBase64(); + QByteArray authentication = + QString(email + ":" + password).toAscii().toBase64(); QString authorisation = QString("Basic %1").arg(QString::fromAscii(authentication)); @@ -48,8 +46,8 @@ void UbuntuOneAuthenticator::StartAuthorisation( request.setRawHeader("Accept", "application/json"); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AuthorisationFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(AuthorisationFinished(QNetworkReply*)), reply); qLog(Debug) << url; qLog(Debug) << authorisation; @@ -65,7 +63,8 @@ void UbuntuOneAuthenticator::AuthorisationFinished(QNetworkReply* reply) { bool ok = false; QVariant json = parser.parse(data, &ok); if (!ok) { - qLog(Error) << "Failed to authenticate to Ubuntu One:" << parser.errorString(); + qLog(Error) << "Failed to authenticate to Ubuntu One:" + << parser.errorString(); emit Finished(); return; } @@ -80,10 +79,8 @@ void UbuntuOneAuthenticator::AuthorisationFinished(QNetworkReply* reply) { } QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader( - const QString& consumer_key, - const QString& consumer_secret, - const QString& token, - const QString& token_secret) { + const QString& consumer_key, const QString& consumer_secret, + const QString& token, const QString& token_secret) { typedef QPair Param; QString timestamp = QString::number(time(nullptr)); QList parameters; @@ -95,18 +92,17 @@ QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader( << Param("oauth_signature_method", "PLAINTEXT"); qSort(parameters.begin(), parameters.end()); QStringList encoded_params; - foreach (const Param& p, parameters) { + foreach(const Param & p, parameters) { encoded_params << QString("%1=%2").arg(p.first, p.second); } - QString signing_key = - consumer_secret + "&" + token_secret; + QString signing_key = consumer_secret + "&" + token_secret; QByteArray signature = QUrl::toPercentEncoding(signing_key); // Construct authorisation header parameters << Param("oauth_signature", signature); QStringList header_params; - foreach (const Param& p, parameters) { + foreach(const Param & p, parameters) { header_params << QString("%1=\"%2\"").arg(p.first, p.second); } QString authorisation_header = header_params.join(", "); @@ -116,11 +112,8 @@ QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader( } QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader() { - return GenerateAuthorisationHeader( - consumer_key_, - consumer_secret_, - token_, - token_secret_); + return GenerateAuthorisationHeader(consumer_key_, consumer_secret_, token_, + token_secret_); } void UbuntuOneAuthenticator::CopySSOTokens() { @@ -130,8 +123,8 @@ void UbuntuOneAuthenticator::CopySSOTokens() { request.setRawHeader("Accept", "application/json"); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(CopySSOTokensFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(CopySSOTokensFinished(QNetworkReply*)), reply); } void UbuntuOneAuthenticator::CopySSOTokensFinished(QNetworkReply* reply) { diff --git a/src/internet/ubuntuoneauthenticator.h b/src/internet/ubuntuoneauthenticator.h index edac507c2..a61f40a36 100644 --- a/src/internet/ubuntuoneauthenticator.h +++ b/src/internet/ubuntuoneauthenticator.h @@ -18,13 +18,12 @@ class UbuntuOneAuthenticator : public QObject { QString token() const { return token_; } QString token_secret() const { return token_secret_; } - static QByteArray GenerateAuthorisationHeader( - const QString& consumer_key, - const QString& consumer_secret, - const QString& token, - const QString& token_secret); + static QByteArray GenerateAuthorisationHeader(const QString& consumer_key, + const QString& consumer_secret, + const QString& token, + const QString& token_secret); - signals: +signals: void Finished(); private slots: @@ -47,4 +46,4 @@ class UbuntuOneAuthenticator : public QObject { QString token_secret_; }; -#endif // UBUNTUONEAUTHENTICATOR_H +#endif // UBUNTUONEAUTHENTICATOR_H diff --git a/src/internet/ubuntuoneservice.cpp b/src/internet/ubuntuoneservice.cpp index 68b769096..7ee16461a 100644 --- a/src/internet/ubuntuoneservice.cpp +++ b/src/internet/ubuntuoneservice.cpp @@ -37,11 +37,9 @@ static const char* kServiceId = "ubuntu_one"; } UbuntuOneService::UbuntuOneService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/ubuntuone.png"), - SettingsDialog::Page_UbuntuOne) { + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":/providers/ubuntuone.png"), + SettingsDialog::Page_UbuntuOne) { app_->player()->RegisterUrlHandler(new UbuntuOneUrlHandler(this, this)); QSettings s; @@ -68,10 +66,7 @@ void UbuntuOneService::Connect() { QByteArray UbuntuOneService::GenerateAuthorisationHeader() { return UbuntuOneAuthenticator::GenerateAuthorisationHeader( - consumer_key_, - consumer_secret_, - token_, - token_secret_); + consumer_key_, consumer_secret_, token_, token_secret_); } void UbuntuOneService::AuthenticationFinished( @@ -107,8 +102,8 @@ QNetworkReply* UbuntuOneService::SendRequest(const QUrl& url) { void UbuntuOneService::RequestVolumeList() { QUrl volumes_url(kVolumesEndpoint); QNetworkReply* reply = SendRequest(volumes_url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(VolumeListRequestFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(VolumeListRequestFinished(QNetworkReply*)), reply); } void UbuntuOneService::VolumeListRequestFinished(QNetworkReply* reply) { @@ -116,7 +111,7 @@ void UbuntuOneService::VolumeListRequestFinished(QNetworkReply* reply) { QJson::Parser parser; QVariantList result = parser.parse(reply).toList(); - foreach (const QVariant& v, result) { + foreach(const QVariant & v, result) { RequestFileList(v.toMap()["node_path"].toString()); } } @@ -127,8 +122,8 @@ void UbuntuOneService::RequestFileList(const QString& path) { qLog(Debug) << "Sending files request" << files_url; QNetworkReply* files_reply = SendRequest(files_url); - NewClosure(files_reply, SIGNAL(finished()), - this, SLOT(FileListRequestFinished(QNetworkReply*)), files_reply); + NewClosure(files_reply, SIGNAL(finished()), this, + SLOT(FileListRequestFinished(QNetworkReply*)), files_reply); } void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) { @@ -137,7 +132,7 @@ void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) { QVariantMap result = parser.parse(reply).toMap(); QVariantList children = result["children"].toList(); - foreach (const QVariant& c, children) { + foreach(const QVariant & c, children) { QVariantMap child = c.toMap(); if (child["kind"].toString() == "file") { QString content_path = child["content_path"].toString(); @@ -150,17 +145,15 @@ void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) { Song metadata; metadata.set_url(service_url); metadata.set_etag(child["hash"].toString()); - metadata.set_mtime(QDateTime::fromString( - child["when_changed"].toString(), Qt::ISODate).toTime_t()); - metadata.set_ctime(QDateTime::fromString( - child["when_created"].toString(), Qt::ISODate).toTime_t()); + metadata.set_mtime(QDateTime::fromString(child["when_changed"].toString(), + Qt::ISODate).toTime_t()); + metadata.set_ctime(QDateTime::fromString(child["when_created"].toString(), + Qt::ISODate).toTime_t()); metadata.set_filesize(child["size"].toInt()); metadata.set_title(child["path"].toString().mid(1)); MaybeAddFileToDatabase( - metadata, - GuessMimeTypeForFile(child["path"].toString().mid(1)), - content_url, - GenerateAuthorisationHeader()); + metadata, GuessMimeTypeForFile(child["path"].toString().mid(1)), + content_url, GenerateAuthorisationHeader()); } else { RequestFileList(child["resource_path"].toString()); } @@ -185,6 +178,6 @@ void UbuntuOneService::ShowCoverManager() { } void UbuntuOneService::AddToPlaylist(QMimeData* mime) { - playlist_manager_->current()->dropMimeData( - mime, Qt::CopyAction, -1, 0, QModelIndex()); + playlist_manager_->current()->dropMimeData(mime, Qt::CopyAction, -1, 0, + QModelIndex()); } diff --git a/src/internet/ubuntuonesettingspage.cpp b/src/internet/ubuntuonesettingspage.cpp index 957b58c5f..2a7ed3783 100644 --- a/src/internet/ubuntuonesettingspage.cpp +++ b/src/internet/ubuntuonesettingspage.cpp @@ -38,8 +38,7 @@ void UbuntuOneSettingsPage::Load() { } } -void UbuntuOneSettingsPage::Save() { -} +void UbuntuOneSettingsPage::Save() {} void UbuntuOneSettingsPage::LoginClicked() { const QString username = ui_->username->text(); @@ -48,10 +47,10 @@ void UbuntuOneSettingsPage::LoginClicked() { UbuntuOneAuthenticator* authenticator = new UbuntuOneAuthenticator; authenticator->StartAuthorisation(username, password); - NewClosure(authenticator, SIGNAL(Finished()), - this, SLOT(Connected(UbuntuOneAuthenticator*)), authenticator); - NewClosure(authenticator, SIGNAL(Finished()), - service_, SLOT(AuthenticationFinished(UbuntuOneAuthenticator*)), + NewClosure(authenticator, SIGNAL(Finished()), this, + SLOT(Connected(UbuntuOneAuthenticator*)), authenticator); + NewClosure(authenticator, SIGNAL(Finished()), service_, + SLOT(AuthenticationFinished(UbuntuOneAuthenticator*)), authenticator); ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); @@ -77,7 +76,8 @@ void UbuntuOneSettingsPage::Connected(UbuntuOneAuthenticator* authenticator) { return; } - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, ui_->username->text()); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, + ui_->username->text()); authenticated_ = true; QSettings s; diff --git a/src/internet/ubuntuoneurlhandler.cpp b/src/internet/ubuntuoneurlhandler.cpp index 972039d63..ed939b28b 100644 --- a/src/internet/ubuntuoneurlhandler.cpp +++ b/src/internet/ubuntuoneurlhandler.cpp @@ -2,12 +2,9 @@ #include "ubuntuoneservice.h" -UbuntuOneUrlHandler::UbuntuOneUrlHandler( - UbuntuOneService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +UbuntuOneUrlHandler::UbuntuOneUrlHandler(UbuntuOneService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult UbuntuOneUrlHandler::StartLoading(const QUrl& url) { QString file_id = url.path(); diff --git a/src/library/directory.h b/src/library/directory.h index 9af610d36..fcc44feed 100644 --- a/src/library/directory.h +++ b/src/library/directory.h @@ -27,7 +27,7 @@ class QSqlQuery; struct Directory { Directory() : id(-1) {} - bool operator ==(const Directory& other) const { + bool operator==(const Directory& other) const { return path == other.path && id == other.id; } @@ -39,7 +39,6 @@ Q_DECLARE_METATYPE(Directory) typedef QList DirectoryList; Q_DECLARE_METATYPE(DirectoryList) - struct Subdirectory { Subdirectory() : directory_id(-1), mtime(0) {} @@ -52,4 +51,4 @@ Q_DECLARE_METATYPE(Subdirectory) typedef QList SubdirectoryList; Q_DECLARE_METATYPE(SubdirectoryList) -#endif // DIRECTORY_H +#endif // DIRECTORY_H diff --git a/src/library/groupbydialog.cpp b/src/library/groupbydialog.cpp index 8b2f49955..f7a1c883b 100644 --- a/src/library/groupbydialog.cpp +++ b/src/library/groupbydialog.cpp @@ -51,23 +51,20 @@ struct tag_group_by {}; class GroupByDialogPrivate { private: typedef multi_index_container< - Mapping, - indexed_by< - ordered_unique, - member >, - ordered_unique, - member > - > - > MappingContainer; + Mapping, + indexed_by< + ordered_unique, + member >, + ordered_unique, + member > > > MappingContainer; public: MappingContainer mapping_; }; -GroupByDialog::GroupByDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_GroupByDialog), - p_(new GroupByDialogPrivate) { +GroupByDialog::GroupByDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_GroupByDialog), p_(new GroupByDialogPrivate) { ui_->setupUi(this); Reset(); @@ -93,21 +90,26 @@ GroupByDialog::GroupByDialog(QWidget *parent) GroupByDialog::~GroupByDialog() {} void GroupByDialog::Reset() { - ui_->first->setCurrentIndex(2); // Artist - ui_->second->setCurrentIndex(1); // Album - ui_->third->setCurrentIndex(0); // None + ui_->first->setCurrentIndex(2); // Artist + ui_->second->setCurrentIndex(1); // Album + ui_->third->setCurrentIndex(0); // None } void GroupByDialog::accept() { emit Accepted(LibraryModel::Grouping( p_->mapping_.get().find(ui_->first->currentIndex())->group_by, p_->mapping_.get().find(ui_->second->currentIndex())->group_by, - p_->mapping_.get().find(ui_->third->currentIndex())->group_by)); + p_->mapping_.get() + .find(ui_->third->currentIndex()) + ->group_by)); QDialog::accept(); } void GroupByDialog::LibraryGroupingChanged(const LibraryModel::Grouping& g) { - ui_->first->setCurrentIndex(p_->mapping_.get().find(g[0])->combo_box_index); - ui_->second->setCurrentIndex(p_->mapping_.get().find(g[1])->combo_box_index); - ui_->third->setCurrentIndex(p_->mapping_.get().find(g[2])->combo_box_index); + ui_->first->setCurrentIndex( + p_->mapping_.get().find(g[0])->combo_box_index); + ui_->second->setCurrentIndex( + p_->mapping_.get().find(g[1])->combo_box_index); + ui_->third->setCurrentIndex( + p_->mapping_.get().find(g[2])->combo_box_index); } diff --git a/src/library/groupbydialog.h b/src/library/groupbydialog.h index 6c5cbc894..e1b3e8e3d 100644 --- a/src/library/groupbydialog.h +++ b/src/library/groupbydialog.h @@ -38,7 +38,7 @@ class GroupByDialog : public QDialog { void LibraryGroupingChanged(const LibraryModel::Grouping& g); void accept(); - signals: +signals: void Accepted(const LibraryModel::Grouping& g); private slots: @@ -49,4 +49,4 @@ class GroupByDialog : public QDialog { std::unique_ptr p_; }; -#endif // GROUPBYDIALOG_H +#endif // GROUPBYDIALOG_H diff --git a/src/library/library.cpp b/src/library/library.cpp index e631c9c41..ae827c5e2 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -34,18 +34,18 @@ const char* Library::kDirsTable = "directories"; const char* Library::kSubdirsTable = "subdirectories"; const char* Library::kFtsTable = "songs_fts"; -Library::Library(Application* app, QObject *parent) - : QObject(parent), - app_(app), - backend_(nullptr), - model_(nullptr), - watcher_(nullptr), - watcher_thread_(nullptr) -{ +Library::Library(Application* app, QObject* parent) + : QObject(parent), + app_(app), + backend_(nullptr), + model_(nullptr), + watcher_(nullptr), + watcher_thread_(nullptr) { backend_ = new LibraryBackend; backend()->moveToThread(app->database()->thread()); - backend_->Init(app->database(), kSongsTable, kDirsTable, kSubdirsTable, kFtsTable); + backend_->Init(app->database(), kSongsTable, kDirsTable, kSubdirsTable, + kFtsTable); using smart_playlists::Generator; using smart_playlists::GeneratorPtr; @@ -55,46 +55,64 @@ Library::Library(Application* app, QObject *parent) model_ = new LibraryModel(backend_, app_, this); model_->set_show_smart_playlists(true); - model_->set_default_smart_playlists(LibraryModel::DefaultGenerators() - << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "50 random tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title, 50))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Ever played"), Search( - Search::Type_And, Search::TermList() - << SearchTerm(SearchTerm::Field_PlayCount, SearchTerm::Op_GreaterThan, 0), - Search::Sort_Random, SearchTerm::Field_Title))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Never played"), Search( - Search::Type_And, Search::TermList() - << SearchTerm(SearchTerm::Field_PlayCount, SearchTerm::Op_Equals, 0), - Search::Sort_Random, SearchTerm::Field_Title))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Last played"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_LastPlayed))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Most played"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_PlayCount))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Favourite tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_Score))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Newest tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_DateCreated))) - ) << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "All tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldAsc, SearchTerm::Field_Artist, -1))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Least favourite tracks"), Search( - Search::Type_Or, Search::TermList() - << SearchTerm(SearchTerm::Field_Rating, SearchTerm::Op_LessThan, 0.6) - << SearchTerm(SearchTerm::Field_SkipCount, SearchTerm::Op_GreaterThan, 4), - Search::Sort_FieldDesc, SearchTerm::Field_SkipCount))) - ) << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Dynamic random mix"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title), true)) - ) - ); + model_->set_default_smart_playlists( + LibraryModel::DefaultGenerators() + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "50 random tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title, 50))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Ever played"), + Search(Search::Type_And, + Search::TermList() + << SearchTerm(SearchTerm::Field_PlayCount, + SearchTerm::Op_GreaterThan, 0), + Search::Sort_Random, SearchTerm::Field_Title))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Never played"), + Search(Search::Type_And, + Search::TermList() + << SearchTerm(SearchTerm::Field_PlayCount, + SearchTerm::Op_Equals, 0), + Search::Sort_Random, SearchTerm::Field_Title))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Last played"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_LastPlayed))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Most played"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_PlayCount))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Favourite tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_Score))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Newest tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, + SearchTerm::Field_DateCreated)))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "All tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldAsc, SearchTerm::Field_Artist, -1))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Least favourite tracks"), + Search(Search::Type_Or, + Search::TermList() + << SearchTerm(SearchTerm::Field_Rating, + SearchTerm::Op_LessThan, 0.6) + << SearchTerm(SearchTerm::Field_SkipCount, + SearchTerm::Op_GreaterThan, 4), + Search::Sort_FieldDesc, SearchTerm::Field_SkipCount)))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Dynamic random mix"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title), + true)))); // full rescan revisions full_rescan_revisions_[26] = tr("CUE sheet support"); @@ -116,44 +134,36 @@ void Library::Init() { watcher_->set_backend(backend_); watcher_->set_task_manager(app_->task_manager()); - connect(backend_, SIGNAL(DirectoryDiscovered(Directory,SubdirectoryList)), - watcher_, SLOT(AddDirectory(Directory,SubdirectoryList))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), - watcher_, SLOT(RemoveDirectory(Directory))); - connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), - backend_, SLOT(AddOrUpdateSongs(SongList))); - connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), - backend_, SLOT(UpdateMTimesOnly(SongList))); - connect(watcher_, SIGNAL(SongsDeleted(SongList)), - backend_, SLOT(MarkSongsUnavailable(SongList))); - connect(watcher_, SIGNAL(SongsReadded(SongList,bool)), - backend_, SLOT(MarkSongsUnavailable(SongList,bool))); - connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(CompilationsNeedUpdating()), - backend_, SLOT(UpdateCompilations())); + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + watcher_, SLOT(AddDirectory(Directory, SubdirectoryList))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), watcher_, + SLOT(RemoveDirectory(Directory))); + connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), backend_, + SLOT(AddOrUpdateSongs(SongList))); + connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), backend_, + SLOT(UpdateMTimesOnly(SongList))); + connect(watcher_, SIGNAL(SongsDeleted(SongList)), backend_, + SLOT(MarkSongsUnavailable(SongList))); + connect(watcher_, SIGNAL(SongsReadded(SongList, bool)), backend_, + SLOT(MarkSongsUnavailable(SongList, bool))); + connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(CompilationsNeedUpdating()), backend_, + SLOT(UpdateCompilations())); // This will start the watcher checking for updates backend_->LoadDirectoriesAsync(); } -void Library::IncrementalScan() { - watcher_->IncrementalScanAsync(); -} +void Library::IncrementalScan() { watcher_->IncrementalScanAsync(); } -void Library::FullScan() { - watcher_->FullScanAsync(); -} +void Library::FullScan() { watcher_->FullScanAsync(); } -void Library::PauseWatcher() { - watcher_->SetRescanPausedAsync(true); -} +void Library::PauseWatcher() { watcher_->SetRescanPausedAsync(true); } -void Library::ResumeWatcher() { - watcher_->SetRescanPausedAsync(false); -} +void Library::ResumeWatcher() { watcher_->SetRescanPausedAsync(false); } void Library::ReloadSettings() { backend_->ReloadSettingsAsync(); @@ -163,12 +173,13 @@ void Library::ReloadSettings() { void Library::WriteAllSongsStatisticsToFiles() { const SongList all_songs = backend_->GetAllSongs(); - const int task_id = app_->task_manager()->StartTask(tr("Saving songs statistics into songs files")); + const int task_id = app_->task_manager()->StartTask( + tr("Saving songs statistics into songs files")); app_->task_manager()->SetTaskBlocksLibraryScans(task_id); const int nb_songs = all_songs.size(); int i = 0; - foreach (const Song& song, all_songs) { + foreach(const Song & song, all_songs) { TagReaderClient::Instance()->UpdateSongStatisticsBlocking(song); TagReaderClient::Instance()->UpdateSongRatingBlocking(song); app_->task_manager()->SetTaskProgress(task_id, ++i, nb_songs); diff --git a/src/library/library.h b/src/library/library.h index 70681cda6..32b6c9a9b 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -45,7 +45,9 @@ class Library : public QObject { LibraryBackend* backend() const { return backend_; } LibraryModel* model() const { return model_; } - QString full_rescan_reason(int schema_version) const { return full_rescan_revisions_.value(schema_version, QString()); } + QString full_rescan_reason(int schema_version) const { + return full_rescan_revisions_.value(schema_version, QString()); + } void WriteAllSongsStatisticsToFiles(); @@ -68,7 +70,8 @@ class Library : public QObject { LibraryWatcher* watcher_; QThread* watcher_thread_; - // DB schema versions which should trigger a full library rescan (each of those with + // DB schema versions which should trigger a full library rescan (each of + // those with // a short reason why). QHash full_rescan_revisions_; }; diff --git a/src/library/librarybackend.cpp b/src/library/librarybackend.cpp index 3fde02881..d1f9bb37f 100644 --- a/src/library/librarybackend.cpp +++ b/src/library/librarybackend.cpp @@ -37,18 +37,18 @@ const char* LibraryBackend::kSettingsGroup = "LibraryBackend"; const char* LibraryBackend::kNewScoreSql = "case when playcount <= 0 then (%1 * 100 + score) / 2" - " else (score * (playcount + skipcount) + %1 * 100) / (playcount + skipcount + 1)" + " else (score * (playcount + skipcount) + %1 * 100) / (playcount + " + "skipcount + 1)" " end"; -LibraryBackend::LibraryBackend(QObject *parent) - : LibraryBackendInterface(parent), - save_statistics_in_file_(false), - save_ratings_in_file_(false) -{ -} +LibraryBackend::LibraryBackend(QObject* parent) + : LibraryBackendInterface(parent), + save_statistics_in_file_(false), + save_ratings_in_file_(false) {} void LibraryBackend::Init(Database* db, const QString& songs_table, - const QString& dirs_table, const QString& subdirs_table, + const QString& dirs_table, + const QString& subdirs_table, const QString& fts_table) { db_ = db; songs_table_ = songs_table; @@ -63,7 +63,8 @@ void LibraryBackend::LoadDirectoriesAsync() { } void LibraryBackend::UpdateTotalSongCountAsync() { - metaObject()->invokeMethod(this, "UpdateTotalSongCount", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "UpdateTotalSongCount", + Qt::QueuedConnection); } void LibraryBackend::IncrementPlayCountAsync(int id) { @@ -92,7 +93,7 @@ void LibraryBackend::LoadDirectories() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - foreach (const Directory& dir, dirs) { + foreach(const Directory & dir, dirs) { emit DirectoryDiscovered(dir, SubdirsInDirectory(dir.id, db)); } } @@ -104,7 +105,8 @@ void LibraryBackend::ChangeDirPath(int id, const QString& old_path, ScopedTransaction t(&db); // Do the dirs table - QSqlQuery q(QString("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_), db); + QSqlQuery q( + QString("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_), db); q.bindValue(":path", new_path); q.bindValue(":id", id); q.exec(); @@ -116,16 +118,24 @@ void LibraryBackend::ChangeDirPath(int id, const QString& old_path, const int path_len = old_url.length(); // Do the subdirs table - q = QSqlQuery(QString("UPDATE %1 SET path=:path || substr(path, %2)" - " WHERE directory=:id").arg(subdirs_table_).arg(path_len), db); + q = QSqlQuery(QString( + "UPDATE %1 SET path=:path || substr(path, %2)" + " WHERE directory=:id") + .arg(subdirs_table_) + .arg(path_len), + db); q.bindValue(":path", new_url); q.bindValue(":id", id); q.exec(); if (db_->CheckErrors(q)) return; // Do the songs table - q = QSqlQuery(QString("UPDATE %1 SET filename=:path || substr(filename, %2)" - " WHERE directory=:id").arg(songs_table_).arg(path_len), db); + q = QSqlQuery(QString( + "UPDATE %1 SET filename=:path || substr(filename, %2)" + " WHERE directory=:id") + .arg(songs_table_) + .arg(path_len), + db); q.bindValue(":path", new_url); q.bindValue(":id", id); q.exec(); @@ -160,9 +170,11 @@ SubdirectoryList LibraryBackend::SubdirsInDirectory(int id) { return SubdirsInDirectory(id, db); } -SubdirectoryList LibraryBackend::SubdirsInDirectory(int id, QSqlDatabase &db) { - QSqlQuery q(QString("SELECT path, mtime FROM %1" - " WHERE directory = :dir").arg(subdirs_table_), db); +SubdirectoryList LibraryBackend::SubdirsInDirectory(int id, QSqlDatabase& db) { + QSqlQuery q(QString( + "SELECT path, mtime FROM %1" + " WHERE directory = :dir").arg(subdirs_table_), + db); q.bindValue(":dir", id); q.exec(); if (db_->CheckErrors(q)) return SubdirectoryList(); @@ -183,7 +195,9 @@ void LibraryBackend::UpdateTotalSongCount() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("SELECT COUNT(*) FROM %1 WHERE unavailable = 0").arg(songs_table_), db); + QSqlQuery q(QString("SELECT COUNT(*) FROM %1 WHERE unavailable = 0") + .arg(songs_table_), + db); q.exec(); if (db_->CheckErrors(q)) return; if (!q.next()) return; @@ -195,17 +209,20 @@ void LibraryBackend::AddDirectory(const QString& path) { QString canonical_path = QFileInfo(path).canonicalFilePath(); QString db_path = canonical_path; - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(canonical_path))) { - db_path = Utilities::GetRelativePathToClementineBin(QUrl::fromLocalFile(db_path)).toLocalFile(); + if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine( + QUrl::fromLocalFile(canonical_path))) { + db_path = Utilities::GetRelativePathToClementineBin( + QUrl::fromLocalFile(db_path)).toLocalFile(); qLog(Debug) << "db_path" << db_path; } QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("INSERT INTO %1 (path, subdirs)" - " VALUES (:path, 1)").arg(dirs_table_), db); + QSqlQuery q(QString( + "INSERT INTO %1 (path, subdirs)" + " VALUES (:path, 1)").arg(dirs_table_), + db); q.bindValue(":path", db_path); q.exec(); if (db_->CheckErrors(q)) return; @@ -227,15 +244,15 @@ void LibraryBackend::RemoveDirectory(const Directory& dir) { ScopedTransaction transaction(&db); // Delete the subdirs that were in this directory - QSqlQuery q(QString("DELETE FROM %1 WHERE directory = :id") - .arg(subdirs_table_), db); + QSqlQuery q( + QString("DELETE FROM %1 WHERE directory = :id").arg(subdirs_table_), db); q.bindValue(":id", dir.id); q.exec(); if (db_->CheckErrors(q)) return; // Now remove the directory itself - q = QSqlQuery(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(dirs_table_), db); + q = QSqlQuery(QString("DELETE FROM %1 WHERE ROWID = :id").arg(dirs_table_), + db); q.bindValue(":id", dir.id); q.exec(); if (db_->CheckErrors(q)) return; @@ -249,9 +266,10 @@ SongList LibraryBackend::FindSongsInDirectory(int id) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + - " FROM %1 WHERE directory = :directory") - .arg(songs_table_), db); + QSqlQuery q( + QString("SELECT ROWID, " + Song::kColumnSpec + + " FROM %1 WHERE directory = :directory").arg(songs_table_), + db); q.bindValue(":directory", id); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -268,21 +286,28 @@ SongList LibraryBackend::FindSongsInDirectory(int id) { void LibraryBackend::AddOrUpdateSubdirs(const SubdirectoryList& subdirs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery find_query(QString("SELECT ROWID FROM %1" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); - QSqlQuery add_query(QString("INSERT INTO %1 (directory, path, mtime)" - " VALUES (:id, :path, :mtime)") - .arg(subdirs_table_), db); - QSqlQuery update_query(QString("UPDATE %1 SET mtime = :mtime" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); - QSqlQuery delete_query(QString("DELETE FROM %1" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); + QSqlQuery find_query( + QString( + "SELECT ROWID FROM %1" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); + QSqlQuery add_query(QString( + "INSERT INTO %1 (directory, path, mtime)" + " VALUES (:id, :path, :mtime)").arg(subdirs_table_), + db); + QSqlQuery update_query( + QString( + "UPDATE %1 SET mtime = :mtime" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); + QSqlQuery delete_query( + QString( + "DELETE FROM %1" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); ScopedTransaction transaction(&db); - foreach (const Subdirectory& subdir, subdirs) { + foreach(const Subdirectory & subdir, subdirs) { if (subdir.mtime == 0) { // Delete the subdirectory delete_query.bindValue(":id", subdir.directory_id); @@ -318,25 +343,32 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery check_dir(QString("SELECT ROWID FROM %1 WHERE ROWID = :id") - .arg(dirs_table_), db); - QSqlQuery add_song(QString("INSERT INTO %1 (" + Song::kColumnSpec + ")" - " VALUES (" + Song::kBindSpec + ")") - .arg(songs_table_), db); + QSqlQuery check_dir( + QString("SELECT ROWID FROM %1 WHERE ROWID = :id").arg(dirs_table_), db); + QSqlQuery add_song(QString("INSERT INTO %1 (" + Song::kColumnSpec + + ")" + " VALUES (" + + Song::kBindSpec + ")").arg(songs_table_), + db); QSqlQuery update_song(QString("UPDATE %1 SET " + Song::kUpdateSpec + - " WHERE ROWID = :id").arg(songs_table_), db); - QSqlQuery add_song_fts(QString("INSERT INTO %1 (ROWID, " + Song::kFtsColumnSpec + ")" - " VALUES (:id, " + Song::kFtsBindSpec + ")") - .arg(fts_table_), db); + " WHERE ROWID = :id").arg(songs_table_), + db); + QSqlQuery add_song_fts( + QString("INSERT INTO %1 (ROWID, " + Song::kFtsColumnSpec + + ")" + " VALUES (:id, " + + Song::kFtsBindSpec + ")").arg(fts_table_), + db); QSqlQuery update_song_fts(QString("UPDATE %1 SET " + Song::kFtsUpdateSpec + - " WHERE ROWID = :id").arg(fts_table_), db); + " WHERE ROWID = :id").arg(fts_table_), + db); ScopedTransaction transaction(&db); SongList added_songs; SongList deleted_songs; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { // Do a sanity check first - make sure the song's directory still exists // This is to fix a possible race condition when a directory is removed // while LibraryWatcher is scanning it. @@ -345,8 +377,7 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { check_dir.exec(); if (db_->CheckErrors(check_dir)) continue; - if (!check_dir.next()) - continue; // Directory didn't exist + if (!check_dir.next()) continue; // Directory didn't exist } if (song.id() == -1) { @@ -372,8 +403,7 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { } else { // Get the previous song data first Song old_song(GetSongById(song.id())); - if (!old_song.is_valid()) - continue; + if (!old_song.is_valid()) continue; // Update song.BindToQuery(&update_song); @@ -393,11 +423,9 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { transaction.Commit(); - if (!deleted_songs.isEmpty()) - emit SongsDeleted(deleted_songs); + if (!deleted_songs.isEmpty()) emit SongsDeleted(deleted_songs); - if (!added_songs.isEmpty()) - emit SongsDiscovered(added_songs); + if (!added_songs.isEmpty()) emit SongsDiscovered(added_songs); UpdateTotalSongCountAsync(); } @@ -407,10 +435,11 @@ void LibraryBackend::UpdateMTimesOnly(const SongList& songs) { QSqlDatabase db(db_->Connect()); QSqlQuery q(QString("UPDATE %1 SET mtime = :mtime WHERE ROWID = :id") - .arg(songs_table_), db); + .arg(songs_table_), + db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { q.bindValue(":mtime", song.mtime()); q.bindValue(":id", song.id()); q.exec(); @@ -419,17 +448,17 @@ void LibraryBackend::UpdateMTimesOnly(const SongList& songs) { transaction.Commit(); } -void LibraryBackend::DeleteSongs(const SongList &songs) { +void LibraryBackend::DeleteSongs(const SongList& songs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery remove(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(songs_table_), db); - QSqlQuery remove_fts(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(fts_table_), db); + QSqlQuery remove( + QString("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery remove_fts( + QString("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_), db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { remove.bindValue(":id", song.id()); remove.exec(); db_->CheckErrors(remove); @@ -445,15 +474,18 @@ void LibraryBackend::DeleteSongs(const SongList &songs) { UpdateTotalSongCountAsync(); } -void LibraryBackend::MarkSongsUnavailable(const SongList& songs, bool unavailable) { +void LibraryBackend::MarkSongsUnavailable(const SongList& songs, + bool unavailable) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery remove(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id") - .arg(songs_table_).arg(int(unavailable)), db); + .arg(songs_table_) + .arg(int(unavailable)), + db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { remove.bindValue(":id", song.id()); remove.exec(); db_->CheckErrors(remove); @@ -464,7 +496,8 @@ void LibraryBackend::MarkSongsUnavailable(const SongList& songs, bool unavailabl UpdateTotalSongCountAsync(); } -QStringList LibraryBackend::GetAll(const QString& column, const QueryOptions& opt) { +QStringList LibraryBackend::GetAll(const QString& column, + const QueryOptions& opt) { LibraryQuery query(opt); query.SetColumnSpec("DISTINCT " + column); query.AddCompilationRequirement(false); @@ -499,24 +532,26 @@ QStringList LibraryBackend::GetAllArtistsWithAlbums(const QueryOptions& opt) { return ret; } -LibraryBackend::AlbumList LibraryBackend::GetAllAlbums(const QueryOptions &opt) { +LibraryBackend::AlbumList LibraryBackend::GetAllAlbums( + const QueryOptions& opt) { return GetAlbums(QString(), false, opt); } -LibraryBackend::AlbumList LibraryBackend::GetAlbumsByArtist(const QString& artist, - const QueryOptions& opt) { +LibraryBackend::AlbumList LibraryBackend::GetAlbumsByArtist( + const QString& artist, const QueryOptions& opt) { return GetAlbums(artist, false, opt); } - -SongList LibraryBackend::GetSongsByAlbum(const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetSongsByAlbum(const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.AddCompilationRequirement(false); query.AddWhere("album", album); return ExecLibraryQuery(&query); } -SongList LibraryBackend::GetSongs(const QString& artist, const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.AddCompilationRequirement(false); query.AddWhere("artist", artist); @@ -549,9 +584,7 @@ SongList LibraryBackend::GetSongsById(const QList& ids) { QSqlDatabase db(db_->Connect()); QStringList str_ids; - foreach (int id, ids) { - str_ids << QString::number(id); - } + foreach(int id, ids) { str_ids << QString::number(id); } return GetSongsById(str_ids, db); } @@ -563,17 +596,22 @@ SongList LibraryBackend::GetSongsById(const QStringList& ids) { return GetSongsById(ids, db); } -SongList LibraryBackend::GetSongsByForeignId( - const QStringList& ids, const QString& table, const QString& column) { +SongList LibraryBackend::GetSongsByForeignId(const QStringList& ids, + const QString& table, + const QString& column) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QString in = ids.join(","); - QSqlQuery q(QString("SELECT %2.ROWID, " + Song::kColumnSpec + ", %2.%3" - " FROM %2, %1" - " WHERE %2.%3 IN (%4) AND %1.ROWID = %2.ROWID AND unavailable = 0") - .arg(songs_table_, table, column, in), db); + QSqlQuery q( + QString( + "SELECT %2.ROWID, " + Song::kColumnSpec + + ", %2.%3" + " FROM %2, %1" + " WHERE %2.%3 IN (%4) AND %1.ROWID = %2.ROWID AND unavailable = 0") + .arg(songs_table_, table, column, in), + db); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -581,8 +619,7 @@ SongList LibraryBackend::GetSongsByForeignId( while (q.next()) { const QString foreign_id = q.value(Song::kColumns.count() + 1).toString(); const int index = ids.indexOf(foreign_id); - if (index == -1) - continue; + if (index == -1) continue; ret[index].InitFromQuery(q, true); } @@ -591,16 +628,18 @@ SongList LibraryBackend::GetSongsByForeignId( Song LibraryBackend::GetSongById(int id, QSqlDatabase& db) { SongList list = GetSongsById(QStringList() << QString::number(id), db); - if (list.isEmpty()) - return Song(); + if (list.isEmpty()) return Song(); return list.first(); } -SongList LibraryBackend::GetSongsById(const QStringList& ids, QSqlDatabase& db) { +SongList LibraryBackend::GetSongsById(const QStringList& ids, + QSqlDatabase& db) { QString in = ids.join(","); - QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + " FROM %1" - " WHERE ROWID IN (%2)").arg(songs_table_, in), db); + QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + + " FROM %1" + " WHERE ROWID IN (%2)").arg(songs_table_, in), + db); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -633,7 +672,7 @@ SongList LibraryBackend::GetSongsByUrl(const QUrl& url) { SongList songlist; if (ExecQuery(&query)) { - while(query.Next()) { + while (query.Next()) { Song song; song.InitFromQuery(query, true); @@ -643,11 +682,13 @@ SongList LibraryBackend::GetSongsByUrl(const QUrl& url) { return songlist; } -LibraryBackend::AlbumList LibraryBackend::GetCompilationAlbums(const QueryOptions& opt) { +LibraryBackend::AlbumList LibraryBackend::GetCompilationAlbums( + const QueryOptions& opt) { return GetAlbums(QString(), true, opt); } -SongList LibraryBackend::GetCompilationSongs(const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetCompilationSongs(const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); query.AddCompilationRequirement(true); @@ -669,11 +710,15 @@ void LibraryBackend::UpdateCompilations() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - // Look for albums that have songs by more than one 'effective album artist' in the same + // Look for albums that have songs by more than one 'effective album artist' + // in the same // directory - QSqlQuery q(QString("SELECT effective_albumartist, album, filename, sampler " - "FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_), db); + QSqlQuery q( + QString( + "SELECT effective_albumartist, album, filename, sampler " + "FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_), + db); q.exec(); if (db_->CheckErrors(q)) return; @@ -685,49 +730,61 @@ void LibraryBackend::UpdateCompilations() { bool sampler = q.value(3).toBool(); // Ignore songs that don't have an album field set - if (album.isEmpty()) - continue; + if (album.isEmpty()) continue; // Find the directory the song is in int last_separator = filename.lastIndexOf('/'); - if (last_separator == -1) - continue; + if (last_separator == -1) continue; CompilationInfo& info = compilation_info[album]; info.artists.insert(artist); info.directories.insert(filename.left(last_separator)); - if (sampler) info.has_samplers = true; - else info.has_not_samplers = true; + if (sampler) + info.has_samplers = true; + else + info.has_not_samplers = true; } // Now mark the songs that we think are in compilations - QSqlQuery update(QString("UPDATE %1" - " SET sampler = :sampler," - " effective_compilation = ((compilation OR :sampler OR forced_compilation_on) AND NOT forced_compilation_off) + 0" - " WHERE album = :album AND unavailable = 0").arg(songs_table_), db); - QSqlQuery find_songs(QString("SELECT ROWID, " + Song::kColumnSpec + " FROM %1" - " WHERE album = :album AND sampler = :sampler AND unavailable = 0") - .arg(songs_table_), db); + QSqlQuery update( + QString( + "UPDATE %1" + " SET sampler = :sampler," + " effective_compilation = ((compilation OR :sampler OR " + "forced_compilation_on) AND NOT forced_compilation_off) + 0" + " WHERE album = :album AND unavailable = 0").arg(songs_table_), + db); + QSqlQuery find_songs( + QString( + "SELECT ROWID, " + Song::kColumnSpec + + " FROM %1" + " WHERE album = :album AND sampler = :sampler AND unavailable = 0") + .arg(songs_table_), + db); SongList deleted_songs; SongList added_songs; ScopedTransaction transaction(&db); - QMap::const_iterator it = compilation_info.constBegin(); - for ( ; it != compilation_info.constEnd() ; ++it) { + QMap::const_iterator it = + compilation_info.constBegin(); + for (; it != compilation_info.constEnd(); ++it) { const CompilationInfo& info = it.value(); QString album(it.key()); - // If there were more 'effective album artists' than there were directories for this album, + // If there were more 'effective album artists' than there were directories + // for this album, // then it's a compilation if (info.artists.count() > info.directories.count()) { if (info.has_not_samplers) - UpdateCompilations(find_songs, update, deleted_songs, added_songs, album, 1); + UpdateCompilations(find_songs, update, deleted_songs, added_songs, + album, 1); } else { if (info.has_samplers) - UpdateCompilations(find_songs, update, deleted_songs, added_songs, album, 0); + UpdateCompilations(find_songs, update, deleted_songs, added_songs, + album, 0); } } @@ -739,8 +796,10 @@ void LibraryBackend::UpdateCompilations() { } } -void LibraryBackend::UpdateCompilations(QSqlQuery& find_songs, QSqlQuery& update, - SongList& deleted_songs, SongList& added_songs, +void LibraryBackend::UpdateCompilations(QSqlQuery& find_songs, + QSqlQuery& update, + SongList& deleted_songs, + SongList& added_songs, const QString& album, int sampler) { // Get songs that were already in that album, so we can tell the model // they've been updated @@ -768,8 +827,9 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, AlbumList ret; LibraryQuery query(opt); - query.SetColumnSpec("album, artist, compilation, sampler, art_automatic, " - "art_manual, filename"); + query.SetColumnSpec( + "album, artist, compilation, sampler, art_automatic, " + "art_manual, filename"); query.SetOrderBy("album"); if (compilation) { @@ -794,8 +854,7 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, info.art_manual = query.Value(5).toString(); info.first_url = QUrl::fromEncoded(query.Value(6).toByteArray()); - if (info.artist == last_artist && info.album_name == last_album) - continue; + if (info.artist == last_artist && info.album_name == last_album) continue; ret << info; @@ -806,7 +865,8 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, return ret; } -LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const QString& album) { +LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, + const QString& album) { Album ret; ret.album_name = album; ret.artist = artist; @@ -828,18 +888,17 @@ LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const Q return ret; } -void LibraryBackend::UpdateManualAlbumArtAsync(const QString &artist, - const QString &album, - const QString &art) { +void LibraryBackend::UpdateManualAlbumArtAsync(const QString& artist, + const QString& album, + const QString& art) { metaObject()->invokeMethod(this, "UpdateManualAlbumArt", Qt::QueuedConnection, - Q_ARG(QString, artist), - Q_ARG(QString, album), + Q_ARG(QString, artist), Q_ARG(QString, album), Q_ARG(QString, art)); } -void LibraryBackend::UpdateManualAlbumArt(const QString &artist, - const QString &album, - const QString &art) { +void LibraryBackend::UpdateManualAlbumArt(const QString& artist, + const QString& album, + const QString& art) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); @@ -847,8 +906,7 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, LibraryQuery query; query.SetColumnSpec("ROWID, " + Song::kColumnSpec); query.AddWhere("album", album); - if (!artist.isNull()) - query.AddWhere("artist", artist); + if (!artist.isNull()) query.AddWhere("artist", artist); if (!ExecQuery(&query)) return; @@ -859,23 +917,21 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, deleted_songs << song; } - // Update the songs - QString sql(QString("UPDATE %1 SET art_manual = :art" - " WHERE album = :album AND unavailable = 0").arg(songs_table_)); - if (!artist.isNull()) - sql += " AND artist = :artist"; + QString sql( + QString( + "UPDATE %1 SET art_manual = :art" + " WHERE album = :album AND unavailable = 0").arg(songs_table_)); + if (!artist.isNull()) sql += " AND artist = :artist"; QSqlQuery q(sql, db); q.bindValue(":art", art); q.bindValue(":album", album); - if (!artist.isNull()) - q.bindValue(":artist", artist); + if (!artist.isNull()) q.bindValue(":artist", artist); q.exec(); db_->CheckErrors(q); - // Now get the updated songs if (!ExecQuery(&query)) return; @@ -892,18 +948,18 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, } } -void LibraryBackend::ForceCompilation(const QString& album, const QList& artists, bool on) { +void LibraryBackend::ForceCompilation(const QString& album, + const QList& artists, bool on) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SongList deleted_songs, added_songs; - foreach(const QString &artist, artists) { + foreach(const QString & artist, artists) { // Get the songs before they're updated LibraryQuery query; query.SetColumnSpec("ROWID, " + Song::kColumnSpec); query.AddWhere("album", album); - if (!artist.isNull()) - query.AddWhere("artist", artist); + if (!artist.isNull()) query.AddWhere("artist", artist); if (!ExecQuery(&query)) return; @@ -914,19 +970,20 @@ void LibraryBackend::ForceCompilation(const QString& album, const QList } // Update the songs - QString sql(QString("UPDATE %1 SET forced_compilation_on = :forced_compilation_on," - " forced_compilation_off = :forced_compilation_off," - " effective_compilation = ((compilation OR sampler OR :forced_compilation_on) AND NOT :forced_compilation_off) + 0" - " WHERE album = :album AND unavailable = 0").arg(songs_table_)); - if (!artist.isEmpty()) - sql += " AND artist = :artist"; + QString sql( + QString( + "UPDATE %1 SET forced_compilation_on = :forced_compilation_on," + " forced_compilation_off = :forced_compilation_off," + " effective_compilation = ((compilation OR sampler OR " + ":forced_compilation_on) AND NOT :forced_compilation_off) + 0" + " WHERE album = :album AND unavailable = 0").arg(songs_table_)); + if (!artist.isEmpty()) sql += " AND artist = :artist"; QSqlQuery q(sql, db); q.bindValue(":forced_compilation_on", on ? 1 : 0); q.bindValue(":forced_compilation_off", on ? 0 : 1); q.bindValue(":album", album); - if (!artist.isEmpty()) - q.bindValue(":artist", artist); + if (!artist.isEmpty()) q.bindValue(":artist", artist); q.exec(); db_->CheckErrors(q); @@ -947,7 +1004,7 @@ void LibraryBackend::ForceCompilation(const QString& album, const QList } } -bool LibraryBackend::ExecQuery(LibraryQuery *q) { +bool LibraryBackend::ExecQuery(LibraryQuery* q) { return !db_->CheckErrors(q->Exec(db_->Connect(), songs_table_, fts_table_)); } @@ -962,8 +1019,7 @@ SongList LibraryBackend::FindSongs(const smart_playlists::Search& search) { SongList ret; QSqlQuery query(sql, db); query.exec(); - if (db_->CheckErrors(query)) - return ret; + if (db_->CheckErrors(query)) return ret; // Read the results while (query.next()) { @@ -978,84 +1034,86 @@ SongList LibraryBackend::GetAllSongs() { // Get all the songs! return FindSongs(smart_playlists::Search( smart_playlists::Search::Type_All, smart_playlists::Search::TermList(), - smart_playlists::Search::Sort_FieldAsc, smart_playlists::SearchTerm::Field_Artist, -1)); + smart_playlists::Search::Sort_FieldAsc, + smart_playlists::SearchTerm::Field_Artist, -1)); } void LibraryBackend::IncrementPlayCount(int id) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET playcount = playcount + 1," - " lastplayed = :now," - " score = " + QString(kNewScoreSql).arg("1.0") + - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET playcount = playcount + 1," + " lastplayed = :now," + " score = " + + QString(kNewScoreSql).arg("1.0") + + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":now", QDateTime::currentDateTime().toTime_t()); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::IncrementSkipCount(int id, float progress) { - if (id == -1) - return; + if (id == -1) return; progress = qBound(0.0f, progress, 1.0f); QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET skipcount = skipcount + 1," - " score = " + QString(kNewScoreSql).arg(progress) + - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET skipcount = skipcount + 1," + " score = " + + QString(kNewScoreSql).arg(progress) + + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::ResetStatistics(int id) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q(QString( - "UPDATE %1 SET playcount = 0, skipcount = 0," - " lastplayed = -1, score = 0" - " WHERE ROWID = :id").arg(songs_table_), db); + "UPDATE %1 SET playcount = 0, skipcount = 0," + " lastplayed = -1, score = 0" + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::UpdateSongRating(int id, float rating) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET rating = :rating" - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET rating = :rating" + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":rating", rating); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsRatingChanged(SongList() << new_song); @@ -1069,13 +1127,11 @@ void LibraryBackend::DeleteAll() { QSqlQuery q("DELETE FROM " + songs_table_, db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; q = QSqlQuery("DELETE FROM " + fts_table_, db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; t.Commit(); } @@ -1093,14 +1149,18 @@ void LibraryBackend::ReloadSettings() { // Statistics { - bool save_statistics_in_file = s.value("save_statistics_in_file", false).toBool(); - // Compare with previous value to know if we should connect, disconnect or nothing + bool save_statistics_in_file = + s.value("save_statistics_in_file", false).toBool(); + // Compare with previous value to know if we should connect, disconnect or + // nothing if (save_statistics_in_file_ && !save_statistics_in_file) { disconnect(this, SIGNAL(SongsStatisticsChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsStatistics(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsStatistics(SongList))); } else if (!save_statistics_in_file_ && save_statistics_in_file) { connect(this, SIGNAL(SongsStatisticsChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsStatistics(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsStatistics(SongList))); } // Save old value save_statistics_in_file_ = save_statistics_in_file; @@ -1109,13 +1169,15 @@ void LibraryBackend::ReloadSettings() { // Rating { bool save_ratings_in_file = s.value("save_ratings_in_file", false).toBool(); - // Compare with previous value to know if we should connect, disconnect or nothing + // Compare with previous value to know if we should connect, disconnect or + // nothing if (save_ratings_in_file_ && !save_ratings_in_file) { disconnect(this, SIGNAL(SongsRatingChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsRating(SongList))); } else if (!save_ratings_in_file_ && save_ratings_in_file) { connect(this, SIGNAL(SongsRatingChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); + TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); } // Save old value save_ratings_in_file_ = save_ratings_in_file; diff --git a/src/library/librarybackend.h b/src/library/librarybackend.h index 45137c800..9a3bb458b 100644 --- a/src/library/librarybackend.h +++ b/src/library/librarybackend.h @@ -28,12 +28,14 @@ class Database; -namespace smart_playlists { class Search; } +namespace smart_playlists { +class Search; +} class LibraryBackendInterface : public QObject { Q_OBJECT -public: + public: LibraryBackendInterface(QObject* parent = 0) : QObject(parent) {} virtual ~LibraryBackendInterface() {} @@ -42,9 +44,11 @@ public: Album(const QString& _artist, const QString& _album_name, const QString& _art_automatic, const QString& _art_manual, const QUrl& _first_url) - : artist(_artist), album_name(_album_name), - art_automatic(_art_automatic), art_manual(_art_manual), - first_url(_first_url) {} + : artist(_artist), + album_name(_album_name), + art_automatic(_art_automatic), + art_manual(_art_manual), + first_url(_first_url) {} QString artist; QString album_name; @@ -66,31 +70,43 @@ public: virtual SongList FindSongsInDirectory(int id) = 0; virtual SubdirectoryList SubdirsInDirectory(int id) = 0; virtual DirectoryList GetAllDirectories() = 0; - virtual void ChangeDirPath(int id, const QString& old_path, const QString& new_path) = 0; + virtual void ChangeDirPath(int id, const QString& old_path, + const QString& new_path) = 0; - virtual QStringList GetAllArtists(const QueryOptions& opt = QueryOptions()) = 0; - virtual QStringList GetAllArtistsWithAlbums(const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetSongsByAlbum(const QString& album, const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetSongs( - const QString& artist, const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual QStringList GetAllArtists( + const QueryOptions& opt = QueryOptions()) = 0; + virtual QStringList GetAllArtistsWithAlbums( + const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetSongsByAlbum( + const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetCompilationSongs(const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetCompilationSongs( + const QString& album, const QueryOptions& opt = QueryOptions()) = 0; virtual AlbumList GetAllAlbums(const QueryOptions& opt = QueryOptions()) = 0; - virtual AlbumList GetAlbumsByArtist(const QString& artist, const QueryOptions& opt = QueryOptions()) = 0; - virtual AlbumList GetCompilationAlbums(const QueryOptions& opt = QueryOptions()) = 0; + virtual AlbumList GetAlbumsByArtist( + const QString& artist, const QueryOptions& opt = QueryOptions()) = 0; + virtual AlbumList GetCompilationAlbums( + const QueryOptions& opt = QueryOptions()) = 0; - virtual void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, const QString& art) = 0; + virtual void UpdateManualAlbumArtAsync(const QString& artist, + const QString& album, + const QString& art) = 0; virtual Album GetAlbumArt(const QString& artist, const QString& album) = 0; virtual Song GetSongById(int id) = 0; - // Returns all sections of a song with the given filename. If there's just one section + // Returns all sections of a song with the given filename. If there's just one + // section // the resulting list will have it's size equal to 1. virtual SongList GetSongsByUrl(const QUrl& url) = 0; - // Returns a section of a song with the given filename and beginning. If the section + // Returns a section of a song with the given filename and beginning. If the + // section // is not present in library, returns invalid song. - // Using default beginning value is suitable when searching for single-section songs. + // Using default beginning value is suitable when searching for single-section + // songs. virtual Song GetSongByUrl(const QUrl& url, qint64 beginning = 0) = 0; virtual void AddDirectory(const QString& path) = 0; @@ -106,9 +122,8 @@ class LibraryBackend : public LibraryBackendInterface { static const char* kSettingsGroup; Q_INVOKABLE LibraryBackend(QObject* parent = 0); - void Init(Database* db, const QString& songs_table, - const QString& dirs_table, const QString& subdirs_table, - const QString& fts_table); + void Init(Database* db, const QString& songs_table, const QString& dirs_table, + const QString& subdirs_table, const QString& fts_table); Database* db() const { return db_; } @@ -127,19 +142,25 @@ class LibraryBackend : public LibraryBackendInterface { DirectoryList GetAllDirectories(); void ChangeDirPath(int id, const QString& old_path, const QString& new_path); - QStringList GetAll(const QString& column, const QueryOptions& opt = QueryOptions()); + QStringList GetAll(const QString& column, + const QueryOptions& opt = QueryOptions()); QStringList GetAllArtists(const QueryOptions& opt = QueryOptions()); QStringList GetAllArtistsWithAlbums(const QueryOptions& opt = QueryOptions()); - SongList GetSongsByAlbum(const QString& album, const QueryOptions& opt = QueryOptions()); - SongList GetSongs(const QString& artist, const QString& album, const QueryOptions& opt = QueryOptions()); + SongList GetSongsByAlbum(const QString& album, + const QueryOptions& opt = QueryOptions()); + SongList GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt = QueryOptions()); - SongList GetCompilationSongs(const QString& album, const QueryOptions& opt = QueryOptions()); + SongList GetCompilationSongs(const QString& album, + const QueryOptions& opt = QueryOptions()); AlbumList GetAllAlbums(const QueryOptions& opt = QueryOptions()); - AlbumList GetAlbumsByArtist(const QString& artist, const QueryOptions& opt = QueryOptions()); + AlbumList GetAlbumsByArtist(const QString& artist, + const QueryOptions& opt = QueryOptions()); AlbumList GetCompilationAlbums(const QueryOptions& opt = QueryOptions()); - void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, const QString& art); + void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, + const QString& art); Album GetAlbumArt(const QString& artist, const QString& album); Song GetSongById(int id); @@ -177,16 +198,19 @@ class LibraryBackend : public LibraryBackendInterface { void MarkSongsUnavailable(const SongList& songs, bool unavailable = true); void AddOrUpdateSubdirs(const SubdirectoryList& subdirs); void UpdateCompilations(); - void UpdateManualAlbumArt(const QString& artist, const QString& album, const QString& art); - void ForceCompilation(const QString& album, const QList& artists, bool on); + void UpdateManualAlbumArt(const QString& artist, const QString& album, + const QString& art); + void ForceCompilation(const QString& album, const QList& artists, + bool on); void IncrementPlayCount(int id); void IncrementSkipCount(int id, float progress); void ResetStatistics(int id); void UpdateSongRating(int id, float rating); void ReloadSettings(); - signals: - void DirectoryDiscovered(const Directory& dir, const SubdirectoryList& subdirs); +signals: + void DirectoryDiscovered(const Directory& dir, + const SubdirectoryList& subdirs); void DirectoryDeleted(const Directory& dir); void SongsDiscovered(const SongList& songs); @@ -206,7 +230,6 @@ class LibraryBackend : public LibraryBackendInterface { bool has_samplers; bool has_not_samplers; - }; static const char* kNewScoreSql; @@ -231,4 +254,4 @@ class LibraryBackend : public LibraryBackendInterface { bool save_ratings_in_file_; }; -#endif // LIBRARYBACKEND_H +#endif // LIBRARYBACKEND_H diff --git a/src/library/librarydirectorymodel.cpp b/src/library/librarydirectorymodel.cpp index 06596f242..afe18c783 100644 --- a/src/library/librarydirectorymodel.cpp +++ b/src/library/librarydirectorymodel.cpp @@ -23,35 +23,37 @@ #include "core/utilities.h" #include "ui/iconloader.h" -LibraryDirectoryModel::LibraryDirectoryModel(LibraryBackend* backend, QObject* parent) - : QStandardItemModel(parent), - dir_icon_(IconLoader::Load("document-open-folder")), - backend_(backend) -{ - connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), SLOT(DirectoryDiscovered(Directory))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), SLOT(DirectoryDeleted(Directory))); +LibraryDirectoryModel::LibraryDirectoryModel(LibraryBackend* backend, + QObject* parent) + : QStandardItemModel(parent), + dir_icon_(IconLoader::Load("document-open-folder")), + backend_(backend) { + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + SLOT(DirectoryDiscovered(Directory))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), + SLOT(DirectoryDeleted(Directory))); } -LibraryDirectoryModel::~LibraryDirectoryModel() { -} +LibraryDirectoryModel::~LibraryDirectoryModel() {} -void LibraryDirectoryModel::DirectoryDiscovered(const Directory &dir) { +void LibraryDirectoryModel::DirectoryDiscovered(const Directory& dir) { QStandardItem* item; - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(dir.path))) { + if (Application::kIsPortable && + Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(dir.path))) { item = new QStandardItem(Utilities::GetRelativePathToClementineBin( - QUrl::fromLocalFile(dir.path)).toLocalFile()); + QUrl::fromLocalFile(dir.path)).toLocalFile()); } else { item = new QStandardItem(dir.path); } item->setData(dir.id, kIdRole); item->setIcon(dir_icon_); - storage_ << std::shared_ptr(new FilesystemMusicStorage(dir.path)); + storage_ << std::shared_ptr( + new FilesystemMusicStorage(dir.path)); appendRow(item); } -void LibraryDirectoryModel::DirectoryDeleted(const Directory &dir) { - for (int i=0 ; idata(kIdRole).toInt() == dir.id) { removeRow(i); storage_.removeAt(i); @@ -61,15 +63,13 @@ void LibraryDirectoryModel::DirectoryDeleted(const Directory &dir) { } void LibraryDirectoryModel::AddDirectory(const QString& path) { - if (!backend_) - return; + if (!backend_) return; backend_->AddDirectory(path); } void LibraryDirectoryModel::RemoveDirectory(const QModelIndex& index) { - if (!backend_ || !index.isValid()) - return; + if (!backend_ || !index.isValid()) return; Directory dir; dir.path = index.data().toString(); @@ -78,19 +78,21 @@ void LibraryDirectoryModel::RemoveDirectory(const QModelIndex& index) { backend_->RemoveDirectory(dir); } -QVariant LibraryDirectoryModel::data(const QModelIndex &index, int role) const { +QVariant LibraryDirectoryModel::data(const QModelIndex& index, int role) const { switch (role) { - case MusicStorage::Role_Storage: - case MusicStorage::Role_StorageForceConnect: - return QVariant::fromValue(storage_[index.row()]); + case MusicStorage::Role_Storage: + case MusicStorage::Role_StorageForceConnect: + return QVariant::fromValue(storage_[index.row()]); - case MusicStorage::Role_FreeSpace: - return Utilities::FileSystemFreeSpace(data(index, Qt::DisplayRole).toString()); + case MusicStorage::Role_FreeSpace: + return Utilities::FileSystemFreeSpace( + data(index, Qt::DisplayRole).toString()); - case MusicStorage::Role_Capacity: - return Utilities::FileSystemCapacity(data(index, Qt::DisplayRole).toString()); + case MusicStorage::Role_Capacity: + return Utilities::FileSystemCapacity( + data(index, Qt::DisplayRole).toString()); - default: - return QStandardItemModel::data(index, role); + default: + return QStandardItemModel::data(index, role); } } diff --git a/src/library/librarydirectorymodel.h b/src/library/librarydirectorymodel.h index 5d7c4d482..92494828c 100644 --- a/src/library/librarydirectorymodel.h +++ b/src/library/librarydirectorymodel.h @@ -39,7 +39,7 @@ class LibraryDirectoryModel : public QStandardItemModel { void AddDirectory(const QString& path); void RemoveDirectory(const QModelIndex& index); - QVariant data(const QModelIndex &index, int role) const; + QVariant data(const QModelIndex& index, int role) const; private slots: // To be called by the backend @@ -54,4 +54,4 @@ class LibraryDirectoryModel : public QStandardItemModel { QList > storage_; }; -#endif // LIBRARYDIRECTORYMODEL_H +#endif // LIBRARYDIRECTORYMODEL_H diff --git a/src/library/libraryfilterwidget.cpp b/src/library/libraryfilterwidget.cpp index 37c3aec2b..11f0287cf 100644 --- a/src/library/libraryfilterwidget.cpp +++ b/src/library/libraryfilterwidget.cpp @@ -30,15 +30,14 @@ #include #include -LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) - : QWidget(parent), - ui_(new Ui_LibraryFilterWidget), - model_(nullptr), - group_by_dialog_(new GroupByDialog), - filter_delay_(new QTimer(this)), - filter_applies_to_model_(true), - delay_behaviour_(DelayedOnLargeLibraries) -{ +LibraryFilterWidget::LibraryFilterWidget(QWidget* parent) + : QWidget(parent), + ui_(new Ui_LibraryFilterWidget), + model_(nullptr), + group_by_dialog_(new GroupByDialog), + filter_delay_(new QTimer(this)), + filter_applies_to_model_(true), + delay_behaviour_(DelayedOnLargeLibraries) { ui_->setupUi(this); connect(ui_->filter, SIGNAL(returnPressed()), SIGNAL(ReturnPressed())); connect(filter_delay_, SIGNAL(timeout()), SLOT(FilterDelayTimeout())); @@ -63,18 +62,25 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) filter_age_mapper_ = new QSignalMapper(this); filter_age_mapper_->setMapping(ui_->filter_age_all, -1); - filter_age_mapper_->setMapping(ui_->filter_age_today, 60*60*24); - filter_age_mapper_->setMapping(ui_->filter_age_week, 60*60*24*7); - filter_age_mapper_->setMapping(ui_->filter_age_month, 60*60*24*30); - filter_age_mapper_->setMapping(ui_->filter_age_three_months, 60*60*24*30*3); - filter_age_mapper_->setMapping(ui_->filter_age_year, 60*60*24*365); + filter_age_mapper_->setMapping(ui_->filter_age_today, 60 * 60 * 24); + filter_age_mapper_->setMapping(ui_->filter_age_week, 60 * 60 * 24 * 7); + filter_age_mapper_->setMapping(ui_->filter_age_month, 60 * 60 * 24 * 30); + filter_age_mapper_->setMapping(ui_->filter_age_three_months, + 60 * 60 * 24 * 30 * 3); + filter_age_mapper_->setMapping(ui_->filter_age_year, 60 * 60 * 24 * 365); - connect(ui_->filter_age_all, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_today, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_week, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_month, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_three_months, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_year, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); + connect(ui_->filter_age_all, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_today, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_week, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_month, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_three_months, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_year, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); // "Group by ..." group_by_group_ = CreateGroupByActions(this); @@ -82,7 +88,8 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) group_by_menu_ = new QMenu(tr("Group by"), this); group_by_menu_->addActions(group_by_group_->actions()); - connect(group_by_group_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*))); + connect(group_by_group_, SIGNAL(triggered(QAction*)), + SLOT(GroupByClicked(QAction*))); // Library config menu library_menu_ = new QMenu(tr("Display options"), this); @@ -92,35 +99,46 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) library_menu_->addSeparator(); ui_->options->setMenu(library_menu_); - connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(FilterTextChanged(QString))); + connect(ui_->filter, SIGNAL(textChanged(QString)), + SLOT(FilterTextChanged(QString))); } -LibraryFilterWidget::~LibraryFilterWidget() { - delete ui_; -} +LibraryFilterWidget::~LibraryFilterWidget() { delete ui_; } QActionGroup* LibraryFilterWidget::CreateGroupByActions(QObject* parent) { QActionGroup* ret = new QActionGroup(parent); - ret->addAction(CreateGroupByAction(tr("Group by Artist"), parent, + ret->addAction(CreateGroupByAction( + tr("Group by Artist"), parent, LibraryModel::Grouping(LibraryModel::GroupBy_Artist))); - ret->addAction(CreateGroupByAction(tr("Group by Artist/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Artist/Year - Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_YearAlbum))); - ret->addAction(CreateGroupByAction(tr("Group by Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Genre/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Genre, LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Genre/Artist/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Genre, LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Artist/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_Album))); + ret->addAction(CreateGroupByAction( + tr("Group by Artist/Year - Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_YearAlbum))); + ret->addAction( + CreateGroupByAction(tr("Group by Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Genre/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Genre, + LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Genre/Artist/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Genre, + LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_Album))); ret->addAction(CreateGroupByAction(tr("Advanced grouping..."), parent, - LibraryModel::Grouping())); + LibraryModel::Grouping())); return ret; } QAction* LibraryFilterWidget::CreateGroupByAction( - const QString& text, QObject* parent, const LibraryModel::Grouping& grouping) { + const QString& text, QObject* parent, + const LibraryModel::Grouping& grouping) { QAction* ret = new QAction(text, parent); ret->setCheckable(true); @@ -131,12 +149,12 @@ QAction* LibraryFilterWidget::CreateGroupByAction( return ret; } -void LibraryFilterWidget::FocusOnFilter(QKeyEvent *event) { +void LibraryFilterWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(); QApplication::sendEvent(ui_->filter, event); } -void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) { +void LibraryFilterWidget::SetLibraryModel(LibraryModel* model) { if (model_) { disconnect(model_, 0, this, 0); disconnect(model_, 0, group_by_dialog_.get(), 0); @@ -148,21 +166,26 @@ void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) { // Connect signals connect(model_, SIGNAL(GroupingChanged(LibraryModel::Grouping)), - group_by_dialog_.get(), SLOT(LibraryGroupingChanged(LibraryModel::Grouping))); + group_by_dialog_.get(), + SLOT(LibraryGroupingChanged(LibraryModel::Grouping))); connect(model_, SIGNAL(GroupingChanged(LibraryModel::Grouping)), SLOT(GroupingChanged(LibraryModel::Grouping))); connect(group_by_dialog_.get(), SIGNAL(Accepted(LibraryModel::Grouping)), model_, SLOT(SetGroupBy(LibraryModel::Grouping))); - connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, SLOT(SetFilterAge(int))); + connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, + SLOT(SetFilterAge(int))); // Load settings if (!settings_group_.isEmpty()) { QSettings s; s.beginGroup(settings_group_); model_->SetGroupBy(LibraryModel::Grouping( - LibraryModel::GroupBy(s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), - LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), - LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); + LibraryModel::GroupBy( + s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), + LibraryModel::GroupBy( + s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), + LibraryModel::GroupBy( + s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); } } @@ -172,7 +195,8 @@ void LibraryFilterWidget::GroupByClicked(QAction* action) { return; } - LibraryModel::Grouping g = action->property("group_by").value(); + LibraryModel::Grouping g = + action->property("group_by").value(); model_->SetGroupBy(g); } @@ -187,9 +211,8 @@ void LibraryFilterWidget::GroupingChanged(const LibraryModel::Grouping& g) { } // Now make sure the correct action is checked - foreach (QAction* action, group_by_group_->actions()) { - if (action->property("group_by").isNull()) - continue; + foreach(QAction * action, group_by_group_->actions()) { + if (action->property("group_by").isNull()) continue; if (g == action->property("group_by").value()) { action->setChecked(true); @@ -254,10 +277,10 @@ void LibraryFilterWidget::FilterTextChanged(const QString& text) { // even with FTS, so if there are a large number of songs in the database // introduce a small delay before actually filtering the model, so if the // user is typing the first few characters of something it will be quicker. - const bool delay = (delay_behaviour_ == AlwaysDelayed) - || (delay_behaviour_ == DelayedOnLargeLibraries && - !text.isEmpty() && text.length() < 3 && - model_->total_song_count() >= 100000); + const bool delay = + (delay_behaviour_ == AlwaysDelayed) || + (delay_behaviour_ == DelayedOnLargeLibraries && !text.isEmpty() && + text.length() < 3 && model_->total_song_count() >= 100000); if (delay) { filter_delay_->start(); diff --git a/src/library/libraryfilterwidget.h b/src/library/libraryfilterwidget.h index 74620ba20..426c5ab39 100644 --- a/src/library/libraryfilterwidget.h +++ b/src/library/libraryfilterwidget.h @@ -41,7 +41,7 @@ class LibraryFilterWidget : public QWidget { LibraryFilterWidget(QWidget* parent = 0); ~LibraryFilterWidget(); - static const int kFilterDelay = 500; // msec + static const int kFilterDelay = 500; // msec enum DelayBehaviour { AlwaysInstant, @@ -52,8 +52,12 @@ class LibraryFilterWidget : public QWidget { static QActionGroup* CreateGroupByActions(QObject* parent); void SetFilterHint(const QString& hint); - void SetApplyFilterToLibrary(bool filter_applies_to_model) { filter_applies_to_model_ = filter_applies_to_model; } - void SetDelayBehaviour(DelayBehaviour behaviour) { delay_behaviour_ = behaviour; } + void SetApplyFilterToLibrary(bool filter_applies_to_model) { + filter_applies_to_model_ = filter_applies_to_model; + } + void SetDelayBehaviour(DelayBehaviour behaviour) { + delay_behaviour_ = behaviour; + } void SetAgeFilterEnabled(bool enabled); void SetGroupByEnabled(bool enabled); void ShowInLibrary(const QString& search); @@ -68,7 +72,7 @@ class LibraryFilterWidget : public QWidget { void SetQueryMode(QueryOptions::QueryMode view); void FocusOnFilter(QKeyEvent* e); - signals: +signals: void UpPressed(); void DownPressed(); void ReturnPressed(); @@ -109,4 +113,4 @@ class LibraryFilterWidget : public QWidget { QString settings_group_; }; -#endif // LIBRARYFILTERWIDGET_H +#endif // LIBRARYFILTERWIDGET_H diff --git a/src/library/libraryitem.h b/src/library/libraryitem.h index 2a14c45a7..e9363b36e 100644 --- a/src/library/libraryitem.h +++ b/src/library/libraryitem.h @@ -37,14 +37,14 @@ class LibraryItem : public SimpleTreeItem { }; LibraryItem(SimpleTreeModel* model) - : SimpleTreeItem(Type_Root, model), - container_level(-1), - compilation_artist_node_(NULL) {} + : SimpleTreeItem(Type_Root, model), + container_level(-1), + compilation_artist_node_(NULL) {} LibraryItem(Type type, LibraryItem* parent = NULL) - : SimpleTreeItem(type, parent), - container_level(-1), - compilation_artist_node_(NULL) {} + : SimpleTreeItem(type, parent), + container_level(-1), + compilation_artist_node_(NULL) {} int container_level; Song metadata; @@ -52,4 +52,4 @@ class LibraryItem : public SimpleTreeItem { LibraryItem* compilation_artist_node_; }; -#endif // LIBRARYITEM_H +#endif // LIBRARYITEM_H diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 9a1240aaf..cc0ef0560 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -52,8 +52,10 @@ using smart_playlists::GeneratorMimeData; using smart_playlists::GeneratorPtr; using smart_playlists::QueryGenerator; -const char* LibraryModel::kSmartPlaylistsMimeType = "application/x-clementine-smart-playlist-generator"; -const char* LibraryModel::kSmartPlaylistsSettingsGroup = "SerialisedSmartPlaylists"; +const char* LibraryModel::kSmartPlaylistsMimeType = + "application/x-clementine-smart-playlist-generator"; +const char* LibraryModel::kSmartPlaylistsSettingsGroup = + "SerialisedSmartPlaylists"; const int LibraryModel::kSmartPlaylistsVersion = 4; const int LibraryModel::kPrettyCoverSize = 32; @@ -61,7 +63,8 @@ typedef QFuture RootQueryFuture; typedef QFutureWatcher RootQueryWatcher; static bool IsArtistGroupBy(const LibraryModel::GroupBy by) { - return by == LibraryModel::GroupBy_Artist || by == LibraryModel::GroupBy_AlbumArtist; + return by == LibraryModel::GroupBy_Artist || + by == LibraryModel::GroupBy_AlbumArtist; } static bool IsCompilationArtistNode(const LibraryItem* node) { @@ -70,21 +73,20 @@ static bool IsCompilationArtistNode(const LibraryItem* node) { LibraryModel::LibraryModel(LibraryBackend* backend, Application* app, QObject* parent) - : SimpleTreeModel(new LibraryItem(this), parent), - backend_(backend), - app_(app), - dir_model_(new LibraryDirectoryModel(backend, this)), - show_smart_playlists_(false), - show_various_artists_(true), - total_song_count_(0), - artist_icon_(":/icons/22x22/x-clementine-artist.png"), - album_icon_(":/icons/22x22/x-clementine-album.png"), - playlists_dir_icon_(IconLoader::Load("folder-sound")), - playlist_icon_(":/icons/22x22/x-clementine-albums.png"), - init_task_id_(-1), - use_pretty_covers_(false), - show_dividers_(true) -{ + : SimpleTreeModel(new LibraryItem(this), parent), + backend_(backend), + app_(app), + dir_model_(new LibraryDirectoryModel(backend, this)), + show_smart_playlists_(false), + show_various_artists_(true), + total_song_count_(0), + artist_icon_(":/icons/22x22/x-clementine-artist.png"), + album_icon_(":/icons/22x22/x-clementine-album.png"), + playlists_dir_icon_(IconLoader::Load("folder-sound")), + playlist_icon_(":/icons/22x22/x-clementine-albums.png"), + init_task_id_(-1), + use_pretty_covers_(false), + show_dividers_(true) { root_->lazy_loaded = true; group_by_[0] = GroupBy_Artist; @@ -95,27 +97,29 @@ LibraryModel::LibraryModel(LibraryBackend* backend, Application* app, cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(AlbumArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(AlbumArtLoaded(quint64, QImage))); - no_cover_icon_ = QPixmap(":nocover.png").scaled( - kPrettyCoverSize, kPrettyCoverSize, - Qt::KeepAspectRatio, Qt::SmoothTransformation); + no_cover_icon_ = QPixmap(":nocover.png") + .scaled(kPrettyCoverSize, kPrettyCoverSize, + Qt::KeepAspectRatio, Qt::SmoothTransformation); - connect(backend_, SIGNAL(SongsDiscovered(SongList)), SLOT(SongsDiscovered(SongList))); - connect(backend_, SIGNAL(SongsDeleted(SongList)), SLOT(SongsDeleted(SongList))); - connect(backend_, SIGNAL(SongsStatisticsChanged(SongList)), SLOT(SongsSlightlyChanged(SongList))); - connect(backend_, SIGNAL(SongsRatingChanged(SongList)), SLOT(SongsSlightlyChanged(SongList))); + connect(backend_, SIGNAL(SongsDiscovered(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(backend_, SIGNAL(SongsDeleted(SongList)), + SLOT(SongsDeleted(SongList))); + connect(backend_, SIGNAL(SongsStatisticsChanged(SongList)), + SLOT(SongsSlightlyChanged(SongList))); + connect(backend_, SIGNAL(SongsRatingChanged(SongList)), + SLOT(SongsSlightlyChanged(SongList))); connect(backend_, SIGNAL(DatabaseReset()), SLOT(Reset())); - connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(TotalSongCountUpdatedSlot(int))); + connect(backend_, SIGNAL(TotalSongCountUpdated(int)), + SLOT(TotalSongCountUpdatedSlot(int))); backend_->UpdateTotalSongCountAsync(); } -LibraryModel::~LibraryModel() { - delete root_; -} +LibraryModel::~LibraryModel() { delete root_; } void LibraryModel::set_pretty_covers(bool use_pretty_covers) { if (use_pretty_covers != use_pretty_covers_) { @@ -134,7 +138,8 @@ void LibraryModel::set_show_dividers(bool show_dividers) { void LibraryModel::Init(bool async) { if (async) { // Show a loading indicator in the model. - LibraryItem* loading = new LibraryItem(LibraryItem::Type_LoadingIndicator, root_); + LibraryItem* loading = + new LibraryItem(LibraryItem::Type_LoadingIndicator, root_); loading->display_text = tr("Loading..."); loading->lazy_loaded = true; reset(); @@ -149,15 +154,13 @@ void LibraryModel::Init(bool async) { } void LibraryModel::SongsDiscovered(const SongList& songs) { - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { // Sanity check to make sure we don't add songs that are outside the user's // filter - if (!query_options_.Matches(song)) - continue; + if (!query_options_.Matches(song)) continue; // Hey, we've already got that one! - if (song_nodes_.contains(song.id())) - continue; + if (song_nodes_.contains(song.id())) continue; // Before we can add each song we need to make sure the required container // items already exist in the tree. These depend on which "group by" @@ -167,7 +170,7 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // Find parent containers in the tree LibraryItem* container = root_; - for (int i=0 ; i<3 ; ++i) { + for (int i = 0; i < 3; ++i) { GroupBy type = group_by_[i]; if (type == GroupBy_None) break; @@ -182,19 +185,39 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // item's key QString key; switch (type) { - case GroupBy_Album: key = song.album(); break; - case GroupBy_Artist: key = song.artist(); break; - case GroupBy_Composer: key = song.composer(); break; - case GroupBy_Performer: key = song.performer(); break; - case GroupBy_Grouping: key = song.grouping(); break; - case GroupBy_Genre: key = song.genre(); break; - case GroupBy_AlbumArtist: key = song.effective_albumartist(); break; + case GroupBy_Album: + key = song.album(); + break; + case GroupBy_Artist: + key = song.artist(); + break; + case GroupBy_Composer: + key = song.composer(); + break; + case GroupBy_Performer: + key = song.performer(); + break; + case GroupBy_Grouping: + key = song.grouping(); + break; + case GroupBy_Genre: + key = song.genre(); + break; + case GroupBy_AlbumArtist: + key = song.effective_albumartist(); + break; case GroupBy_Year: - key = QString::number(qMax(0, song.year())); break; + key = QString::number(qMax(0, song.year())); + break; case GroupBy_YearAlbum: - key = PrettyYearAlbum(qMax(0, song.year()), song.album()); break; - case GroupBy_FileType: key = song.filetype(); break; - case GroupBy_Bitrate: key = song.bitrate(); break; + key = PrettyYearAlbum(qMax(0, song.year()), song.album()); + break; + case GroupBy_FileType: + key = song.filetype(); + break; + case GroupBy_Bitrate: + key = song.bitrate(); + break; case GroupBy_None: qLog(Error) << "GroupBy_None"; break; @@ -211,12 +234,10 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // If we just created the damn thing then we don't need to continue into // it any further because it'll get lazy-loaded properly later. - if (!container->lazy_loaded) - break; + if (!container->lazy_loaded) break; } - if (!container->lazy_loaded) - continue; + if (!container->lazy_loaded) continue; // We've gone all the way down to the deepest level and everything was // already lazy loaded, so now we have to create the song in the container. @@ -229,26 +250,28 @@ void LibraryModel::SongsSlightlyChanged(const SongList& songs) { // This is called if there was a minor change to the songs that will not // normally require the library to be restructured. We can just update our // internal cache of Song objects without worrying about resetting the model. - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song_nodes_.contains(song.id())) { song_nodes_[song.id()]->metadata = song; } } } -LibraryItem* LibraryModel::CreateCompilationArtistNode(bool signal, LibraryItem* parent) { +LibraryItem* LibraryModel::CreateCompilationArtistNode(bool signal, + LibraryItem* parent) { if (signal) - beginInsertRows(ItemToIndex(parent), parent->children.count(), parent->children.count()); + beginInsertRows(ItemToIndex(parent), parent->children.count(), + parent->children.count()); parent->compilation_artist_node_ = new LibraryItem(LibraryItem::Type_Container, parent); parent->compilation_artist_node_->compilation_artist_node_ = nullptr; parent->compilation_artist_node_->key = tr("Various artists"); parent->compilation_artist_node_->sort_text = " various"; - parent->compilation_artist_node_->container_level = parent->container_level + 1; + parent->compilation_artist_node_->container_level = + parent->container_level + 1; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); return parent->compilation_artist_node_; } @@ -257,78 +280,73 @@ QString LibraryModel::DividerKey(GroupBy type, LibraryItem* item) const { // Items which are to be grouped under the same divider must produce the // same divider key. This will only get called for top-level items. - if (item->sort_text.isEmpty()) - return QString(); + if (item->sort_text.isEmpty()) return QString(); switch (type) { - case GroupBy_Album: - case GroupBy_Artist: - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_AlbumArtist: - case GroupBy_FileType: { - QChar c = item->sort_text[0]; - if (c.isDigit()) - return "0"; - if (c == ' ') + case GroupBy_Album: + case GroupBy_Artist: + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_AlbumArtist: + case GroupBy_FileType: { + QChar c = item->sort_text[0]; + if (c.isDigit()) return "0"; + if (c == ' ') return QString(); + if (c.decompositionTag() != QChar::NoDecomposition) + return QChar(c.decomposition()[0]); + return c; + } + + case GroupBy_Year: + return SortTextForYear(item->sort_text.toInt() / 10 * 10); + + case GroupBy_YearAlbum: + return SortTextForYear(item->metadata.year()); + + case GroupBy_Bitrate: + return SortTextForBitrate(item->metadata.bitrate()); + + case GroupBy_None: return QString(); - if (c.decompositionTag() != QChar::NoDecomposition) - return QChar(c.decomposition()[0]); - return c; } - - case GroupBy_Year: - return SortTextForYear(item->sort_text.toInt() / 10 * 10); - - case GroupBy_YearAlbum: - return SortTextForYear(item->metadata.year()); - - case GroupBy_Bitrate: - return SortTextForBitrate(item->metadata.bitrate()); - - case GroupBy_None: - return QString(); - } - qLog(Error) << "Unknown GroupBy type" << type << "for item" << item->display_text; + qLog(Error) << "Unknown GroupBy type" << type << "for item" + << item->display_text; return QString(); } -QString LibraryModel::DividerDisplayText(GroupBy type, const QString& key) const { +QString LibraryModel::DividerDisplayText(GroupBy type, + const QString& key) const { // Pretty display text for the dividers. switch (type) { - case GroupBy_Album: - case GroupBy_Artist: - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_AlbumArtist: - case GroupBy_FileType: - if (key == "0") - return "0-9"; - return key.toUpper(); + case GroupBy_Album: + case GroupBy_Artist: + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_AlbumArtist: + case GroupBy_FileType: + if (key == "0") return "0-9"; + return key.toUpper(); - case GroupBy_YearAlbum: - if (key == "0000") - return tr("Unknown"); - return key.toUpper(); + case GroupBy_YearAlbum: + if (key == "0000") return tr("Unknown"); + return key.toUpper(); - case GroupBy_Year: - if (key == "0000") - return tr("Unknown"); - return QString::number(key.toInt()); // To remove leading 0s + case GroupBy_Year: + if (key == "0000") return tr("Unknown"); + return QString::number(key.toInt()); // To remove leading 0s - case GroupBy_Bitrate: - if (key == "000") - return tr("Unknown"); - return QString::number(key.toInt()); // To remove leading 0s + case GroupBy_Bitrate: + if (key == "000") return tr("Unknown"); + return QString::number(key.toInt()); // To remove leading 0s - case GroupBy_None: - // fallthrough - ; + case GroupBy_None: + // fallthrough + ; } qLog(Error) << "Unknown GroupBy type" << type << "for divider key" << key; return QString(); @@ -338,12 +356,11 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Delete the actual song nodes first, keeping track of each parent so we // might check to see if they're empty later. QSet parents; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song_nodes_.contains(song.id())) { LibraryItem* node = song_nodes_[song.id()]; - if (node->parent != root_) - parents << node->parent; + if (node->parent != root_) parents << node->parent; beginRemoveRows(ItemToIndex(node->parent), node->row, node->row); node->parent->Delete(node->row); @@ -363,14 +380,12 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Now delete empty parents QSet divider_keys; while (!parents.isEmpty()) { - foreach (LibraryItem* node, parents) { + foreach(LibraryItem * node, parents) { parents.remove(node); - if (node->children.count() != 0) - continue; + if (node->children.count() != 0) continue; // Consider its parent for the next round - if (node->parent != root_) - parents << node->parent; + if (node->parent != root_) parents << node->parent; // Maybe consider its divider node if (node->container_level == 0) @@ -390,21 +405,19 @@ void LibraryModel::SongsDeleted(const SongList& songs) { } // Delete empty dividers - foreach (const QString& divider_key, divider_keys) { - if (!divider_nodes_.contains(divider_key)) - continue; + foreach(const QString & divider_key, divider_keys) { + if (!divider_nodes_.contains(divider_key)) continue; // Look to see if there are any other items still under this divider bool found = false; - foreach (LibraryItem* node, container_nodes_[0].values()) { + foreach(LibraryItem * node, container_nodes_[0].values()) { if (DividerKey(group_by_[0], node) == divider_key) { found = true; break; } } - if (found) - continue; + if (found) continue; // Remove the divider int row = divider_nodes_[divider_key]->row; @@ -428,8 +441,7 @@ QString LibraryModel::AlbumIconPixmapCacheKey(const QModelIndex& index) const { QVariant LibraryModel::AlbumIcon(const QModelIndex& index) { LibraryItem* item = IndexToItem(index); - if (!item) - return no_cover_icon_; + if (!item) return no_cover_icon_; // Check the cache for a pixmap we already loaded. const QString cache_key = AlbumIconPixmapCacheKey(index); @@ -448,7 +460,7 @@ QVariant LibraryModel::AlbumIcon(const QModelIndex& index) { SongList songs = GetChildSongs(index); if (!songs.isEmpty()) { const quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, songs.first()); + cover_loader_options_, songs.first()); pending_art_[id] = ItemAndCacheKey(item, cache_key); pending_cache_keys_.insert(cache_key); } @@ -460,8 +472,7 @@ void LibraryModel::AlbumArtLoaded(quint64 id, const QImage& image) { ItemAndCacheKey item_and_cache_key = pending_art_.take(id); LibraryItem* item = item_and_cache_key.first; const QString& cache_key = item_and_cache_key.second; - if (!item) - return; + if (!item) return; pending_cache_keys_.remove(cache_key); @@ -479,17 +490,19 @@ void LibraryModel::AlbumArtLoaded(quint64 id, const QImage& image) { QVariant LibraryModel::data(const QModelIndex& index, int role) const { const LibraryItem* item = IndexToItem(index); - - // Handle a special case for returning album artwork instead of a generic CD icon. + + // Handle a special case for returning album artwork instead of a generic CD + // icon. // this is here instead of in the other data() function to let us use the // QModelIndex& version of GetChildSongs, which satisfies const-ness, instead // of the LibraryItem* version, which doesn't. - if (use_pretty_covers_) { + if (use_pretty_covers_) { bool is_album_node = false; - if (role == Qt::DecorationRole && item->type == LibraryItem::Type_Container) { + if (role == Qt::DecorationRole && + item->type == LibraryItem::Type_Container) { GroupBy container_type = group_by_[item->container_level]; - is_album_node = container_type == GroupBy_Album - || container_type == GroupBy_YearAlbum; + is_album_node = container_type == GroupBy_Album || + container_type == GroupBy_YearAlbum; } if (is_album_node) { // It has const behaviour some of the time - that's ok right? @@ -501,9 +514,9 @@ QVariant LibraryModel::data(const QModelIndex& index, int role) const { } QVariant LibraryModel::data(const LibraryItem* item, int role) const { - GroupBy container_type = - item->type == LibraryItem::Type_Container ? - group_by_[item->container_level] : GroupBy_None; + GroupBy container_type = item->type == LibraryItem::Type_Container + ? group_by_[item->container_level] + : GroupBy_None; switch (role) { case Qt::DisplayRole: @@ -550,16 +563,16 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const { case Role_Editable: if (!item->lazy_loaded) { - const_cast(this)->LazyPopulate( - const_cast(item), true); + const_cast(this) + ->LazyPopulate(const_cast(item), true); } - if(item->type == LibraryItem::Type_Container) { + if (item->type == LibraryItem::Type_Container) { // if we have even one non editable item as a child, we ourselves // are not available for edit - if(!item->children.isEmpty()) { - foreach(LibraryItem* child, item->children) { - if(!data(child, role).toBool()) { + if (!item->children.isEmpty()) { + foreach(LibraryItem * child, item->children) { + if (!data(child, role).toBool()) { return false; } } @@ -567,7 +580,7 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const { } else { return false; } - } else if(item->type == LibraryItem::Type_Song) { + } else if (item->type == LibraryItem::Type_Song) { return item->metadata.IsEditable(); } else { return false; @@ -622,8 +635,7 @@ LibraryModel::QueryResult LibraryModel::RunQuery(LibraryItem* parent) { // Execute the query QMutexLocker l(backend_->db()->Mutex()); - if (!backend_->ExecQuery(&q)) - return result; + if (!backend_->ExecQuery(&q)) return result; while (q.Next()) { result.rows << SqlRow(q); @@ -643,11 +655,10 @@ void LibraryModel::PostQuery(LibraryItem* parent, } // Step through the results - foreach (const SqlRow& row, result.rows) { + foreach(const SqlRow & row, result.rows) { // Create the item - it will get inserted into the model here - LibraryItem* item = - ItemFromQuery(child_type, signal, child_level == 0, parent, row, - child_level); + LibraryItem* item = ItemFromQuery(child_type, signal, child_level == 0, + parent, row, child_level); // Save a pointer to it for later if (child_type == GroupBy_None) @@ -658,8 +669,7 @@ void LibraryModel::PostQuery(LibraryItem* parent, } void LibraryModel::LazyPopulate(LibraryItem* parent, bool signal) { - if (parent->lazy_loaded) - return; + if (parent->lazy_loaded) return; parent->lazy_loaded = true; QueryResult result = RunQuery(parent); @@ -667,8 +677,8 @@ void LibraryModel::LazyPopulate(LibraryItem* parent, bool signal) { } void LibraryModel::ResetAsync() { - RootQueryFuture future = QtConcurrent::run( - this, &LibraryModel::RunQuery, root_); + RootQueryFuture future = + QtConcurrent::run(this, &LibraryModel::RunQuery, root_); RootQueryWatcher* watcher = new RootQueryWatcher(this); watcher->setFuture(future); @@ -725,111 +735,112 @@ void LibraryModel::Reset() { void LibraryModel::InitQuery(GroupBy type, LibraryQuery* q) { // Say what type of thing we want to get back from the database. switch (type) { - case GroupBy_Artist: - q->SetColumnSpec("DISTINCT artist"); - break; - case GroupBy_Album: - q->SetColumnSpec("DISTINCT album"); - break; - case GroupBy_Composer: - q->SetColumnSpec("DISTINCT composer"); - break; - case GroupBy_Performer: - q->SetColumnSpec("DISTINCT performer"); - break; - case GroupBy_Grouping: - q->SetColumnSpec("DISTINCT grouping"); - break; - case GroupBy_YearAlbum: - q->SetColumnSpec("DISTINCT year, album"); - break; - case GroupBy_Year: - q->SetColumnSpec("DISTINCT year"); - break; - case GroupBy_Genre: - q->SetColumnSpec("DISTINCT genre"); - break; - case GroupBy_AlbumArtist: - q->SetColumnSpec("DISTINCT effective_albumartist"); - break; - case GroupBy_Bitrate: - q->SetColumnSpec("DISTINCT bitrate"); - break; - case GroupBy_None: - q->SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); - break; - case GroupBy_FileType: - q->SetColumnSpec("DISTINCT filetype"); - break; + case GroupBy_Artist: + q->SetColumnSpec("DISTINCT artist"); + break; + case GroupBy_Album: + q->SetColumnSpec("DISTINCT album"); + break; + case GroupBy_Composer: + q->SetColumnSpec("DISTINCT composer"); + break; + case GroupBy_Performer: + q->SetColumnSpec("DISTINCT performer"); + break; + case GroupBy_Grouping: + q->SetColumnSpec("DISTINCT grouping"); + break; + case GroupBy_YearAlbum: + q->SetColumnSpec("DISTINCT year, album"); + break; + case GroupBy_Year: + q->SetColumnSpec("DISTINCT year"); + break; + case GroupBy_Genre: + q->SetColumnSpec("DISTINCT genre"); + break; + case GroupBy_AlbumArtist: + q->SetColumnSpec("DISTINCT effective_albumartist"); + break; + case GroupBy_Bitrate: + q->SetColumnSpec("DISTINCT bitrate"); + break; + case GroupBy_None: + q->SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); + break; + case GroupBy_FileType: + q->SetColumnSpec("DISTINCT filetype"); + break; } } -void LibraryModel::FilterQuery(GroupBy type, LibraryItem* item, LibraryQuery* q) { +void LibraryModel::FilterQuery(GroupBy type, LibraryItem* item, + LibraryQuery* q) { // Say how we want the query to be filtered. This is done once for each // parent going up the tree. switch (type) { - case GroupBy_Artist: - if (IsCompilationArtistNode(item)) - q->AddCompilationRequirement(true); - else { - // Don't duplicate compilations outside the Various artists node - q->AddCompilationRequirement(false); - q->AddWhere("artist", item->key); - } - break; - case GroupBy_Album: - q->AddWhere("album", item->key); - break; - case GroupBy_YearAlbum: - q->AddWhere("year", item->metadata.year()); - q->AddWhere("album", item->metadata.album()); - break; - case GroupBy_Year: - q->AddWhere("year", item->key); - break; - case GroupBy_Composer: - q->AddWhere("composer", item->key); - break; - case GroupBy_Performer: - q->AddWhere("performer", item->key); - break; - case GroupBy_Grouping: - q->AddWhere("grouping", item->key); - break; - case GroupBy_Genre: - q->AddWhere("genre", item->key); - break; - case GroupBy_AlbumArtist: - if (IsCompilationArtistNode(item)) - q->AddCompilationRequirement(true); - else { - // Don't duplicate compilations outside the Various artists node - q->AddCompilationRequirement(false); - q->AddWhere("effective_albumartist", item->key); - } - break; - case GroupBy_FileType: - q->AddWhere("filetype", item->metadata.filetype()); - break; - case GroupBy_Bitrate: - q->AddWhere("bitrate", item->key); - break; - case GroupBy_None: - qLog(Error) << "Unknown GroupBy type" << type << "used in filter"; - break; + case GroupBy_Artist: + if (IsCompilationArtistNode(item)) + q->AddCompilationRequirement(true); + else { + // Don't duplicate compilations outside the Various artists node + q->AddCompilationRequirement(false); + q->AddWhere("artist", item->key); + } + break; + case GroupBy_Album: + q->AddWhere("album", item->key); + break; + case GroupBy_YearAlbum: + q->AddWhere("year", item->metadata.year()); + q->AddWhere("album", item->metadata.album()); + break; + case GroupBy_Year: + q->AddWhere("year", item->key); + break; + case GroupBy_Composer: + q->AddWhere("composer", item->key); + break; + case GroupBy_Performer: + q->AddWhere("performer", item->key); + break; + case GroupBy_Grouping: + q->AddWhere("grouping", item->key); + break; + case GroupBy_Genre: + q->AddWhere("genre", item->key); + break; + case GroupBy_AlbumArtist: + if (IsCompilationArtistNode(item)) + q->AddCompilationRequirement(true); + else { + // Don't duplicate compilations outside the Various artists node + q->AddCompilationRequirement(false); + q->AddWhere("effective_albumartist", item->key); + } + break; + case GroupBy_FileType: + q->AddWhere("filetype", item->metadata.filetype()); + break; + case GroupBy_Bitrate: + q->AddWhere("bitrate", item->key); + break; + case GroupBy_None: + qLog(Error) << "Unknown GroupBy type" << type << "used in filter"; + break; } } -LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, LibraryItem *parent, - int container_level) { - LibraryItem::Type item_type = - type == GroupBy_None ? LibraryItem::Type_Song : - LibraryItem::Type_Container; +LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, + LibraryItem* parent, int container_level) { + LibraryItem::Type item_type = type == GroupBy_None + ? LibraryItem::Type_Song + : LibraryItem::Type_Container; if (signal) - beginInsertRows(ItemToIndex(parent), - parent->children.count(),parent->children.count()); + beginInsertRows(ItemToIndex(parent), parent->children.count(), + parent->children.count()); // Initialise the item depending on what type it's meant to be LibraryItem* item = new LibraryItem(item_type, parent); @@ -838,8 +849,8 @@ LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, LibraryItem *pare return item; } -LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, - bool signal, bool create_divider, +LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, bool signal, + bool create_divider, LibraryItem* parent, const SqlRow& row, int container_level) { LibraryItem* item = InitItem(type, signal, parent, container_level); @@ -847,132 +858,134 @@ LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, int bitrate = 0; switch (type) { - case GroupBy_Artist: - item->key = row.value(0).toString(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Artist: + item->key = row.value(0).toString(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_YearAlbum: - year = qMax(0, row.value(0).toInt()); - item->metadata.set_year(row.value(0).toInt()); - item->metadata.set_album(row.value(1).toString()); - item->key = PrettyYearAlbum(year, item->metadata.album()); - item->sort_text = SortTextForYear(year) + item->metadata.album(); - break; + case GroupBy_YearAlbum: + year = qMax(0, row.value(0).toInt()); + item->metadata.set_year(row.value(0).toInt()); + item->metadata.set_album(row.value(1).toString()); + item->key = PrettyYearAlbum(year, item->metadata.album()); + item->sort_text = SortTextForYear(year) + item->metadata.album(); + break; - case GroupBy_Year: - year = qMax(0, row.value(0).toInt()); - item->key = QString::number(year); - item->sort_text = SortTextForYear(year) + " "; - break; + case GroupBy_Year: + year = qMax(0, row.value(0).toInt()); + item->key = QString::number(year); + item->sort_text = SortTextForYear(year) + " "; + break; - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_Album: - case GroupBy_AlbumArtist: - item->key = row.value(0).toString(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_Album: + case GroupBy_AlbumArtist: + item->key = row.value(0).toString(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_FileType: - item->metadata.set_filetype(Song::FileType(row.value(0).toInt())); - item->key = item->metadata.TextForFiletype(); - break; + case GroupBy_FileType: + item->metadata.set_filetype(Song::FileType(row.value(0).toInt())); + item->key = item->metadata.TextForFiletype(); + break; - case GroupBy_Bitrate: - bitrate = qMax(0, row.value(0).toInt()); - item->key = QString::number(bitrate); - item->sort_text = SortTextForBitrate(bitrate) + " "; - break; + case GroupBy_Bitrate: + bitrate = qMax(0, row.value(0).toInt()); + item->key = QString::number(bitrate); + item->sort_text = SortTextForBitrate(bitrate) + " "; + break; - case GroupBy_None: - item->metadata.InitFromQuery(row, true); - item->key = item->metadata.title(); - item->display_text = item->metadata.TitleWithCompilationArtist(); - item->sort_text = SortTextForSong(item->metadata); - break; + case GroupBy_None: + item->metadata.InitFromQuery(row, true); + item->key = item->metadata.title(); + item->display_text = item->metadata.TitleWithCompilationArtist(); + item->sort_text = SortTextForSong(item->metadata); + break; } FinishItem(type, signal, create_divider, parent, item); return item; } -LibraryItem* LibraryModel::ItemFromSong(GroupBy type, - bool signal, bool create_divider, - LibraryItem* parent, const Song& s, - int container_level) { +LibraryItem* LibraryModel::ItemFromSong(GroupBy type, bool signal, + bool create_divider, + LibraryItem* parent, const Song& s, + int container_level) { LibraryItem* item = InitItem(type, signal, parent, container_level); int year = 0; int bitrate = 0; switch (type) { - case GroupBy_Artist: - item->key = s.artist(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Artist: + item->key = s.artist(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_YearAlbum: - year = qMax(0, s.year()); - item->metadata.set_year(year); - item->metadata.set_album(s.album()); - item->key = PrettyYearAlbum(year, s.album()); - item->sort_text = SortTextForYear(year) + s.album(); - break; + case GroupBy_YearAlbum: + year = qMax(0, s.year()); + item->metadata.set_year(year); + item->metadata.set_album(s.album()); + item->key = PrettyYearAlbum(year, s.album()); + item->sort_text = SortTextForYear(year) + s.album(); + break; - case GroupBy_Year: - year = qMax(0, s.year()); - item->key = QString::number(year); - item->sort_text = SortTextForYear(year) + " "; - break; + case GroupBy_Year: + year = qMax(0, s.year()); + item->key = QString::number(year); + item->sort_text = SortTextForYear(year) + " "; + break; - case GroupBy_Composer: item->key = s.composer(); - case GroupBy_Performer: item->key = s.performer(); - case GroupBy_Grouping: item->key = s.grouping(); - case GroupBy_Genre: if (item->key.isNull()) item->key = s.genre(); - case GroupBy_Album: if (item->key.isNull()) item->key = s.album(); - case GroupBy_AlbumArtist: if (item->key.isNull()) item->key = s.effective_albumartist(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Composer: + item->key = s.composer(); + case GroupBy_Performer: + item->key = s.performer(); + case GroupBy_Grouping: + item->key = s.grouping(); + case GroupBy_Genre: + if (item->key.isNull()) item->key = s.genre(); + case GroupBy_Album: + if (item->key.isNull()) item->key = s.album(); + case GroupBy_AlbumArtist: + if (item->key.isNull()) item->key = s.effective_albumartist(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_FileType: - item->metadata.set_filetype(s.filetype()); - item->key = s.TextForFiletype(); - break; + case GroupBy_FileType: + item->metadata.set_filetype(s.filetype()); + item->key = s.TextForFiletype(); + break; - case GroupBy_Bitrate: - bitrate = qMax(0, s.bitrate()); - item->key = QString::number(bitrate); - item->sort_text = SortTextForBitrate(bitrate) + " "; - break; + case GroupBy_Bitrate: + bitrate = qMax(0, s.bitrate()); + item->key = QString::number(bitrate); + item->sort_text = SortTextForBitrate(bitrate) + " "; + break; - case GroupBy_None: - item->metadata = s; - item->key = s.title(); - item->display_text = s.TitleWithCompilationArtist(); - item->sort_text = SortTextForSong(s); - break; + case GroupBy_None: + item->metadata = s; + item->key = s.title(); + item->display_text = s.TitleWithCompilationArtist(); + item->sort_text = SortTextForSong(s); + break; } FinishItem(type, signal, create_divider, parent, item); - if (s.url().scheme() == "cdda") - item->lazy_loaded = true; + if (s.url().scheme() == "cdda") item->lazy_loaded = true; return item; } -void LibraryModel::FinishItem(GroupBy type, - bool signal, bool create_divider, - LibraryItem *parent, LibraryItem *item) { - if (type == GroupBy_None) - item->lazy_loaded = true; +void LibraryModel::FinishItem(GroupBy type, bool signal, bool create_divider, + LibraryItem* parent, LibraryItem* item) { + if (type == GroupBy_None) item->lazy_loaded = true; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); // Create the divider entry if we're supposed to if (create_divider && show_dividers_) { @@ -984,16 +997,14 @@ void LibraryModel::FinishItem(GroupBy type, beginInsertRows(ItemToIndex(parent), parent->children.count(), parent->children.count()); - LibraryItem* divider = - new LibraryItem(LibraryItem::Type_Divider, root_); + LibraryItem* divider = new LibraryItem(LibraryItem::Type_Divider, root_); divider->key = divider_key; divider->display_text = DividerDisplayText(type, divider_key); divider->lazy_loaded = true; divider_nodes_[divider_key] = divider; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); } } } @@ -1006,8 +1017,7 @@ QString LibraryModel::TextOrUnknown(const QString& text) { } QString LibraryModel::PrettyYearAlbum(int year, const QString& album) { - if (year <= 0) - return TextOrUnknown(album); + if (year <= 0) return TextOrUnknown(album); return QString::number(year) + " - " + TextOrUnknown(album); } @@ -1042,9 +1052,9 @@ QString LibraryModel::SortTextForBitrate(int bitrate) { return QString("0").repeated(qMax(0, 3 - str.length())) + str; } - QString LibraryModel::SortTextForSong(const Song& song) { - QString ret = QString::number(qMax(0, song.disc()) * 1000 + qMax(0, song.track())); + QString ret = + QString::number(qMax(0, song.disc()) * 1000 + qMax(0, song.track())); ret.prepend(QString("0").repeated(6 - ret.length())); ret.append(song.url().toString()); return ret; @@ -1052,17 +1062,15 @@ QString LibraryModel::SortTextForSong(const Song& song) { Qt::ItemFlags LibraryModel::flags(const QModelIndex& index) const { switch (IndexToItem(index)->type) { - case LibraryItem::Type_Song: - case LibraryItem::Type_Container: - case LibraryItem::Type_SmartPlaylist: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDragEnabled; - case LibraryItem::Type_Divider: - case LibraryItem::Type_Root: - case LibraryItem::Type_LoadingIndicator: - default: - return Qt::ItemIsEnabled; + case LibraryItem::Type_Song: + case LibraryItem::Type_Container: + case LibraryItem::Type_SmartPlaylist: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled; + case LibraryItem::Type_Divider: + case LibraryItem::Type_Root: + case LibraryItem::Type_LoadingIndicator: + default: + return Qt::ItemIsEnabled; } } @@ -1071,14 +1079,12 @@ QStringList LibraryModel::mimeTypes() const { } QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return nullptr; + if (indexes.isEmpty()) return nullptr; // Special case: a smart playlist was dragged if (IndexToItem(indexes.first())->type == LibraryItem::Type_SmartPlaylist) { GeneratorPtr generator = CreateGenerator(indexes.first()); - if (!generator) - return nullptr; + if (!generator) return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(kSmartPlaylistsMimeType, QByteArray()); @@ -1091,38 +1097,39 @@ QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const { QSet song_ids; data->backend = backend_; - - foreach (const QModelIndex& index, indexes) { + + foreach(const QModelIndex & index, indexes) { GetChildSongs(IndexToItem(index), &urls, &data->songs, &song_ids); } data->setUrls(urls); - data->name_for_new_playlist_ = PlaylistManager::GetNameForNewPlaylist(data->songs); + data->name_for_new_playlist_ = + PlaylistManager::GetNameForNewPlaylist(data->songs); return data; } -bool LibraryModel::CompareItems(const LibraryItem* a, const LibraryItem* b) const { +bool LibraryModel::CompareItems(const LibraryItem* a, + const LibraryItem* b) const { QVariant left(data(a, LibraryModel::Role_SortText)); QVariant right(data(b, LibraryModel::Role_SortText)); - if (left.type() == QVariant::Int) - return left.toInt() < right.toInt(); + if (left.type() == QVariant::Int) return left.toInt() < right.toInt(); return left.toString() < right.toString(); } void LibraryModel::GetChildSongs(LibraryItem* item, QList* urls, - SongList* songs, QSet* song_ids) const { + SongList* songs, QSet* song_ids) const { switch (item->type) { case LibraryItem::Type_Container: { const_cast(this)->LazyPopulate(item); QList children = item->children; - qSort(children.begin(), children.end(), std::bind( - &LibraryModel::CompareItems, this, _1, _2)); + qSort(children.begin(), children.end(), + std::bind(&LibraryModel::CompareItems, this, _1, _2)); - foreach (LibraryItem* child, children) - GetChildSongs(child, urls, songs, song_ids); + foreach(LibraryItem * child, children) + GetChildSongs(child, urls, songs, song_ids); break; } @@ -1144,13 +1151,13 @@ SongList LibraryModel::GetChildSongs(const QModelIndexList& indexes) const { SongList ret; QSet song_ids; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { GetChildSongs(IndexToItem(index), &dontcare, &ret, &song_ids); } return ret; } -SongList LibraryModel::GetChildSongs(const QModelIndex &index) const { +SongList LibraryModel::GetChildSongs(const QModelIndex& index) const { return GetChildSongs(QModelIndexList() << index); } @@ -1169,9 +1176,8 @@ void LibraryModel::SetFilterQueryMode(QueryOptions::QueryMode query_mode) { ResetAsync(); } -bool LibraryModel::canFetchMore(const QModelIndex &parent) const { - if (!parent.isValid()) - return false; +bool LibraryModel::canFetchMore(const QModelIndex& parent) const { + if (!parent.isValid()) return false; LibraryItem* item = IndexToItem(parent); return !item->lazy_loaded; @@ -1184,28 +1190,35 @@ void LibraryModel::SetGroupBy(const Grouping& g) { emit GroupingChanged(g); } -const LibraryModel::GroupBy& LibraryModel::Grouping::operator [](int i) const { +const LibraryModel::GroupBy& LibraryModel::Grouping::operator[](int i) const { switch (i) { - case 0: return first; - case 1: return second; - case 2: return third; + case 0: + return first; + case 1: + return second; + case 2: + return third; } qLog(Error) << "LibraryModel::Grouping[] index out of range" << i; return first; } -LibraryModel::GroupBy& LibraryModel::Grouping::operator [](int i) { +LibraryModel::GroupBy& LibraryModel::Grouping::operator[](int i) { switch (i) { - case 0: return first; - case 1: return second; - case 2: return third; + case 0: + return first; + case 1: + return second; + case 2: + return third; } qLog(Error) << "LibraryModel::Grouping[] index out of range" << i; return first; } void LibraryModel::CreateSmartPlaylists() { - smart_playlist_node_ = new LibraryItem(LibraryItem::Type_PlaylistContainer, root_); + smart_playlist_node_ = + new LibraryItem(LibraryItem::Type_PlaylistContainer, root_); smart_playlist_node_->container_level = 0; smart_playlist_node_->sort_text = "\0"; smart_playlist_node_->key = tr("Smart playlists"); @@ -1217,7 +1230,7 @@ void LibraryModel::CreateSmartPlaylists() { // How many defaults do we have to write? int unwritten_defaults = 0; - for (int i=version; i < default_smart_playlists_.count() ; ++i) { + for (int i = version; i < default_smart_playlists_.count(); ++i) { unwritten_defaults += default_smart_playlists_[i].count(); } @@ -1228,9 +1241,11 @@ void LibraryModel::CreateSmartPlaylists() { s.endArray(); // Append the new ones - s.beginWriteArray(backend_->songs_table(), playlist_index + unwritten_defaults); - for (; version < default_smart_playlists_.count() ; ++version) { - foreach (smart_playlists::GeneratorPtr gen, default_smart_playlists_[version]) { + s.beginWriteArray(backend_->songs_table(), + playlist_index + unwritten_defaults); + for (; version < default_smart_playlists_.count(); ++version) { + foreach(smart_playlists::GeneratorPtr gen, + default_smart_playlists_[version]) { SaveGenerator(&s, playlist_index++, gen); } } @@ -1240,13 +1255,14 @@ void LibraryModel::CreateSmartPlaylists() { s.setValue(backend_->songs_table() + "_version", version); const int count = s.beginReadArray(backend_->songs_table()); - for (int i=0 ; idisplay_text = tr(qPrintable(s.value("name").toString())); @@ -1255,8 +1271,7 @@ void LibraryModel::ItemFromSmartPlaylist(const QSettings& s, bool notify) const item->smart_playlist_data = s.value("data").toByteArray(); item->lazy_loaded = true; - if (notify) - item->InsertNotify(smart_playlist_node_); + if (notify) item->InsertNotify(smart_playlist_node_); } void LibraryModel::AddGenerator(GeneratorPtr gen) { @@ -1278,11 +1293,9 @@ void LibraryModel::AddGenerator(GeneratorPtr gen) { } void LibraryModel::UpdateGenerator(const QModelIndex& index, GeneratorPtr gen) { - if (index.parent() != ItemToIndex(smart_playlist_node_)) - return; + if (index.parent() != ItemToIndex(smart_playlist_node_)) return; LibraryItem* item = IndexToItem(index); - if (!item) - return; + if (!item) return; // Update the config QSettings s; @@ -1304,8 +1317,7 @@ void LibraryModel::UpdateGenerator(const QModelIndex& index, GeneratorPtr gen) { } void LibraryModel::DeleteGenerator(const QModelIndex& index) { - if (index.parent() != ItemToIndex(smart_playlist_node_)) - return; + if (index.parent() != ItemToIndex(smart_playlist_node_)) return; // Remove the item from the tree smart_playlist_node_->DeleteNotify(index.row()); @@ -1314,9 +1326,10 @@ void LibraryModel::DeleteGenerator(const QModelIndex& index) { s.beginGroup(kSmartPlaylistsSettingsGroup); // Rewrite all the items to the settings - s.beginWriteArray(backend_->songs_table(), smart_playlist_node_->children.count()); + s.beginWriteArray(backend_->songs_table(), + smart_playlist_node_->children.count()); int i = 0; - foreach (LibraryItem* item, smart_playlist_node_->children) { + foreach(LibraryItem * item, smart_playlist_node_->children) { s.setArrayIndex(i++); s.setValue("name", item->display_text); s.setValue("type", item->key); @@ -1325,7 +1338,8 @@ void LibraryModel::DeleteGenerator(const QModelIndex& index) { s.endArray(); } -void LibraryModel::SaveGenerator(QSettings* s, int i, GeneratorPtr generator) const { +void LibraryModel::SaveGenerator(QSettings* s, int i, + GeneratorPtr generator) const { s->setArrayIndex(i); s->setValue("name", generator->name()); s->setValue("type", generator->type()); @@ -1336,12 +1350,10 @@ GeneratorPtr LibraryModel::CreateGenerator(const QModelIndex& index) const { GeneratorPtr ret; const LibraryItem* item = IndexToItem(index); - if (!item || item->type != LibraryItem::Type_SmartPlaylist) - return ret; + if (!item || item->type != LibraryItem::Type_SmartPlaylist) return ret; ret = Generator::Create(item->key); - if (!ret) - return ret; + if (!ret) return ret; ret->set_name(item->display_text); ret->set_library(backend()); @@ -1353,5 +1365,3 @@ void LibraryModel::TotalSongCountUpdatedSlot(int count) { total_song_count_ = count; emit TotalSongCountUpdated(count); } - - diff --git a/src/library/librarymodel.h b/src/library/librarymodel.h index efd2812e1..ee41ed002 100644 --- a/src/library/librarymodel.h +++ b/src/library/librarymodel.h @@ -36,7 +36,9 @@ class Application; class AlbumCoverLoader; class LibraryDirectoryModel; class LibraryBackend; -namespace smart_playlists { class Search; } +namespace smart_playlists { +class Search; +} class QSettings; @@ -45,8 +47,7 @@ class LibraryModel : public SimpleTreeModel { Q_ENUMS(GroupBy); public: - LibraryModel(LibraryBackend* backend, Application* app, - QObject* parent = 0); + LibraryModel(LibraryBackend* backend, Application* app, QObject* parent = 0); ~LibraryModel(); static const char* kSmartPlaylistsMimeType; @@ -63,7 +64,6 @@ class LibraryModel : public SimpleTreeModel { Role_Artist, Role_IsDivider, Role_Editable, - LastRole }; @@ -84,25 +84,21 @@ class LibraryModel : public SimpleTreeModel { }; struct Grouping { - Grouping(GroupBy f = GroupBy_None, - GroupBy s = GroupBy_None, + Grouping(GroupBy f = GroupBy_None, GroupBy s = GroupBy_None, GroupBy t = GroupBy_None) - : first(f), second(s), third(t) {} + : first(f), second(s), third(t) {} GroupBy first; GroupBy second; GroupBy third; - const GroupBy& operator [](int i) const; - GroupBy& operator [](int i); - bool operator ==(const Grouping& other) const { - return first == other.first && - second == other.second && + const GroupBy& operator[](int i) const; + GroupBy& operator[](int i); + bool operator==(const Grouping& other) const { + return first == other.first && second == other.second && third == other.third; } - bool operator !=(const Grouping& other) const { - return ! (*this == other); - } + bool operator!=(const Grouping& other) const { return !(*this == other); } }; struct QueryResult { @@ -119,9 +115,15 @@ class LibraryModel : public SimpleTreeModel { typedef QList DefaultGenerators; // Call before Init() - void set_show_smart_playlists(bool show_smart_playlists) { show_smart_playlists_ = show_smart_playlists; } - void set_default_smart_playlists(const DefaultGenerators& defaults) { default_smart_playlists_ = defaults; } - void set_show_various_artists(bool show_various_artists) { show_various_artists_ = show_various_artists; } + void set_show_smart_playlists(bool show_smart_playlists) { + show_smart_playlists_ = show_smart_playlists; + } + void set_default_smart_playlists(const DefaultGenerators& defaults) { + default_smart_playlists_ = defaults; + } + void set_show_various_artists(bool show_various_artists) { + show_various_artists_ = show_various_artists; + } // Get information about the library void GetChildSongs(LibraryItem* item, QList* urls, SongList* songs, @@ -135,15 +137,16 @@ class LibraryModel : public SimpleTreeModel { // Smart playlists smart_playlists::GeneratorPtr CreateGenerator(const QModelIndex& index) const; void AddGenerator(smart_playlists::GeneratorPtr gen); - void UpdateGenerator(const QModelIndex& index, smart_playlists::GeneratorPtr gen); + void UpdateGenerator(const QModelIndex& index, + smart_playlists::GeneratorPtr gen); void DeleteGenerator(const QModelIndex& index); // QAbstractItemModel - QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool canFetchMore(const QModelIndex &parent) const; + bool canFetchMore(const QModelIndex& parent) const; // Whether or not to use album cover art, if it exists, in the library view void set_pretty_covers(bool use_pretty_covers); @@ -161,7 +164,7 @@ class LibraryModel : public SimpleTreeModel { static QString SortTextForBitrate(int bitrate); static QString SortTextForSong(const Song& song); - signals: +signals: void TotalSongCountUpdated(int count); void GroupingChanged(const LibraryModel::Grouping& g); @@ -224,7 +227,8 @@ class LibraryModel : public SimpleTreeModel { // Smart playlists are shown in another top-level node void CreateSmartPlaylists(); - void SaveGenerator(QSettings* s, int i, smart_playlists::GeneratorPtr generator) const; + void SaveGenerator(QSettings* s, int i, + smart_playlists::GeneratorPtr generator) const; void ItemFromSmartPlaylist(const QSettings& s, bool notify) const; // Helpers for ItemFromQuery and ItemFromSong @@ -276,7 +280,7 @@ class LibraryModel : public SimpleTreeModel { QIcon playlist_icon_; int init_task_id_; - + bool use_pretty_covers_; bool show_dividers_; @@ -289,4 +293,4 @@ class LibraryModel : public SimpleTreeModel { Q_DECLARE_METATYPE(LibraryModel::Grouping); -#endif // LIBRARYMODEL_H +#endif // LIBRARYMODEL_H diff --git a/src/library/libraryplaylistitem.cpp b/src/library/libraryplaylistitem.cpp index 625565c81..d05e21d0b 100644 --- a/src/library/libraryplaylistitem.cpp +++ b/src/library/libraryplaylistitem.cpp @@ -21,23 +21,16 @@ #include LibraryPlaylistItem::LibraryPlaylistItem(const QString& type) - : PlaylistItem(type) -{ -} + : PlaylistItem(type) {} LibraryPlaylistItem::LibraryPlaylistItem(const Song& song) - : PlaylistItem("Library"), - song_(song) -{ -} + : PlaylistItem("Library"), song_(song) {} - -QUrl LibraryPlaylistItem::Url() const { - return song_.url(); -} +QUrl LibraryPlaylistItem::Url() const { return song_.url(); } void LibraryPlaylistItem::Reload() { - TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), &song_); + TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), + &song_); } bool LibraryPlaylistItem::InitFromQuery(const SqlRow& query) { @@ -49,13 +42,14 @@ bool LibraryPlaylistItem::InitFromQuery(const SqlRow& query) { QVariant LibraryPlaylistItem::DatabaseValue(DatabaseColumn column) const { switch (column) { - case Column_LibraryId: return song_.id(); - default: return PlaylistItem::DatabaseValue(column); + case Column_LibraryId: + return song_.id(); + default: + return PlaylistItem::DatabaseValue(column); } } Song LibraryPlaylistItem::Metadata() const { - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return song_; } diff --git a/src/library/libraryplaylistitem.h b/src/library/libraryplaylistitem.h index 1dbc49cc0..dbfd08850 100644 --- a/src/library/libraryplaylistitem.h +++ b/src/library/libraryplaylistitem.h @@ -43,4 +43,4 @@ class LibraryPlaylistItem : public PlaylistItem { Song song_; }; -#endif // LIBRARYPLAYLISTITEM_H +#endif // LIBRARYPLAYLISTITEM_H diff --git a/src/library/libraryquery.cpp b/src/library/libraryquery.cpp index f0ed6f424..ec7f0e5ad 100644 --- a/src/library/libraryquery.cpp +++ b/src/library/libraryquery.cpp @@ -22,18 +22,10 @@ #include #include -QueryOptions::QueryOptions() - : max_age_(-1), - query_mode_(QueryMode_All) -{ -} - +QueryOptions::QueryOptions() : max_age_(-1), query_mode_(QueryMode_All) {} LibraryQuery::LibraryQuery(const QueryOptions& options) - : include_unavailable_(false), - join_with_fts_(false), - limit_(-1) -{ + : include_unavailable_(false), join_with_fts_(false), limit_(-1) { if (!options.filter().isEmpty()) { // We need to munge the filter text a little bit to get it to work as // expected with sqlite's FTS3: @@ -42,10 +34,10 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) // 3) Remove colons which don't correspond to column names. // Split on whitespace - QStringList tokens(options.filter().split( - QRegExp("\\s+"), QString::SkipEmptyParts)); + QStringList tokens( + options.filter().split(QRegExp("\\s+"), QString::SkipEmptyParts)); QString query; - foreach (QString token, tokens) { + foreach(QString token, tokens) { token.remove('('); token.remove(')'); token.remove('"'); @@ -56,8 +48,8 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) if (Song::kFtsColumns.contains("fts" + token.section(':', 0, 0), Qt::CaseInsensitive)) { // Account for multiple colons. - QString columntoken = token.section( - ':', 0, 0, QString::SectionIncludeTrailingSep); + QString columntoken = + token.section(':', 0, 0, QString::SectionIncludeTrailingSep); QString subtoken = token.section(':', 1, -1); subtoken.replace(":", " "); subtoken = subtoken.trimmed(); @@ -84,12 +76,16 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) bound_values_ << cutoff; } - // TODO: currently you cannot use any QueryMode other than All and fts at the same time. - // joining songs, duplicated_songs and songs_fts all together takes a huge amount of + // TODO: currently you cannot use any QueryMode other than All and fts at the + // same time. + // joining songs, duplicated_songs and songs_fts all together takes a huge + // amount of // time. the query takes about 20 seconds on my machine then. why? - // untagged mode could work with additional filtering but I'm disabling it just to be + // untagged mode could work with additional filtering but I'm disabling it + // just to be // consistent - this way filtering is available only in the All mode. - // remember though that when you fix the Duplicates + FTS cooperation, enable the + // remember though that when you fix the Duplicates + FTS cooperation, enable + // the // filtering in both Duplicates and Untagged modes. duplicates_only_ = options.query_mode() == QueryOptions::QueryMode_Duplicates; @@ -100,19 +96,20 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) QString LibraryQuery::GetInnerQuery() { return duplicates_only_ - ? QString(" INNER JOIN (select * from duplicated_songs) dsongs " - "ON (%songs_table.artist = dsongs.dup_artist " - "AND %songs_table.album = dsongs.dup_album " - "AND %songs_table.title = dsongs.dup_title) ") + ? QString( + " INNER JOIN (select * from duplicated_songs) dsongs " + "ON (%songs_table.artist = dsongs.dup_artist " + "AND %songs_table.album = dsongs.dup_album " + "AND %songs_table.title = dsongs.dup_title) ") : QString(); } void LibraryQuery::AddWhere(const QString& column, const QVariant& value, const QString& op) { // ignore 'literal' for IN - if(!op.compare("IN", Qt::CaseInsensitive)) { + if (!op.compare("IN", Qt::CaseInsensitive)) { QStringList final; - foreach(const QString& single_value, value.toStringList()) { + foreach(const QString & single_value, value.toStringList()) { final.append("?"); bound_values_ << single_value; } @@ -121,7 +118,7 @@ void LibraryQuery::AddWhere(const QString& column, const QVariant& value, } else { // Do integers inline - sqlite seems to get confused when you pass integers // to bound parameters - if(value.type() == QVariant::Int) { + if (value.type() == QVariant::Int) { where_clauses_ << QString("%1 %2 %3").arg(column, op, value.toString()); } else { where_clauses_ << QString("%1 %2 ?").arg(column, op); @@ -131,7 +128,8 @@ void LibraryQuery::AddWhere(const QString& column, const QVariant& value, } void LibraryQuery::AddCompilationRequirement(bool compilation) { - where_clauses_ << QString("effective_compilation = %1").arg(compilation ? 1 : 0); + where_clauses_ << QString("effective_compilation = %1") + .arg(compilation ? 1 : 0); } QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, @@ -139,11 +137,12 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, QString sql; if (join_with_fts_) { - sql = QString("SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID") - .arg(column_spec_, songs_table, fts_table); + sql = QString( + "SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID") + .arg(column_spec_, songs_table, fts_table); } else { sql = QString("SELECT %1 FROM %2 %3") - .arg(column_spec_, songs_table, GetInnerQuery()); + .arg(column_spec_, songs_table, GetInnerQuery()); } QStringList where_clauses(where_clauses_); @@ -151,14 +150,11 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, where_clauses << "unavailable = 0"; } - if (!where_clauses.isEmpty()) - sql += " WHERE " + where_clauses.join(" AND "); + if (!where_clauses.isEmpty()) sql += " WHERE " + where_clauses.join(" AND "); - if (!order_by_.isEmpty()) - sql += " ORDER BY " + order_by_; + if (!order_by_.isEmpty()) sql += " ORDER BY " + order_by_; - if (limit_ != -1) - sql += " LIMIT " + QString::number(limit_); + if (limit_ != -1) sql += " LIMIT " + QString::number(limit_); sql.replace("%songs_table", songs_table); sql.replace("%fts_table_noprefix", fts_table.section('.', -1, -1)); @@ -167,27 +163,20 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, query_ = QSqlQuery(sql, db); // Bind values - foreach (const QVariant& value, bound_values_) { - query_.addBindValue(value); - } + foreach(const QVariant & value, bound_values_) { query_.addBindValue(value); } query_.exec(); return query_; } -bool LibraryQuery::Next() { - return query_.next(); -} +bool LibraryQuery::Next() { return query_.next(); } -QVariant LibraryQuery::Value(int column) const { - return query_.value(column); -} +QVariant LibraryQuery::Value(int column) const { return query_.value(column); } bool QueryOptions::Matches(const Song& song) const { if (max_age_ != -1) { const uint cutoff = QDateTime::currentDateTime().toTime_t() - max_age_; - if (song.ctime() <= cutoff) - return false; + if (song.ctime() <= cutoff) return false; } if (!filter_.isNull()) { diff --git a/src/library/libraryquery.h b/src/library/libraryquery.h index d129f9311..c20b71a43 100644 --- a/src/library/libraryquery.h +++ b/src/library/libraryquery.h @@ -31,18 +31,14 @@ class LibraryBackend; struct QueryOptions { // Modes of LibraryQuery: // - use the all songs table - // - use the duplicated songs view; by duplicated we mean those songs - // for which the (artist, album, title) tuple is found more than once + // - use the duplicated songs view; by duplicated we mean those songs + // for which the (artist, album, title) tuple is found more than once // in the songs table // - use the untagged songs view; by untagged we mean those for which // at least one of the (artist, album, title) tags is empty // Please note that additional filtering based on fts table (the filter // attribute) won't work in Duplicates and Untagged modes. - enum QueryMode { - QueryMode_All, - QueryMode_Duplicates, - QueryMode_Untagged - }; + enum QueryMode { QueryMode_All, QueryMode_Duplicates, QueryMode_Untagged }; QueryOptions(); @@ -81,17 +77,21 @@ class LibraryQuery { // Adds a fragment of WHERE clause. When executed, this Query will connect all // the fragments with AND operator. // Please note that IN operator expects a QStringList as value. - void AddWhere(const QString& column, const QVariant& value, const QString& op = "="); + void AddWhere(const QString& column, const QVariant& value, + const QString& op = "="); void AddCompilationRequirement(bool compilation); void SetLimit(int limit) { limit_ = limit; } - void SetIncludeUnavailable(bool include_unavailable) { include_unavailable_ = include_unavailable; } + void SetIncludeUnavailable(bool include_unavailable) { + include_unavailable_ = include_unavailable; + } - QSqlQuery Exec(QSqlDatabase db, const QString& songs_table, const QString& fts_table); + QSqlQuery Exec(QSqlDatabase db, const QString& songs_table, + const QString& fts_table); bool Next(); QVariant Value(int column) const; - operator const QSqlQuery& () const { return query_; } + operator const QSqlQuery&() const { return query_; } private: QString GetInnerQuery(); @@ -108,4 +108,4 @@ class LibraryQuery { QSqlQuery query_; }; -#endif // LIBRARYQUERY_H +#endif // LIBRARYQUERY_H diff --git a/src/library/librarysettingspage.cpp b/src/library/librarysettingspage.cpp index d74ffa499..bafc00c78 100644 --- a/src/library/librarysettingspage.cpp +++ b/src/library/librarysettingspage.cpp @@ -37,12 +37,10 @@ const char* LibrarySettingsPage::kSettingsGroup = "LibraryConfig"; - LibrarySettingsPage::LibrarySettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_LibrarySettingsPage), - initialised_model_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_LibrarySettingsPage), + initialised_model_(false) { ui_->setupUi(this); ui_->list->setItemDelegate(new NativeSeparatorsDelegate(this)); @@ -52,19 +50,20 @@ LibrarySettingsPage::LibrarySettingsPage(SettingsDialog* dialog) connect(ui_->add, SIGNAL(clicked()), SLOT(Add())); connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove())); - connect(ui_->sync_stats_button, SIGNAL(clicked()), SLOT(WriteAllSongsStatisticsToFiles())); + connect(ui_->sync_stats_button, SIGNAL(clicked()), + SLOT(WriteAllSongsStatisticsToFiles())); } -LibrarySettingsPage::~LibrarySettingsPage() { - delete ui_; -} +LibrarySettingsPage::~LibrarySettingsPage() { delete ui_; } void LibrarySettingsPage::Add() { QSettings settings; settings.beginGroup(kSettingsGroup); - QString path(settings.value("last_path", - Utilities::GetConfigPath(Utilities::Path_DefaultMusicLibrary)).toString()); + QString path( + settings.value("last_path", Utilities::GetConfigPath( + Utilities::Path_DefaultMusicLibrary)) + .toString()); path = QFileDialog::getExistingDirectory(this, tr("Add directory..."), path); if (!path.isNull()) { @@ -75,7 +74,8 @@ void LibrarySettingsPage::Add() { } void LibrarySettingsPage::Remove() { - dialog()->library_directory_model()->RemoveDirectory(ui_->list->currentIndex()); + dialog()->library_directory_model()->RemoveDirectory( + ui_->list->currentIndex()); } void LibrarySettingsPage::CurrentRowChanged(const QModelIndex& index) { @@ -93,16 +93,17 @@ void LibrarySettingsPage::Save() { s.beginGroup(LibraryWatcher::kSettingsGroup); s.setValue("startup_scan", ui_->startup_scan->isChecked()); s.setValue("monitor", ui_->monitor->isChecked()); - + QString filter_text = ui_->cover_art_patterns->text(); QStringList filters = filter_text.split(',', QString::SkipEmptyParts); s.setValue("cover_art_patterns", filters); - + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); s.setValue("save_ratings_in_file", ui_->save_ratings_in_file->isChecked()); - s.setValue("save_statistics_in_file", ui_->save_statistics_in_file->isChecked()); + s.setValue("save_statistics_in_file", + ui_->save_statistics_in_file->isChecked()); s.endGroup(); } @@ -110,8 +111,8 @@ void LibrarySettingsPage::Load() { if (!initialised_model_) { if (ui_->list->selectionModel()) { disconnect(ui_->list->selectionModel(), - SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), - this, SLOT(CurrentRowChanged(QModelIndex))); + SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), this, + SLOT(CurrentRowChanged(QModelIndex))); } ui_->list->setModel(dialog()->library_directory_model()); @@ -132,27 +133,31 @@ void LibrarySettingsPage::Load() { s.beginGroup(LibraryWatcher::kSettingsGroup); ui_->startup_scan->setChecked(s.value("startup_scan", true).toBool()); ui_->monitor->setChecked(s.value("monitor", true).toBool()); - - QStringList filters = s.value("cover_art_patterns", - QStringList() << "front" << "cover").toStringList(); + + QStringList filters = + s.value("cover_art_patterns", QStringList() << "front" + << "cover").toStringList(); ui_->cover_art_patterns->setText(filters.join(",")); - + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); - ui_->save_ratings_in_file->setChecked(s.value("save_ratings_in_file", false).toBool()); - ui_->save_statistics_in_file->setChecked(s.value("save_statistics_in_file", false).toBool()); + ui_->save_ratings_in_file->setChecked( + s.value("save_ratings_in_file", false).toBool()); + ui_->save_statistics_in_file->setChecked( + s.value("save_statistics_in_file", false).toBool()); s.endGroup(); } void LibrarySettingsPage::WriteAllSongsStatisticsToFiles() { QMessageBox confirmation_dialog( - QMessageBox::Question, - tr("Write all songs statistics into songs' files"), - tr("Are you sure you want to write song's statistics into song's file for all the songs of your library?"), + QMessageBox::Question, tr("Write all songs statistics into songs' files"), + tr("Are you sure you want to write song's statistics into song's file " + "for all the songs of your library?"), QMessageBox::Yes | QMessageBox::Cancel); if (confirmation_dialog.exec() != QMessageBox::Yes) { return; } - QtConcurrent::run(dialog()->app()->library(), &Library::WriteAllSongsStatisticsToFiles); + QtConcurrent::run(dialog()->app()->library(), + &Library::WriteAllSongsStatisticsToFiles); } diff --git a/src/library/librarysettingspage.h b/src/library/librarysettingspage.h index d0924e2a0..ad8398ffa 100644 --- a/src/library/librarysettingspage.h +++ b/src/library/librarysettingspage.h @@ -28,7 +28,7 @@ class QModelIndex; class LibrarySettingsPage : public SettingsPage { Q_OBJECT -public: + public: LibrarySettingsPage(SettingsDialog* dialog); ~LibrarySettingsPage(); @@ -37,16 +37,16 @@ public: void Load(); void Save(); -private slots: + private slots: void Add(); void Remove(); void WriteAllSongsStatisticsToFiles(); void CurrentRowChanged(const QModelIndex& index); -private: + private: Ui_LibrarySettingsPage* ui_; bool initialised_model_; }; -#endif // LIBRARYSETTINGSPAGE_H +#endif // LIBRARYSETTINGSPAGE_H diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index b4976463d..fe4cf2f41 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -50,12 +50,12 @@ using smart_playlists::Wizard; const char* LibraryView::kSettingsGroup = "LibraryView"; -LibraryItemDelegate::LibraryItemDelegate(QObject *parent) - : QStyledItemDelegate(parent) -{ -} +LibraryItemDelegate::LibraryItemDelegate(QObject* parent) + : QStyledItemDelegate(parent) {} -void LibraryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opt, const QModelIndex &index) const { +void LibraryItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& opt, + const QModelIndex& index) const { const bool is_divider = index.data(LibraryModel::Role_IsDivider).toBool(); if (is_divider) { @@ -113,19 +113,17 @@ void LibraryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &o } } -bool LibraryItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, - const QModelIndex &index) { +bool LibraryItemDelegate::helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, + const QModelIndex& index) { Q_UNUSED(option); - if (!event || !view) - return false; + if (!event || !view) return false; - QHelpEvent *he = static_cast(event); + QHelpEvent* he = static_cast(event); QString text = displayText(index.data(), QLocale::system()); - if (text.isEmpty() || !he) - return false; + if (text.isEmpty() || !he) return false; switch (event->type()) { case QEvent::ToolTip: { @@ -164,14 +162,13 @@ bool LibraryItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, } LibraryView::LibraryView(QWidget* parent) - : AutoExpandingTreeView(parent), - app_(nullptr), - filter_(nullptr), - total_song_count_(-1), - nomusic_(":nomusic.png"), - context_menu_(nullptr), - is_in_keyboard_search_(false) -{ + : AutoExpandingTreeView(parent), + app_(nullptr), + filter_(nullptr), + total_song_count_(-1), + nomusic_(":nomusic.png"), + context_menu_(nullptr), + is_in_keyboard_search_(false) { setItemDelegate(new LibraryItemDelegate(this)); setAttribute(Qt::WA_MacShowFocusRect, false); setHeaderHidden(true); @@ -183,15 +180,14 @@ LibraryView::LibraryView(QWidget* parent) setStyleSheet("QTreeView::item{padding-top:1px;}"); } -LibraryView::~LibraryView() { -} +LibraryView::~LibraryView() {} void LibraryView::SaveFocus() { QModelIndex current = currentIndex(); QVariant type = model()->data(current, LibraryModel::Role_Type); if (!type.isValid() || !(type.toInt() == LibraryItem::Type_Song || - type.toInt() == LibraryItem::Type_Container || - type.toInt() == LibraryItem::Type_Divider)) { + type.toInt() == LibraryItem::Type_Container || + type.toInt() == LibraryItem::Type_Divider)) { return; } @@ -201,8 +197,8 @@ void LibraryView::SaveFocus() { switch (type.toInt()) { case LibraryItem::Type_Song: { - QModelIndex index = qobject_cast(model()) - ->mapToSource(current); + QModelIndex index = + qobject_cast(model())->mapToSource(current); SongList songs = app_->library_model()->GetChildSongs(index); if (!songs.isEmpty()) { last_selected_song_ = songs.last(); @@ -212,7 +208,8 @@ void LibraryView::SaveFocus() { case LibraryItem::Type_Container: case LibraryItem::Type_Divider: { - QString text = model()->data(current, LibraryModel::Role_SortText).toString(); + QString text = + model()->data(current, LibraryModel::Role_SortText).toString(); last_selected_container_ = text; break; } @@ -228,7 +225,7 @@ void LibraryView::SaveContainerPath(const QModelIndex& child) { QModelIndex current = model()->parent(child); QVariant type = model()->data(current, LibraryModel::Role_Type); if (!type.isValid() || !(type.toInt() == LibraryItem::Type_Container || - type.toInt() == LibraryItem::Type_Divider)) { + type.toInt() == LibraryItem::Type_Divider)) { return; } @@ -238,7 +235,8 @@ void LibraryView::SaveContainerPath(const QModelIndex& child) { } void LibraryView::RestoreFocus() { - if (last_selected_container_.isEmpty() && last_selected_song_.url().isEmpty()) { + if (last_selected_container_.isEmpty() && + last_selected_song_.url().isEmpty()) { return; } RestoreLevelFocus(); @@ -256,9 +254,9 @@ bool LibraryView::RestoreLevelFocus(const QModelIndex& parent) { case LibraryItem::Type_Song: if (!last_selected_song_.url().isEmpty()) { QModelIndex index = qobject_cast(model()) - ->mapToSource(current); + ->mapToSource(current); SongList songs = app_->library_model()->GetChildSongs(index); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song == last_selected_song_) { setCurrentIndex(current); return true; @@ -269,14 +267,17 @@ bool LibraryView::RestoreLevelFocus(const QModelIndex& parent) { case LibraryItem::Type_Container: case LibraryItem::Type_Divider: { - QString text = model()->data(current, LibraryModel::Role_SortText).toString(); - if (!last_selected_container_.isEmpty() && last_selected_container_ == text) { + QString text = + model()->data(current, LibraryModel::Role_SortText).toString(); + if (!last_selected_container_.isEmpty() && + last_selected_container_ == text) { emit expand(current); setCurrentIndex(current); return true; } else if (last_selected_path_.contains(text)) { emit expand(current); - // If a selected container or song were not found, we've got into a wrong subtree + // If a selected container or song were not found, we've got into a + // wrong subtree // (happens with "unknown" all the time) if (!RestoreLevelFocus(current)) { emit collapse(current); @@ -297,8 +298,10 @@ void LibraryView::ReloadSettings() { SetAutoOpen(s.value("auto_open", true).toBool()); if (app_ != nullptr) { - app_->library_model()->set_pretty_covers(s.value("pretty_covers", true).toBool()); - app_->library_model()->set_show_dividers(s.value("show_dividers", true).toBool()); + app_->library_model()->set_pretty_covers( + s.value("pretty_covers", true).toBool()); + app_->library_model()->set_show_dividers( + s.value("show_dividers", true).toBool()); } } @@ -307,15 +310,12 @@ void LibraryView::SetApplication(Application* app) { ReloadSettings(); } -void LibraryView::SetFilter(LibraryFilterWidget* filter) { - filter_ = filter; -} +void LibraryView::SetFilter(LibraryFilterWidget* filter) { filter_ = filter; } void LibraryView::TotalSongCountUpdated(int count) { bool old = total_song_count_; total_song_count_ = count; - if (old != total_song_count_) - update(); + if (old != total_song_count_) update(); if (total_song_count_ == 0) setCursor(Qt::PointingHandCursor); @@ -340,7 +340,8 @@ void LibraryView::paintEvent(QPaintEvent* event) { QFontMetrics metrics(bold_font); - QRect title_rect(0, image_rect.bottom() + 20, rect.width(), metrics.height()); + QRect title_rect(0, image_rect.bottom() + 20, rect.width(), + metrics.height()); p.drawText(title_rect, Qt::AlignHCenter, tr("Your library is empty!")); // Draw the other text @@ -361,47 +362,60 @@ void LibraryView::mouseReleaseEvent(QMouseEvent* e) { } } -void LibraryView::contextMenuEvent(QContextMenuEvent *e) { - if(!context_menu_) { +void LibraryView::contextMenuEvent(QContextMenuEvent* e) { + if (!context_menu_) { context_menu_ = new QMenu(this); - add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), + add_to_playlist_ = context_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Replace current playlist"), this, SLOT(Load())); - open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + tr("Replace current playlist"), this, + SLOT(Load())); + open_in_new_playlist_ = context_menu_->addAction( + IconLoader::Load("document-new"), tr("Open in new playlist"), this, + SLOT(OpenInNewPlaylist())); context_menu_->addSeparator(); - add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), - tr("Queue track"), this, SLOT(AddToPlaylistEnqueue())); + add_to_playlist_enqueue_ = + context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), + this, SLOT(AddToPlaylistEnqueue())); context_menu_->addSeparator(); - new_smart_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), - tr("New smart playlist..."), this, SLOT(NewSmartPlaylist())); - edit_smart_playlist_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit smart playlist..."), this, SLOT(EditSmartPlaylist())); - delete_smart_playlist_ = context_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete smart playlist"), this, SLOT(DeleteSmartPlaylist())); + new_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("document-new"), tr("New smart playlist..."), this, + SLOT(NewSmartPlaylist())); + edit_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("edit-rename"), tr("Edit smart playlist..."), this, + SLOT(EditSmartPlaylist())); + delete_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("edit-delete"), tr("Delete smart playlist"), this, + SLOT(DeleteSmartPlaylist())); context_menu_->addSeparator(); organise_ = context_menu_->addAction(IconLoader::Load("edit-copy"), - tr("Organise files..."), this, SLOT(Organise())); - copy_to_device_ = context_menu_->addAction(IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Organise files..."), this, + SLOT(Organise())); + copy_to_device_ = context_menu_->addAction( + IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(CopyToDevice())); delete_ = context_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete from disk..."), this, SLOT(Delete())); + tr("Delete from disk..."), this, + SLOT(Delete())); context_menu_->addSeparator(); edit_track_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit track information..."), this, SLOT(EditTracks())); + tr("Edit track information..."), + this, SLOT(EditTracks())); edit_tracks_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit tracks information..."), this, SLOT(EditTracks())); - show_in_browser_ = context_menu_->addAction(IconLoader::Load("document-open-folder"), - tr("Show in file browser..."), this, SLOT(ShowInBrowser())); + tr("Edit tracks information..."), + this, SLOT(EditTracks())); + show_in_browser_ = context_menu_->addAction( + IconLoader::Load("document-open-folder"), tr("Show in file browser..."), + this, SLOT(ShowInBrowser())); context_menu_->addSeparator(); - show_in_various_ = context_menu_->addAction( - tr("Show in various artists"), this, SLOT(ShowInVarious())); + show_in_various_ = context_menu_->addAction(tr("Show in various artists"), + this, SLOT(ShowInVarious())); no_show_in_various_ = context_menu_->addAction( tr("Don't show in various artists"), this, SLOT(NoShowInVarious())); @@ -409,21 +423,23 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addMenu(filter_->menu()); - copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - copy_to_device_, SLOT(setDisabled(bool))); + copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), copy_to_device_, + SLOT(setDisabled(bool))); } context_menu_index_ = indexAt(e->pos()); - if (!context_menu_index_.isValid()) - return; + if (!context_menu_index_.isValid()) return; context_menu_index_ = qobject_cast(model()) - ->mapToSource(context_menu_index_); + ->mapToSource(context_menu_index_); QModelIndexList selected_indexes = - qobject_cast(model())->mapSelectionToSource( - selectionModel()->selection()).indexes(); + qobject_cast(model()) + ->mapSelectionToSource(selectionModel()->selection()) + .indexes(); // number of smart playlists selected int smart_playlists = 0; @@ -434,27 +450,34 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { // number of editable non smart playlists selected int regular_editable = 0; - foreach(const QModelIndex& index, selected_indexes) { - int type = app_->library_model()->data(index, LibraryModel::Role_Type).toInt(); + foreach(const QModelIndex & index, selected_indexes) { + int type = + app_->library_model()->data(index, LibraryModel::Role_Type).toInt(); - if(type == LibraryItem::Type_SmartPlaylist) { + if (type == LibraryItem::Type_SmartPlaylist) { smart_playlists++; - } else if(type == LibraryItem::Type_PlaylistContainer) { + } else if (type == LibraryItem::Type_PlaylistContainer) { smart_playlists_header++; } else { regular_elements++; } - if(app_->library_model()->data(index, LibraryModel::Role_Editable).toBool()) { + if (app_->library_model() + ->data(index, LibraryModel::Role_Editable) + .toBool()) { regular_editable++; } } // TODO: check if custom plugin actions should be enabled / visible - const int songs_selected = smart_playlists + smart_playlists_header + regular_elements; - const bool regular_elements_only = songs_selected == regular_elements && regular_elements > 0; - const bool smart_playlists_only = songs_selected == smart_playlists + smart_playlists_header; - const bool only_smart_playlist_selected = smart_playlists == 1 && songs_selected == 1; + const int songs_selected = + smart_playlists + smart_playlists_header + regular_elements; + const bool regular_elements_only = + songs_selected == regular_elements && regular_elements > 0; + const bool smart_playlists_only = + songs_selected == smart_playlists + smart_playlists_header; + const bool only_smart_playlist_selected = + smart_playlists == 1 && songs_selected == 1; // in all modes load_->setEnabled(songs_selected); @@ -493,52 +516,51 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->popup(e->globalPos()); } -void LibraryView::ShowInVarious() { - ShowInVarious(true); -} +void LibraryView::ShowInVarious() { ShowInVarious(true); } -void LibraryView::NoShowInVarious() { - ShowInVarious(false); -} +void LibraryView::NoShowInVarious() { ShowInVarious(false); } void LibraryView::ShowInVarious(bool on) { - if (!context_menu_index_.isValid()) - return; + if (!context_menu_index_.isValid()) return; - // Map is from album name -> all artists sharing that album name, built from each selected - // song. We put through "Various Artists" changes one album at a time, to make sure the old album - // node gets removed (due to all children removed), before the new one gets added + // Map is from album name -> all artists sharing that album name, built from + // each selected + // song. We put through "Various Artists" changes one album at a time, to make + // sure the old album + // node gets removed (due to all children removed), before the new one gets + // added QMultiMap albums; - foreach (const Song& song, GetSelectedSongs()) { + foreach(const Song & song, GetSelectedSongs()) { if (albums.find(song.album(), song.artist()) == albums.end()) - albums.insert( song.album(), song.artist() ); + albums.insert(song.album(), song.artist()); } - // If we have only one album and we are putting it into Various Artists, check to see - // if there are other Artists in this album and prompt the user if they'd like them moved, too - if(on && albums.keys().count() == 1) { + // If we have only one album and we are putting it into Various Artists, check + // to see + // if there are other Artists in this album and prompt the user if they'd like + // them moved, too + if (on && albums.keys().count() == 1) { const QString album = albums.keys().first(); QList all_of_album = app_->library_backend()->GetSongsByAlbum(album); QSet other_artists; - foreach (const Song& s, all_of_album) { - if(!albums.contains(album, s.artist()) && !other_artists.contains(s.artist())) { + foreach(const Song & s, all_of_album) { + if (!albums.contains(album, s.artist()) && + !other_artists.contains(s.artist())) { other_artists.insert(s.artist()); } } if (other_artists.count() > 0) { - if (QMessageBox::question(this, - tr("There are other songs in this album"), - tr("Would you like to move the other songs in this album to Various Artists as well?"), - QMessageBox::Yes | QMessageBox::No, - QMessageBox::Yes) == QMessageBox::Yes) { - foreach (const QString& s, other_artists) { - albums.insert(album, s); - } + if (QMessageBox::question(this, tr("There are other songs in this album"), + tr("Would you like to move the other songs in " + "this album to Various Artists as well?"), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::Yes) == QMessageBox::Yes) { + foreach(const QString & s, other_artists) { albums.insert(album, s); } } } } - foreach (const QString& album, QSet::fromList(albums.keys())) { + foreach(const QString & album, QSet::fromList(albums.keys())) { app_->library_backend()->ForceCompilation(album, albums.values(album), on); } } @@ -586,8 +608,9 @@ void LibraryView::scrollTo(const QModelIndex& index, ScrollHint hint) { SongList LibraryView::GetSelectedSongs() const { QModelIndexList selected_indexes = - qobject_cast(model())->mapSelectionToSource( - selectionModel()->selection()).indexes(); + qobject_cast(model()) + ->mapSelectionToSource(selectionModel()->selection()) + .indexes(); return app_->library_model()->GetChildSongs(selected_indexes); } @@ -595,36 +618,44 @@ void LibraryView::Organise() { if (!organise_dialog_) organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetCopy(false); if (organise_dialog_->SetSongs(GetSelectedSongs())) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } void LibraryView::Delete() { if (QMessageBox::warning(this, tr("Delete files"), - tr("These files will be permanently deleted from disk, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be permanently deleted from " + "disk, are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; // We can cheat and always take the storage of the first directory, since // they'll all be FilesystemMusicStorage in a library and deleting doesn't // check the actual directory. std::shared_ptr storage = - app_->library_model()->directory_model()->index(0, 0).data(MusicStorage::Role_Storage) - .value>(); + app_->library_model() + ->directory_model() + ->index(0, 0) + .data(MusicStorage::Role_Storage) + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(GetSelectedSongs()); } void LibraryView::EditTracks() { - if(!edit_tag_dialog_) { + if (!edit_tag_dialog_) { edit_tag_dialog_.reset(new EditTagDialog(app_, this)); } edit_tag_dialog_->SetSongs(GetSelectedSongs()); @@ -635,15 +666,15 @@ void LibraryView::CopyToDevice() { if (!organise_dialog_) organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); organise_dialog_->SetSongs(GetSelectedSongs()); organise_dialog_->show(); } void LibraryView::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); @@ -653,7 +684,7 @@ void LibraryView::DeleteFinished(const SongList& songs_with_errors) { void LibraryView::FilterReturnPressed() { if (!currentIndex().isValid()) { // Pick the first thing that isn't a divider - for (int row=0 ; rowrowCount() ; ++row) { + for (int row = 0; row < model()->rowCount(); ++row) { QModelIndex idx(model()->index(row, 0)); if (idx.data(LibraryModel::Role_Type) != LibraryItem::Type_Divider) { setCurrentIndex(idx); @@ -662,8 +693,7 @@ void LibraryView::FilterReturnPressed() { } } - if (!currentIndex().isValid()) - return; + if (!currentIndex().isValid()) return; emit doubleClicked(currentIndex()); } @@ -682,7 +712,8 @@ void LibraryView::EditSmartPlaylist() { connect(wizard, SIGNAL(accepted()), SLOT(EditSmartPlaylistFinished())); wizard->show(); - wizard->SetGenerator(app_->library_model()->CreateGenerator(context_menu_index_)); + wizard->SetGenerator( + app_->library_model()->CreateGenerator(context_menu_index_)); } void LibraryView::DeleteSmartPlaylist() { @@ -696,14 +727,13 @@ void LibraryView::NewSmartPlaylistFinished() { void LibraryView::EditSmartPlaylistFinished() { const Wizard* wizard = qobject_cast(sender()); - app_->library_model()->UpdateGenerator(context_menu_index_, wizard->CreateGenerator()); + app_->library_model()->UpdateGenerator(context_menu_index_, + wizard->CreateGenerator()); } void LibraryView::ShowInBrowser() { QList urls; - foreach (const Song& song, GetSelectedSongs()) { - urls << song.url(); - } + foreach(const Song & song, GetSelectedSongs()) { urls << song.url(); } Utilities::OpenInFileBrowser(urls); } diff --git a/src/library/libraryview.h b/src/library/libraryview.h index fb096fa2d..6e229b658 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -32,18 +32,21 @@ class OrganiseDialog; class QMimeData; -namespace smart_playlists { class Wizard; } +namespace smart_playlists { +class Wizard; +} class LibraryItemDelegate : public QStyledItemDelegate { Q_OBJECT -public: + public: LibraryItemDelegate(QObject* parent); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; -public slots: - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, const QModelIndex &index); + public slots: + bool helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, const QModelIndex& index); }; class LibraryView : public AutoExpandingTreeView { @@ -64,7 +67,7 @@ class LibraryView : public AutoExpandingTreeView { void SetFilter(LibraryFilterWidget* filter); // QTreeView - void keyboardSearch(const QString &search); + void keyboardSearch(const QString& search); void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); public slots: @@ -76,7 +79,7 @@ class LibraryView : public AutoExpandingTreeView { void SaveFocus(); void RestoreFocus(); - signals: +signals: void ShowConfigDialog(); protected: @@ -151,4 +154,4 @@ class LibraryView : public AutoExpandingTreeView { QSet last_selected_path_; }; -#endif // LIBRARYVIEW_H +#endif // LIBRARYVIEW_H diff --git a/src/library/libraryviewcontainer.cpp b/src/library/libraryviewcontainer.cpp index 2df492fea..f58f3e459 100644 --- a/src/library/libraryviewcontainer.cpp +++ b/src/library/libraryviewcontainer.cpp @@ -20,32 +20,26 @@ #include "globalsearch/globalsearch.h" LibraryViewContainer::LibraryViewContainer(QWidget* parent) - : QWidget(parent), - ui_(new Ui_LibraryViewContainer) -{ + : QWidget(parent), ui_(new Ui_LibraryViewContainer) { ui_->setupUi(this); view()->SetFilter(filter()); connect(filter(), SIGNAL(UpPressed()), view(), SLOT(UpAndFocus())); connect(filter(), SIGNAL(DownPressed()), view(), SLOT(DownAndFocus())); - connect(filter(), SIGNAL(ReturnPressed()), view(), SLOT(FilterReturnPressed())); - connect(view(), SIGNAL(FocusOnFilterSignal(QKeyEvent*)), filter(), SLOT(FocusOnFilter(QKeyEvent*))); + connect(filter(), SIGNAL(ReturnPressed()), view(), + SLOT(FilterReturnPressed())); + connect(view(), SIGNAL(FocusOnFilterSignal(QKeyEvent*)), filter(), + SLOT(FocusOnFilter(QKeyEvent*))); ReloadSettings(); } -LibraryViewContainer::~LibraryViewContainer() { - delete ui_; -} +LibraryViewContainer::~LibraryViewContainer() { delete ui_; } -LibraryView* LibraryViewContainer::view() const { - return ui_->view; -} +LibraryView* LibraryViewContainer::view() const { return ui_->view; } LibraryFilterWidget* LibraryViewContainer::filter() const { return ui_->filter; } -void LibraryViewContainer::ReloadSettings() { - view()->ReloadSettings(); -} +void LibraryViewContainer::ReloadSettings() { view()->ReloadSettings(); } diff --git a/src/library/libraryviewcontainer.h b/src/library/libraryviewcontainer.h index 24cf18a5b..751756da6 100644 --- a/src/library/libraryviewcontainer.h +++ b/src/library/libraryviewcontainer.h @@ -27,7 +27,7 @@ class Ui_LibraryViewContainer; class LibraryViewContainer : public QWidget { Q_OBJECT -public: + public: LibraryViewContainer(QWidget* parent = 0); ~LibraryViewContainer(); @@ -36,8 +36,8 @@ public: void ReloadSettings(); -private: + private: Ui_LibraryViewContainer* ui_; }; -#endif // LIBRARYVIEWCONTAINER_H +#endif // LIBRARYVIEWCONTAINER_H diff --git a/src/library/librarywatcher.cpp b/src/library/librarywatcher.cpp index a251f9eb1..8944664c4 100644 --- a/src/library/librarywatcher.cpp +++ b/src/library/librarywatcher.cpp @@ -48,25 +48,27 @@ QStringList LibraryWatcher::sValidImages; const char* LibraryWatcher::kSettingsGroup = "LibraryWatcher"; LibraryWatcher::LibraryWatcher(QObject* parent) - : QObject(parent), - backend_(nullptr), - task_manager_(nullptr), - fs_watcher_(FileSystemWatcherInterface::Create(this)), - stop_requested_(false), - scan_on_startup_(true), - monitor_(true), - rescan_timer_(new QTimer(this)), - rescan_paused_(false), - total_watches_(0), - cue_parser_(new CueParser(backend_, this)) -{ + : QObject(parent), + backend_(nullptr), + task_manager_(nullptr), + fs_watcher_(FileSystemWatcherInterface::Create(this)), + stop_requested_(false), + scan_on_startup_(true), + monitor_(true), + rescan_timer_(new QTimer(this)), + rescan_paused_(false), + total_watches_(0), + cue_parser_(new CueParser(backend_, this)) { Utilities::SetThreadIOPriority(Utilities::IOPRIO_CLASS_IDLE); rescan_timer_->setInterval(1000); rescan_timer_->setSingleShot(true); if (sValidImages.isEmpty()) { - sValidImages << "jpg" << "png" << "gif" << "jpeg"; + sValidImages << "jpg" + << "png" + << "gif" + << "jpeg"; } ReloadSettings(); @@ -74,17 +76,17 @@ LibraryWatcher::LibraryWatcher(QObject* parent) connect(rescan_timer_, SIGNAL(timeout()), SLOT(RescanPathsNow())); } -LibraryWatcher::ScanTransaction::ScanTransaction(LibraryWatcher* watcher, int dir, - bool incremental, bool ignores_mtime) - : progress_(0), - progress_max_(0), - dir_(dir), - incremental_(incremental), - ignores_mtime_(ignores_mtime), - watcher_(watcher), - cached_songs_dirty_(true), - known_subdirs_dirty_(true) -{ +LibraryWatcher::ScanTransaction::ScanTransaction(LibraryWatcher* watcher, + int dir, bool incremental, + bool ignores_mtime) + : progress_(0), + progress_max_(0), + dir_(dir), + incremental_(incremental), + ignores_mtime_(ignores_mtime), + watcher_(watcher), + cached_songs_dirty_(true), + known_subdirs_dirty_(true) { QString description; if (watcher_->device_name_.isEmpty()) description = tr("Updating library"); @@ -99,20 +101,15 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() { // If we're stopping then don't commit the transaction if (watcher_->stop_requested_) return; - if (!new_songs.isEmpty()) - emit watcher_->NewOrUpdatedSongs(new_songs); + if (!new_songs.isEmpty()) emit watcher_->NewOrUpdatedSongs(new_songs); - if (!touched_songs.isEmpty()) - emit watcher_->SongsMTimeUpdated(touched_songs); + if (!touched_songs.isEmpty()) emit watcher_->SongsMTimeUpdated(touched_songs); - if (!deleted_songs.isEmpty()) - emit watcher_->SongsDeleted(deleted_songs); + if (!deleted_songs.isEmpty()) emit watcher_->SongsDeleted(deleted_songs); - if (!readded_songs.isEmpty()) - emit watcher_->SongsReadded(readded_songs); + if (!readded_songs.isEmpty()) emit watcher_->SongsReadded(readded_songs); - if (!new_subdirs.isEmpty()) - emit watcher_->SubdirsDiscovered(new_subdirs); + if (!new_subdirs.isEmpty()) emit watcher_->SubdirsDiscovered(new_subdirs); if (!touched_subdirs.isEmpty()) emit watcher_->SubdirsMTimeUpdated(touched_subdirs); @@ -121,7 +118,7 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() { if (watcher_->monitor_) { // Watch the new subdirectories - foreach (const Subdirectory& subdir, new_subdirs) { + foreach(const Subdirectory & subdir, new_subdirs) { watcher_->AddWatch(watcher_->watched_dirs_[dir_], subdir.path); } } @@ -137,7 +134,8 @@ void LibraryWatcher::ScanTransaction::AddToProgressMax(int n) { watcher_->task_manager_->SetTaskProgress(task_id_, progress_, progress_max_); } -SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory(const QString &path) { +SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory( + const QString& path) { if (cached_songs_dirty_) { cached_songs_ = watcher_->backend_->FindSongsInDirectory(dir_); cached_songs_dirty_ = false; @@ -145,35 +143,35 @@ SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory(const QString // TODO: Make this faster SongList ret; - foreach (const Song& song, cached_songs_) { - if (song.url().toLocalFile().section('/', 0, -2) == path) - ret << song; + foreach(const Song & song, cached_songs_) { + if (song.url().toLocalFile().section('/', 0, -2) == path) ret << song; } return ret; } -void LibraryWatcher::ScanTransaction::SetKnownSubdirs(const SubdirectoryList &subdirs) { +void LibraryWatcher::ScanTransaction::SetKnownSubdirs( + const SubdirectoryList& subdirs) { known_subdirs_ = subdirs; known_subdirs_dirty_ = false; } -bool LibraryWatcher::ScanTransaction::HasSeenSubdir(const QString &path) { +bool LibraryWatcher::ScanTransaction::HasSeenSubdir(const QString& path) { if (known_subdirs_dirty_) SetKnownSubdirs(watcher_->backend_->SubdirsInDirectory(dir_)); - foreach (const Subdirectory& subdir, known_subdirs_) { - if (subdir.path == path && subdir.mtime != 0) - return true; + foreach(const Subdirectory & subdir, known_subdirs_) { + if (subdir.path == path && subdir.mtime != 0) return true; } return false; } -SubdirectoryList LibraryWatcher::ScanTransaction::GetImmediateSubdirs(const QString &path) { +SubdirectoryList LibraryWatcher::ScanTransaction::GetImmediateSubdirs( + const QString& path) { if (known_subdirs_dirty_) SetKnownSubdirs(watcher_->backend_->SubdirsInDirectory(dir_)); SubdirectoryList ret; - foreach (const Subdirectory& subdir, known_subdirs_) { + foreach(const Subdirectory & subdir, known_subdirs_) { if (subdir.path.left(subdir.path.lastIndexOf(QDir::separator())) == path && subdir.mtime != 0) { ret << subdir; @@ -189,7 +187,8 @@ SubdirectoryList LibraryWatcher::ScanTransaction::GetAllSubdirs() { return known_subdirs_; } -void LibraryWatcher::AddDirectory(const Directory& dir, const SubdirectoryList& subdirs) { +void LibraryWatcher::AddDirectory(const Directory& dir, + const SubdirectoryList& subdirs) { watched_dirs_[dir.id] = dir; if (subdirs.isEmpty()) { @@ -205,29 +204,28 @@ void LibraryWatcher::AddDirectory(const Directory& dir, const SubdirectoryList& ScanTransaction transaction(this, dir.id, true); transaction.SetKnownSubdirs(subdirs); transaction.AddToProgressMax(subdirs.count()); - foreach (const Subdirectory& subdir, subdirs) { + foreach(const Subdirectory & subdir, subdirs) { if (stop_requested_) return; - if (scan_on_startup_) - ScanSubdirectory(subdir.path, subdir, &transaction); + if (scan_on_startup_) ScanSubdirectory(subdir.path, subdir, &transaction); - if (monitor_) - AddWatch(dir, subdir.path); + if (monitor_) AddWatch(dir, subdir.path); } } emit CompilationsNeedUpdating(); } -void LibraryWatcher::ScanSubdirectory( - const QString& path, const Subdirectory& subdir, ScanTransaction* t, - bool force_noincremental) { +void LibraryWatcher::ScanSubdirectory(const QString& path, + const Subdirectory& subdir, + ScanTransaction* t, + bool force_noincremental) { QFileInfo path_info(path); // Do not scan symlinked dirs that are already in collection if (path_info.isSymLink()) { QString real_path = path_info.symLinkTarget(); - foreach (const Directory& dir, watched_dirs_) { + foreach(const Directory & dir, watched_dirs_) { if (real_path.startsWith(dir.path)) { t->AddToProgress(1); return; @@ -250,7 +248,7 @@ void LibraryWatcher::ScanSubdirectory( // so we need to look and see if any of our children don't exist any more. // If one has been removed, "rescan" it to get the deleted songs SubdirectoryList previous_subdirs = t->GetImmediateSubdirs(path); - foreach (const Subdirectory& subdir, previous_subdirs) { + foreach(const Subdirectory & subdir, previous_subdirs) { if (!QFile::exists(subdir.path) && subdir.path != path) { t->AddToProgressMax(1); ScanSubdirectory(subdir.path, subdir, t, true); @@ -258,9 +256,11 @@ void LibraryWatcher::ScanSubdirectory( } // First we "quickly" get a list of the files in the directory that we - // think might be music. While we're here, we also look for new subdirectories + // think might be music. While we're here, we also look for new + // subdirectories // and possible album artwork. - QDirIterator it(path, QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); + QDirIterator it( + path, QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); while (it.hasNext()) { if (stop_requested_) return; @@ -296,7 +296,7 @@ void LibraryWatcher::ScanSubdirectory( QSet cues_processed; // Now compare the list from the database with the list of files on disk - foreach (const QString& file, files_on_disk) { + foreach(const QString & file, files_on_disk) { if (stop_requested_) return; // associated cue @@ -324,16 +324,19 @@ void LibraryWatcher::ScanSubdirectory( bool cue_deleted = song_cue_mtime == 0 && matching_song.has_cue(); bool cue_added = matching_cue_mtime != 0 && !matching_song.has_cue(); - // watch out for cue songs which have their mtime equal to qMax(media_file_mtime, cue_sheet_mtime) - bool changed = (matching_song.mtime() != qMax(file_info.lastModified().toTime_t(), song_cue_mtime)) - || cue_deleted || cue_added; + // watch out for cue songs which have their mtime equal to + // qMax(media_file_mtime, cue_sheet_mtime) + bool changed = + (matching_song.mtime() != + qMax(file_info.lastModified().toTime_t(), song_cue_mtime)) || + cue_deleted || cue_added; // Also want to look to see whether the album art has changed QString image = ImageForSong(file, album_art); if ((matching_song.art_automatic().isEmpty() && !image.isEmpty()) || - (!matching_song.art_automatic().isEmpty() - && !matching_song.has_embedded_cover() - && !QFile::exists(matching_song.art_automatic()))) { + (!matching_song.art_automatic().isEmpty() && + !matching_song.has_embedded_cover() && + !QFile::exists(matching_song.art_automatic()))) { changed = true; } @@ -342,23 +345,24 @@ void LibraryWatcher::ScanSubdirectory( qLog(Debug) << file << "changed"; // if cue associated... - if(!cue_deleted && (matching_song.has_cue() || cue_added)) { + if (!cue_deleted && (matching_song.has_cue() || cue_added)) { UpdateCueAssociatedSongs(file, path, matching_cue, image, t); - // if no cue or it's about to lose it... + // if no cue or it's about to lose it... } else { - UpdateNonCueAssociatedSong(file, matching_song, image, cue_deleted, t); + UpdateNonCueAssociatedSong(file, matching_song, image, cue_deleted, + t); } } // nothing has changed - mark the song available without re-scanning - if (matching_song.is_unavailable()) - t->readded_songs << matching_song; + if (matching_song.is_unavailable()) t->readded_songs << matching_song; } else { // The song is on disk but not in the DB - SongList song_list = ScanNewFile(file, path, matching_cue, &cues_processed); + SongList song_list = + ScanNewFile(file, path, matching_cue, &cues_processed); - if(song_list.isEmpty()) { + if (song_list.isEmpty()) { continue; } @@ -366,10 +370,9 @@ void LibraryWatcher::ScanSubdirectory( // choose an image for the song(s) QString image = ImageForSong(file, album_art); - foreach (Song song, song_list) { + foreach(Song song, song_list) { song.set_directory_id(t->dir()); - if (song.art_automatic().isEmpty()) - song.set_art_automatic(image); + if (song.art_automatic().isEmpty()) song.set_art_automatic(image); t->new_songs << song; } @@ -377,8 +380,9 @@ void LibraryWatcher::ScanSubdirectory( } // Look for deleted songs - foreach (const Song& song, songs_in_db) { - if (!song.is_unavailable() && !files_on_disk.contains(song.url().toLocalFile())) { + foreach(const Song & song, songs_in_db) { + if (!song.is_unavailable() && + !files_on_disk.contains(song.url().toLocalFile())) { qLog(Debug) << "Song deleted from disk:" << song.url().toLocalFile(); t->deleted_songs << song; } @@ -387,8 +391,8 @@ void LibraryWatcher::ScanSubdirectory( // Add this subdir to the new or touched list Subdirectory updated_subdir; updated_subdir.directory_id = t->dir(); - updated_subdir.mtime = path_info.exists() ? - path_info.lastModified().toTime_t() : 0; + updated_subdir.mtime = + path_info.exists() ? path_info.lastModified().toTime_t() : 0; updated_subdir.path = path; if (subdir.directory_id == -1) @@ -400,14 +404,16 @@ void LibraryWatcher::ScanSubdirectory( // Recurse into the new subdirs that we found t->AddToProgressMax(my_new_subdirs.count()); - foreach (const Subdirectory& my_new_subdir, my_new_subdirs) { + foreach(const Subdirectory & my_new_subdir, my_new_subdirs) { if (stop_requested_) return; ScanSubdirectory(my_new_subdir.path, my_new_subdir, t, true); } } -void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString& path, - const QString& matching_cue, const QString& image, +void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, + const QString& path, + const QString& matching_cue, + const QString& image, ScanTransaction* t) { QFile cue(matching_cue); cue.open(QIODevice::ReadOnly); @@ -415,7 +421,7 @@ void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString SongList old_sections = backend_->GetSongsByUrl(QUrl::fromLocalFile(file)); QHash sections_map; - foreach(const Song& song, old_sections) { + foreach(const Song & song, old_sections) { sections_map[song.beginning_nanosec()] = song; } @@ -427,9 +433,9 @@ void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString Song matching = sections_map[cue_song.beginning_nanosec()]; // a new section - if(!matching.is_valid()) { + if (!matching.is_valid()) { t->new_songs << cue_song; - // changed section + // changed section } else { PreserveUserSetData(file, image, matching, &cue_song, t); used_ids.insert(matching.id()); @@ -437,23 +443,25 @@ void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString } // sections that are now missing - foreach(const Song& matching, old_sections) { - if(!used_ids.contains(matching.id())) { + foreach(const Song & matching, old_sections) { + if (!used_ids.contains(matching.id())) { t->deleted_songs << matching; } } } - -void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, const Song& matching_song, - const QString& image, bool cue_deleted, +void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, + const Song& matching_song, + const QString& image, + bool cue_deleted, ScanTransaction* t) { // if a cue got deleted, we turn it's first section into the new // 'raw' (cueless) song and we just remove the rest of the sections // from the library - if(cue_deleted) { - foreach(const Song& song, backend_->GetSongsByUrl(QUrl::fromLocalFile(file))) { - if(!song.IsMetadataEqual(matching_song)) { + if (cue_deleted) { + foreach(const Song & song, + backend_->GetSongsByUrl(QUrl::fromLocalFile(file))) { + if (!song.IsMetadataEqual(matching_song)) { t->deleted_songs << song; } } @@ -463,21 +471,21 @@ void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, const Song& song_on_disk.set_directory_id(t->dir()); TagReaderClient::Instance()->ReadFileBlocking(file, &song_on_disk); - if(song_on_disk.is_valid()) { + if (song_on_disk.is_valid()) { PreserveUserSetData(file, image, matching_song, &song_on_disk, t); } } SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, - const QString& matching_cue, QSet* cues_processed) { + const QString& matching_cue, + QSet* cues_processed) { SongList song_list; uint matching_cue_mtime = GetMtimeForCue(matching_cue); // if it's a cue - create virtual tracks - if(matching_cue_mtime) { + if (matching_cue_mtime) { // don't process the same cue many times - if(cues_processed->contains(matching_cue)) - return song_list; + if (cues_processed->contains(matching_cue)) return song_list; QFile cue(matching_cue); cue.open(QIODevice::ReadOnly); @@ -485,7 +493,8 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, // Ignore FILEs pointing to other media files. Also, watch out for incorrect // media files. Playlist parser for CUEs considers every entry in sheet // valid and we don't want invalid media getting into library! - foreach(const Song& cue_song, cue_parser_->Load(&cue, matching_cue, path)) { + foreach(const Song & cue_song, + cue_parser_->Load(&cue, matching_cue, path)) { if (cue_song.url().toLocalFile() == file) { if (TagReaderClient::Instance()->IsMediaFileBlocking(file)) { song_list << cue_song; @@ -493,11 +502,11 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, } } - if(!song_list.isEmpty()) { + if (!song_list.isEmpty()) { *cues_processed << matching_cue; } - // it's a normal media file + // it's a normal media file } else { Song song; TagReaderClient::Instance()->ReadFileBlocking(file, &song); @@ -505,21 +514,21 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, if (song.is_valid()) { song_list << song; } - } return song_list; } -void LibraryWatcher::PreserveUserSetData(const QString& file, const QString& image, - const Song& matching_song, Song* out, ScanTransaction* t) { +void LibraryWatcher::PreserveUserSetData(const QString& file, + const QString& image, + const Song& matching_song, Song* out, + ScanTransaction* t) { out->set_id(matching_song.id()); // Previous versions of Clementine incorrectly overwrote this and // stored it in the DB, so we can't rely on matching_song to // know if it has embedded artwork or not, but we can check here. - if (!out->has_embedded_cover()) - out->set_art_automatic(image); + if (!out->has_embedded_cover()) out->set_art_automatic(image); out->MergeUserSetData(matching_song); @@ -553,17 +562,14 @@ uint LibraryWatcher::GetMtimeForCue(const QString& cue_path) { const QDateTime cue_last_modified = file_info.lastModified(); - return cue_last_modified.isValid() - ? cue_last_modified.toTime_t() - : 0; + return cue_last_modified.isValid() ? cue_last_modified.toTime_t() : 0; } void LibraryWatcher::AddWatch(const Directory& dir, const QString& path) { - if (!QFile::exists(path)) - return; + if (!QFile::exists(path)) return; connect(fs_watcher_, SIGNAL(PathChanged(const QString&)), this, - SLOT(DirectoryChanged(const QString&)), Qt::UniqueConnection); + SLOT(DirectoryChanged(const QString&)), Qt::UniqueConnection); fs_watcher_->AddPath(path); subdir_mapping_[path] = dir; } @@ -573,15 +579,16 @@ void LibraryWatcher::RemoveDirectory(const Directory& dir) { watched_dirs_.remove(dir.id); // Stop watching the directory's subdirectories - foreach (const QString& subdir_path, subdir_mapping_.keys(dir)) { + foreach(const QString & subdir_path, subdir_mapping_.keys(dir)) { fs_watcher_->RemovePath(subdir_path); subdir_mapping_.remove(subdir_path); } } -bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, Song* out) { +bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, + Song* out) { // TODO: Make this faster - foreach (const Song& song, list) { + foreach(const Song & song, list) { if (song.url().toLocalFile() == path) { *out = song; return true; @@ -590,31 +597,31 @@ bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, S return false; } -void LibraryWatcher::DirectoryChanged(const QString &subdir) { +void LibraryWatcher::DirectoryChanged(const QString& subdir) { // Find what dir it was in - QHash::const_iterator it = subdir_mapping_.constFind(subdir); + QHash::const_iterator it = + subdir_mapping_.constFind(subdir); if (it == subdir_mapping_.constEnd()) { return; } Directory dir = *it; - qLog(Debug) << "Subdir" << subdir << "changed under directory" << dir.path << "id" << dir.id; + qLog(Debug) << "Subdir" << subdir << "changed under directory" << dir.path + << "id" << dir.id; // Queue the subdir for rescanning - if (!rescan_queue_[dir.id].contains(subdir)) - rescan_queue_[dir.id] << subdir; + if (!rescan_queue_[dir.id].contains(subdir)) rescan_queue_[dir.id] << subdir; - if (!rescan_paused_) - rescan_timer_->start(); + if (!rescan_paused_) rescan_timer_->start(); } void LibraryWatcher::RescanPathsNow() { - foreach (int dir, rescan_queue_.keys()) { + foreach(int dir, rescan_queue_.keys()) { if (stop_requested_) return; ScanTransaction transaction(this, dir, false); transaction.AddToProgressMax(rescan_queue_[dir].count()); - foreach (const QString& path, rescan_queue_[dir]) { + foreach(const QString & path, rescan_queue_[dir]) { if (stop_requested_) return; Subdirectory subdir; subdir.directory_id = dir; @@ -636,10 +643,10 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { QStringList filtered; - foreach(const QString& filter_text, best_image_filters_) { + foreach(const QString & filter_text, best_image_filters_) { // the images in the images list are represented by a full path, // so we need to isolate just the filename - foreach(const QString& image, images) { + foreach(const QString & image, images) { QFileInfo file_info(image); QString filename(file_info.fileName()); if (filename.contains(filter_text, Qt::CaseInsensitive)) @@ -649,11 +656,10 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { /* We assume the filters are give in the order best to worst, so if we've got a result, we go with it. Otherwise we might start capturing more generic rules */ - if (!filtered.isEmpty()) - break; + if (!filtered.isEmpty()) break; } - if (filtered.isEmpty()){ + if (filtered.isEmpty()) { // the filter was too restrictive, just use the original list filtered = images; } @@ -661,10 +667,9 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { int biggest_size = 0; QString biggest_path; - foreach (const QString& path, filtered) { + foreach(const QString & path, filtered) { QImage image(path); - if (image.isNull()) - continue; + if (image.isNull()) continue; int size = image.width() * image.height(); if (size > biggest_size) { @@ -676,7 +681,8 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { return biggest_path; } -QString LibraryWatcher::ImageForSong(const QString& path, QMap& album_art) { +QString LibraryWatcher::ImageForSong(const QString& path, + QMap& album_art) { QString dir(DirectoryPart(path)); if (album_art.contains(dir)) { @@ -704,21 +710,21 @@ void LibraryWatcher::ReloadSettings() { monitor_ = s.value("monitor", true).toBool(); best_image_filters_.clear(); - QStringList filters = s.value("cover_art_patterns", - QStringList() << "front" << "cover").toStringList(); - foreach(const QString& filter, filters) { + QStringList filters = + s.value("cover_art_patterns", QStringList() << "front" + << "cover").toStringList(); + foreach(const QString & filter, filters) { QString s = filter.trimmed(); - if (!s.isEmpty()) - best_image_filters_ << s; + if (!s.isEmpty()) best_image_filters_ << s; } if (!monitor_ && was_monitoring_before) { fs_watcher_->Clear(); } else if (monitor_ && !was_monitoring_before) { // Add all directories to all QFileSystemWatchers again - foreach (const Directory& dir, watched_dirs_.values()) { + foreach(const Directory & dir, watched_dirs_.values()) { SubdirectoryList subdirs = backend_->SubdirsInDirectory(dir.id); - foreach (const Subdirectory& subdir, subdirs) { + foreach(const Subdirectory & subdir, subdirs) { AddWatch(dir, subdir.path); } } @@ -732,8 +738,7 @@ void LibraryWatcher::SetRescanPausedAsync(bool pause) { void LibraryWatcher::SetRescanPaused(bool pause) { rescan_paused_ = pause; - if (!rescan_paused_ && !rescan_queue_.isEmpty()) - RescanPathsNow(); + if (!rescan_paused_ && !rescan_queue_.isEmpty()) RescanPathsNow(); } void LibraryWatcher::IncrementalScanAsync() { @@ -744,22 +749,17 @@ void LibraryWatcher::FullScanAsync() { QMetaObject::invokeMethod(this, "FullScanNow", Qt::QueuedConnection); } -void LibraryWatcher::IncrementalScanNow() { - PerformScan(true, false); -} +void LibraryWatcher::IncrementalScanNow() { PerformScan(true, false); } -void LibraryWatcher::FullScanNow() { - PerformScan(false, true); -} +void LibraryWatcher::FullScanNow() { PerformScan(false, true); } void LibraryWatcher::PerformScan(bool incremental, bool ignore_mtimes) { - foreach (const Directory& dir, watched_dirs_.values()) { - ScanTransaction transaction(this, dir.id, - incremental, ignore_mtimes); + foreach(const Directory & dir, watched_dirs_.values()) { + ScanTransaction transaction(this, dir.id, incremental, ignore_mtimes); SubdirectoryList subdirs(transaction.GetAllSubdirs()); transaction.AddToProgressMax(subdirs.count()); - foreach (const Subdirectory& subdir, subdirs) { + foreach(const Subdirectory & subdir, subdirs) { if (stop_requested_) return; ScanSubdirectory(subdir.path, subdir, &transaction); diff --git a/src/library/librarywatcher.h b/src/library/librarywatcher.h index 8678a5c5c..a1abb8bf4 100644 --- a/src/library/librarywatcher.h +++ b/src/library/librarywatcher.h @@ -43,8 +43,12 @@ class LibraryWatcher : public QObject { static const char* kSettingsGroup; void set_backend(LibraryBackend* backend) { backend_ = backend; } - void set_task_manager(TaskManager* task_manager) { task_manager_ = task_manager; } - void set_device_name(const QString& device_name) { device_name_ = device_name; } + void set_task_manager(TaskManager* task_manager) { + task_manager_ = task_manager; + } + void set_device_name(const QString& device_name) { + device_name_ = device_name; + } void IncrementalScanAsync(); void FullScanAsync(); @@ -53,7 +57,7 @@ class LibraryWatcher : public QObject { void Stop() { stop_requested_ = true; } - signals: +signals: void NewOrUpdatedSongs(const SongList& songs); void SongsMTimeUpdated(const SongList& songs); void SongsDeleted(const SongList& songs); @@ -82,8 +86,8 @@ class LibraryWatcher : public QObject { // LibraryBackend::FindSongsInDirectory. class ScanTransaction { public: - ScanTransaction(LibraryWatcher* watcher, int dir, - bool incremental, bool ignores_mtime = false); + ScanTransaction(LibraryWatcher* watcher, int dir, bool incremental, + bool ignores_mtime = false); ~ScanTransaction(); SongList FindSongsInSubdirectory(const QString& path); @@ -108,7 +112,7 @@ class LibraryWatcher : public QObject { private: ScanTransaction(const ScanTransaction&) {} - ScanTransaction& operator =(const ScanTransaction&) { return *this; } + ScanTransaction& operator=(const ScanTransaction&) { return *this; } int task_id_; int progress_; @@ -142,12 +146,14 @@ class LibraryWatcher : public QObject { ScanTransaction* t, bool force_noincremental = false); private: - static bool FindSongByPath(const SongList& list, const QString& path, Song* out); - inline static QString NoExtensionPart( const QString &fileName ); - inline static QString ExtensionPart( const QString &fileName ); - inline static QString DirectoryPart( const QString &fileName ); + static bool FindSongByPath(const SongList& list, const QString& path, + Song* out); + inline static QString NoExtensionPart(const QString& fileName); + inline static QString ExtensionPart(const QString& fileName); + inline static QString DirectoryPart(const QString& fileName); QString PickBestImage(const QStringList& images); - QString ImageForSong(const QString& path, QMap& album_art); + QString ImageForSong(const QString& path, + QMap& album_art); void AddWatch(const Directory& dir, const QString& path); uint GetMtimeForCue(const QString& cue_path); void PerformScan(bool incremental, bool ignore_mtimes); @@ -155,22 +161,26 @@ class LibraryWatcher : public QObject { // Updates the sections of a cue associated and altered (according to mtime) // media file during a scan. void UpdateCueAssociatedSongs(const QString& file, const QString& path, - const QString& matching_cue, const QString& image, - ScanTransaction* t); + const QString& matching_cue, + const QString& image, ScanTransaction* t); // Updates a single non-cue associated and altered (according to mtime) song // during a scan. - void UpdateNonCueAssociatedSong(const QString& file, const Song& matching_song, + void UpdateNonCueAssociatedSong(const QString& file, + const Song& matching_song, const QString& image, bool cue_deleted, - ScanTransaction* t) ; + ScanTransaction* t); // Updates a new song with some metadata taken from it's equivalent old // song (for example rating and score). void PreserveUserSetData(const QString& file, const QString& image, - const Song& matching_song, Song* out, ScanTransaction* t); - // Scans a single media file that's present on the disk but not yet in the library. + const Song& matching_song, Song* out, + ScanTransaction* t); + // Scans a single media file that's present on the disk but not yet in the + // library. // It may result in a multiple files added to the library when the media file // has many sections (like a CUE related media file). SongList ScanNewFile(const QString& file, const QString& path, - const QString& matching_cue, QSet* cues_processed); + const QString& matching_cue, + QSet* cues_processed); private: LibraryBackend* backend_; @@ -193,7 +203,8 @@ class LibraryWatcher : public QObject { QMap watched_dirs_; QTimer* rescan_timer_; - QMap rescan_queue_; // dir id -> list of subdirs to be scanned + QMap + rescan_queue_; // dir id -> list of subdirs to be scanned bool rescan_paused_; int total_watches_; @@ -203,15 +214,17 @@ class LibraryWatcher : public QObject { static QStringList sValidImages; }; -inline QString LibraryWatcher::NoExtensionPart( const QString &fileName ) { - return fileName.contains( '.' ) ? fileName.section( '.', 0, -2 ) : ""; +inline QString LibraryWatcher::NoExtensionPart(const QString& fileName) { + return fileName.contains('.') ? fileName.section('.', 0, -2) : ""; } // Thanks Amarok -inline QString LibraryWatcher::ExtensionPart( const QString &fileName ) { - return fileName.contains( '.' ) ? fileName.mid( fileName.lastIndexOf('.') + 1 ).toLower() : ""; +inline QString LibraryWatcher::ExtensionPart(const QString& fileName) { + return fileName.contains('.') + ? fileName.mid(fileName.lastIndexOf('.') + 1).toLower() + : ""; } -inline QString LibraryWatcher::DirectoryPart( const QString &fileName ) { - return fileName.section( '/', 0, -2 ); +inline QString LibraryWatcher::DirectoryPart(const QString& fileName) { + return fileName.section('/', 0, -2); } -#endif // LIBRARYWATCHER_H +#endif // LIBRARYWATCHER_H diff --git a/src/library/sqlrow.cpp b/src/library/sqlrow.cpp index 25ed7fff7..a573dfa03 100644 --- a/src/library/sqlrow.cpp +++ b/src/library/sqlrow.cpp @@ -21,13 +21,9 @@ #include #include -SqlRow::SqlRow(const QSqlQuery& query) { - Init(query); -} +SqlRow::SqlRow(const QSqlQuery& query) { Init(query); } -SqlRow::SqlRow(const LibraryQuery& query) { - Init(query); -} +SqlRow::SqlRow(const LibraryQuery& query) { Init(query); } void SqlRow::Init(const QSqlQuery& query) { int rows = query.record().count(); @@ -35,4 +31,3 @@ void SqlRow::Init(const QSqlQuery& query) { columns_ << query.value(i); } } - diff --git a/src/main.cpp b/src/main.cpp index 9b5227a3b..c46ab90aa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,13 +20,13 @@ #include #ifdef Q_OS_WIN32 -# define _WIN32_WINNT 0x0600 -# include -# include +#define _WIN32_WINNT 0x0600 +#include +#include #endif // Q_OS_WIN32 #ifdef Q_OS_UNIX -# include +#include #endif // Q_OS_UNIX #include @@ -80,32 +80,32 @@ #include #ifdef HAVE_SPOTIFY_DOWNLOADER - #include +#include #endif #ifdef Q_OS_DARWIN - #include - #include +#include +#include #endif #ifdef HAVE_LIBLASTFM - #include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #else - class LastFMService; +class LastFMService; #endif #ifdef HAVE_DBUS - #include "core/mpris.h" - #include "core/mpris2.h" - #include - #include +#include "core/mpris.h" +#include "core/mpris2.h" +#include +#include - QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); - const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); +QDBusArgument& operator<<(QDBusArgument& arg, const QImage& image); +const QDBusArgument& operator>>(const QDBusArgument& arg, QImage& image); #endif #ifdef Q_OS_WIN32 -# include +#include #endif // Load sqlite plugin on windows and mac. @@ -119,7 +119,8 @@ void LoadTranslation(const QString& prefix, const QString& path, // without checking if it's a file first. // This was fixed in Qt 4.7 QFileInfo maybe_clementine_directory(path + "/clementine"); - if (maybe_clementine_directory.exists() && !maybe_clementine_directory.isFile()) + if (maybe_clementine_directory.exists() && + !maybe_clementine_directory.isFile()) return; #endif @@ -133,7 +134,8 @@ void LoadTranslation(const QString& prefix, const QString& path, void IncreaseFDLimit() { #ifdef Q_OS_DARWIN - // Bump the soft limit for the number of file descriptors from the default of 256 to + // Bump the soft limit for the number of file descriptors from the default of + // 256 to // the maximum (usually 10240). struct rlimit limit; getrlimit(RLIMIT_NOFILE, &limit); @@ -152,7 +154,7 @@ void IncreaseFDLimit() { #endif } -void SetEnv(const char *key, const QString &value) { +void SetEnv(const char* key, const QString& value) { #ifdef Q_OS_WIN32 putenv(QString("%1=%2").arg(key, value).toLocal8Bit().constData()); #else @@ -167,20 +169,22 @@ void SetGstreamerEnvironment() { QString plugin_path; QString registry_filename; - // On windows and mac we bundle the gstreamer plugins with clementine +// On windows and mac we bundle the gstreamer plugins with clementine #if defined(Q_OS_DARWIN) - scanner_path = QCoreApplication::applicationDirPath() + "/../PlugIns/gst-plugin-scanner"; - plugin_path = QCoreApplication::applicationDirPath() + "/../PlugIns/gstreamer"; + scanner_path = + QCoreApplication::applicationDirPath() + "/../PlugIns/gst-plugin-scanner"; + plugin_path = + QCoreApplication::applicationDirPath() + "/../PlugIns/gstreamer"; #elif defined(Q_OS_WIN32) plugin_path = QCoreApplication::applicationDirPath() + "/gstreamer-plugins"; #endif #if defined(Q_OS_WIN32) || defined(Q_OS_DARWIN) - registry_filename = Utilities::GetConfigPath(Utilities::Path_GstreamerRegistry); + registry_filename = + Utilities::GetConfigPath(Utilities::Path_GstreamerRegistry); #endif - if (!scanner_path.isEmpty()) - SetEnv("GST_PLUGIN_SCANNER", scanner_path); + if (!scanner_path.isEmpty()) SetEnv("GST_PLUGIN_SCANNER", scanner_path); if (!plugin_path.isEmpty()) { SetEnv("GST_PLUGIN_PATH", plugin_path); @@ -194,13 +198,13 @@ void SetGstreamerEnvironment() { #ifdef Q_OS_DARWIN SetEnv("GIO_EXTRA_MODULES", - QCoreApplication::applicationDirPath() + "/../PlugIns/gio-modules"); + QCoreApplication::applicationDirPath() + "/../PlugIns/gio-modules"); #endif } #ifdef HAVE_GIO -# undef signals // Clashes with GIO, and not needed in this file -# include +#undef signals // Clashes with GIO, and not needed in this file +#include void ScanGIOModulePath() { QString gio_module_path; @@ -219,11 +223,11 @@ void ScanGIOModulePath() { void ParseAProto() { const QByteArray data = QByteArray::fromHex( - "08001a8b010a8801b2014566696c653a2f2f2f453a2f4d7573696b2f28414c42554d2" - "9253230476f74616e25323050726f6a6563742532302d253230416d6269656e742532" - "304c6f756e67652e6d786dba012a28414c42554d2920476f74616e2050726f6a65637" - "4202d20416d6269656e74204c6f756e67652e6d786dc001c7a7efd104c801bad685e4" - "04d001eeca32"); + "08001a8b010a8801b2014566696c653a2f2f2f453a2f4d7573696b2f28414c42554d2" + "9253230476f74616e25323050726f6a6563742532302d253230416d6269656e742532" + "304c6f756e67652e6d786dba012a28414c42554d2920476f74616e2050726f6a65637" + "4202d20416d6269656e74204c6f756e67652e6d786dc001c7a7efd104c801bad685e4" + "04d001eeca32"); pb::tagreader::Message message; message.ParseFromArray(data.constData(), data.size()); } @@ -236,11 +240,12 @@ void CheckPortable() { Application::kIsPortable = true; QSettings::setDefaultFormat(QSettings::IniFormat); - QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, f.fileName()); + QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, + f.fileName()); } } -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { if (CrashReporting::SendCrashReport(argc, argv)) { return 0; } @@ -264,7 +269,7 @@ int main(int argc, char *argv[]) { QCoreApplication::setOrganizationName("Clementine"); QCoreApplication::setOrganizationDomain("clementine-player.org"); - // This makes us show up nicely in gnome-volume-control +// This makes us show up nicely in gnome-volume-control #if !GLIB_CHECK_VERSION(2, 36, 0) g_type_init(); // Deprecated in glib 2.36.0 #endif @@ -285,12 +290,12 @@ int main(int argc, char *argv[]) { // Parse commandline options - need to do this before starting the // full QApplication so it works without an X server - if (!options.Parse()) - return 1; + if (!options.Parse()) return 1; if (a.isRunning()) { if (options.is_empty()) { - qLog(Info) << "Clementine is already running - activating existing window"; + qLog(Info) + << "Clementine is already running - activating existing window"; } if (a.sendMessage(options.Serialize(), 5000)) { return 0; @@ -301,7 +306,10 @@ int main(int argc, char *argv[]) { #ifdef Q_OS_DARWIN // Must happen after QCoreApplication::setOrganizationName(). - setenv("XDG_CONFIG_HOME", Utilities::GetConfigPath(Utilities::Path_Root).toLocal8Bit().constData(), 1); + setenv( + "XDG_CONFIG_HOME", + Utilities::GetConfigPath(Utilities::Path_Root).toLocal8Bit().constData(), + 1); #endif #ifdef HAVE_LIBLASTFM @@ -313,7 +321,8 @@ int main(int argc, char *argv[]) { // Initialise logging logging::Init(); logging::SetLevels(options.log_levels()); - g_log_set_default_handler(reinterpret_cast(&logging::GLog), nullptr); + g_log_set_default_handler(reinterpret_cast(&logging::GLog), + nullptr); // Output the version, so when people attach log output to bug reports they // don't have to tell us which version they're using. @@ -334,8 +343,8 @@ int main(int argc, char *argv[]) { QSettings qt_settings(QSettings::UserScope, "Trolltech"); qt_settings.beginGroup("Qt"); QApplication::setWheelScrollLines( - qt_settings.value("wheelScrollLines", - QApplication::wheelScrollLines()).toInt()); + qt_settings.value("wheelScrollLines", QApplication::wheelScrollLines()) + .toInt()); } #ifdef Q_OS_DARWIN @@ -362,9 +371,9 @@ int main(int argc, char *argv[]) { SetGstreamerEnvironment(); - // Set the permissions on the config file on Unix - it can contain passwords - // for internet services so it's important that other users can't read it. - // On Windows these are stored in the registry instead. +// Set the permissions on the config file on Unix - it can contain passwords +// for internet services so it's important that other users can't read it. +// On Windows these are stored in the registry instead. #ifdef Q_OS_UNIX { QSettings s; @@ -395,7 +404,7 @@ int main(int argc, char *argv[]) { // that CA to the default list used by QSslSocket, so it always works in // Clementine. QSslSocket::addDefaultCaCertificates( - QSslCertificate::fromPath(":/grooveshark-valicert-ca.pem", QSsl::Pem)); + QSslCertificate::fromPath(":/grooveshark-valicert-ca.pem", QSsl::Pem)); // Has the user forced a different language? QString override_language = options.language(); @@ -405,11 +414,13 @@ int main(int argc, char *argv[]) { override_language = s.value("language").toString(); } - const QString language = override_language.isEmpty() ? - Utilities::SystemLanguageName() : override_language; + const QString language = override_language.isEmpty() + ? Utilities::SystemLanguageName() + : override_language; // Translations - LoadTranslation("qt", QLibraryInfo::location(QLibraryInfo::TranslationsPath), language); + LoadTranslation("qt", QLibraryInfo::location(QLibraryInfo::TranslationsPath), + language); LoadTranslation("clementine", ":/translations", language); LoadTranslation("clementine", a.applicationDirPath(), language); LoadTranslation("clementine", QDir::currentPath(), language); @@ -432,7 +443,8 @@ int main(int argc, char *argv[]) { app.set_language_name(language); Echonest::Config::instance()->setAPIKey("DFLFLJBUF4EGTXHIG"); - Echonest::Config::instance()->setNetworkAccessManager(new NetworkAccessManager); + Echonest::Config::instance()->setNetworkAccessManager( + new NetworkAccessManager); // Network proxy QNetworkProxyFactory::setApplicationProxyFactory( @@ -449,10 +461,11 @@ int main(int argc, char *argv[]) { // whitelisted applications. Clementine will override this setting and insert // itself into the list of whitelisted apps. UbuntuUnityHack hack; -#endif // Q_OS_LINUX +#endif // Q_OS_LINUX // Create the tray icon and OSD - std::unique_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); + std::unique_ptr tray_icon( + SystemTrayIcon::CreateSystemTrayIcon()); OSD osd(tray_icon.get(), &app); #ifdef HAVE_DBUS @@ -470,7 +483,8 @@ int main(int argc, char *argv[]) { #ifdef HAVE_DBUS QObject::connect(&mpris, SIGNAL(RaiseMainWindow()), &w, SLOT(Raise())); #endif - QObject::connect(&a, SIGNAL(messageReceived(QByteArray)), &w, SLOT(CommandlineOptionsReceived(QByteArray))); + QObject::connect(&a, SIGNAL(messageReceived(QByteArray)), &w, + SLOT(CommandlineOptionsReceived(QByteArray))); w.CommandlineOptionsReceived(options); int ret = a.exec(); diff --git a/src/moodbar/moodbarcontroller.cpp b/src/moodbar/moodbarcontroller.cpp index 6241edca1..8cd0f5180 100644 --- a/src/moodbar/moodbarcontroller.cpp +++ b/src/moodbar/moodbarcontroller.cpp @@ -25,11 +25,9 @@ #include "playlist/playlistmanager.h" MoodbarController::MoodbarController(Application* app, QObject* parent) - : QObject(parent), - app_(app) -{ - connect(app_->playlist_manager(), - SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); + : QObject(parent), app_(app) { + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); connect(app_->player(), SIGNAL(Stopped()), SLOT(PlaybackStopped())); } @@ -40,23 +38,23 @@ void MoodbarController::CurrentSongChanged(const Song& song) { app_->moodbar_loader()->Load(song.url(), &data, &pipeline); switch (result) { - case MoodbarLoader::CannotLoad: - emit CurrentMoodbarDataChanged(QByteArray()); - break; + case MoodbarLoader::CannotLoad: + emit CurrentMoodbarDataChanged(QByteArray()); + break; - case MoodbarLoader::Loaded: - emit CurrentMoodbarDataChanged(data); - break; + case MoodbarLoader::Loaded: + emit CurrentMoodbarDataChanged(data); + break; - case MoodbarLoader::WillLoadAsync: - // Emit an empty array for now so the GUI reverts to a normal progress - // bar. Our slot will be called when the data is actually loaded. - emit CurrentMoodbarDataChanged(QByteArray()); + case MoodbarLoader::WillLoadAsync: + // Emit an empty array for now so the GUI reverts to a normal progress + // bar. Our slot will be called when the data is actually loaded. + emit CurrentMoodbarDataChanged(QByteArray()); - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(AsyncLoadComplete(MoodbarPipeline*,QUrl)), - pipeline, song.url()); - break; + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(AsyncLoadComplete(MoodbarPipeline*, QUrl)), pipeline, + song.url()); + break; } } diff --git a/src/moodbar/moodbarcontroller.h b/src/moodbar/moodbarcontroller.h index a236fa9ee..b695aedf8 100644 --- a/src/moodbar/moodbarcontroller.h +++ b/src/moodbar/moodbarcontroller.h @@ -28,20 +28,20 @@ class QUrl; class MoodbarController : public QObject { Q_OBJECT - -public: + + public: MoodbarController(Application* app, QObject* parent = 0); signals: void CurrentMoodbarDataChanged(const QByteArray& data); - -private slots: + + private slots: void CurrentSongChanged(const Song& song); void PlaybackStopped(); void AsyncLoadComplete(MoodbarPipeline* pipeline, const QUrl& url); - -private: + + private: Application* app_; }; -#endif // MOODBARCONTROLLER_H +#endif // MOODBARCONTROLLER_H diff --git a/src/moodbar/moodbaritemdelegate.cpp b/src/moodbar/moodbaritemdelegate.cpp index 4a52d3315..5acd0648d 100644 --- a/src/moodbar/moodbaritemdelegate.cpp +++ b/src/moodbar/moodbaritemdelegate.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -31,18 +31,14 @@ #include #include -MoodbarItemDelegate::Data::Data() - : state_(State_None) -{ -} +MoodbarItemDelegate::Data::Data() : state_(State_None) {} MoodbarItemDelegate::MoodbarItemDelegate(Application* app, PlaylistView* view, QObject* parent) - : QItemDelegate(parent), - app_(app), - view_(view), - style_(MoodbarRenderer::Style_Normal) -{ + : QItemDelegate(parent), + app_(app), + view_(view), + style_(MoodbarRenderer::Style_Normal) { connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); } @@ -52,7 +48,7 @@ void MoodbarItemDelegate::ReloadSettings() { s.beginGroup("Moodbar"); MoodbarRenderer::MoodbarStyle new_style = static_cast( - s.value("style", MoodbarRenderer::Style_Normal).toInt()); + s.value("style", MoodbarRenderer::Style_Normal).toInt()); if (new_style != style_) { style_ = new_style; @@ -60,14 +56,14 @@ void MoodbarItemDelegate::ReloadSettings() { } } -void MoodbarItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, - const QModelIndex& index) const { - QPixmap pixmap = const_cast(this)->PixmapForIndex( - index, option.rect.size()); +void MoodbarItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { + QPixmap pixmap = const_cast(this) + ->PixmapForIndex(index, option.rect.size()); drawBackground(painter, option, index); - + if (!pixmap.isNull()) { // Make a little border for the moodbar const QRect moodbar_rect(option.rect.adjusted(1, 1, -1, -1)); @@ -75,10 +71,11 @@ void MoodbarItemDelegate::paint( } } -QPixmap MoodbarItemDelegate::PixmapForIndex( - const QModelIndex& index, const QSize& size) { +QPixmap MoodbarItemDelegate::PixmapForIndex(const QModelIndex& index, + const QSize& size) { // Pixmaps are keyed off URL. - const QUrl url(index.sibling(index.row(), Playlist::Column_Filename).data().toUrl()); + const QUrl url( + index.sibling(index.row(), Playlist::Column_Filename).data().toUrl()); Data* data = data_[url]; if (!data) { @@ -90,22 +87,22 @@ QPixmap MoodbarItemDelegate::PixmapForIndex( data->desired_size_ = size; switch (data->state_) { - case Data::State_CannotLoad: - case Data::State_LoadingData: - case Data::State_LoadingColors: - case Data::State_LoadingImage: - return data->pixmap_; + case Data::State_CannotLoad: + case Data::State_LoadingData: + case Data::State_LoadingColors: + case Data::State_LoadingImage: + return data->pixmap_; - case Data::State_Loaded: - // Is the pixmap the right size? - if (data->pixmap_.size() != size) { - StartLoadingImage(url, data); - } + case Data::State_Loaded: + // Is the pixmap the right size? + if (data->pixmap_.size() != size) { + StartLoadingImage(url, data); + } - return data->pixmap_; + return data->pixmap_; - case Data::State_None: - break; + case Data::State_None: + break; } // We have to start loading the data from scratch. @@ -121,26 +118,26 @@ void MoodbarItemDelegate::StartLoadingData(const QUrl& url, Data* data) { QByteArray bytes; MoodbarPipeline* pipeline = nullptr; switch (app_->moodbar_loader()->Load(url, &bytes, &pipeline)) { - case MoodbarLoader::CannotLoad: - data->state_ = Data::State_CannotLoad; - break; + case MoodbarLoader::CannotLoad: + data->state_ = Data::State_CannotLoad; + break; - case MoodbarLoader::Loaded: - // We got the data immediately. - StartLoadingColors(url, bytes, data); - break; + case MoodbarLoader::Loaded: + // We got the data immediately. + StartLoadingColors(url, bytes, data); + break; - case MoodbarLoader::WillLoadAsync: - // Maybe in a little while. - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(DataLoaded(QUrl,MoodbarPipeline*)), - url, pipeline); - break; + case MoodbarLoader::WillLoadAsync: + // Maybe in a little while. + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(DataLoaded(QUrl, MoodbarPipeline*)), url, pipeline); + break; } } -bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, Data* data) { - foreach (const QPersistentModelIndex& index, data->indexes_) { +bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, + Data* data) { + foreach(const QPersistentModelIndex & index, data->indexes_) { if (index.isValid()) { return false; } @@ -151,7 +148,7 @@ bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, Data* } void MoodbarItemDelegate::ReloadAllColors() { - foreach (const QUrl& url, data_.keys()) { + foreach(const QUrl & url, data_.keys()) { Data* data = data_[url]; if (data->state_ == Data::State_Loaded) { @@ -160,7 +157,8 @@ void MoodbarItemDelegate::ReloadAllColors() { } } -void MoodbarItemDelegate::DataLoaded( const QUrl& url, MoodbarPipeline* pipeline) { +void MoodbarItemDelegate::DataLoaded(const QUrl& url, + MoodbarPipeline* pipeline) { Data* data = data_[url]; if (!data) { return; @@ -179,22 +177,23 @@ void MoodbarItemDelegate::DataLoaded( const QUrl& url, MoodbarPipeline* pipeline StartLoadingColors(url, pipeline->data(), data); } -void MoodbarItemDelegate::StartLoadingColors( - const QUrl& url, const QByteArray& bytes, Data* data) { +void MoodbarItemDelegate::StartLoadingColors(const QUrl& url, + const QByteArray& bytes, + Data* data) { data->state_ = Data::State_LoadingColors; QFutureWatcher* watcher = new QFutureWatcher(); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ColorsLoaded(QUrl,QFutureWatcher*)), - url, watcher); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ColorsLoaded(QUrl, QFutureWatcher*)), url, + watcher); - QFuture future = QtConcurrent::run(MoodbarRenderer::Colors, - bytes, style_, qApp->palette()); + QFuture future = QtConcurrent::run( + MoodbarRenderer::Colors, bytes, style_, qApp->palette()); watcher->setFuture(future); } -void MoodbarItemDelegate::ColorsLoaded( - const QUrl& url, QFutureWatcher* watcher) { +void MoodbarItemDelegate::ColorsLoaded(const QUrl& url, + QFutureWatcher* watcher) { watcher->deleteLater(); Data* data = data_[url]; @@ -216,16 +215,16 @@ void MoodbarItemDelegate::StartLoadingImage(const QUrl& url, Data* data) { data->state_ = Data::State_LoadingImage; QFutureWatcher* watcher = new QFutureWatcher(); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ImageLoaded(QUrl,QFutureWatcher*)), - url, watcher); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ImageLoaded(QUrl, QFutureWatcher*)), url, watcher); - QFuture future = QtConcurrent::run(MoodbarRenderer::RenderToImage, - data->colors_, data->desired_size_); + QFuture future = QtConcurrent::run( + MoodbarRenderer::RenderToImage, data->colors_, data->desired_size_); watcher->setFuture(future); } -void MoodbarItemDelegate::ImageLoaded(const QUrl& url, QFutureWatcher* watcher) { +void MoodbarItemDelegate::ImageLoaded(const QUrl& url, + QFutureWatcher* watcher) { watcher->deleteLater(); Data* data = data_[url]; @@ -248,13 +247,15 @@ void MoodbarItemDelegate::ImageLoaded(const QUrl& url, QFutureWatcher* w data->pixmap_ = QPixmap::fromImage(image); data->state_ = Data::State_Loaded; - + Playlist* playlist = view_->playlist(); const QSortFilterProxyModel* filter = playlist->proxy(); // Update all the indices with the new pixmap. - foreach (const QPersistentModelIndex& index, data->indexes_) { - if (index.isValid() && index.sibling(index.row(), Playlist::Column_Filename).data().toUrl() == url) { + foreach(const QPersistentModelIndex & index, data->indexes_) { + if (index.isValid() && + index.sibling(index.row(), Playlist::Column_Filename).data().toUrl() == + url) { QModelIndex source_index = index; if (index.model() == filter) { source_index = filter->mapToSource(source_index); diff --git a/src/moodbar/moodbaritemdelegate.h b/src/moodbar/moodbaritemdelegate.h index 413326875..dc3df6bbb 100644 --- a/src/moodbar/moodbaritemdelegate.h +++ b/src/moodbar/moodbaritemdelegate.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -34,20 +34,21 @@ class QModelIndex; class MoodbarItemDelegate : public QItemDelegate { Q_OBJECT -public: - MoodbarItemDelegate(Application* app, PlaylistView* view, QObject* parent = 0); + public: + MoodbarItemDelegate(Application* app, PlaylistView* view, + QObject* parent = 0); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; -private slots: + private slots: void ReloadSettings(); void DataLoaded(const QUrl& url, MoodbarPipeline* pipeline); void ColorsLoaded(const QUrl& url, QFutureWatcher* watcher); void ImageLoaded(const QUrl& url, QFutureWatcher* watcher); -private: + private: struct Data { Data(); @@ -68,7 +69,7 @@ private: QPixmap pixmap_; }; -private: + private: QPixmap PixmapForIndex(const QModelIndex& index, const QSize& size); void StartLoadingData(const QUrl& url, Data* data); void StartLoadingColors(const QUrl& url, const QByteArray& bytes, Data* data); @@ -78,7 +79,7 @@ private: void ReloadAllColors(); -private: + private: Application* app_; PlaylistView* view_; QCache data_; @@ -86,4 +87,4 @@ private: MoodbarRenderer::MoodbarStyle style_; }; -#endif // MOODBARITEMDELEGATE_H +#endif // MOODBARITEMDELEGATE_H diff --git a/src/moodbar/moodbarloader.cpp b/src/moodbar/moodbarloader.cpp index 2bface572..f81bd00c2 100644 --- a/src/moodbar/moodbarloader.cpp +++ b/src/moodbar/moodbarloader.cpp @@ -35,15 +35,16 @@ #include "core/utilities.h" MoodbarLoader::MoodbarLoader(Application* app, QObject* parent) - : QObject(parent), - cache_(new QNetworkDiskCache(this)), - thread_(new QThread(this)), - kMaxActiveRequests(qMax(1, QThread::idealThreadCount() / 2)), - save_alongside_originals_(false), - disable_moodbar_calculation_(false) -{ - cache_->setCacheDirectory(Utilities::GetConfigPath(Utilities::Path_MoodbarCache)); - cache_->setMaximumCacheSize(60 * 1024 * 1024); // 60MB - enough for 20,000 moodbars + : QObject(parent), + cache_(new QNetworkDiskCache(this)), + thread_(new QThread(this)), + kMaxActiveRequests(qMax(1, QThread::idealThreadCount() / 2)), + save_alongside_originals_(false), + disable_moodbar_calculation_(false) { + cache_->setCacheDirectory( + Utilities::GetConfigPath(Utilities::Path_MoodbarCache)); + cache_->setMaximumCacheSize(60 * 1024 * + 1024); // 60MB - enough for 20,000 moodbars connect(app, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); @@ -57,7 +58,8 @@ MoodbarLoader::~MoodbarLoader() { void MoodbarLoader::ReloadSettings() { QSettings s; s.beginGroup("Moodbar"); - save_alongside_originals_ = s.value("save_alongside_originals", false).toBool(); + save_alongside_originals_ = + s.value("save_alongside_originals", false).toBool(); disable_moodbar_calculation_ = !s.value("calculate", true).toBool(); MaybeTakeNextRequest(); @@ -76,8 +78,8 @@ QStringList MoodbarLoader::MoodFilenames(const QString& song_filename) { << dir_path + "/" + mood_filename; } -MoodbarLoader::Result MoodbarLoader::Load( - const QUrl& url, QByteArray* data, MoodbarPipeline** async_pipeline) { +MoodbarLoader::Result MoodbarLoader::Load(const QUrl& url, QByteArray* data, + MoodbarPipeline** async_pipeline) { if (url.scheme() != "file") { return CannotLoad; } @@ -91,7 +93,7 @@ MoodbarLoader::Result MoodbarLoader::Load( // Check if a mood file exists for this file already const QString filename(url.toLocalFile()); - foreach (const QString& possible_mood_file, MoodFilenames(filename)) { + foreach(const QString & possible_mood_file, MoodFilenames(filename)) { QFile f(possible_mood_file); if (f.open(QIODevice::ReadOnly)) { qLog(Info) << "Loading moodbar data from" << possible_mood_file; @@ -110,15 +112,13 @@ MoodbarLoader::Result MoodbarLoader::Load( } } - if (!thread_->isRunning()) - thread_->start(QThread::IdlePriority); + if (!thread_->isRunning()) thread_->start(QThread::IdlePriority); // There was no existing file, analyze the audio file and create one. MoodbarPipeline* pipeline = new MoodbarPipeline(url); pipeline->moveToThread(thread_); - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(RequestFinished(MoodbarPipeline*,QUrl)), - pipeline, url); + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(RequestFinished(MoodbarPipeline*, QUrl)), pipeline, url); requests_[url] = pipeline; queued_requests_ << url; @@ -140,7 +140,6 @@ void MoodbarLoader::MaybeTakeNextRequest() { const QUrl url = queued_requests_.takeFirst(); active_requests_ << url; - qLog(Info) << "Creating moodbar data for" << url.toLocalFile(); QMetaObject::invokeMethod(requests_[url], "Start", Qt::QueuedConnection); } @@ -149,7 +148,8 @@ void MoodbarLoader::RequestFinished(MoodbarPipeline* request, const QUrl& url) { Q_ASSERT(QThread::currentThread() == qApp->thread()); if (request->success()) { - qLog(Info) << "Moodbar data generated successfully for" << url.toLocalFile(); + qLog(Info) << "Moodbar data generated successfully for" + << url.toLocalFile(); // Save the data in the cache QNetworkCacheMetaData metadata; diff --git a/src/moodbar/moodbarloader.h b/src/moodbar/moodbarloader.h index 43f467e1f..0dd0d953a 100644 --- a/src/moodbar/moodbarloader.h +++ b/src/moodbar/moodbarloader.h @@ -31,7 +31,7 @@ class MoodbarPipeline; class MoodbarLoader : public QObject { Q_OBJECT -public: + public: MoodbarLoader(Application* app, QObject* parent = 0); ~MoodbarLoader(); @@ -48,18 +48,19 @@ public: WillLoadAsync }; - Result Load(const QUrl& url, QByteArray* data, MoodbarPipeline** async_pipeline); + Result Load(const QUrl& url, QByteArray* data, + MoodbarPipeline** async_pipeline); -private slots: + private slots: void ReloadSettings(); void RequestFinished(MoodbarPipeline* request, const QUrl& filename); void MaybeTakeNextRequest(); -private: + private: static QStringList MoodFilenames(const QString& song_filename); -private: + private: QNetworkDiskCache* cache_; QThread* thread_; @@ -73,4 +74,4 @@ private: bool disable_moodbar_calculation_; }; -#endif // MOODBARLOADER_H +#endif // MOODBARLOADER_H diff --git a/src/moodbar/moodbarpipeline.cpp b/src/moodbar/moodbarpipeline.cpp index 6937233bf..1de26e6c6 100644 --- a/src/moodbar/moodbarpipeline.cpp +++ b/src/moodbar/moodbarpipeline.cpp @@ -28,17 +28,13 @@ bool MoodbarPipeline::sIsAvailable = false; MoodbarPipeline::MoodbarPipeline(const QUrl& local_filename) - : QObject(nullptr), - local_filename_(local_filename), - pipeline_(nullptr), - convert_element_(nullptr), - success_(false) -{ -} + : QObject(nullptr), + local_filename_(local_filename), + pipeline_(nullptr), + convert_element_(nullptr), + success_(false) {} -MoodbarPipeline::~MoodbarPipeline() { - Cleanup(); -} +MoodbarPipeline::~MoodbarPipeline() { Cleanup(); } bool MoodbarPipeline::IsAvailable() { if (!sIsAvailable) { @@ -61,7 +57,8 @@ bool MoodbarPipeline::IsAvailable() { } GstElement* MoodbarPipeline::CreateElement(const QString& factory_name) { - GstElement* ret = gst_element_factory_make(factory_name.toAscii().constData(), nullptr); + GstElement* ret = + gst_element_factory_make(factory_name.toAscii().constData(), nullptr); if (ret) { gst_bin_add(GST_BIN(pipeline_), ret); @@ -83,39 +80,42 @@ void MoodbarPipeline::Start() { pipeline_ = gst_pipeline_new("moodbar-pipeline"); - GstElement* decodebin = CreateElement("uridecodebin"); - convert_element_ = CreateElement("audioconvert"); + GstElement* decodebin = CreateElement("uridecodebin"); + convert_element_ = CreateElement("audioconvert"); GstElement* fftwspectrum = CreateElement("fftwspectrum"); - GstElement* moodbar = CreateElement("moodbar"); - GstElement* appsink = CreateElement("appsink"); + GstElement* moodbar = CreateElement("moodbar"); + GstElement* appsink = CreateElement("appsink"); - if (!decodebin || !convert_element_ || !fftwspectrum || !moodbar || !appsink) { + if (!decodebin || !convert_element_ || !fftwspectrum || !moodbar || + !appsink) { pipeline_ = nullptr; emit Finished(false); return; } // Join them together - gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, nullptr); + gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, + nullptr); // Set properties - g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), nullptr); - g_object_set(fftwspectrum, "def-size", 2048, - "def-step", 1024, - "hiquality", true, nullptr); - g_object_set(moodbar, "height", 1, - "max-width", 1000, nullptr); + g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), + nullptr); + g_object_set(fftwspectrum, "def-size", 2048, "def-step", 1024, "hiquality", + true, nullptr); + g_object_set(moodbar, "height", 1, "max-width", 1000, nullptr); // Connect signals CHECKED_GCONNECT(decodebin, "pad-added", &NewPadCallback, this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); // Set appsink callbacks GstAppSinkCallbacks callbacks; memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, this, nullptr); + gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, + this, nullptr); // Start playing gst_element_set_state(pipeline_, GST_STATE_PLAYING); @@ -136,8 +136,8 @@ void MoodbarPipeline::ReportError(GstMessage* msg) { void MoodbarPipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - self->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(self->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Warning) << "audiopad is already linked, unlinking old pad"; @@ -148,7 +148,8 @@ void MoodbarPipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer data) { gst_object_unref(audiopad); } -GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, gpointer data) { +GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, + gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); GstBuffer* buffer = gst_app_sink_pull_buffer(app_sink); @@ -158,7 +159,8 @@ GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, gpointer return GST_FLOW_OK; } -GstBusSyncReply MoodbarPipeline::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply MoodbarPipeline::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); switch (GST_MESSAGE_TYPE(msg)) { @@ -187,8 +189,8 @@ void MoodbarPipeline::Cleanup() { Q_ASSERT(QThread::currentThread() != qApp->thread()); if (pipeline_) { - gst_bus_set_sync_handler( - gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr,nullptr); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); pipeline_ = nullptr; diff --git a/src/moodbar/moodbarpipeline.h b/src/moodbar/moodbarpipeline.h index 5978fc89a..63374176e 100644 --- a/src/moodbar/moodbarpipeline.h +++ b/src/moodbar/moodbarpipeline.h @@ -28,7 +28,7 @@ class MoodbarPipeline : public QObject { Q_OBJECT -public: + public: MoodbarPipeline(const QUrl& local_filename); ~MoodbarPipeline(); @@ -37,13 +37,13 @@ public: bool success() const { return success_; } const QByteArray& data() const { return data_; } -public slots: + public slots: void Start(); signals: void Finished(bool success); -private: + private: GstElement* CreateElement(const QString& factory_name); void ReportError(GstMessage* message); @@ -53,9 +53,10 @@ private: static void NewPadCallback(GstElement*, GstPad* pad, gpointer data); static GstFlowReturn NewBufferCallback(GstAppSink* app_sink, gpointer self); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); -private: + private: static bool sIsAvailable; QUrl local_filename_; @@ -66,4 +67,4 @@ private: QByteArray data_; }; -#endif // MOODBARPIPELINE_H +#endif // MOODBARPIPELINE_H diff --git a/src/moodbar/moodbarproxystyle.cpp b/src/moodbar/moodbarproxystyle.cpp index 10d98ead1..b24ff1cd0 100644 --- a/src/moodbar/moodbarproxystyle.cpp +++ b/src/moodbar/moodbarproxystyle.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -35,23 +35,23 @@ const int MoodbarProxyStyle::kArrowWidth = 17; const int MoodbarProxyStyle::kArrowHeight = 13; MoodbarProxyStyle::MoodbarProxyStyle(Application* app, QSlider* slider) - : QProxyStyle(slider->style()), - app_(app), - slider_(slider), - enabled_(true), - moodbar_style_(MoodbarRenderer::Style_Normal), - state_(MoodbarOff), - fade_timeline_(new QTimeLine(1000, this)), - moodbar_colors_dirty_(true), - moodbar_pixmap_dirty_(true), - context_menu_(nullptr), - show_moodbar_action_(nullptr), - style_action_group_(nullptr) -{ + : QProxyStyle(slider->style()), + app_(app), + slider_(slider), + enabled_(true), + moodbar_style_(MoodbarRenderer::Style_Normal), + state_(MoodbarOff), + fade_timeline_(new QTimeLine(1000, this)), + moodbar_colors_dirty_(true), + moodbar_pixmap_dirty_(true), + context_menu_(nullptr), + show_moodbar_action_(nullptr), + style_action_group_(nullptr) { slider->setStyle(this); slider->installEventFilter(this); - connect(fade_timeline_, SIGNAL(valueChanged(qreal)), SLOT(FaderValueChanged(qreal))); + connect(fade_timeline_, SIGNAL(valueChanged(qreal)), + SLOT(FaderValueChanged(qreal))); connect(app, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); @@ -69,7 +69,7 @@ void MoodbarProxyStyle::ReloadSettings() { // Get the style, and redraw if there's a change. MoodbarRenderer::MoodbarStyle new_style = static_cast( - s.value("style", MoodbarRenderer::Style_Normal).toInt()); + s.value("style", MoodbarRenderer::Style_Normal).toInt()); if (new_style != moodbar_style_) { moodbar_style_ = new_style; @@ -80,7 +80,7 @@ void MoodbarProxyStyle::ReloadSettings() { void MoodbarProxyStyle::SetMoodbarData(const QByteArray& data) { data_ = data; - moodbar_colors_dirty_ = true; // Redraw next time + moodbar_colors_dirty_ = true; // Redraw next time NextState(); } @@ -102,7 +102,7 @@ void MoodbarProxyStyle::NextState() { show_moodbar_action_->setChecked(enabled_); } - if ((visible && (state_ == MoodbarOn || state_ == FadingToOn)) || + if ((visible && (state_ == MoodbarOn || state_ == FadingToOn)) || (!visible && (state_ == MoodbarOff || state_ == FadingToOff))) { return; } @@ -128,46 +128,45 @@ void MoodbarProxyStyle::NextState() { state_ = visible ? FadingToOn : FadingToOff; } -void MoodbarProxyStyle::FaderValueChanged(qreal value) { - slider_->update(); -} +void MoodbarProxyStyle::FaderValueChanged(qreal value) { slider_->update(); } bool MoodbarProxyStyle::eventFilter(QObject* object, QEvent* event) { if (object == slider_) { switch (event->type()) { - case QEvent::Resize: - // The widget was resized, we've got to render a new pixmap. - moodbar_pixmap_dirty_ = true; - break; + case QEvent::Resize: + // The widget was resized, we've got to render a new pixmap. + moodbar_pixmap_dirty_ = true; + break; - case QEvent::ContextMenu: - ShowContextMenu(static_cast(event)->globalPos()); - return true; + case QEvent::ContextMenu: + ShowContextMenu(static_cast(event)->globalPos()); + return true; - default: - break; + default: + break; } } return QProxyStyle::eventFilter(object, event); } -void MoodbarProxyStyle::drawComplexControl( - ComplexControl control, const QStyleOptionComplex* option, - QPainter* painter, const QWidget* widget) const { +void MoodbarProxyStyle::drawComplexControl(ComplexControl control, + const QStyleOptionComplex* option, + QPainter* painter, + const QWidget* widget) const { if (control != CC_Slider || widget != slider_) { QProxyStyle::drawComplexControl(control, option, painter, widget); return; } - const_cast(this)->Render( - control, qstyleoption_cast(option), - painter, widget); + const_cast(this) + ->Render(control, qstyleoption_cast(option), + painter, widget); } -void MoodbarProxyStyle::Render( - ComplexControl control, const QStyleOptionSlider* option, - QPainter* painter, const QWidget* widget) { +void MoodbarProxyStyle::Render(ComplexControl control, + const QStyleOptionSlider* option, + QPainter* painter, const QWidget* widget) { const qreal fade_value = fade_timeline_->currentValue(); @@ -178,71 +177,74 @@ void MoodbarProxyStyle::Render( state_ = MoodbarOff; } - switch (state_) { - case FadingToOn: - case FadingToOff: - // Update the cached pixmaps if necessary - if (fade_source_.isNull()) { - // Draw the normal slider into the fade source pixmap. - fade_source_ = QPixmap(option->rect.size()); - fade_source_.fill(option->palette.color(QPalette::Active, QPalette::Background)); + case FadingToOn: + case FadingToOff: + // Update the cached pixmaps if necessary + if (fade_source_.isNull()) { + // Draw the normal slider into the fade source pixmap. + fade_source_ = QPixmap(option->rect.size()); + fade_source_.fill( + option->palette.color(QPalette::Active, QPalette::Background)); - QPainter p(&fade_source_); - QStyleOptionSlider opt_copy(*option); - opt_copy.rect.moveTo(0, 0); + QPainter p(&fade_source_); + QStyleOptionSlider opt_copy(*option); + opt_copy.rect.moveTo(0, 0); - QProxyStyle::drawComplexControl(control, &opt_copy, &p, widget); + QProxyStyle::drawComplexControl(control, &opt_copy, &p, widget); - p.end(); - } - - if (fade_target_.isNull()) { - if (state_ == FadingToOn) { - EnsureMoodbarRendered(); + p.end(); } - fade_target_ = moodbar_pixmap_; - QPainter p(&fade_target_); - DrawArrow(option, &p); - p.end(); - } - // Blend the pixmaps into each other - painter->drawPixmap(option->rect, fade_source_); - painter->setOpacity(fade_value); - painter->drawPixmap(option->rect, fade_target_); - painter->setOpacity(1.0); - break; + if (fade_target_.isNull()) { + if (state_ == FadingToOn) { + EnsureMoodbarRendered(); + } + fade_target_ = moodbar_pixmap_; + QPainter p(&fade_target_); + DrawArrow(option, &p); + p.end(); + } - case MoodbarOff: - // It's a normal slider widget. - QProxyStyle::drawComplexControl(control, option, painter, widget); - break; + // Blend the pixmaps into each other + painter->drawPixmap(option->rect, fade_source_); + painter->setOpacity(fade_value); + painter->drawPixmap(option->rect, fade_target_); + painter->setOpacity(1.0); + break; - case MoodbarOn: - EnsureMoodbarRendered(); - painter->drawPixmap(option->rect, moodbar_pixmap_); - DrawArrow(option, painter); - break; + case MoodbarOff: + // It's a normal slider widget. + QProxyStyle::drawComplexControl(control, option, painter, widget); + break; + + case MoodbarOn: + EnsureMoodbarRendered(); + painter->drawPixmap(option->rect, moodbar_pixmap_); + DrawArrow(option, painter); + break; } } void MoodbarProxyStyle::EnsureMoodbarRendered() { if (moodbar_colors_dirty_) { - moodbar_colors_ = MoodbarRenderer::Colors(data_, moodbar_style_, slider_->palette()); + moodbar_colors_ = + MoodbarRenderer::Colors(data_, moodbar_style_, slider_->palette()); moodbar_colors_dirty_ = false; moodbar_pixmap_dirty_ = true; } if (moodbar_pixmap_dirty_) { - moodbar_pixmap_ = MoodbarPixmap(moodbar_colors_, slider_->size(), slider_->palette()); + moodbar_pixmap_ = + MoodbarPixmap(moodbar_colors_, slider_->size(), slider_->palette()); moodbar_pixmap_dirty_ = false; } } -QRect MoodbarProxyStyle::subControlRect( - ComplexControl cc, const QStyleOptionComplex* opt, - SubControl sc, const QWidget* widget) const { +QRect MoodbarProxyStyle::subControlRect(ComplexControl cc, + const QStyleOptionComplex* opt, + SubControl sc, + const QWidget* widget) const { if (cc != QStyle::CC_Slider || widget != slider_) { return QProxyStyle::subControlRect(cc, opt, sc, widget); } @@ -256,16 +258,16 @@ QRect MoodbarProxyStyle::subControlRect( case FadingToOn: switch (sc) { case SC_SliderGroove: - return opt->rect.adjusted(kMarginSize, kMarginSize, - -kMarginSize, -kMarginSize); + return opt->rect.adjusted(kMarginSize, kMarginSize, -kMarginSize, + -kMarginSize); case SC_SliderHandle: { const QStyleOptionSlider* slider_opt = qstyleoption_cast(opt); - const int x = - (slider_opt->sliderValue - slider_opt->minimum) * (opt->rect.width() - kArrowWidth) / - (slider_opt->maximum - slider_opt->minimum); + const int x = (slider_opt->sliderValue - slider_opt->minimum) * + (opt->rect.width() - kArrowWidth) / + (slider_opt->maximum - slider_opt->minimum); return QRect(QPoint(opt->rect.left() + x, opt->rect.top()), QSize(kArrowWidth, kArrowHeight)); @@ -282,12 +284,12 @@ QRect MoodbarProxyStyle::subControlRect( void MoodbarProxyStyle::DrawArrow(const QStyleOptionSlider* option, QPainter* painter) const { // Get the dimensions of the arrow - const QRect rect = subControlRect(CC_Slider, option, SC_SliderHandle, slider_); + const QRect rect = + subControlRect(CC_Slider, option, SC_SliderHandle, slider_); // Make a polygon QPolygon poly; - poly << rect.topLeft() - << rect.topRight() + poly << rect.topLeft() << rect.topRight() << QPoint(rect.center().x(), rect.bottom()); // Draw it @@ -301,7 +303,8 @@ void MoodbarProxyStyle::DrawArrow(const QStyleOptionSlider* option, } QPixmap MoodbarProxyStyle::MoodbarPixmap(const ColorVector& colors, - const QSize& size, const QPalette& palette) { + const QSize& size, + const QPalette& palette) { QRect rect(QPoint(0, 0), size); QRect border_rect(rect); border_rect.adjust(kMarginSize, kMarginSize, -kMarginSize, -kMarginSize); @@ -316,8 +319,8 @@ QPixmap MoodbarProxyStyle::MoodbarPixmap(const ColorVector& colors, MoodbarRenderer::Render(colors, &p, inner_rect); // Draw the border - p.setPen(QPen(Qt::black, - kBorderSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + p.setPen( + QPen(Qt::black, kBorderSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); p.drawRect(border_rect.adjusted(0, 0, -1, -1)); // Draw the outer bit @@ -334,7 +337,7 @@ void MoodbarProxyStyle::ShowContextMenu(const QPoint& pos) { if (!context_menu_) { context_menu_ = new QMenu(slider_); show_moodbar_action_ = context_menu_->addAction( - tr("Show moodbar"), this, SLOT(SetMoodbarEnabled(bool))); + tr("Show moodbar"), this, SLOT(SetMoodbarEnabled(bool))); show_moodbar_action_->setCheckable(true); show_moodbar_action_->setChecked(enabled_); @@ -342,23 +345,26 @@ void MoodbarProxyStyle::ShowContextMenu(const QPoint& pos) { QMenu* styles_menu = context_menu_->addMenu(tr("Moodbar style")); style_action_group_ = new QActionGroup(styles_menu); - for (int i=0 ; iaddAction(MoodbarRenderer::StyleName(style)); + QAction* action = + style_action_group_->addAction(MoodbarRenderer::StyleName(style)); action->setCheckable(true); action->setData(i); } styles_menu->addActions(style_action_group_->actions()); - connect(styles_menu, SIGNAL(triggered(QAction*)), SLOT(ChangeStyle(QAction*))); + connect(styles_menu, SIGNAL(triggered(QAction*)), + SLOT(ChangeStyle(QAction*))); } // Update the currently selected style - foreach (QAction* action, style_action_group_->actions()) { - if (MoodbarRenderer::MoodbarStyle(action->data().toInt()) == moodbar_style_) { + foreach(QAction * action, style_action_group_->actions()) { + if (MoodbarRenderer::MoodbarStyle(action->data().toInt()) == + moodbar_style_) { action->setChecked(true); break; } diff --git a/src/moodbar/moodbarproxystyle.h b/src/moodbar/moodbarproxystyle.h index 8b7ab0396..e43b2c7c8 100644 --- a/src/moodbar/moodbarproxystyle.h +++ b/src/moodbar/moodbarproxystyle.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,39 +33,35 @@ class QTimeLine; class MoodbarProxyStyle : public QProxyStyle { Q_OBJECT -public: + public: MoodbarProxyStyle(Application* app, QSlider* slider); // QProxyStyle - void drawComplexControl(ComplexControl control, const QStyleOptionComplex* option, - QPainter* painter, const QWidget* widget) const; + void drawComplexControl(ComplexControl control, + const QStyleOptionComplex* option, QPainter* painter, + const QWidget* widget) const; QRect subControlRect(ComplexControl cc, const QStyleOptionComplex* opt, SubControl sc, const QWidget* widget) const; // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: // An empty byte array means there's no moodbar, so just show a normal slider. void SetMoodbarData(const QByteArray& data); // If the moodbar is disabled then a normal slider will always be shown. void SetMoodbarEnabled(bool enabled); -private: + private: static const int kMarginSize; static const int kBorderSize; static const int kArrowWidth; static const int kArrowHeight; - enum State { - MoodbarOn, - MoodbarOff, - FadingToOn, - FadingToOff - }; + enum State { MoodbarOn, MoodbarOff, FadingToOn, FadingToOff }; -private: + private: void NextState(); void Render(ComplexControl control, const QStyleOptionSlider* option, @@ -74,15 +70,15 @@ private: void DrawArrow(const QStyleOptionSlider* option, QPainter* painter) const; void ShowContextMenu(const QPoint& pos); - static QPixmap MoodbarPixmap(const ColorVector& colors, - const QSize& size, const QPalette& palette); + static QPixmap MoodbarPixmap(const ColorVector& colors, const QSize& size, + const QPalette& palette); -private slots: + private slots: void ReloadSettings(); void FaderValueChanged(qreal value); void ChangeStyle(QAction* action); -private: + private: Application* app_; QSlider* slider_; @@ -106,4 +102,4 @@ private: QActionGroup* style_action_group_; }; -#endif // MOODBARPROXYSTYLE_H +#endif // MOODBARPROXYSTYLE_H diff --git a/src/moodbar/moodbarrenderer.cpp b/src/moodbar/moodbarrenderer.cpp index 82eb4754e..bb6807dc8 100644 --- a/src/moodbar/moodbarrenderer.cpp +++ b/src/moodbar/moodbarrenderer.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,26 +22,35 @@ const int MoodbarRenderer::kNumHues = 12; -ColorVector MoodbarRenderer::Colors( - const QByteArray& data, MoodbarStyle style, const QPalette& palette) { +ColorVector MoodbarRenderer::Colors(const QByteArray& data, MoodbarStyle style, + const QPalette& palette) { const int samples = data.size() / 3; // Set some parameters based on the moodbar style StyleProperties properties; - switch(style) { - case Style_Angry: properties = StyleProperties(samples / 360 * 9, 45, -45, 200, 100); break; - case Style_Frozen: properties = StyleProperties(samples / 360 * 1, 140, 160, 50, 100); break; - case Style_Happy: properties = StyleProperties(samples / 360 * 2, 0, 359, 150, 250); break; - case Style_Normal: properties = StyleProperties(samples / 360 * 3, 0, 359, 100, 100); break; + switch (style) { + case Style_Angry: + properties = StyleProperties(samples / 360 * 9, 45, -45, 200, 100); + break; + case Style_Frozen: + properties = StyleProperties(samples / 360 * 1, 140, 160, 50, 100); + break; + case Style_Happy: + properties = StyleProperties(samples / 360 * 2, 0, 359, 150, 250); + break; + case Style_Normal: + properties = StyleProperties(samples / 360 * 3, 0, 359, 100, 100); + break; case Style_SystemPalette: default: { - const QColor highlight_color(palette.color(QPalette::Active, QPalette::Highlight)); + const QColor highlight_color( + palette.color(QPalette::Active, QPalette::Highlight)); - properties.threshold_ = samples / 360 * 3; + properties.threshold_ = samples / 360 * 3; properties.range_start_ = (highlight_color.hsvHue() - 20 + 360) % 360; properties.range_delta_ = 20; - properties.sat_ = highlight_color.hsvSaturation(); - properties.val_ = highlight_color.value() / 2; + properties.sat_ = highlight_color.hsvSaturation(); + properties.val_ = highlight_color.value() / 2; } } @@ -56,7 +65,7 @@ ColorVector MoodbarRenderer::Colors( ColorVector colors; // Read the colors, keeping track of some histograms - for (int i=0; i properties.threshold_ ? n++ : n ) - * properties.range_delta_ / total + properties.range_start_) % 360; + ((hue_distribution[i] > properties.threshold_ ? n++ : n) * + properties.range_delta_ / total + + properties.range_start_) % + 360; } // Now huedist is a hue mapper: huedist[h] is the new hue value // for a bar with hue h - for (ColorVector::iterator it = colors.begin() ; it != colors.end() ; ++it) { + for (ColorVector::iterator it = colors.begin(); it != colors.end(); ++it) { const int hue = qMax(0, it->hue()); *it = QColor::fromHsv( - qBound(0, hue_distribution[hue], 359), - qBound(0, it->saturation() * properties.sat_ / 100, 255), - qBound(0, it->value() * properties.val_ / 100, 255)); + qBound(0, hue_distribution[hue], 359), + qBound(0, it->saturation() * properties.sat_ / 100, 255), + qBound(0, it->value() * properties.val_ / 100, 255)); } return colors; } -void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, const QRect& rect) { +void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, + const QRect& rect) { // Sample the colors and map them to screen pixels. ColorVector screen_colors; - for (int x=0; xsetPen(QColor::fromHsv( - h, - qBound(0, int(float(s) * coeff), 255), + h, qBound(0, int(float(s) * coeff), 255), qBound(0, int(255.f - (255.f - float(v)) * coeff2), 255))); p->drawPoint(rect.left() + x, rect.top() + y); @@ -142,7 +152,8 @@ void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, const QRect } } -QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, const QSize& size) { +QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, + const QSize& size) { QImage image(size, QImage::Format_ARGB32_Premultiplied); QPainter p(&image); Render(colors, &p, image.rect()); @@ -152,12 +163,18 @@ QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, const QSize& si QString MoodbarRenderer::StyleName(MoodbarStyle style) { switch (style) { - case Style_Normal: return QObject::tr("Normal"); - case Style_Angry: return QObject::tr("Angry"); - case Style_Frozen: return QObject::tr("Frozen"); - case Style_Happy: return QObject::tr("Happy"); - case Style_SystemPalette: return QObject::tr("System colors"); + case Style_Normal: + return QObject::tr("Normal"); + case Style_Angry: + return QObject::tr("Angry"); + case Style_Frozen: + return QObject::tr("Frozen"); + case Style_Happy: + return QObject::tr("Happy"); + case Style_SystemPalette: + return QObject::tr("System colors"); - default: return QString(); + default: + return QString(); } } diff --git a/src/moodbar/moodbarrenderer.h b/src/moodbar/moodbarrenderer.h index 8521bdd6b..d91c04bcb 100644 --- a/src/moodbar/moodbarrenderer.h +++ b/src/moodbar/moodbarrenderer.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -27,7 +27,7 @@ class QPalette; typedef QVector ColorVector; class MoodbarRenderer { -public: + public: // These values are persisted. Remember to change appearancesettingspage.ui // when changing them. enum MoodbarStyle { @@ -36,7 +36,6 @@ public: Style_Frozen, Style_Happy, Style_SystemPalette, - StyleCount }; @@ -49,14 +48,17 @@ public: static void Render(const ColorVector& colors, QPainter* p, const QRect& rect); static QImage RenderToImage(const ColorVector& colors, const QSize& size); -private: + private: MoodbarRenderer(); struct StyleProperties { StyleProperties(int threshold = 0, int range_start = 0, int range_delta = 0, int sat = 0, int val = 0) - : threshold_(threshold), range_start_(range_start), range_delta_(range_delta), - sat_(sat), val_(val) {} + : threshold_(threshold), + range_start_(range_start), + range_delta_(range_delta), + sat_(sat), + val_(val) {} int threshold_; int range_start_; @@ -68,4 +70,4 @@ private: Q_DECLARE_METATYPE(QVector) -#endif // MOODBARRENDERER_H +#endif // MOODBARRENDERER_H diff --git a/src/musicbrainz/acoustidclient.cpp b/src/musicbrainz/acoustidclient.cpp index 448bf5ed0..2e9351631 100644 --- a/src/musicbrainz/acoustidclient.cpp +++ b/src/musicbrainz/acoustidclient.cpp @@ -29,25 +29,21 @@ const char* AcoustidClient::kClientId = "qsZGpeLx"; const char* AcoustidClient::kUrl = "http://api.acoustid.org/v2/lookup"; -const int AcoustidClient::kDefaultTimeout = 5000; // msec +const int AcoustidClient::kDefaultTimeout = 5000; // msec AcoustidClient::AcoustidClient(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) -{ -} + : QObject(parent), + network_(new NetworkAccessManager(this)), + timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} -void AcoustidClient::SetTimeout(int msec) { - timeouts_->SetTimeout(msec); -} +void AcoustidClient::SetTimeout(int msec) { timeouts_->SetTimeout(msec); } -void AcoustidClient::Start(int id, const QString& fingerprint, int duration_msec) { +void AcoustidClient::Start(int id, const QString& fingerprint, + int duration_msec) { typedef QPair Param; QList parameters; - parameters << Param("format", "json") - << Param("client", kClientId) + parameters << Param("format", "json") << Param("client", kClientId) << Param("duration", QString::number(duration_msec / kMsecPerSec)) << Param("meta", "recordingids") << Param("fingerprint", fingerprint); @@ -64,9 +60,7 @@ void AcoustidClient::Start(int id, const QString& fingerprint, int duration_msec timeouts_->AddReply(reply); } -void AcoustidClient::Cancel(int id) { - delete requests_.take(id); -} +void AcoustidClient::Cancel(int id) { delete requests_.take(id); } void AcoustidClient::CancelAll() { qDeleteAll(requests_.values()); @@ -77,7 +71,8 @@ void AcoustidClient::RequestFinished(QNetworkReply* reply, int id) { reply->deleteLater(); requests_.remove(id); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(id, QString()); return; } @@ -96,11 +91,11 @@ void AcoustidClient::RequestFinished(QNetworkReply* reply, int id) { return; } QVariantList results = result["results"].toList(); - foreach (const QVariant& v, results) { + foreach(const QVariant & v, results) { QVariantMap r = v.toMap(); if (r.contains("recordings")) { QVariantList recordings = r["recordings"].toList(); - foreach (const QVariant& recording, recordings) { + foreach(const QVariant & recording, recordings) { QVariantMap o = recording.toMap(); if (o.contains("id")) { emit Finished(id, o["id"].toString()); diff --git a/src/musicbrainz/acoustidclient.h b/src/musicbrainz/acoustidclient.h index aa54d5a62..5b27d9bb3 100644 --- a/src/musicbrainz/acoustidclient.h +++ b/src/musicbrainz/acoustidclient.h @@ -37,7 +37,7 @@ class AcoustidClient : public QObject { // IDs are provided by the caller when a request is started and included in // the Finished signal - they have no meaning to AcoustidClient. -public: + public: AcoustidClient(QObject* parent = 0); // Network requests will be aborted after this interval. @@ -58,10 +58,10 @@ public: signals: void Finished(int id, const QString& mbid); -private slots: + private slots: void RequestFinished(QNetworkReply* reply, int id); -private: + private: static const char* kClientId; static const char* kUrl; static const int kDefaultTimeout; @@ -71,4 +71,4 @@ private: QMap requests_; }; -#endif // ACOUSTIDCLIENT_H +#endif // ACOUSTIDCLIENT_H diff --git a/src/musicbrainz/chromaprinter.cpp b/src/musicbrainz/chromaprinter.cpp index 6a0a6a60a..ebb2ef882 100644 --- a/src/musicbrainz/chromaprinter.cpp +++ b/src/musicbrainz/chromaprinter.cpp @@ -34,23 +34,19 @@ static const int kDecodeRate = 11025; static const int kDecodeChannels = 1; Chromaprinter::Chromaprinter(const QString& filename) - : filename_(filename), - event_loop_(nullptr), - convert_element_(nullptr), - finishing_(false) { -} + : filename_(filename), + event_loop_(nullptr), + convert_element_(nullptr), + finishing_(false) {} -Chromaprinter::~Chromaprinter() { -} +Chromaprinter::~Chromaprinter() {} -GstElement* Chromaprinter::CreateElement(const QString &factory_name, - GstElement *bin) { +GstElement* Chromaprinter::CreateElement(const QString& factory_name, + GstElement* bin) { GstElement* ret = gst_element_factory_make( - factory_name.toAscii().constData(), - factory_name.toAscii().constData()); + factory_name.toAscii().constData(), factory_name.toAscii().constData()); - if (ret && bin) - gst_bin_add(GST_BIN(bin), ret); + if (ret && bin) gst_bin_add(GST_BIN(bin), ret); if (!ret) { qLog(Warning) << "Couldn't create the gstreamer element" << factory_name; @@ -69,11 +65,11 @@ QString Chromaprinter::CreateFingerprint() { event_loop_ = g_main_loop_new(context, FALSE); pipeline_ = gst_pipeline_new("pipeline"); - GstElement* src = CreateElement("filesrc", pipeline_); - GstElement* decode = CreateElement("decodebin2", pipeline_); - GstElement* convert = CreateElement("audioconvert", pipeline_); + GstElement* src = CreateElement("filesrc", pipeline_); + GstElement* decode = CreateElement("decodebin2", pipeline_); + GstElement* convert = CreateElement("audioconvert", pipeline_); GstElement* resample = CreateElement("audioresample", pipeline_); - GstElement* sink = CreateElement("appsink", pipeline_); + GstElement* sink = CreateElement("appsink", pipeline_); if (!src || !decode || !convert || !resample || !sink) { return QString(); @@ -87,18 +83,16 @@ QString Chromaprinter::CreateFingerprint() { // Chromaprint expects mono floats at a sample rate of 11025Hz. GstCaps* caps = gst_caps_new_simple( - "audio/x-raw-int", - "width", G_TYPE_INT, 16, - "channels", G_TYPE_INT, kDecodeChannels, - "rate", G_TYPE_INT, kDecodeRate, - nullptr); + "audio/x-raw-int", "width", G_TYPE_INT, 16, "channels", G_TYPE_INT, + kDecodeChannels, "rate", G_TYPE_INT, kDecodeRate, nullptr); gst_element_link_filtered(resample, sink, caps); gst_caps_unref(caps); GstAppSinkCallbacks callbacks; memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, nullptr); + gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, + this, nullptr); g_object_set(G_OBJECT(sink), "sync", FALSE, nullptr); g_object_set(G_OBJECT(sink), "emit-signals", TRUE, nullptr); @@ -107,8 +101,10 @@ QString Chromaprinter::CreateFingerprint() { // Connect signals CHECKED_GCONNECT(decode, "new-decoded-pad", &NewPadCallback, this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); - guint bus_callback_id = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); + guint bus_callback_id = gst_bus_add_watch( + gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); QTime time; time.start(); @@ -125,9 +121,11 @@ QString Chromaprinter::CreateFingerprint() { buffer_.close(); QByteArray data = buffer_.data(); - ChromaprintContext* chromaprint = chromaprint_new(CHROMAPRINT_ALGORITHM_DEFAULT); + ChromaprintContext* chromaprint = + chromaprint_new(CHROMAPRINT_ALGORITHM_DEFAULT); chromaprint_start(chromaprint, kDecodeRate, kDecodeChannels); - chromaprint_feed(chromaprint, reinterpret_cast(data.data()), data.size() / 2); + chromaprint_feed(chromaprint, reinterpret_cast(data.data()), + data.size() / 2); chromaprint_finish(chromaprint); void* fprint = nullptr; @@ -137,8 +135,8 @@ QString Chromaprinter::CreateFingerprint() { if (ret == 1) { void* encoded = nullptr; int encoded_size = 0; - chromaprint_encode_fingerprint( - fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, &encoded, &encoded_size, 1); + chromaprint_encode_fingerprint(fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, + &encoded, &encoded_size, 1); fingerprint.append(reinterpret_cast(encoded), encoded_size); @@ -148,14 +146,15 @@ QString Chromaprinter::CreateFingerprint() { chromaprint_free(chromaprint); int codegen_time = time.elapsed(); - qLog(Debug) << "Decode time:" << decode_time << "Codegen time:" << codegen_time; + qLog(Debug) << "Decode time:" << decode_time + << "Codegen time:" << codegen_time; // Cleanup callbacks.new_buffer = nullptr; - gst_app_sink_set_callbacks( - reinterpret_cast(sink), &callbacks, this, nullptr); - gst_bus_set_sync_handler( - gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), nullptr, nullptr); + gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, + this, nullptr); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); g_source_remove(bus_callback_id); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); @@ -163,10 +162,11 @@ QString Chromaprinter::CreateFingerprint() { return fingerprint; } -void Chromaprinter::NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data) { +void Chromaprinter::NewPadCallback(GstElement*, GstPad* pad, gboolean, + gpointer data) { Chromaprinter* instance = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - instance->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(instance->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Warning) << "audiopad is already linked, unlinking old pad"; @@ -208,7 +208,8 @@ gboolean Chromaprinter::BusCallback(GstBus*, GstMessage* msg, gpointer data) { return GST_BUS_DROP; } -GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { Chromaprinter* instance = reinterpret_cast(data); if (instance->finishing_) { return GST_BUS_PASS; @@ -230,7 +231,8 @@ GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, gpointe return GST_BUS_PASS; } -GstFlowReturn Chromaprinter::NewBufferCallback(GstAppSink* app_sink, gpointer self) { +GstFlowReturn Chromaprinter::NewBufferCallback(GstAppSink* app_sink, + gpointer self) { Chromaprinter* me = reinterpret_cast(self); if (me->finishing_) { return GST_FLOW_OK; diff --git a/src/musicbrainz/chromaprinter.h b/src/musicbrainz/chromaprinter.h index a9c32265f..93b22e515 100644 --- a/src/musicbrainz/chromaprinter.h +++ b/src/musicbrainz/chromaprinter.h @@ -35,7 +35,7 @@ class Chromaprinter { // You should create one Chromaprinter for each file you want to fingerprint. // This class works well with QtConcurrentMap. -public: + public: Chromaprinter(const QString& filename); ~Chromaprinter(); @@ -44,17 +44,19 @@ public: // could be created. QString CreateFingerprint(); -private: - GstElement* CreateElement(const QString& factory_name, GstElement* bin = NULL); + private: + GstElement* CreateElement(const QString& factory_name, + GstElement* bin = NULL); void ReportError(GstMessage* message); static void NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); static GstFlowReturn NewBufferCallback(GstAppSink* app_sink, gpointer self); -private: + private: QString filename_; GMainLoop* event_loop_; @@ -65,4 +67,4 @@ private: bool finishing_; }; -#endif // CHROMAPRINTER_H +#endif // CHROMAPRINTER_H diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 4cb1c73a2..f8edfc9ba 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -27,17 +27,17 @@ #include "core/network.h" #include "core/utilities.h" -const char* MusicBrainzClient::kTrackUrl = "https://musicbrainz.org/ws/2/recording/"; -const char* MusicBrainzClient::kDiscUrl = "https://musicbrainz.org/ws/2/discid/"; +const char* MusicBrainzClient::kTrackUrl = + "https://musicbrainz.org/ws/2/recording/"; +const char* MusicBrainzClient::kDiscUrl = + "https://musicbrainz.org/ws/2/discid/"; const char* MusicBrainzClient::kDateRegex = "^[12]\\d{3}"; -const int MusicBrainzClient::kDefaultTimeout = 5000; // msec +const int MusicBrainzClient::kDefaultTimeout = 5000; // msec MusicBrainzClient::MusicBrainzClient(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) -{ -} + : QObject(parent), + network_(new NetworkAccessManager(this)), + timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} void MusicBrainzClient::Start(int id, const QString& mbid) { typedef QPair Param; @@ -74,9 +74,7 @@ void MusicBrainzClient::StartDiscIdRequest(const QString& discid) { timeouts_->AddReply(reply); } -void MusicBrainzClient::Cancel(int id) { - delete requests_.take(id); -} +void MusicBrainzClient::Cancel(int id) { delete requests_.take(id); } void MusicBrainzClient::CancelAll() { qDeleteAll(requests_.values()); @@ -90,7 +88,8 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { QString artist; QString album; - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(artist, album, ret); return; } @@ -116,14 +115,16 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { while (!reader.atEnd()) { QXmlStreamReader::TokenType token = reader.readNext(); - if (token == QXmlStreamReader::StartElement && reader.name() == "recording") { + if (token == QXmlStreamReader::StartElement && + reader.name() == "recording") { ResultList tracks = ParseTrack(&reader); - foreach (const Result& track, tracks) { + foreach(const Result & track, tracks) { if (!track.title_.isEmpty()) { ret << track; } } - } else if (token == QXmlStreamReader::EndElement && reader.name() == "track-list") { + } else if (token == QXmlStreamReader::EndElement && + reader.name() == "track-list") { break; } } @@ -131,22 +132,23 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { emit Finished(artist, album, UniqueResults(ret)); } - void MusicBrainzClient::RequestFinished(QNetworkReply* reply, int id) { reply->deleteLater(); requests_.remove(id); ResultList ret; - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(id, ret); return; } QXmlStreamReader reader(reply); while (!reader.atEnd()) { - if (reader.readNext() == QXmlStreamReader::StartElement && reader.name() == "recording") { + if (reader.readNext() == QXmlStreamReader::StartElement && + reader.name() == "recording") { ResultList tracks = ParseTrack(&reader); - foreach (const Result& track, tracks) { + foreach(const Result & track, tracks) { if (!track.title_.isEmpty()) { ret << track; } @@ -157,7 +159,8 @@ void MusicBrainzClient::RequestFinished(QNetworkReply* reply, int id) { emit Finished(id, UniqueResults(ret)); } -MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack(QXmlStreamReader* reader) { +MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack( + QXmlStreamReader* reader) { Result result; QList releases; @@ -187,7 +190,7 @@ MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack(QXmlStreamReader* re if (releases.isEmpty()) { ret << result; } else { - foreach (const Release& release, releases) { + foreach(const Release & release, releases) { ret << release.CopyAndMergeInto(result); } } @@ -208,7 +211,8 @@ void MusicBrainzClient::ParseArtist(QXmlStreamReader* reader, QString* artist) { } } -MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* reader) { +MusicBrainzClient::Release MusicBrainzClient::ParseRelease( + QXmlStreamReader* reader) { Release ret; while (!reader->atEnd()) { @@ -224,7 +228,8 @@ MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* rea ret.year_ = regex.cap(0).toInt(); } } else if (name == "track-list") { - ret.track_ = reader->attributes().value("offset").toString().toInt() + 1; + ret.track_ = + reader->attributes().value("offset").toString().toInt() + 1; Utilities::ConsumeCurrentElement(reader); } } @@ -237,7 +242,8 @@ MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* rea return ret; } -MusicBrainzClient::ResultList MusicBrainzClient::UniqueResults(const ResultList& results) { +MusicBrainzClient::ResultList MusicBrainzClient::UniqueResults( + const ResultList& results) { ResultList ret = QSet::fromList(results).toList(); qSort(ret); return ret; diff --git a/src/musicbrainz/musicbrainzclient.h b/src/musicbrainz/musicbrainzclient.h index e7065daf4..a16182224 100644 --- a/src/musicbrainz/musicbrainzclient.h +++ b/src/musicbrainz/musicbrainzclient.h @@ -37,16 +37,16 @@ class MusicBrainzClient : public QObject { // IDs are provided by the caller when a request is started and included in // the Finished signal - they have no meaning to MusicBrainzClient. -public: + public: MusicBrainzClient(QObject* parent = 0); struct Result { Result() : duration_msec_(0), track_(0), year_(-1) {} - bool operator <(const Result& other) const { - #define cmp(field) \ - if (field < other.field) return true; \ - if (field > other.field) return false; + bool operator<(const Result& other) const { +#define cmp(field) \ + if (field < other.field) return true; \ + if (field > other.field) return false; cmp(track_); cmp(year_); @@ -54,16 +54,13 @@ public: cmp(artist_); return false; - #undef cmp +#undef cmp } - bool operator ==(const Result& other) const { - return title_ == other.title_ && - artist_ == other.artist_ && - album_ == other.album_ && - duration_msec_ == other.duration_msec_ && - track_ == other.track_ && - year_ == other.year_; + bool operator==(const Result& other) const { + return title_ == other.title_ && artist_ == other.artist_ && + album_ == other.album_ && duration_msec_ == other.duration_msec_ && + track_ == other.track_ && year_ == other.year_; } QString title_; @@ -75,7 +72,6 @@ public: }; typedef QList ResultList; - // Starts a request and returns immediately. Finished() will be emitted // later with the same ID. void Start(int id, const QString& mbid); @@ -96,11 +92,11 @@ signals: void Finished(const QString& artist, const QString album, const MusicBrainzClient::ResultList& result); -private slots: + private slots: void RequestFinished(QNetworkReply* reply, int id); void DiscIdRequestFinished(QNetworkReply* reply); -private: + private: struct Release { Release() : track_(0), year_(0) {} @@ -122,7 +118,7 @@ private: static Release ParseRelease(QXmlStreamReader* reader); static ResultList UniqueResults(const ResultList& results); -private: + private: static const char* kTrackUrl; static const char* kDiscUrl; static const char* kDateRegex; @@ -134,12 +130,8 @@ private: }; inline uint qHash(const MusicBrainzClient::Result& result) { - return qHash(result.album_) ^ - qHash(result.artist_) ^ - result.duration_msec_ ^ - qHash(result.title_) ^ - result.track_ ^ - result.year_; + return qHash(result.album_) ^ qHash(result.artist_) ^ result.duration_msec_ ^ + qHash(result.title_) ^ result.track_ ^ result.year_; } -#endif // MUSICBRAINZCLIENT_H +#endif // MUSICBRAINZCLIENT_H diff --git a/src/musicbrainz/tagfetcher.cpp b/src/musicbrainz/tagfetcher.cpp index 0c9991618..6836e98e3 100644 --- a/src/musicbrainz/tagfetcher.cpp +++ b/src/musicbrainz/tagfetcher.cpp @@ -28,13 +28,15 @@ #include TagFetcher::TagFetcher(QObject* parent) - : QObject(parent), - fingerprint_watcher_(nullptr), - acoustid_client_(new AcoustidClient(this)), - musicbrainz_client_(new MusicBrainzClient(this)) -{ - connect(acoustid_client_, SIGNAL(Finished(int,QString)), SLOT(PuidFound(int,QString))); - connect(musicbrainz_client_, SIGNAL(Finished(int,MusicBrainzClient::ResultList)), SLOT(TagsFetched(int,MusicBrainzClient::ResultList))); + : QObject(parent), + fingerprint_watcher_(nullptr), + acoustid_client_(new AcoustidClient(this)), + musicbrainz_client_(new MusicBrainzClient(this)) { + connect(acoustid_client_, SIGNAL(Finished(int, QString)), + SLOT(PuidFound(int, QString))); + connect(musicbrainz_client_, + SIGNAL(Finished(int, MusicBrainzClient::ResultList)), + SLOT(TagsFetched(int, MusicBrainzClient::ResultList))); } QString TagFetcher::GetFingerprint(const Song& song) { @@ -49,9 +51,10 @@ void TagFetcher::StartFetch(const SongList& songs) { QFuture future = QtConcurrent::mapped(songs_, GetFingerprint); fingerprint_watcher_ = new QFutureWatcher(this); fingerprint_watcher_->setFuture(future); - connect(fingerprint_watcher_, SIGNAL(resultReadyAt(int)), SLOT(FingerprintFound(int))); + connect(fingerprint_watcher_, SIGNAL(resultReadyAt(int)), + SLOT(FingerprintFound(int))); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { emit Progress(song, tr("Fingerprinting song")); } } @@ -70,7 +73,8 @@ void TagFetcher::Cancel() { } void TagFetcher::FingerprintFound(int index) { - QFutureWatcher* watcher = reinterpret_cast*>(sender()); + QFutureWatcher* watcher = + reinterpret_cast*>(sender()); if (!watcher || index >= songs_.count()) { return; } @@ -84,7 +88,8 @@ void TagFetcher::FingerprintFound(int index) { } emit Progress(song, tr("Identifying song")); - acoustid_client_->Start(index, fingerprint, song.length_nanosec() / kNsecPerMsec); + acoustid_client_->Start(index, fingerprint, + song.length_nanosec() / kNsecPerMsec); } void TagFetcher::PuidFound(int index, const QString& puid) { @@ -103,7 +108,8 @@ void TagFetcher::PuidFound(int index, const QString& puid) { musicbrainz_client_->Start(index, puid); } -void TagFetcher::TagsFetched(int index, const MusicBrainzClient::ResultList& results) { +void TagFetcher::TagsFetched(int index, + const MusicBrainzClient::ResultList& results) { if (index >= songs_.count()) { return; } @@ -111,7 +117,7 @@ void TagFetcher::TagsFetched(int index, const MusicBrainzClient::ResultList& res const Song& original_song = songs_[index]; SongList songs_guessed; - foreach (const MusicBrainzClient::Result& result, results) { + foreach(const MusicBrainzClient::Result & result, results) { Song song; song.Init(result.title_, result.artist_, result.album_, result.duration_msec_ * kNsecPerMsec); diff --git a/src/musicbrainz/tagfetcher.h b/src/musicbrainz/tagfetcher.h index 468624a35..85a5656e1 100644 --- a/src/musicbrainz/tagfetcher.h +++ b/src/musicbrainz/tagfetcher.h @@ -32,12 +32,12 @@ class TagFetcher : public QObject { // High level interface to Fingerprinter, AcoustidClient and // MusicBrainzClient. -public: + public: TagFetcher(QObject* parent = 0); void StartFetch(const SongList& songs); -public slots: + public slots: void Cancel(); signals: @@ -45,12 +45,12 @@ signals: void ResultAvailable(const Song& original_song, const SongList& songs_guessed); -private slots: + private slots: void FingerprintFound(int index); void PuidFound(int index, const QString& puid); void TagsFetched(int index, const MusicBrainzClient::ResultList& result); -private: + private: static QString GetFingerprint(const Song& song); QFutureWatcher* fingerprint_watcher_; @@ -60,4 +60,4 @@ private: SongList songs_; }; -#endif // TAGFETCHER_H +#endif // TAGFETCHER_H diff --git a/src/networkremote/avahi.cpp b/src/networkremote/avahi.cpp index f30e0e0bf..d126aa2a4 100644 --- a/src/networkremote/avahi.cpp +++ b/src/networkremote/avahi.cpp @@ -9,65 +9,45 @@ namespace { -void AddService( - const QString domain, - const QString type, - const QByteArray name, - quint16 port, - QDBusPendingReply path_reply); +void AddService(const QString domain, const QString type, const QByteArray name, + quint16 port, QDBusPendingReply path_reply); void Commit(OrgFreedesktopAvahiEntryGroupInterface* interface); void LogCommit(QDBusPendingReply<> reply); } // namespace -void Avahi::PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) { +void Avahi::PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) { OrgFreedesktopAvahiServerInterface server_interface( - "org.freedesktop.Avahi", - "/", - QDBusConnection::systemBus()); + "org.freedesktop.Avahi", "/", QDBusConnection::systemBus()); QDBusPendingReply reply = server_interface.EntryGroupNew(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &AddService, - domain, type, name, port, reply); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &AddService, + domain, type, name, port, reply); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); } namespace { -void AddService( - const QString domain, - const QString type, - const QByteArray name, - quint16 port, - QDBusPendingReply path_reply) { +void AddService(const QString domain, const QString type, const QByteArray name, + quint16 port, QDBusPendingReply path_reply) { if (path_reply.isError()) { - qLog(Warning) - << "Failed to create Avahi entry group:" - << path_reply.error(); - qLog(Info) - << "This might be because 'disable-user-service-publishing'" - << "is set to 'yes' in avahi-daemon.conf"; + qLog(Warning) << "Failed to create Avahi entry group:" + << path_reply.error(); + qLog(Info) << "This might be because 'disable-user-service-publishing'" + << "is set to 'yes' in avahi-daemon.conf"; return; } qLog(Debug) << path_reply.error(); OrgFreedesktopAvahiEntryGroupInterface* entry_group_interface = - new OrgFreedesktopAvahiEntryGroupInterface( - "org.freedesktop.Avahi", - path_reply.value().path(), - QDBusConnection::systemBus()); + new OrgFreedesktopAvahiEntryGroupInterface("org.freedesktop.Avahi", + path_reply.value().path(), + QDBusConnection::systemBus()); QDBusPendingReply<> reply = entry_group_interface->AddService( - -1, // Interface (all) - -1, // Protocol (v4 & v6) - 0, // Flags + -1, // Interface (all) + -1, // Protocol (v4 & v6) + 0, // Flags // Service name, eg. Clementine QString::fromUtf8(name.constData(), name.size()), type, // Service type, eg. _clementine._tcp @@ -76,31 +56,22 @@ void AddService( port, // Port our service is running on QList()); // TXT record QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &Commit, - entry_group_interface); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &Commit, + entry_group_interface); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); } void Commit(OrgFreedesktopAvahiEntryGroupInterface* interface) { QDBusPendingReply<> reply = interface->Commit(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - interface, SLOT(deleteLater())); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &LogCommit, - reply); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), + interface, SLOT(deleteLater())); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &LogCommit, + reply); } void LogCommit(QDBusPendingReply<> reply) { @@ -108,4 +79,3 @@ void LogCommit(QDBusPendingReply<> reply) { } } // namespace - diff --git a/src/networkremote/avahi.h b/src/networkremote/avahi.h index c53b0aa90..d36f7f346 100644 --- a/src/networkremote/avahi.h +++ b/src/networkremote/avahi.h @@ -5,11 +5,8 @@ class Avahi : public Zeroconf { protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); }; #endif // AVAHI_H diff --git a/src/networkremote/bonjour.h b/src/networkremote/bonjour.h index 450ab61ac..49c8f9f41 100644 --- a/src/networkremote/bonjour.h +++ b/src/networkremote/bonjour.h @@ -15,11 +15,8 @@ class Bonjour : public Zeroconf { virtual ~Bonjour(); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); private: NetServicePublicationDelegate* delegate_; diff --git a/src/networkremote/incomingdataparser.cpp b/src/networkremote/incomingdataparser.cpp index 83af30466..80e2aca3d 100644 --- a/src/networkremote/incomingdataparser.cpp +++ b/src/networkremote/incomingdataparser.cpp @@ -27,39 +27,30 @@ #include "playlist/playlist.h" #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif -IncomingDataParser::IncomingDataParser(Application* app) - :app_(app) -{ +IncomingDataParser::IncomingDataParser(Application* app) : app_(app) { // Connect all the signals - // due the player is in a different thread, we cannot access these functions directly - connect(this, SIGNAL(Play()), - app_->player(), SLOT(Play())); - connect(this, SIGNAL(PlayPause()), - app_->player(), SLOT(PlayPause())); - connect(this, SIGNAL(Pause()), - app_->player(), SLOT(Pause())); - connect(this, SIGNAL(Stop()), - app_->player(), SLOT(Stop())); - connect(this, SIGNAL(StopAfterCurrent()), - app_->player(), SLOT(StopAfterCurrent())); - connect(this, SIGNAL(Next()), - app_->player(), SLOT(Next())); - connect(this, SIGNAL(Previous()), - app_->player(), SLOT(Previous())); - connect(this, SIGNAL(SetVolume(int)), - app_->player(), SLOT(SetVolume(int))); - connect(this, SIGNAL(PlayAt(int,Engine::TrackChangeFlags,bool)), - app_->player(), SLOT(PlayAt(int,Engine::TrackChangeFlags,bool))); - connect(this, SIGNAL(SeekTo(int)), - app_->player(), SLOT(SeekTo(int))); + // due the player is in a different thread, we cannot access these functions + // directly + connect(this, SIGNAL(Play()), app_->player(), SLOT(Play())); + connect(this, SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); + connect(this, SIGNAL(Pause()), app_->player(), SLOT(Pause())); + connect(this, SIGNAL(Stop()), app_->player(), SLOT(Stop())); + connect(this, SIGNAL(StopAfterCurrent()), app_->player(), + SLOT(StopAfterCurrent())); + connect(this, SIGNAL(Next()), app_->player(), SLOT(Next())); + connect(this, SIGNAL(Previous()), app_->player(), SLOT(Previous())); + connect(this, SIGNAL(SetVolume(int)), app_->player(), SLOT(SetVolume(int))); + connect(this, SIGNAL(PlayAt(int, Engine::TrackChangeFlags, bool)), + app_->player(), SLOT(PlayAt(int, Engine::TrackChangeFlags, bool))); + connect(this, SIGNAL(SeekTo(int)), app_->player(), SLOT(SeekTo(int))); - connect(this, SIGNAL(SetActivePlaylist(int)), - app_->playlist_manager(), SLOT(SetActivePlaylist(int))); - connect(this, SIGNAL(ShuffleCurrent()), - app_->playlist_manager(), SLOT(ShuffleCurrent())); + connect(this, SIGNAL(SetActivePlaylist(int)), app_->playlist_manager(), + SLOT(SetActivePlaylist(int))); + connect(this, SIGNAL(ShuffleCurrent()), app_->playlist_manager(), + SLOT(ShuffleCurrent())); connect(this, SIGNAL(SetRepeatMode(PlaylistSequence::RepeatMode)), app_->playlist_manager()->sequence(), SLOT(SetRepeatMode(PlaylistSequence::RepeatMode))); @@ -72,31 +63,26 @@ IncomingDataParser::IncomingDataParser(Application* app) connect(this, SIGNAL(RemoveSongs(int, const QList&)), app_->playlist_manager(), SLOT(RemoveItemsWithoutUndo(int, const QList&))); - connect(this, SIGNAL(Open(int)), - app_->playlist_manager(), SLOT(Open(int))); - connect(this, SIGNAL(Close(int)), - app_->playlist_manager(), SLOT(Close(int))); + connect(this, SIGNAL(Open(int)), app_->playlist_manager(), SLOT(Open(int))); + connect(this, SIGNAL(Close(int)), app_->playlist_manager(), SLOT(Close(int))); - connect(this, SIGNAL(RateCurrentSong(double)), - app_->playlist_manager(), SLOT(RateCurrentSong(double))); + connect(this, SIGNAL(RateCurrentSong(double)), app_->playlist_manager(), + SLOT(RateCurrentSong(double))); #ifdef HAVE_LIBLASTFM - connect(this, SIGNAL(Love()), - InternetModel::Service(), SLOT(Love())); - connect(this, SIGNAL(Ban()), - InternetModel::Service(), SLOT(Ban())); + connect(this, SIGNAL(Love()), InternetModel::Service(), + SLOT(Love())); + connect(this, SIGNAL(Ban()), InternetModel::Service(), + SLOT(Ban())); #endif } -IncomingDataParser::~IncomingDataParser() { -} +IncomingDataParser::~IncomingDataParser() {} -bool IncomingDataParser::close_connection() { - return close_connection_; -} +bool IncomingDataParser::close_connection() { return close_connection_; } void IncomingDataParser::Parse(const pb::remote::Message& msg) { - close_connection_ = false; + close_connection_ = false; RemoteClient* client = qobject_cast(sender()); @@ -186,7 +172,8 @@ void IncomingDataParser::Parse(const pb::remote::Message& msg) { case pb::remote::RATE_SONG: RateSong(msg); break; - default: break; + default: + break; } } @@ -221,7 +208,8 @@ void IncomingDataParser::SetRepeatMode(const pb::remote::Repeat& repeat) { case pb::remote::Repeat_Playlist: emit SetRepeatMode(PlaylistSequence::Repeat_Playlist); break; - default: break; + default: + break; } } @@ -239,7 +227,8 @@ void IncomingDataParser::SetShuffleMode(const pb::remote::Shuffle& shuffle) { case pb::remote::Shuffle_Albums: emit SetShuffleMode(PlaylistSequence::Shuffle_Albums); break; - default: break; + default: + break; } } @@ -259,16 +248,16 @@ void IncomingDataParser::InsertUrls(const pb::remote::Message& msg) { } void IncomingDataParser::RemoveSongs(const pb::remote::Message& msg) { - const pb::remote::RequestRemoveSongs& request = msg.request_remove_songs(); + const pb::remote::RequestRemoveSongs& request = msg.request_remove_songs(); - // Extract urls - QList songs; - for (int i = 0; i songs; + for (int i = 0; i < request.songs().size(); i++) { + songs.append(request.songs(i)); + } - // Insert the urls - emit RemoveSongs(request.playlist_id(), songs); + // Insert the urls + emit RemoveSongs(request.playlist_id(), songs); } void IncomingDataParser::ClientConnect(const pb::remote::Message& msg) { @@ -277,32 +266,32 @@ void IncomingDataParser::ClientConnect(const pb::remote::Message& msg) { emit SendClementineInfo(); // Check if we should send the first data - if (!msg.request_connect().has_send_playlist_songs() // legacy - || msg.request_connect().send_playlist_songs()) { + if (!msg.request_connect().has_send_playlist_songs() // legacy + || msg.request_connect().send_playlist_songs()) { emit SendFirstData(true); } else { emit SendFirstData(false); } } -void IncomingDataParser::SendPlaylists(const pb::remote::Message &msg) { - if (!msg.has_request_playlists() - || !msg.request_playlists().include_closed()) { +void IncomingDataParser::SendPlaylists(const pb::remote::Message& msg) { + if (!msg.has_request_playlists() || + !msg.request_playlists().include_closed()) { emit SendAllActivePlaylists(); } else { emit SendAllPlaylists(); } } -void IncomingDataParser::OpenPlaylist(const pb::remote::Message &msg) { +void IncomingDataParser::OpenPlaylist(const pb::remote::Message& msg) { emit Open(msg.request_open_playlist().playlist_id()); } -void IncomingDataParser::ClosePlaylist(const pb::remote::Message &msg) { +void IncomingDataParser::ClosePlaylist(const pb::remote::Message& msg) { emit Close(msg.request_close_playlist().playlist_id()); } -void IncomingDataParser::RateSong(const pb::remote::Message &msg) { - double rating = (double) msg.request_rate_song().rating(); +void IncomingDataParser::RateSong(const pb::remote::Message& msg) { + double rating = (double)msg.request_rate_song().rating(); emit RateCurrentSong(rating); } diff --git a/src/networkremote/incomingdataparser.h b/src/networkremote/incomingdataparser.h index 285c97e6a..47cd4e94d 100644 --- a/src/networkremote/incomingdataparser.h +++ b/src/networkremote/incomingdataparser.h @@ -8,13 +8,13 @@ class IncomingDataParser : public QObject { Q_OBJECT -public: + public: IncomingDataParser(Application* app); ~IncomingDataParser(); bool close_connection(); -public slots: + public slots: void Parse(const pb::remote::Message& msg); signals: @@ -42,15 +42,17 @@ signals: void ShuffleCurrent(); void SetRepeatMode(PlaylistSequence::RepeatMode mode); void SetShuffleMode(PlaylistSequence::ShuffleMode mode); - void InsertUrls(int id, const QList& urls, int pos, bool play_now, bool enqueue); + void InsertUrls(int id, const QList& urls, int pos, bool play_now, + bool enqueue); void RemoveSongs(int id, const QList& indices); void SeekTo(int seconds); - void SendSongs(const pb::remote::RequestDownloadSongs& request, RemoteClient* client); + void SendSongs(const pb::remote::RequestDownloadSongs& request, + RemoteClient* client); void ResponseSongOffer(RemoteClient* client, bool accepted); void SendLibrary(RemoteClient* client); void RateCurrentSong(double); -private: + private: Application* app_; bool close_connection_; @@ -67,4 +69,4 @@ private: void RateSong(const pb::remote::Message& msg); }; -#endif // INCOMINGDATAPARSER_H +#endif // INCOMINGDATAPARSER_H diff --git a/src/networkremote/networkremote.cpp b/src/networkremote/networkremote.cpp index 38aa955fd..2f211d719 100644 --- a/src/networkremote/networkremote.cpp +++ b/src/networkremote/networkremote.cpp @@ -31,22 +31,16 @@ const char* NetworkRemote::kSettingsGroup = "NetworkRemote"; const quint16 NetworkRemote::kDefaultServerPort = 5500; NetworkRemote::NetworkRemote(Application* app, QObject* parent) - : QObject(parent), - signals_connected_(false), - app_(app) { -} + : QObject(parent), signals_connected_(false), app_(app) {} - -NetworkRemote::~NetworkRemote() { - StopServer(); -} +NetworkRemote::~NetworkRemote() { StopServer(); } void NetworkRemote::ReadSettings() { QSettings s; s.beginGroup(NetworkRemote::kSettingsGroup); use_remote_ = s.value("use_remote", false).toBool(); - port_ = s.value("port", kDefaultServerPort).toInt(); + port_ = s.value("port", kDefaultServerPort).toInt(); // Use only non public ips must be true be default only_non_public_ip_ = s.value("only_non_public_ip", true).toBool(); @@ -68,8 +62,10 @@ void NetworkRemote::SetupServer() { SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); // Only connect the signals once - connect(server_.get(), SIGNAL(newConnection()), this, SLOT(AcceptConnection())); - connect(server_ipv6_.get(), SIGNAL(newConnection()), this, SLOT(AcceptConnection())); + connect(server_.get(), SIGNAL(newConnection()), this, + SLOT(AcceptConnection())); + connect(server_ipv6_.get(), SIGNAL(newConnection()), this, + SLOT(AcceptConnection())); } void NetworkRemote::StartServer() { @@ -96,8 +92,7 @@ void NetworkRemote::StartServer() { if (Zeroconf::GetZeroconf()) { QString name = QString("Clementine on %1").arg(QHostInfo::localHostName()); - Zeroconf::GetZeroconf()->Publish( - "local", "_clementine._tcp", name, port_); + Zeroconf::GetZeroconf()->Publish("local", "_clementine._tcp", name, port_); } } @@ -136,17 +131,18 @@ void NetworkRemote::AcceptConnection() { outgoing_data_creator_.get(), SLOT(ActiveChanged(Playlist*))); connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), outgoing_data_creator_.get(), SLOT(PlaylistChanged(Playlist*))); - connect(app_->playlist_manager(), SIGNAL(PlaylistAdded(int,QString,bool)), - outgoing_data_creator_.get(), SLOT(PlaylistAdded(int,QString,bool))); - connect(app_->playlist_manager(), SIGNAL(PlaylistRenamed(int,QString)), - outgoing_data_creator_.get(), SLOT(PlaylistRenamed(int,QString))); + connect(app_->playlist_manager(), SIGNAL(PlaylistAdded(int, QString, bool)), + outgoing_data_creator_.get(), + SLOT(PlaylistAdded(int, QString, bool))); + connect(app_->playlist_manager(), SIGNAL(PlaylistRenamed(int, QString)), + outgoing_data_creator_.get(), SLOT(PlaylistRenamed(int, QString))); connect(app_->playlist_manager(), SIGNAL(PlaylistClosed(int)), outgoing_data_creator_.get(), SLOT(PlaylistClosed(int))); connect(app_->playlist_manager(), SIGNAL(PlaylistDeleted(int)), outgoing_data_creator_.get(), SLOT(PlaylistDeleted(int))); - connect(app_->player(), SIGNAL(VolumeChanged(int)), outgoing_data_creator_.get(), - SLOT(VolumeChanged(int))); + connect(app_->player(), SIGNAL(VolumeChanged(int)), + outgoing_data_creator_.get(), SLOT(VolumeChanged(int))); connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), outgoing_data_creator_.get(), SLOT(StateChanged(Engine::State))); @@ -163,26 +159,24 @@ void NetworkRemote::AcceptConnection() { outgoing_data_creator_.get(), SLOT(GetLyrics())); connect(incoming_data_parser_.get(), - SIGNAL(SendSongs(pb::remote::RequestDownloadSongs,RemoteClient*)), + SIGNAL(SendSongs(pb::remote::RequestDownloadSongs, RemoteClient*)), outgoing_data_creator_.get(), - SLOT(SendSongs(pb::remote::RequestDownloadSongs,RemoteClient*))); + SLOT(SendSongs(pb::remote::RequestDownloadSongs, RemoteClient*))); connect(incoming_data_parser_.get(), SIGNAL(ResponseSongOffer(RemoteClient*, bool)), outgoing_data_creator_.get(), SLOT(ResponseSongOffer(RemoteClient*, bool))); - connect(incoming_data_parser_.get(), - SIGNAL(SendLibrary(RemoteClient*)), - outgoing_data_creator_.get(), - SLOT(SendLibrary(RemoteClient*))); + connect(incoming_data_parser_.get(), SIGNAL(SendLibrary(RemoteClient*)), + outgoing_data_creator_.get(), SLOT(SendLibrary(RemoteClient*))); } QTcpServer* server = qobject_cast(sender()); QTcpSocket* client_socket = server->nextPendingConnection(); // Check if our ip is in private scope if (only_non_public_ip_ && !IpIsPrivate(client_socket->peerAddress())) { - qLog(Info) << "Got a connection from public ip" << - client_socket->peerAddress().toString(); + qLog(Info) << "Got a connection from public ip" + << client_socket->peerAddress().toString(); client_socket->close(); } else { CreateRemoteClient(client_socket); @@ -219,11 +213,9 @@ void NetworkRemote::CreateRemoteClient(QTcpSocket* client_socket) { } void NetworkRemote::EnableKittens(bool aww) { - if (outgoing_data_creator_.get()) - outgoing_data_creator_->EnableKittens(aww); + if (outgoing_data_creator_.get()) outgoing_data_creator_->EnableKittens(aww); } -void NetworkRemote::SendKitten(quint64 id, const QImage &kitten) { - if (outgoing_data_creator_.get()) - outgoing_data_creator_->SendKitten(kitten); +void NetworkRemote::SendKitten(quint64 id, const QImage& kitten) { + if (outgoing_data_creator_.get()) outgoing_data_creator_->SendKitten(kitten); } diff --git a/src/networkremote/networkremote.h b/src/networkremote/networkremote.h index 716538251..06c8afb73 100644 --- a/src/networkremote/networkremote.h +++ b/src/networkremote/networkremote.h @@ -13,15 +13,15 @@ #include "remoteclient.h" class NetworkRemote : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: static const char* kSettingsGroup; static const quint16 kDefaultServerPort; explicit NetworkRemote(Application* app, QObject* parent = 0); ~NetworkRemote(); -public slots: + public slots: void SetupServer(); void StartServer(); void ReloadSettings(); @@ -29,7 +29,7 @@ public slots: void EnableKittens(bool aww); void SendKitten(quint64 id, const QImage& kitten); -private: + private: std::unique_ptr server_; std::unique_ptr server_ipv6_; std::unique_ptr incoming_data_parser_; @@ -49,4 +49,4 @@ private: bool IpIsPrivate(const QHostAddress& address); }; -#endif // NETWORKREMOTE_H +#endif // NETWORKREMOTE_H diff --git a/src/networkremote/networkremotehelper.cpp b/src/networkremote/networkremotehelper.cpp index 8df9013db..6c7496555 100644 --- a/src/networkremote/networkremotehelper.cpp +++ b/src/networkremote/networkremotehelper.cpp @@ -22,35 +22,30 @@ NetworkRemoteHelper* NetworkRemoteHelper::sInstance = nullptr; -NetworkRemoteHelper::NetworkRemoteHelper(Application* app) - : app_(app) -{ +NetworkRemoteHelper::NetworkRemoteHelper(Application* app) : app_(app) { app_ = app; - connect(this, SIGNAL(ReloadSettingsSig()), - app_->network_remote(), SLOT(ReloadSettings())); - connect(this, SIGNAL(StartServerSig()), - app_->network_remote(), SLOT(StartServer())); - connect(this, SIGNAL(SetupServerSig()), - app_->network_remote(), SLOT(SetupServer())); + connect(this, SIGNAL(ReloadSettingsSig()), app_->network_remote(), + SLOT(ReloadSettings())); + connect(this, SIGNAL(StartServerSig()), app_->network_remote(), + SLOT(StartServer())); + connect(this, SIGNAL(SetupServerSig()), app_->network_remote(), + SLOT(SetupServer())); // Start the server once the playlistmanager is initialized - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), - this, SLOT(StartServer())); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), this, + SLOT(StartServer())); sInstance = this; } -NetworkRemoteHelper::~NetworkRemoteHelper() { -} +NetworkRemoteHelper::~NetworkRemoteHelper() {} void NetworkRemoteHelper::StartServer() { emit SetupServerSig(); emit StartServerSig(); } -void NetworkRemoteHelper::ReloadSettings() { - emit ReloadSettingsSig(); -} +void NetworkRemoteHelper::ReloadSettings() { emit ReloadSettingsSig(); } // For using in Settingsdialog, we haven't the appication there NetworkRemoteHelper* NetworkRemoteHelper::Instance() { diff --git a/src/networkremote/networkremotehelper.h b/src/networkremote/networkremotehelper.h index 3c0943f9d..8bb36efee 100644 --- a/src/networkremote/networkremotehelper.h +++ b/src/networkremote/networkremotehelper.h @@ -6,8 +6,8 @@ #include "networkremote.h" class NetworkRemoteHelper : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: static NetworkRemoteHelper* Instance(); NetworkRemoteHelper(Application* app); @@ -15,7 +15,7 @@ public: void ReloadSettings(); -private slots: + private slots: void StartServer(); signals: @@ -23,9 +23,9 @@ signals: void StartServerSig(); void ReloadSettingsSig(); -private: + private: static NetworkRemoteHelper* sInstance; Application* app_; }; -#endif // NETWORKREMOTEHELPER_H +#endif // NETWORKREMOTEHELPER_H diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index eaed5a2e6..61347095e 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -29,22 +29,20 @@ #include #include "core/database.h" -const quint32 OutgoingDataCreator::kFileChunkSize = 100000; // in Bytes +const quint32 OutgoingDataCreator::kFileChunkSize = 100000; // in Bytes OutgoingDataCreator::OutgoingDataCreator(Application* app) - : app_(app), - aww_(false), - ultimate_reader_(new UltimateLyricsReader(this)), - fetcher_(new SongInfoFetcher(this)) -{ + : app_(app), + aww_(false), + ultimate_reader_(new UltimateLyricsReader(this)), + fetcher_(new SongInfoFetcher(this)) { // Create Keep Alive Timer keep_alive_timer_ = new QTimer(this); connect(keep_alive_timer_, SIGNAL(timeout()), this, SLOT(SendKeepAlive())); keep_alive_timeout_ = 10000; } -OutgoingDataCreator::~OutgoingDataCreator() { -} +OutgoingDataCreator::~OutgoingDataCreator() {} void OutgoingDataCreator::SetClients(QList* clients) { clients_ = clients; @@ -54,17 +52,18 @@ void OutgoingDataCreator::SetClients(QList* clients) { // Create the song position timer track_position_timer_ = new QTimer(this); - connect(track_position_timer_, SIGNAL(timeout()), this, SLOT(UpdateTrackPosition())); + connect(track_position_timer_, SIGNAL(timeout()), this, + SLOT(UpdateTrackPosition())); // Parse the ultimate lyrics xml file ultimate_reader_->SetThread(this->thread()); provider_list_ = ultimate_reader_->Parse(":lyrics/ultimate_providers.xml"); // Set up the lyrics parser - connect(fetcher_, SIGNAL(ResultReady(int,SongInfoFetcher::Result)), - SLOT(SendLyrics(int,SongInfoFetcher::Result))); + connect(fetcher_, SIGNAL(ResultReady(int, SongInfoFetcher::Result)), + SLOT(SendLyrics(int, SongInfoFetcher::Result))); - foreach (SongInfoProvider* provider, provider_list_) { + foreach(SongInfoProvider * provider, provider_list_) { fetcher_->AddProvider(provider); } @@ -99,32 +98,34 @@ void OutgoingDataCreator::CheckEnabledProviders() { << "darklyrics.com"; QVariant saved_order = s.value("search_order", default_order); - foreach (const QVariant& name, saved_order.toList()) { + foreach(const QVariant & name, saved_order.toList()) { SongInfoProvider* provider = ProviderByName(name.toString()); - if (provider) - ordered_providers << provider; + if (provider) ordered_providers << provider; } // Enable all the providers in the list and rank them int relevance = 100; - foreach (SongInfoProvider* provider, ordered_providers) { + foreach(SongInfoProvider * provider, ordered_providers) { provider->set_enabled(true); qobject_cast(provider)->set_relevance(relevance--); } - // Any lyric providers we don't have in ordered_providers are considered disabled - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (qobject_cast(provider) && !ordered_providers.contains(provider)) { + // Any lyric providers we don't have in ordered_providers are considered + // disabled + foreach(SongInfoProvider * provider, fetcher_->providers()) { + if (qobject_cast(provider) && + !ordered_providers.contains(provider)) { provider->set_enabled(false); } } } -SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) const { - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { - if (lyrics->name() == name) - return provider; +SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) + const { + foreach(SongInfoProvider * provider, fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { + if (lyrics->name() == name) return provider; } } return nullptr; @@ -168,23 +169,29 @@ void OutgoingDataCreator::SendClementineInfo() { msg.mutable_response_clementine_info(); SetEngineState(info); - QString version = QString("%1 %2").arg(QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); + QString version = + QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); info->set_version(version.toAscii()); SendDataToClients(&msg); } -void OutgoingDataCreator::SetEngineState(pb::remote::ResponseClementineInfo* msg) { - switch(app_->player()->GetState()) { - case Engine::Idle: msg->set_state(pb::remote::Idle); - break; +void OutgoingDataCreator::SetEngineState( + pb::remote::ResponseClementineInfo* msg) { + switch (app_->player()->GetState()) { + case Engine::Idle: + msg->set_state(pb::remote::Idle); + break; case Engine::Error: - case Engine::Empty: msg->set_state(pb::remote::Empty); - break; - case Engine::Playing: msg->set_state(pb::remote::Playing); - break; - case Engine::Paused: msg->set_state(pb::remote::Paused); - break; + case Engine::Empty: + msg->set_state(pb::remote::Empty); + break; + case Engine::Playing: + msg->set_state(pb::remote::Playing); + break; + case Engine::Paused: + msg->set_state(pb::remote::Paused); + break; } } @@ -200,11 +207,10 @@ void OutgoingDataCreator::SendAllPlaylists() { pb::remote::ResponsePlaylists* playlists = msg.mutable_response_playlists(); // Get all playlists, even ones that are hidden in the UI. - foreach (const PlaylistBackend::Playlist& p, - app_->playlist_backend()->GetAllPlaylists()) { + foreach(const PlaylistBackend::Playlist & p, + app_->playlist_backend()->GetAllPlaylists()) { bool playlist_open = app_->playlist_manager()->IsPlaylistOpen(p.id); - int item_count = playlist_open ? - app_playlists.at(p.id)->rowCount() : 0; + int item_count = playlist_open ? app_playlists.at(p.id)->rowCount() : 0; // Create a new playlist pb::remote::Playlist* playlist = playlists->add_playlist(); @@ -230,7 +236,7 @@ void OutgoingDataCreator::SendAllActivePlaylists() { pb::remote::ResponsePlaylists* playlists = msg.mutable_response_playlists(); QListIterator it(app_playlists); - while(it.hasNext()) { + while (it.hasNext()) { // Get the next Playlist Playlist* p = it.next(); QString playlist_name = app_->playlist_manager()->GetPlaylistName(p->id()); @@ -258,17 +264,14 @@ void OutgoingDataCreator::ActiveChanged(Playlist* playlist) { SendDataToClients(&msg); } -void OutgoingDataCreator::PlaylistAdded(int id, const QString& name, bool favorite) { +void OutgoingDataCreator::PlaylistAdded(int id, const QString& name, + bool favorite) { SendAllActivePlaylists(); } -void OutgoingDataCreator::PlaylistDeleted(int id) { - SendAllActivePlaylists(); -} +void OutgoingDataCreator::PlaylistDeleted(int id) { SendAllActivePlaylists(); } -void OutgoingDataCreator::PlaylistClosed(int id) { - SendAllActivePlaylists(); -} +void OutgoingDataCreator::PlaylistClosed(int id) { SendAllActivePlaylists(); } void OutgoingDataCreator::PlaylistRenamed(int id, const QString& new_name) { SendAllActivePlaylists(); @@ -313,9 +316,11 @@ void OutgoingDataCreator::SendFirstData(bool send_playlist_songs) { SendDataToClients(&msg); } -void OutgoingDataCreator::CurrentSongChanged(const Song& song, const QString& uri, const QImage& img) { - current_song_ = song; - current_uri_ = uri; +void OutgoingDataCreator::CurrentSongChanged(const Song& song, + const QString& uri, + const QImage& img) { + current_song_ = song; + current_uri_ = uri; if (!aww_) { current_image_ = img; @@ -331,27 +336,26 @@ void OutgoingDataCreator::SendSongMetadata() { // If there is no song, create an empty node, otherwise fill it with data int i = app_->playlist_manager()->active()->current_row(); - CreateSong( - current_song_, current_image_, i, - msg.mutable_response_current_metadata()->mutable_song_metadata()); + CreateSong(current_song_, current_image_, i, + msg.mutable_response_current_metadata()->mutable_song_metadata()); SendDataToClients(&msg); } -void OutgoingDataCreator::CreateSong( - const Song& song, - const QImage& art, - const int index, - pb::remote::SongMetadata* song_metadata) { +void OutgoingDataCreator::CreateSong(const Song& song, const QImage& art, + const int index, + pb::remote::SongMetadata* song_metadata) { if (song.is_valid()) { song_metadata->set_id(song.id()); song_metadata->set_index(index); song_metadata->set_title(DataCommaSizeFromQString(song.PrettyTitle())); song_metadata->set_artist(DataCommaSizeFromQString(song.artist())); song_metadata->set_album(DataCommaSizeFromQString(song.album())); - song_metadata->set_albumartist(DataCommaSizeFromQString(song.albumartist())); + song_metadata->set_albumartist( + DataCommaSizeFromQString(song.albumartist())); song_metadata->set_length(song.length_nanosec() / kNsecPerSec); - song_metadata->set_pretty_length(DataCommaSizeFromQString(song.PrettyLength())); + song_metadata->set_pretty_length( + DataCommaSizeFromQString(song.PrettyLength())); song_metadata->set_genre(DataCommaSizeFromQString(song.genre())); song_metadata->set_pretty_year(DataCommaSizeFromQString(song.PrettyYear())); song_metadata->set_track(song.track()); @@ -384,7 +388,6 @@ void OutgoingDataCreator::CreateSong( } } - void OutgoingDataCreator::VolumeChanged(int volume) { // Create the message pb::remote::Message msg; @@ -396,7 +399,7 @@ void OutgoingDataCreator::VolumeChanged(int volume) { void OutgoingDataCreator::SendPlaylistSongs(int id) { // Get the PlaylistQByteArray(data.data(), data.size() Playlist* playlist = app_->playlist_manager()->playlist(id); - if(!playlist) { + if (!playlist) { qLog(Info) << "Could not find playlist with id = " << id; return; } @@ -407,7 +410,7 @@ void OutgoingDataCreator::SendPlaylistSongs(int id) { // Create the Response message pb::remote::ResponsePlaylistSongs* pb_response_playlist_songs = - msg.mutable_response_playlist_songs(); + msg.mutable_response_playlist_songs(); // Create a new playlist pb::remote::Playlist* pb_playlist = @@ -419,8 +422,8 @@ void OutgoingDataCreator::SendPlaylistSongs(int id) { SongList song_list = playlist->GetAllSongs(); QListIterator it(song_list); QImage null_img; - while(it.hasNext()) { - Song song = it.next(); + while (it.hasNext()) { + Song song = it.next(); pb::remote::SongMetadata* pb_song = pb_response_playlist_songs->add_songs(); CreateSong(song, null_img, index, pb_song); ++index; @@ -445,18 +448,22 @@ void OutgoingDataCreator::StateChanged(Engine::State state) { pb::remote::Message msg; switch (state) { - case Engine::Playing: msg.set_type(pb::remote::PLAY); - track_position_timer_->start(1000); - break; - case Engine::Paused: msg.set_type(pb::remote::PAUSE); - track_position_timer_->stop(); - break; - case Engine::Empty: msg.set_type(pb::remote::STOP); // Empty is called when player stopped - track_position_timer_->stop(); - break; - default: msg.set_type(pb::remote::STOP); - track_position_timer_->stop(); - break; + case Engine::Playing: + msg.set_type(pb::remote::PLAY); + track_position_timer_->start(1000); + break; + case Engine::Paused: + msg.set_type(pb::remote::PAUSE); + track_position_timer_->stop(); + break; + case Engine::Empty: + msg.set_type(pb::remote::STOP); // Empty is called when player stopped + track_position_timer_->stop(); + break; + default: + msg.set_type(pb::remote::STOP); + track_position_timer_->stop(); + break; }; SendDataToClients(&msg); @@ -467,18 +474,18 @@ void OutgoingDataCreator::SendRepeatMode(PlaylistSequence::RepeatMode mode) { msg.set_type(pb::remote::REPEAT); switch (mode) { - case PlaylistSequence::Repeat_Off: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Off); - break; - case PlaylistSequence::Repeat_Track: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Track); - break; - case PlaylistSequence::Repeat_Album: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Album); - break; - case PlaylistSequence::Repeat_Playlist: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Playlist); - break; + case PlaylistSequence::Repeat_Off: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Off); + break; + case PlaylistSequence::Repeat_Track: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Track); + break; + case PlaylistSequence::Repeat_Album: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Album); + break; + case PlaylistSequence::Repeat_Playlist: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Playlist); + break; } SendDataToClients(&msg); @@ -489,18 +496,18 @@ void OutgoingDataCreator::SendShuffleMode(PlaylistSequence::ShuffleMode mode) { msg.set_type(pb::remote::SHUFFLE); switch (mode) { - case PlaylistSequence::Shuffle_Off: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Off); - break; - case PlaylistSequence::Shuffle_All: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_All); - break; - case PlaylistSequence::Shuffle_InsideAlbum: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_InsideAlbum); - break; - case PlaylistSequence::Shuffle_Albums: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Albums); - break; + case PlaylistSequence::Shuffle_Off: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Off); + break; + case PlaylistSequence::Shuffle_All: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_All); + break; + case PlaylistSequence::Shuffle_InsideAlbum: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_InsideAlbum); + break; + case PlaylistSequence::Shuffle_Albums: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Albums); + break; } SendDataToClients(&msg); @@ -517,9 +524,10 @@ void OutgoingDataCreator::UpdateTrackPosition() { msg.set_type(pb::remote::UPDATE_TRACK_POSITION); int position = std::floor( - float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); + float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); - if (app_->player()->engine()->position_nanosec() > current_song_.length_nanosec()) + if (app_->player()->engine()->position_nanosec() > + current_song_.length_nanosec()) position = last_track_position_; msg.mutable_response_update_track_position()->set_position(position); @@ -532,24 +540,24 @@ void OutgoingDataCreator::UpdateTrackPosition() { void OutgoingDataCreator::DisconnectAllClients() { pb::remote::Message msg; msg.set_type(pb::remote::DISCONNECT); - msg.mutable_response_disconnect()->set_reason_disconnect(pb::remote::Server_Shutdown); + msg.mutable_response_disconnect()->set_reason_disconnect( + pb::remote::Server_Shutdown); SendDataToClients(&msg); } -void OutgoingDataCreator::GetLyrics() { - fetcher_->FetchInfo(current_song_); -} +void OutgoingDataCreator::GetLyrics() { fetcher_->FetchInfo(current_song_); } -void OutgoingDataCreator::SendLyrics(int id, const SongInfoFetcher::Result& result) { +void OutgoingDataCreator::SendLyrics(int id, + const SongInfoFetcher::Result& result) { pb::remote::Message msg; msg.set_type(pb::remote::LYRICS); pb::remote::ResponseLyrics* response = msg.mutable_response_lyrics(); - foreach (const CollapsibleInfoPane::Data& data, result.info_) { + foreach(const CollapsibleInfoPane::Data & data, result.info_) { // If the size is zero, do not send the provider - UltimateLyricsLyric* editor = qobject_cast(data.content_object_); - if (editor->toPlainText().length() == 0) - continue; + UltimateLyricsLyric* editor = + qobject_cast(data.content_object_); + if (editor->toPlainText().length() == 0) continue; pb::remote::Lyric* lyric = response->mutable_lyrics()->Add(); @@ -562,36 +570,35 @@ void OutgoingDataCreator::SendLyrics(int id, const SongInfoFetcher::Result& resu results_.take(id); } -void OutgoingDataCreator::SendSongs(const pb::remote::RequestDownloadSongs &request, - RemoteClient* client) { +void OutgoingDataCreator::SendSongs( + const pb::remote::RequestDownloadSongs& request, RemoteClient* client) { if (!download_queue_.contains(client)) { - download_queue_.insert(client, QQueue() ); + download_queue_.insert(client, QQueue()); } switch (request.download_item()) { - case pb::remote::CurrentItem: { - DownloadItem item(current_song_, 1 , 1); - download_queue_[client].append(item); - break; - } - case pb::remote::ItemAlbum: - SendAlbum(client, current_song_); - break; - case pb::remote::APlaylist: - SendPlaylist(client, request.playlist_id()); - break; - default: - break; + case pb::remote::CurrentItem: { + DownloadItem item(current_song_, 1, 1); + download_queue_[client].append(item); + break; + } + case pb::remote::ItemAlbum: + SendAlbum(client, current_song_); + break; + case pb::remote::APlaylist: + SendPlaylist(client, request.playlist_id()); + break; + default: + break; } // Send first file OfferNextSong(client); } -void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { - if (!download_queue_.contains(client)) - return; +void OutgoingDataCreator::OfferNextSong(RemoteClient* client) { + if (!download_queue_.contains(client)) return; pb::remote::Message msg; @@ -603,7 +610,8 @@ void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { DownloadItem item = download_queue_[client].head(); msg.set_type(pb::remote::SONG_FILE_CHUNK); - pb::remote::ResponseSongFileChunk* chunk = msg.mutable_response_song_file_chunk(); + pb::remote::ResponseSongFileChunk* chunk = + msg.mutable_response_song_file_chunk(); // Song offer is chunk no 0 chunk->set_chunk_count(0); @@ -611,19 +619,17 @@ void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { chunk->set_file_count(item.song_count_); chunk->set_file_number(item.song_no_); - CreateSong(item.song_, QImage() , -1, - chunk->mutable_song_metadata()); + CreateSong(item.song_, QImage(), -1, chunk->mutable_song_metadata()); } client->SendData(&msg); } -void OutgoingDataCreator::ResponseSongOffer(RemoteClient *client, bool accepted) { - if (!download_queue_.contains(client)) - return; +void OutgoingDataCreator::ResponseSongOffer(RemoteClient* client, + bool accepted) { + if (!download_queue_.contains(client)) return; - if (download_queue_.value(client).isEmpty()) - return; + if (download_queue_.value(client).isEmpty()) return; // Get the item and send the single song DownloadItem item = download_queue_[client].dequeue(); @@ -634,11 +640,10 @@ void OutgoingDataCreator::ResponseSongOffer(RemoteClient *client, bool accepted) OfferNextSong(client); } -void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, +void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song& song, int song_no, int song_count) { // Only local files!!! - if (!(song.url().scheme() == "file")) - return; + if (!(song.url().scheme() == "file")) return; // Open the file QFile file(song.url().toLocalFile()); @@ -651,13 +656,14 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, QByteArray data; pb::remote::Message msg; - pb::remote::ResponseSongFileChunk* chunk = msg.mutable_response_song_file_chunk(); + pb::remote::ResponseSongFileChunk* chunk = + msg.mutable_response_song_file_chunk(); msg.set_type(pb::remote::SONG_FILE_CHUNK); QImage null_image; // Calculate the number of chunks - int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); + int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); int chunk_number = 1; while (!file.atEnd()) { @@ -678,8 +684,8 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, if (chunk_number == 1) { int i = app_->playlist_manager()->active()->current_row(); CreateSong( - song, null_image, i, - msg.mutable_response_song_file_chunk()->mutable_song_metadata()); + song, null_image, i, + msg.mutable_response_song_file_chunk()->mutable_song_metadata()); } // Send data directly to the client @@ -695,22 +701,21 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, file.close(); } -void OutgoingDataCreator::SendAlbum(RemoteClient *client, const Song &song) { +void OutgoingDataCreator::SendAlbum(RemoteClient* client, const Song& song) { // No streams! - if (song.url().scheme() != "file") - return; + if (song.url().scheme() != "file") return; SongList album = app_->library_backend()->GetSongsByAlbum(song.album()); - foreach (Song s, album) { - DownloadItem item(s, album.indexOf(s)+1, album.size()); + foreach(Song s, album) { + DownloadItem item(s, album.indexOf(s) + 1, album.size()); download_queue_[client].append(item); } } -void OutgoingDataCreator::SendPlaylist(RemoteClient *client, int playlist_id) { +void OutgoingDataCreator::SendPlaylist(RemoteClient* client, int playlist_id) { Playlist* playlist = app_->playlist_manager()->playlist(playlist_id); - if(!playlist) { + if (!playlist) { qLog(Info) << "Could not find playlist with id = " << playlist_id; return; } @@ -718,22 +723,22 @@ void OutgoingDataCreator::SendPlaylist(RemoteClient *client, int playlist_id) { // Count the local songs int count = 0; - foreach (Song s, song_list) { + foreach(Song s, song_list) { if (s.url().scheme() == "file") { count++; } } - foreach (Song s, song_list) { + foreach(Song s, song_list) { // Only local files! if (s.url().scheme() == "file") { - DownloadItem item(s, song_list.indexOf(s)+1, count); + DownloadItem item(s, song_list.indexOf(s) + 1, count); download_queue_[client].append(item); } } } -void OutgoingDataCreator::SendLibrary(RemoteClient *client) { +void OutgoingDataCreator::SendLibrary(RemoteClient* client) { // Get a temporary file name QString temp_file_name = Utilities::GetTemporaryFileName(); @@ -744,7 +749,10 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { app_->database()->AttachDatabaseOnDbConnection("songs_export", adb, db); // Copy the content of the song table to this temporary database - QSqlQuery q(QString("create table songs_export.songs as SELECT * FROM songs where unavailable = 0;"), db); + QSqlQuery q(QString( + "create table songs_export.songs as SELECT * FROM songs " + "where unavailable = 0;"), + db); if (app_->database()->CheckErrors(q)) return; @@ -762,11 +770,12 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { QByteArray data; pb::remote::Message msg; - pb::remote::ResponseLibraryChunk* chunk = msg.mutable_response_library_chunk(); + pb::remote::ResponseLibraryChunk* chunk = + msg.mutable_response_library_chunk(); msg.set_type(pb::remote::LIBRARY_CHUNK); // Calculate the number of chunks - int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); + int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); int chunk_number = 1; while (!file.atEnd()) { @@ -794,9 +803,7 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { file.remove(); } -void OutgoingDataCreator::EnableKittens(bool aww) { - aww_ = aww; -} +void OutgoingDataCreator::EnableKittens(bool aww) { aww_ = aww; } void OutgoingDataCreator::SendKitten(const QImage& kitten) { if (aww_) { @@ -804,4 +811,3 @@ void OutgoingDataCreator::SendKitten(const QImage& kitten) { SendSongMetadata(); } } - diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index fb243a3db..5a2083727 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -33,15 +33,13 @@ struct DownloadItem { Song song_; int song_no_; int song_count_; - DownloadItem(Song s, int no, int count) : - song_(s), - song_no_(no), - song_count_(count) { } + DownloadItem(Song s, int no, int count) + : song_(s), song_no_(no), song_count_(count) {} }; class OutgoingDataCreator : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: OutgoingDataCreator(Application* app); ~OutgoingDataCreator(); @@ -49,7 +47,7 @@ public: void SetClients(QList* clients); -public slots: + public slots: void SendClementineInfo(); void SendAllPlaylists(); void SendAllActivePlaylists(); @@ -62,7 +60,8 @@ public slots: void PlaylistClosed(int id); void PlaylistRenamed(int id, const QString& new_name); void ActiveChanged(Playlist*); - void CurrentSongChanged(const Song& song, const QString& uri, const QImage& img); + void CurrentSongChanged(const Song& song, const QString& uri, + const QImage& img); void SendSongMetadata(); void StateChanged(Engine::State); void SendKeepAlive(); @@ -72,13 +71,14 @@ public slots: void DisconnectAllClients(); void GetLyrics(); void SendLyrics(int id, const SongInfoFetcher::Result& result); - void SendSongs(const pb::remote::RequestDownloadSongs& request, RemoteClient* client); + void SendSongs(const pb::remote::RequestDownloadSongs& request, + RemoteClient* client); void ResponseSongOffer(RemoteClient* client, bool accepted); void SendLibrary(RemoteClient* client); void EnableKittens(bool aww); void SendKitten(const QImage& kitten); -private: + private: Application* app_; QList* clients_; Song current_song_; @@ -99,17 +99,15 @@ private: void SendDataToClients(pb::remote::Message* msg); void SetEngineState(pb::remote::ResponseClementineInfo* msg); - void CreateSong( - const Song& song, - const QImage& art, - const int index, - pb::remote::SongMetadata* song_metadata); + void CreateSong(const Song& song, const QImage& art, const int index, + pb::remote::SongMetadata* song_metadata); void CheckEnabledProviders(); SongInfoProvider* ProviderByName(const QString& name) const; - void SendSingleSong(RemoteClient* client, const Song& song, int song_no, int song_count); + void SendSingleSong(RemoteClient* client, const Song& song, int song_no, + int song_count); void SendAlbum(RemoteClient* client, const Song& song); void SendPlaylist(RemoteClient* client, int playlist_id); void OfferNextSong(RemoteClient* client); }; -#endif // OUTGOINGDATACREATOR_H +#endif // OUTGOINGDATACREATOR_H diff --git a/src/networkremote/remoteclient.cpp b/src/networkremote/remoteclient.cpp index 6079828c4..cd05bdade 100644 --- a/src/networkremote/remoteclient.cpp +++ b/src/networkremote/remoteclient.cpp @@ -24,10 +24,7 @@ #include RemoteClient::RemoteClient(Application* app, QTcpSocket* client) - : app_(app), - downloader_(false), - client_(client) -{ + : app_(app), downloader_(false), client_(client) { // Open the buffer buffer_.setData(QByteArray()); buffer_.open(QIODevice::ReadWrite); @@ -41,7 +38,7 @@ RemoteClient::RemoteClient(Application* app, QTcpSocket* client) s.beginGroup(NetworkRemote::kSettingsGroup); use_auth_code_ = s.value("use_auth_code", false).toBool(); - auth_code_ = s.value("auth_code", 0).toInt(); + auth_code_ = s.value("auth_code", 0).toInt(); allow_downloads_ = s.value("allow_downloads", false).toBool(); s.endGroup(); @@ -56,9 +53,7 @@ RemoteClient::~RemoteClient() { client_->waitForDisconnected(2000); } -void RemoteClient::setDownloader(bool downloader) { - downloader_ = downloader; -} +void RemoteClient::setDownloader(bool downloader) { downloader_ = downloader; } void RemoteClient::IncomingData() { while (client_->bytesAvailable()) { @@ -80,8 +75,7 @@ void RemoteClient::IncomingData() { } // Read some of the message - buffer_.write( - client_->read(expected_length_ - buffer_.size())); + buffer_.write(client_->read(expected_length_ - buffer_.size())); // Did we get everything? if (buffer_.size() == expected_length_) { @@ -97,7 +91,7 @@ void RemoteClient::IncomingData() { } } -void RemoteClient::ParseMessage(const QByteArray &data) { +void RemoteClient::ParseMessage(const QByteArray& data) { pb::remote::Message msg; if (!msg.ParseFromArray(data.constData(), data.size())) { qLog(Info) << "Couldn't parse data"; @@ -153,7 +147,7 @@ void RemoteClient::DisconnectClient(pb::remote::ReasonDisconnect reason) { } // Sends data to client without check if authenticated -void RemoteClient::SendDataToClient(pb::remote::Message *msg) { +void RemoteClient::SendDataToClient(pb::remote::Message* msg) { // Set the default version msg->set_version(msg->default_instance().version()); @@ -180,13 +174,11 @@ void RemoteClient::SendDataToClient(pb::remote::Message *msg) { } } -void RemoteClient::SendData(pb::remote::Message *msg) { +void RemoteClient::SendData(pb::remote::Message* msg) { // Check if client is authenticated before sending the data if (authenticated_) { SendDataToClient(msg); } } -QAbstractSocket::SocketState RemoteClient::State() { - return client_->state(); -} +QAbstractSocket::SocketState RemoteClient::State() { return client_->state(); } diff --git a/src/networkremote/remoteclient.h b/src/networkremote/remoteclient.h index 1acf6ffef..b1812b571 100644 --- a/src/networkremote/remoteclient.h +++ b/src/networkremote/remoteclient.h @@ -9,8 +9,8 @@ #include "remotecontrolmessages.pb.h" class RemoteClient : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: RemoteClient(Application* app, QTcpSocket* client); ~RemoteClient(); @@ -21,13 +21,13 @@ public: bool isDownloader() { return downloader_; } void DisconnectClient(pb::remote::ReasonDisconnect reason); -private slots: + private slots: void IncomingData(); signals: void Parse(const pb::remote::Message& msg); -private: + private: void ParseMessage(const QByteArray& data); // Sends data to client without check if authenticated @@ -47,4 +47,4 @@ private: QBuffer buffer_; }; -#endif // REMOTECLIENT_H +#endif // REMOTECLIENT_H diff --git a/src/networkremote/tinysvcmdns.cpp b/src/networkremote/tinysvcmdns.cpp index 3c438178a..2b102e5cc 100644 --- a/src/networkremote/tinysvcmdns.cpp +++ b/src/networkremote/tinysvcmdns.cpp @@ -18,32 +18,32 @@ void TinySVCMDNS::CreateMdnsd(uint32_t ipv4, QString ipv6) { mdnsd* mdnsd = mdnsd_start_bind(ipv4); // Set our hostname - mdnsd_set_hostname( - mdnsd, - QString(host + ".local").toUtf8().constData(), - ipv4); + mdnsd_set_hostname(mdnsd, QString(host + ".local").toUtf8().constData(), + ipv4); // Add to the list mdnsd_.append(mdnsd); } -TinySVCMDNS::TinySVCMDNS() { +TinySVCMDNS::TinySVCMDNS() { // Get all network interfaces - QList network_interfaces = QNetworkInterface::allInterfaces(); - foreach (QNetworkInterface network_interface, network_interfaces) { + QList network_interfaces = + QNetworkInterface::allInterfaces(); + foreach(QNetworkInterface network_interface, network_interfaces) { // Only use up and non loopback interfaces - if (network_interface.flags().testFlag(network_interface.IsUp) - && !network_interface.flags().testFlag(network_interface.IsLoopBack)) - { + if (network_interface.flags().testFlag(network_interface.IsUp) && + !network_interface.flags().testFlag(network_interface.IsLoopBack)) { uint32_t ipv4 = 0; QString ipv6; qLog(Debug) << "Interface" << network_interface.humanReadableName(); - - // Now check all network addresses for this device - QList network_address_entries = network_interface.addressEntries(); - foreach (QNetworkAddressEntry network_address_entry, network_address_entries) { + // Now check all network addresses for this device + QList network_address_entries = + network_interface.addressEntries(); + + foreach(QNetworkAddressEntry network_address_entry, + network_address_entries) { QHostAddress host_address = network_address_entry.ip(); if (host_address.protocol() == QAbstractSocket::IPv4Protocol) { ipv4 = qToBigEndian(host_address.toIPv4Address()); @@ -53,7 +53,7 @@ TinySVCMDNS::TinySVCMDNS() { qLog(Debug) << " ipv6:" << host_address.toString(); } } - + // Now start the service CreateMdnsd(ipv4, ipv6); } @@ -61,30 +61,18 @@ TinySVCMDNS::TinySVCMDNS() { } TinySVCMDNS::~TinySVCMDNS() { - foreach(mdnsd* mdnsd, mdnsd_) { - mdnsd_stop(mdnsd); - } + foreach(mdnsd * mdnsd, mdnsd_) { mdnsd_stop(mdnsd); } } -void TinySVCMDNS::PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) { +void TinySVCMDNS::PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) { // Some pointless text, so tinymDNS publishes the service correctly. - const char* txt[] = { - "cat=nyan", - nullptr - }; - - foreach(mdnsd* mdnsd, mdnsd_) { - mdnsd_register_svc( - mdnsd, - name.constData(), - QString(type + ".local").toUtf8().constData(), - port, - nullptr, - txt); + const char* txt[] = {"cat=nyan", nullptr}; + + foreach(mdnsd * mdnsd, mdnsd_) { + mdnsd_register_svc(mdnsd, name.constData(), + QString(type + ".local").toUtf8().constData(), port, + nullptr, txt); } } diff --git a/src/networkremote/tinysvcmdns.h b/src/networkremote/tinysvcmdns.h index 9d96beebd..a7dc16cb9 100644 --- a/src/networkremote/tinysvcmdns.h +++ b/src/networkremote/tinysvcmdns.h @@ -12,11 +12,8 @@ class TinySVCMDNS : public Zeroconf { virtual ~TinySVCMDNS(); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); private: void CreateMdnsd(uint32_t ipv4, QString ipv6); diff --git a/src/networkremote/zeroconf.cpp b/src/networkremote/zeroconf.cpp index a67c810c0..f46b73d79 100644 --- a/src/networkremote/zeroconf.cpp +++ b/src/networkremote/zeroconf.cpp @@ -18,21 +18,19 @@ Zeroconf* Zeroconf::sInstance = nullptr; -Zeroconf::~Zeroconf() { - -} +Zeroconf::~Zeroconf() {} Zeroconf* Zeroconf::GetZeroconf() { if (!sInstance) { - #ifdef HAVE_DBUS - sInstance = new Avahi; - #endif // HAVE_DBUS - #ifdef Q_OS_DARWIN - sInstance = new Bonjour; - #endif - #ifdef Q_OS_WIN32 - sInstance = new TinySVCMDNS; - #endif +#ifdef HAVE_DBUS + sInstance = new Avahi; +#endif // HAVE_DBUS +#ifdef Q_OS_DARWIN + sInstance = new Bonjour; +#endif +#ifdef Q_OS_WIN32 + sInstance = new TinySVCMDNS; +#endif } return sInstance; @@ -41,7 +39,7 @@ Zeroconf* Zeroconf::GetZeroconf() { QByteArray Zeroconf::TruncateName(const QString& name) { QTextCodec* codec = QTextCodec::codecForName("UTF-8"); QByteArray truncated_utf8; - foreach (QChar c, name) { + foreach(QChar c, name) { QByteArray rendered = codec->fromUnicode(&c, 1, nullptr); if (truncated_utf8.size() + rendered.size() >= 63) { break; @@ -53,15 +51,8 @@ QByteArray Zeroconf::TruncateName(const QString& name) { return truncated_utf8; } -void Zeroconf::Publish( - const QString& domain, - const QString& type, - const QString& name, - quint16 port) { +void Zeroconf::Publish(const QString& domain, const QString& type, + const QString& name, quint16 port) { QByteArray truncated_name = TruncateName(name); - PublishInternal( - domain, - type, - truncated_name, - port); + PublishInternal(domain, type, truncated_name, port); } diff --git a/src/networkremote/zeroconf.h b/src/networkremote/zeroconf.h index 047dd51aa..e81704629 100644 --- a/src/networkremote/zeroconf.h +++ b/src/networkremote/zeroconf.h @@ -7,11 +7,8 @@ class Zeroconf { public: virtual ~Zeroconf(); - void Publish( - const QString& domain, - const QString& type, - const QString& name, - quint16 port); + void Publish(const QString& domain, const QString& type, const QString& name, + quint16 port); static Zeroconf* GetZeroconf(); @@ -19,11 +16,8 @@ class Zeroconf { static QByteArray TruncateName(const QString& name); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) = 0; + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) = 0; private: static Zeroconf* sInstance; diff --git a/src/playlist/dynamicplaylistcontrols.cpp b/src/playlist/dynamicplaylistcontrols.cpp index ca29687b5..8c2a30bcd 100644 --- a/src/playlist/dynamicplaylistcontrols.cpp +++ b/src/playlist/dynamicplaylistcontrols.cpp @@ -18,10 +18,8 @@ #include "dynamicplaylistcontrols.h" #include "ui_dynamicplaylistcontrols.h" -DynamicPlaylistControls::DynamicPlaylistControls(QWidget *parent) - : QWidget(parent), - ui_(new Ui_DynamicPlaylistControls) -{ +DynamicPlaylistControls::DynamicPlaylistControls(QWidget* parent) + : QWidget(parent), ui_(new Ui_DynamicPlaylistControls) { ui_->setupUi(this); connect(ui_->expand, SIGNAL(clicked()), SIGNAL(Expand())); @@ -29,6 +27,4 @@ DynamicPlaylistControls::DynamicPlaylistControls(QWidget *parent) connect(ui_->off, SIGNAL(clicked()), SIGNAL(TurnOff())); } -DynamicPlaylistControls::~DynamicPlaylistControls() { - delete ui_; -} +DynamicPlaylistControls::~DynamicPlaylistControls() { delete ui_; } diff --git a/src/playlist/dynamicplaylistcontrols.h b/src/playlist/dynamicplaylistcontrols.h index e44b5d6d5..9ef5e521f 100644 --- a/src/playlist/dynamicplaylistcontrols.h +++ b/src/playlist/dynamicplaylistcontrols.h @@ -25,7 +25,7 @@ class Ui_DynamicPlaylistControls; class DynamicPlaylistControls : public QWidget { Q_OBJECT -public: + public: DynamicPlaylistControls(QWidget* parent = 0); ~DynamicPlaylistControls(); @@ -34,8 +34,8 @@ signals: void Repopulate(); void TurnOff(); -private: + private: Ui_DynamicPlaylistControls* ui_; }; -#endif // DYNAMICPLAYLISTCONTROLS_H +#endif // DYNAMICPLAYLISTCONTROLS_H diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 5799b688a..113973894 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -92,46 +92,44 @@ const char* Playlist::kSettingsGroup = "Playlist"; const int Playlist::kUndoStackSize = 20; const int Playlist::kUndoItemLimit = 500; -Playlist::Playlist(PlaylistBackend* backend, - TaskManager* task_manager, - LibraryBackend* library, - int id, - const QString& special_type, - bool favorite, - QObject *parent) - : QAbstractListModel(parent), - is_loading_(false), - proxy_(new PlaylistFilter(this)), - queue_(new Queue(this)), - backend_(backend), - task_manager_(task_manager), - library_(library), - id_(id), - favorite_(favorite), - current_is_paused_(false), - current_virtual_index_(-1), - is_shuffled_(false), - scrobble_point_(-1), - lastfm_status_(LastFM_New), - have_incremented_playcount_(false), - playlist_sequence_(nullptr), - ignore_sorting_(false), - undo_stack_(new QUndoStack(this)), - special_type_(special_type) -{ +Playlist::Playlist(PlaylistBackend* backend, TaskManager* task_manager, + LibraryBackend* library, int id, const QString& special_type, + bool favorite, QObject* parent) + : QAbstractListModel(parent), + is_loading_(false), + proxy_(new PlaylistFilter(this)), + queue_(new Queue(this)), + backend_(backend), + task_manager_(task_manager), + library_(library), + id_(id), + favorite_(favorite), + current_is_paused_(false), + current_virtual_index_(-1), + is_shuffled_(false), + scrobble_point_(-1), + lastfm_status_(LastFM_New), + have_incremented_playcount_(false), + playlist_sequence_(nullptr), + ignore_sorting_(false), + undo_stack_(new QUndoStack(this)), + special_type_(special_type) { undo_stack_->setUndoLimit(kUndoStackSize); - connect(this, SIGNAL(rowsInserted(const QModelIndex&, int, int)), SIGNAL(PlaylistChanged())); - connect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), SIGNAL(PlaylistChanged())); + connect(this, SIGNAL(rowsInserted(const QModelIndex&, int, int)), + SIGNAL(PlaylistChanged())); + connect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), + SIGNAL(PlaylistChanged())); Restore(); proxy_->setSourceModel(this); queue_->setSourceModel(this); - connect(queue_, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - SLOT(TracksAboutToBeDequeued(QModelIndex,int,int))); - connect(queue_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(TracksDequeued())); + connect(queue_, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + SLOT(TracksAboutToBeDequeued(QModelIndex, int, int))); + connect(queue_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(TracksDequeued())); connect(queue_, SIGNAL(rowsInserted(const QModelIndex&, int, int)), SLOT(TracksEnqueued(const QModelIndex&, int, int))); @@ -146,24 +144,21 @@ Playlist::~Playlist() { library_items_by_id_.clear(); } -template -void Playlist::InsertSongItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +template +void Playlist::InsertSongItems(const SongList& songs, int pos, bool play_now, + bool enqueue) { PlaylistItemList items; - foreach (const Song& song, songs) { - items << PlaylistItemPtr(new T(song)); - } + foreach(const Song & song, songs) { items << PlaylistItemPtr(new T(song)); } InsertItems(items, pos, play_now, enqueue); } QVariant Playlist::headerData(int section, Qt::Orientation, int role) const { - if (role != Qt::DisplayRole && role != Qt::ToolTipRole) - return QVariant(); + if (role != Qt::DisplayRole && role != Qt::ToolTipRole) return QVariant(); - const QString name = column_name((Playlist::Column) section); - if (!name.isEmpty()) - return name; + const QString name = column_name((Playlist::Column)section); + if (!name.isEmpty()) return name; return QVariant(); } @@ -193,10 +188,9 @@ bool Playlist::column_is_editable(Playlist::Column column) { bool Playlist::set_column_value(Song& song, Playlist::Column column, const QVariant& value) { - if (!song.IsEditable()) - return false; + if (!song.IsEditable()) return false; - switch(column) { + switch (column) { case Column_Title: song.set_title(value.toString()); break; @@ -245,7 +239,8 @@ bool Playlist::set_column_value(Song& song, Playlist::Column column, QVariant Playlist::data(const QModelIndex& index, int role) const { switch (role) { case Role_IsCurrent: - return current_item_index_.isValid() && index.row() == current_item_index_.row(); + return current_item_index_.isValid() && + index.row() == current_item_index_.row(); case Role_IsPaused: return current_is_paused_; @@ -271,37 +266,61 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { switch (index.column()) { case Column_Title: return song.PrettyTitle(); - case Column_Artist: return song.artist(); - case Column_Album: return song.album(); - case Column_Length: return song.length_nanosec(); - case Column_Track: return song.track(); - case Column_Disc: return song.disc(); - case Column_Year: return song.year(); - case Column_Genre: return song.genre(); - case Column_AlbumArtist: return song.playlist_albumartist(); - case Column_Composer: return song.composer(); - case Column_Performer: return song.performer(); - case Column_Grouping: return song.grouping(); + case Column_Artist: + return song.artist(); + case Column_Album: + return song.album(); + case Column_Length: + return song.length_nanosec(); + case Column_Track: + return song.track(); + case Column_Disc: + return song.disc(); + case Column_Year: + return song.year(); + case Column_Genre: + return song.genre(); + case Column_AlbumArtist: + return song.playlist_albumartist(); + case Column_Composer: + return song.composer(); + case Column_Performer: + return song.performer(); + case Column_Grouping: + return song.grouping(); - case Column_Rating: return song.rating(); - case Column_PlayCount: return song.playcount(); - case Column_SkipCount: return song.skipcount(); - case Column_LastPlayed: return song.lastplayed(); - case Column_Score: return song.score(); + case Column_Rating: + return song.rating(); + case Column_PlayCount: + return song.playcount(); + case Column_SkipCount: + return song.skipcount(); + case Column_LastPlayed: + return song.lastplayed(); + case Column_Score: + return song.score(); - case Column_BPM: return song.bpm(); - case Column_Bitrate: return song.bitrate(); - case Column_Samplerate: return song.samplerate(); - case Column_Filename: return song.url(); - case Column_BaseFilename: return song.basefilename(); - case Column_Filesize: return song.filesize(); - case Column_Filetype: return song.filetype(); - case Column_DateModified: return song.mtime(); - case Column_DateCreated: return song.ctime(); + case Column_BPM: + return song.bpm(); + case Column_Bitrate: + return song.bitrate(); + case Column_Samplerate: + return song.samplerate(); + case Column_Filename: + return song.url(); + case Column_BaseFilename: + return song.basefilename(); + case Column_Filesize: + return song.filesize(); + case Column_Filetype: + return song.filetype(); + case Column_DateModified: + return song.mtime(); + case Column_DateCreated: + return song.ctime(); case Column_Comment: - if (role == Qt::DisplayRole) - return song.comment().simplified(); + if (role == Qt::DisplayRole) return song.comment().simplified(); return song.comment(); case Column_Source: @@ -312,7 +331,8 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { } case Qt::TextAlignmentRole: - return QVariant(column_alignments_.value(index.column(), (Qt::AlignLeft | Qt::AlignVCenter))); + return QVariant(column_alignments_.value( + index.column(), (Qt::AlignLeft | Qt::AlignVCenter))); case Qt::ForegroundRole: if (data(index, Role_IsCurrent).toBool()) { @@ -351,36 +371,37 @@ void Playlist::MoodbarUpdated(const QModelIndex& index) { index.sibling(index.row(), Column_Mood)); } -bool Playlist::setData(const QModelIndex& index, const QVariant& value, int role) { +bool Playlist::setData(const QModelIndex& index, const QVariant& value, + int role) { int row = index.row(); PlaylistItemPtr item = item_at(row); Song song = item->Metadata(); - if (index.data() == value) - return false; + if (index.data() == value) return false; - if(!set_column_value(song, (Column)index.column(), value)) - return false; + if (!set_column_value(song, (Column)index.column(), value)) return false; - if((Column)index.column() == Column_Score) { + if ((Column)index.column() == Column_Score) { // The score is only saved in the database, not the file library_->AddOrUpdateSongs(SongList() << song); emit EditingFinished(index); } else { - TagReaderReply* reply = TagReaderClient::Instance()->SaveFile( - song.url().toLocalFile(), song); + TagReaderReply* reply = + TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(index)); } return true; } -void Playlist::SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index) { +void Playlist::SongSaveComplete(TagReaderReply* reply, + const QPersistentModelIndex& index) { if (reply->is_successful() && index.isValid()) { QFuture future = item_at(index.row())->BackgroundReload(); - ModelFutureWatcher* watcher = new ModelFutureWatcher(index, this); + ModelFutureWatcher* watcher = + new ModelFutureWatcher(index, this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(ItemReloadComplete())); } @@ -389,7 +410,8 @@ void Playlist::SongSaveComplete(TagReaderReply* reply, const QPersistentModelInd } void Playlist::ItemReloadComplete() { - ModelFutureWatcher* watcher = static_cast*>(sender()); + ModelFutureWatcher* watcher = + static_cast*>(sender()); watcher->deleteLater(); const QPersistentModelIndex& index = watcher->index(); if (index.isValid()) { @@ -416,22 +438,22 @@ void Playlist::ShuffleModeChanged(PlaylistSequence::ShuffleMode mode) { } bool Playlist::FilterContainsVirtualIndex(int i) const { - if (i<0 || i>=virtual_items_.count()) - return false; + if (i < 0 || i >= virtual_items_.count()) return false; return proxy_->filterAcceptsRow(virtual_items_[i], QModelIndex()); } int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); - PlaylistSequence::ShuffleMode shuffle_mode = playlist_sequence_->shuffle_mode(); + PlaylistSequence::ShuffleMode shuffle_mode = + playlist_sequence_->shuffle_mode(); bool album_only = repeat_mode == PlaylistSequence::Repeat_Album || shuffle_mode == PlaylistSequence::Shuffle_InsideAlbum; // This one's easy - if we have to repeat the current track then just return i if (repeat_mode == PlaylistSequence::Repeat_Track && !ignore_repeat_track) { if (!FilterContainsVirtualIndex(i)) - return virtual_items_.count(); // It's not in the filter any more + return virtual_items_.count(); // It's not in the filter any more return i; } @@ -441,20 +463,19 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { ++i; // Advance i until we find any track that is in the filter - while (i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) - ++i; + while (i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) ++i; return i; } // We need to advance i until we get something else on the same album Song last_song = current_item_metadata(); - for (int j=i+1 ; jMetadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && last_song.album() == this_song.album() && FilterContainsVirtualIndex(j)) { - return j; // Found one + return j; // Found one } } @@ -464,14 +485,14 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); - PlaylistSequence::ShuffleMode shuffle_mode = playlist_sequence_->shuffle_mode(); + PlaylistSequence::ShuffleMode shuffle_mode = + playlist_sequence_->shuffle_mode(); bool album_only = repeat_mode == PlaylistSequence::Repeat_Album || shuffle_mode == PlaylistSequence::Shuffle_InsideAlbum; // This one's easy - if we have to repeat the current track then just return i if (repeat_mode == PlaylistSequence::Repeat_Track && !ignore_repeat_track) { - if (!FilterContainsVirtualIndex(i)) - return -1; + if (!FilterContainsVirtualIndex(i)) return -1; return i; } @@ -481,20 +502,19 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { --i; // Decrement i until we find any track that is in the filter - while (i>=0 && !FilterContainsVirtualIndex(i)) - --i; + while (i >= 0 && !FilterContainsVirtualIndex(i)) --i; return i; } // We need to decrement i until we get something else on the same album Song last_song = current_item_metadata(); - for (int j=i-1 ; j>=0; --j) { + for (int j = i - 1; j >= 0; --j) { Song this_song = item_at(virtual_items_[j])->Metadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && last_song.album() == this_song.album() && FilterContainsVirtualIndex(j)) { - return j; // Found one + return j; // Found one } } @@ -504,15 +524,15 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { int Playlist::next_row(bool ignore_repeat_track) const { // Did we want to stop after this track? - if (stop_after_.isValid() && current_row() == stop_after_.row()) - return -1; + if (stop_after_.isValid() && current_row() == stop_after_.row()) return -1; // Any queued items take priority if (!queue_->is_empty()) { return queue_->PeekNext(); } - int next_virtual_index = NextVirtualIndex(current_virtual_index_, ignore_repeat_track); + int next_virtual_index = + NextVirtualIndex(current_virtual_index_, ignore_repeat_track); if (next_virtual_index >= virtual_items_.count()) { // We've gone off the end of the playlist. @@ -537,7 +557,8 @@ int Playlist::next_row(bool ignore_repeat_track) const { } int Playlist::previous_row(bool ignore_repeat_track) const { - int prev_virtual_index = PreviousVirtualIndex(current_virtual_index_,ignore_repeat_track); + int prev_virtual_index = + PreviousVirtualIndex(current_virtual_index_, ignore_repeat_track); if (prev_virtual_index < 0) { // We've gone off the beginning of the playlist. @@ -549,22 +570,22 @@ int Playlist::previous_row(bool ignore_repeat_track) const { break; default: - prev_virtual_index = PreviousVirtualIndex(virtual_items_.count(),ignore_repeat_track); + prev_virtual_index = + PreviousVirtualIndex(virtual_items_.count(), ignore_repeat_track); break; } } // Still off the beginning? Then just give up - if (prev_virtual_index < 0) - return -1; + if (prev_virtual_index < 0) return -1; return virtual_items_[prev_virtual_index]; } int Playlist::dynamic_history_length() const { - return dynamic_playlist_ && last_played_item_index_.isValid() - ? last_played_item_index_.row() + 1 - : 0; + return dynamic_playlist_ && last_played_item_index_.isValid() + ? last_played_item_index_.row() + 1 + : 0; } void Playlist::set_current_row(int i) { @@ -572,18 +593,18 @@ void Playlist::set_current_row(int i) { ClearStreamMetadata(); current_item_index_ = QPersistentModelIndex(index(i, 0, QModelIndex())); - + // if the given item is the first in the queue, remove it from the queue if (current_item_index_.row() == queue_->PeekNext()) { queue_->TakeNext(); } - if (current_item_index_ == old_current_item_index) - return; + if (current_item_index_ == old_current_item_index) return; if (old_current_item_index.isValid()) { - emit dataChanged(old_current_item_index, - old_current_item_index.sibling(old_current_item_index.row(), ColumnCount-1)); + emit dataChanged(old_current_item_index, + old_current_item_index.sibling( + old_current_item_index.row(), ColumnCount - 1)); } if (current_item_index_.isValid()) { @@ -616,20 +637,21 @@ void Playlist::set_current_row(int i) { // Move the new item one position ahead of the last item in the history. MoveItemWithoutUndo(current_item_index_.row(), dynamic_history_length()); - + // Compute the number of new items that have to be inserted. This is not - // necessarily 1 because the user might have added or removed items - // manually. Note that the future excludes the current item. - const int count = dynamic_history_length() + 1 + dynamic_playlist_->GetDynamicFuture() - items_.count(); + // necessarily 1 because the user might have added or removed items + // manually. Note that the future excludes the current item. + const int count = dynamic_history_length() + 1 + + dynamic_playlist_->GetDynamicFuture() - items_.count(); if (count > 0) { InsertDynamicItems(count); } // Shrink the history, again this is not necessarily by 1, because the user // might have moved items by hand. - const int remove_count = dynamic_history_length() - dynamic_playlist_->GetDynamicHistory(); - if (0 < remove_count) - RemoveItemsWithoutUndo(0, remove_count); + const int remove_count = + dynamic_history_length() - dynamic_playlist_->GetDynamicHistory(); + if (0 < remove_count) RemoveItemsWithoutUndo(0, remove_count); // the above actions make all commands on the undo stack invalid, so we // better clear it. @@ -640,26 +662,26 @@ void Playlist::set_current_row(int i) { last_played_item_index_ = current_item_index_; Save(); } - + UpdateScrobblePoint(); } void Playlist::InsertDynamicItems(int count) { - GeneratorInserter* inserter = new GeneratorInserter(task_manager_, library_, this); + GeneratorInserter* inserter = + new GeneratorInserter(task_manager_, library_, this); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); - connect(inserter, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex))); + connect(inserter, SIGNAL(PlayRequested(QModelIndex)), + SIGNAL(PlayRequested(QModelIndex))); inserter->Load(this, -1, false, false, dynamic_playlist_, count); } -Qt::ItemFlags Playlist::flags(const QModelIndex &index) const { +Qt::ItemFlags Playlist::flags(const QModelIndex& index) const { Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable; - if(column_is_editable((Column)index.column())) - flags |= Qt::ItemIsEditable; + if (column_is_editable((Column)index.column())) flags |= Qt::ItemIsEditable; - if (index.isValid()) - return flags | Qt::ItemIsDragEnabled; + if (index.isValid()) return flags | Qt::ItemIsDragEnabled; return Qt::ItemIsDropEnabled; } @@ -673,9 +695,9 @@ Qt::DropActions Playlist::supportedDropActions() const { return Qt::MoveAction | Qt::CopyAction | Qt::LinkAction; } -bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int, const QModelIndex&) { - if (action == Qt::IgnoreAction) - return false; +bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, + int row, int, const QModelIndex&) { + if (action == Qt::IgnoreAction) return false; using smart_playlists::GeneratorMimeData; @@ -693,24 +715,35 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro // Dragged from a library // 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) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - else if (song_data->backend && song_data->backend->songs_table() == MagnatuneService::kSongsTable) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - else if (song_data->backend && song_data->backend->songs_table() == JamendoService::kSongsTable) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); + if (song_data->backend && + song_data->backend->songs_table() == Library::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + else if (song_data->backend && + song_data->backend->songs_table() == MagnatuneService::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + else if (song_data->backend && + song_data->backend->songs_table() == JamendoService::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); else - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - } else if (const InternetMimeData* internet_data = qobject_cast(data)) { + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + } else if (const InternetMimeData* internet_data = + qobject_cast(data)) { // Dragged from the Internet pane - InsertInternetItems(internet_data->model, internet_data->indexes, - row, play_now, enqueue_now); - } else if (const InternetSongMimeData* internet_song_data = qobject_cast(data)) { + InsertInternetItems(internet_data->model, internet_data->indexes, row, + play_now, enqueue_now); + } else if (const InternetSongMimeData* internet_song_data = + qobject_cast(data)) { InsertInternetItems(internet_song_data->service, internet_song_data->songs, row, play_now, enqueue_now); - } else if (const GeneratorMimeData* generator_data = qobject_cast(data)) { + } else if (const GeneratorMimeData* generator_data = + qobject_cast(data)) { InsertSmartPlaylist(generator_data->generator_, row, play_now, enqueue_now); - } else if (const PlaylistItemMimeData* item_data = qobject_cast(data)) { + } else if (const PlaylistItemMimeData* item_data = + qobject_cast(data)) { InsertItems(item_data->items_, row, play_now, enqueue_now); } else if (data->hasFormat(kRowsMimetype)) { // Dragged from the playlist @@ -723,24 +756,26 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro qint64 own_pid = QCoreApplication::applicationPid(); QDataStream stream(data->data(kRowsMimetype)); - stream.readRawData(reinterpret_cast(&source_playlist), sizeof(source_playlist)); + stream.readRawData(reinterpret_cast(&source_playlist), + sizeof(source_playlist)); stream >> source_rows; if (!stream.atEnd()) { stream.readRawData((char*)&pid, sizeof(pid)); } else { - pid = ! own_pid; + pid = !own_pid; } - qStableSort(source_rows); // Make sure we take them in order + qStableSort(source_rows); // Make sure we take them in order if (source_playlist == this) { // Dragged from this playlist - rearrange the items - undo_stack_->push(new PlaylistUndoCommands::MoveItems(this, source_rows, row)); + undo_stack_->push( + new PlaylistUndoCommands::MoveItems(this, source_rows, row)); } else if (pid == own_pid) { // Drag from a different playlist PlaylistItemList items; - foreach (int row, source_rows) - items << source_playlist->item_at(row); + foreach(int row, source_rows) + items << source_playlist->item_at(row); if (items.count() > kUndoItemLimit) { // Too big to keep in the undo stack. Also clear the stack because it @@ -748,12 +783,13 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro InsertItemsWithoutUndo(items, row, false); undo_stack_->clear(); } else { - undo_stack_->push(new PlaylistUndoCommands::InsertItems(this, items, row)); + undo_stack_->push( + new PlaylistUndoCommands::InsertItems(this, items, row)); } // Remove the items from the source playlist if it was a move event if (action == Qt::MoveAction) { - foreach (int row, source_rows) { + foreach(int row, source_rows) { source_playlist->undo_stack()->push( new PlaylistUndoCommands::RemoveItems(source_playlist, row, 1)); } @@ -772,7 +808,8 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro return true; } -void Playlist::InsertUrls(const QList &urls, int pos, bool play_now, bool enqueue) { +void Playlist::InsertUrls(const QList& urls, int pos, bool play_now, + bool enqueue) { SongLoaderInserter* inserter = new SongLoaderInserter( task_manager_, library_, backend_->app()->player()); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); @@ -780,13 +817,15 @@ void Playlist::InsertUrls(const QList &urls, int pos, bool play_now, bool inserter->Load(this, pos, play_now, enqueue, urls); } -void Playlist::InsertSmartPlaylist(GeneratorPtr generator, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSmartPlaylist(GeneratorPtr generator, int pos, + bool play_now, bool enqueue) { // Hack: If the generator hasn't got a library set then use the main one if (!generator->library()) { generator->set_library(library_); } - GeneratorInserter* inserter = new GeneratorInserter(task_manager_, library_, this); + GeneratorInserter* inserter = + new GeneratorInserter(task_manager_, library_, this); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); inserter->Load(this, pos, play_now, enqueue, generator); @@ -820,36 +859,36 @@ void Playlist::MoveItemsWithoutUndo(const QList& source_rows, int pos) { // insertion point changes int offset = 0; int start = pos; - foreach (int source_row, source_rows) { - moved_items << items_.takeAt(source_row-offset); + foreach(int source_row, source_rows) { + moved_items << items_.takeAt(source_row - offset); if (pos > source_row) { - start --; + start--; } offset++; } - + // Put the items back in - for (int i=start ; iRemoveForegroundColor(kDynamicHistoryPriority); items_.insert(i, moved_items[i - start]); } // Update persistent indexes - foreach (const QModelIndex& pidx, persistentIndexList()) { + foreach(const QModelIndex & pidx, persistentIndexList()) { const int dest_offset = source_rows.indexOf(pidx.row()); if (dest_offset != -1) { // This index was moved - changePersistentIndex(pidx, index(start + dest_offset, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(start + dest_offset, pidx.column(), QModelIndex())); } else { int d = 0; - foreach (int source_row, source_rows) { - if (pidx.row() > source_row) - d --; + foreach(int source_row, source_rows) { + if (pidx.row() > source_row) d--; } - if (pidx.row() + d >= start) - d += source_rows.count(); + if (pidx.row() + d >= start) d += source_rows.count(); - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } current_virtual_index_ = virtual_items_.indexOf(current_row()); @@ -863,10 +902,10 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { PlaylistItemList moved_items; int pos = start; - foreach (int dest_row, dest_rows) { + foreach(int dest_row, dest_rows) { if (dest_row < pos) start--; } - + if (start < 0) { start = items_.count() - dest_rows.count(); } @@ -877,28 +916,28 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { // Put the items back in int offset = 0; - foreach (int dest_row, dest_rows) { + foreach(int dest_row, dest_rows) { items_.insert(dest_row, moved_items[offset]); - offset ++; + offset++; } // Update persistent indexes - foreach (const QModelIndex& pidx, persistentIndexList()) { + foreach(const QModelIndex & pidx, persistentIndexList()) { if (pidx.row() >= start && pidx.row() < start + dest_rows.count()) { // This index was moved const int i = pidx.row() - start; - changePersistentIndex(pidx, index(dest_rows[i], pidx.column(), QModelIndex())); + changePersistentIndex(pidx, + index(dest_rows[i], pidx.column(), QModelIndex())); } else { int d = 0; - if (pidx.row() >= start + dest_rows.count()) - d -= dest_rows.count(); + if (pidx.row() >= start + dest_rows.count()) d -= dest_rows.count(); - foreach (int dest_row, dest_rows) { - if (pidx.row() + d > dest_row) - d ++; + foreach(int dest_row, dest_rows) { + if (pidx.row() + d > dest_row) d++; } - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } current_virtual_index_ = virtual_items_.indexOf(current_row()); @@ -907,46 +946,46 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { Save(); } -void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, bool play_now, bool enqueue) { - if (itemsIn.isEmpty()) - return; +void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, + bool play_now, bool enqueue) { + if (itemsIn.isEmpty()) return; PlaylistItemList items = itemsIn; // exercise vetoes SongList songs; - foreach(PlaylistItemPtr item, items) { - songs << item->Metadata(); - } + foreach(PlaylistItemPtr item, items) { songs << item->Metadata(); } const int song_count = songs.length(); QSet vetoed; - foreach(SongInsertVetoListener* listener, veto_listeners_) { - foreach(const Song& song, listener->AboutToInsertSongs(GetAllSongs(), songs)) { + foreach(SongInsertVetoListener * listener, veto_listeners_) { + foreach(const Song & song, + listener->AboutToInsertSongs(GetAllSongs(), songs)) { // avoid veto-ing a song multiple times vetoed.insert(song); } if (vetoed.count() == song_count) { - // all songs were vetoed and there's nothing more to do (there's no need for an undo step) + // all songs were vetoed and there's nothing more to do (there's no need + // for an undo step) return; } } - if(!vetoed.isEmpty()) { + if (!vetoed.isEmpty()) { QMutableListIterator it(items); while (it.hasNext()) { PlaylistItemPtr item = it.next(); const Song& current = item->Metadata(); - if(vetoed.contains(current)) { + if (vetoed.contains(current)) { vetoed.remove(current); it.remove(); } } // check for empty items once again after veto - if(items.isEmpty()) { + if (items.isEmpty()) { return; } } @@ -959,23 +998,22 @@ void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, bool play_n InsertItemsWithoutUndo(items, pos, enqueue); undo_stack_->clear(); } else { - undo_stack_->push(new PlaylistUndoCommands::InsertItems(this, items, pos, enqueue)); + undo_stack_->push( + new PlaylistUndoCommands::InsertItems(this, items, pos, enqueue)); } - if (play_now) - emit PlayRequested(index(start, 0)); + if (play_now) emit PlayRequested(index(start, 0)); } -void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, - int pos, bool enqueue) { - if (items.isEmpty()) - return; +void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, int pos, + bool enqueue) { + if (items.isEmpty()) return; const int start = pos == -1 ? items_.count() : pos; const int end = start + items.count() - 1; beginInsertRows(QModelIndex(), start, end); - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { PlaylistItemPtr item = items[i - start]; items_.insert(i, item); virtual_items_ << virtual_items_.count(); @@ -997,7 +1035,7 @@ void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, if (enqueue) { QModelIndexList indexes; - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { indexes << index(i, 0); } queue_->ToggleTracks(indexes); @@ -1007,17 +1045,20 @@ void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, ReshuffleIndices(); } -void Playlist::InsertLibraryItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertLibraryItems(const SongList& songs, int pos, bool play_now, + bool enqueue) { InsertSongItems(songs, pos, play_now, enqueue); } -void Playlist::InsertSongs(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSongs(const SongList& songs, int pos, bool play_now, + bool enqueue) { InsertSongItems(songs, pos, play_now, enqueue); } -void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, + bool play_now, bool enqueue) { PlaylistItemList items; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song.id() == -1) items << PlaylistItemPtr(new SongPlaylistItem(song)); else @@ -1027,22 +1068,23 @@ void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, bool pl } void Playlist::InsertInternetItems(const InternetModel* model, - const QModelIndexList& items, - int pos, bool play_now, bool enqueue) { + const QModelIndexList& items, int pos, + bool play_now, bool enqueue) { PlaylistItemList playlist_items; QList song_urls; - foreach (const QModelIndex& item, items) { + foreach(const QModelIndex & item, items) { switch (item.data(InternetModel::Role_PlayBehaviour).toInt()) { - case InternetModel::PlayBehaviour_SingleItem: - playlist_items << shared_ptr(new InternetPlaylistItem( - model->ServiceForIndex(item), - item.data(InternetModel::Role_SongMetadata).value())); - break; + case InternetModel::PlayBehaviour_SingleItem: + playlist_items << shared_ptr(new InternetPlaylistItem( + model->ServiceForIndex(item), + item.data(InternetModel::Role_SongMetadata) + .value())); + break; - case InternetModel::PlayBehaviour_UseSongLoader: - song_urls << item.data(InternetModel::Role_Url).toUrl(); - break; + case InternetModel::PlayBehaviour_UseSongLoader: + song_urls << item.data(InternetModel::Role_Url).toUrl(); + break; } } @@ -1055,11 +1097,12 @@ void Playlist::InsertInternetItems(const InternetModel* model, } void Playlist::InsertInternetItems(InternetService* service, - const SongList& songs, - int pos, bool play_now, bool enqueue) { + const SongList& songs, int pos, + bool play_now, bool enqueue) { PlaylistItemList playlist_items; - foreach (const Song& song, songs) { - playlist_items << shared_ptr(new InternetPlaylistItem(service, song)); + foreach(const Song & song, songs) { + playlist_items << shared_ptr( + new InternetPlaylistItem(service, song)); } InsertItems(playlist_items, pos, play_now, enqueue); @@ -1075,9 +1118,9 @@ void Playlist::UpdateItems(const SongList& songs) { // our list because we will not need to check it again. // And we also update undo actions. QLinkedList songs_list; - foreach (const Song& song, songs) songs_list.append(song); + foreach(const Song & song, songs) songs_list.append(song); - for (int i=0; i it(songs_list); while (it.hasNext()) { @@ -1085,8 +1128,8 @@ void Playlist::UpdateItems(const SongList& songs) { PlaylistItemPtr& item = items_[i]; if (item->Metadata().url() == song.url() && (item->Metadata().filetype() == Song::Type_Unknown || - // Stream may change and may need to be updated too - item->Metadata().filetype() == Song::Type_Stream)) { + // Stream may change and may need to be updated too + item->Metadata().filetype() == Song::Type_Stream)) { PlaylistItemPtr new_item; if (song.id() == -1) { new_item = PlaylistItemPtr(new SongPlaylistItem(song)); @@ -1095,12 +1138,13 @@ void Playlist::UpdateItems(const SongList& songs) { library_items_by_id_.insertMulti(song.id(), new_item); } items_[i] = new_item; - emit dataChanged(index(i, 0), index(i, ColumnCount-1)); + emit dataChanged(index(i, 0), index(i, ColumnCount - 1)); // Also update undo actions - for (int i=0; icount(); i++) { - QUndoCommand *undo_action = const_cast(undo_stack_->command(i)); - PlaylistUndoCommands::InsertItems *undo_action_insert = - dynamic_cast(undo_action); + for (int i = 0; i < undo_stack_->count(); i++) { + QUndoCommand* undo_action = + const_cast(undo_stack_->command(i)); + PlaylistUndoCommands::InsertItems* undo_action_insert = + dynamic_cast(undo_action); if (undo_action_insert) { bool found_and_updated = undo_action_insert->UpdateItem(new_item); if (found_and_updated) break; @@ -1115,20 +1159,18 @@ void Playlist::UpdateItems(const SongList& songs) { } QMimeData* Playlist::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return nullptr; - + if (indexes.isEmpty()) return nullptr; + // We only want one index per row, but we can't just take column 0 because // the user might have hidden it. const int first_column = indexes.first().column(); - + QMimeData* data = new QMimeData; QList urls; QList rows; - foreach (const QModelIndex& index, indexes) { - if (index.column() != first_column) - continue; + foreach(const QModelIndex & index, indexes) { + if (index.column() != first_column) continue; urls << items_[index.row()]->Url(); rows << index.row(); @@ -1158,42 +1200,71 @@ bool Playlist::CompareItems(int column, Qt::SortOrder order, shared_ptr a = order == Qt::AscendingOrder ? _a : _b; shared_ptr b = order == Qt::AscendingOrder ? _b : _a; -#define cmp(field) return a->Metadata().field() < b->Metadata().field() -#define strcmp(field) return QString::localeAwareCompare( \ - a->Metadata().field().toLower(), b->Metadata().field().toLower()) < 0; +#define cmp(field) return a->Metadata().field() < b->Metadata().field() +#define strcmp(field) \ + return QString::localeAwareCompare(a->Metadata().field().toLower(), \ + b->Metadata().field().toLower()) < 0; switch (column) { - case Column_Title: strcmp(title); - case Column_Artist: strcmp(artist); - case Column_Album: strcmp(album); - case Column_Length: cmp(length_nanosec); - case Column_Track: cmp(track); - case Column_Disc: cmp(disc); - case Column_Year: cmp(year); - case Column_Genre: strcmp(genre); - case Column_AlbumArtist: strcmp(playlist_albumartist); - case Column_Composer: strcmp(composer); - case Column_Performer: strcmp(performer); - case Column_Grouping: strcmp(grouping); + case Column_Title: + strcmp(title); + case Column_Artist: + strcmp(artist); + case Column_Album: + strcmp(album); + case Column_Length: + cmp(length_nanosec); + case Column_Track: + cmp(track); + case Column_Disc: + cmp(disc); + case Column_Year: + cmp(year); + case Column_Genre: + strcmp(genre); + case Column_AlbumArtist: + strcmp(playlist_albumartist); + case Column_Composer: + strcmp(composer); + case Column_Performer: + strcmp(performer); + case Column_Grouping: + strcmp(grouping); - case Column_Rating: cmp(rating); - case Column_PlayCount: cmp(playcount); - case Column_SkipCount: cmp(skipcount); - case Column_LastPlayed: cmp(lastplayed); - case Column_Score: cmp(score); + case Column_Rating: + cmp(rating); + case Column_PlayCount: + cmp(playcount); + case Column_SkipCount: + cmp(skipcount); + case Column_LastPlayed: + cmp(lastplayed); + case Column_Score: + cmp(score); - case Column_BPM: cmp(bpm); - case Column_Bitrate: cmp(bitrate); - case Column_Samplerate: cmp(samplerate); - case Column_Filename: cmp(url); - case Column_BaseFilename: cmp(basefilename); - case Column_Filesize: cmp(filesize); - case Column_Filetype: cmp(filetype); - case Column_DateModified: cmp(mtime); - case Column_DateCreated: cmp(ctime); + case Column_BPM: + cmp(bpm); + case Column_Bitrate: + cmp(bitrate); + case Column_Samplerate: + cmp(samplerate); + case Column_Filename: + cmp(url); + case Column_BaseFilename: + cmp(basefilename); + case Column_Filesize: + cmp(filesize); + case Column_Filetype: + cmp(filetype); + case Column_DateModified: + cmp(mtime); + case Column_DateCreated: + cmp(ctime); - case Column_Comment: strcmp(comment); - case Column_Source: cmp(url); + case Column_Comment: + strcmp(comment); + case Column_Source: + cmp(url); } #undef cmp @@ -1204,39 +1275,69 @@ bool Playlist::CompareItems(int column, Qt::SortOrder order, QString Playlist::column_name(Column column) { switch (column) { - case Column_Title: return tr("Title"); - case Column_Artist: return tr("Artist"); - case Column_Album: return tr("Album"); - case Column_Length: return tr("Length"); - case Column_Track: return tr("Track"); - case Column_Disc: return tr("Disc"); - case Column_Year: return tr("Year"); - case Column_Genre: return tr("Genre"); - case Column_AlbumArtist: return tr("Album artist"); - case Column_Composer: return tr("Composer"); - case Column_Performer: return tr("Performer"); - case Column_Grouping: return tr("Grouping"); + case Column_Title: + return tr("Title"); + case Column_Artist: + return tr("Artist"); + case Column_Album: + return tr("Album"); + case Column_Length: + return tr("Length"); + case Column_Track: + return tr("Track"); + case Column_Disc: + return tr("Disc"); + case Column_Year: + return tr("Year"); + case Column_Genre: + return tr("Genre"); + case Column_AlbumArtist: + return tr("Album artist"); + case Column_Composer: + return tr("Composer"); + case Column_Performer: + return tr("Performer"); + case Column_Grouping: + return tr("Grouping"); - case Column_Rating: return tr("Rating"); - case Column_PlayCount: return tr("Play count"); - case Column_SkipCount: return tr("Skip count"); - case Column_LastPlayed: return tr("Last played", "A playlist's tag."); - case Column_Score: return tr("Score"); + case Column_Rating: + return tr("Rating"); + case Column_PlayCount: + return tr("Play count"); + case Column_SkipCount: + return tr("Skip count"); + case Column_LastPlayed: + return tr("Last played", "A playlist's tag."); + case Column_Score: + return tr("Score"); - case Column_BPM: return tr("BPM"); - case Column_Bitrate: return tr("Bit rate"); - case Column_Samplerate: return tr("Sample rate"); - case Column_Filename: return tr("File name"); - case Column_BaseFilename: return tr("File name (without path)"); - case Column_Filesize: return tr("File size"); - case Column_Filetype: return tr("File type"); - case Column_DateModified: return tr("Date modified"); - case Column_DateCreated: return tr("Date created"); + case Column_BPM: + return tr("BPM"); + case Column_Bitrate: + return tr("Bit rate"); + case Column_Samplerate: + return tr("Sample rate"); + case Column_Filename: + return tr("File name"); + case Column_BaseFilename: + return tr("File name (without path)"); + case Column_Filesize: + return tr("File size"); + case Column_Filetype: + return tr("File type"); + case Column_DateModified: + return tr("Date modified"); + case Column_DateCreated: + return tr("Date created"); - case Column_Comment: return tr("Comment"); - case Column_Source: return tr("Source"); - case Column_Mood: return tr("Mood"); - default: return QString(); + case Column_Comment: + return tr("Comment"); + case Column_Source: + return tr("Source"); + case Column_Mood: + return tr("Mood"); + default: + return QString(); } return ""; } @@ -1249,25 +1350,25 @@ QString Playlist::abbreviated_column_name(Column column) { case Column_SkipCount: case Column_Track: return QString("%1#").arg(column_name[0]); - default: + default: return column_name; } return ""; } void Playlist::sort(int column, Qt::SortOrder order) { - if (ignore_sorting_) - return; + if (ignore_sorting_) return; PlaylistItemList new_items(items_); PlaylistItemList::iterator begin = new_items.begin(); - if(dynamic_playlist_ && current_item_index_.isValid()) + if (dynamic_playlist_ && current_item_index_.isValid()) begin += current_item_index_.row() + 1; qStableSort(begin, new_items.end(), std::bind(&Playlist::CompareItems, column, order, _1, _2)); - undo_stack_->push(new PlaylistUndoCommands::SortItems(this, column, order, new_items)); + undo_stack_->push( + new PlaylistUndoCommands::SortItems(this, column, order, new_items)); } void Playlist::ReOrderWithoutUndo(const PlaylistItemList& new_items) { @@ -1275,15 +1376,15 @@ void Playlist::ReOrderWithoutUndo(const PlaylistItemList& new_items) { // This is a slow and nasty way to keep the persistent indices QMap > old_persistent_mappings; - foreach (const QModelIndex& index, persistentIndexList()) { + foreach(const QModelIndex & index, persistentIndexList()) { old_persistent_mappings[index.row()] = items_[index.row()]; } - + items_ = new_items; QMapIterator > it(old_persistent_mappings); while (it.hasNext()) { it.next(); - for (int col=0 ; colSavePlaylistAsync(id_, items_, last_played_row(), dynamic_playlist_); + backend_->SavePlaylistAsync(id_, items_, last_played_row(), + dynamic_playlist_); } namespace { @@ -1331,8 +1425,7 @@ typedef QFutureWatcher > PlaylistItemFutureWatcher; } void Playlist::Restore() { - if (!backend_) - return; + if (!backend_) return; items_.clear(); virtual_items_.clear(); @@ -1345,12 +1438,13 @@ void Playlist::Restore() { } void Playlist::ItemsLoaded() { - PlaylistItemFutureWatcher* watcher = static_cast(sender()); + PlaylistItemFutureWatcher* watcher = + static_cast(sender()); watcher->deleteLater(); PlaylistItemList items = watcher->future().results(); - // backend returns empty elements for library items which it couldn't + // backend returns empty elements for library items which it couldn't // match (because they got deleted); we don't need those QMutableListIterator it(items); while (it.hasNext()) { @@ -1399,14 +1493,12 @@ void Playlist::ItemsLoaded() { s.beginGroup(kSettingsGroup); // should we gray out deleted songs asynchronously on startup? - if(s.value("greyoutdeleted", false).toBool()) { + if (s.value("greyoutdeleted", false).toBool()) { QtConcurrent::run(this, &Playlist::InvalidateDeletedSongs); } } -static bool DescendingIntLessThan(int a, int b) { - return a > b; -} +static bool DescendingIntLessThan(int a, int b) { return a > b; } void Playlist::RemoveItemsWithoutUndo(const QList& indicesIn) { // Sort the indices descending because removing elements 'backwards' @@ -1414,12 +1506,12 @@ void Playlist::RemoveItemsWithoutUndo(const QList& indicesIn) { QList indices = indicesIn; qSort(indices.begin(), indices.end(), DescendingIntLessThan); - for(int j = 0; j < indices.count(); j++) { + for (int j = 0; j < indices.count(); j++) { int beginning = indices[j], end = indices[j]; // Splits the indices into sequences. For example this: [1, 2, 4], // will get split into [1, 2] and [4]. - while(j != indices.count() - 1 && indices[j] == indices[j + 1] + 1) { + while (j != indices.count() - 1 && indices[j] == indices[j + 1] + 1) { beginning--; j++; } @@ -1447,7 +1539,7 @@ bool Playlist::removeRows(int row, int count, const QModelIndex& parent) { } bool Playlist::removeRows(QList& rows) { - if(rows.isEmpty()) { + if (rows.isEmpty()) { return false; } @@ -1456,16 +1548,16 @@ bool Playlist::removeRows(QList& rows) { qSort(rows.begin(), rows.end(), qGreater()); QList part; - while(!rows.isEmpty()) { + while (!rows.isEmpty()) { // we're splitting the input list into sequences of consecutive // numbers part.append(rows.takeFirst()); - while(!rows.isEmpty() && rows.first() == part.last() - 1) { + while (!rows.isEmpty() && rows.first() == part.last() - 1) { part.append(rows.takeFirst()); } // and now we're removing the current sequence - if(!removeRows(part.last(), part.size())) { + if (!removeRows(part.last(), part.size())) { return false; } @@ -1479,11 +1571,11 @@ PlaylistItemList Playlist::RemoveItemsWithoutUndo(int row, int count) { if (row < 0 || row >= items_.size() || row + count > items_.size()) { return PlaylistItemList(); } - beginRemoveRows(QModelIndex(), row, row+count-1); + beginRemoveRows(QModelIndex(), row, row + count - 1); // Remove items PlaylistItemList ret; - for (int i=0 ; iUrl() != url) - return; + if (current_item()->Url() != url) return; // Don't update the metadata if it's only a minor change from before if (current_item()->Metadata().artist() == song.artist() && @@ -1551,13 +1645,13 @@ void Playlist::SetStreamMetadata(const QUrl& url, const Song& song) { } void Playlist::ClearStreamMetadata() { - if (!current_item()) - return; + if (!current_item()) return; current_item()->ClearTemporaryMetadata(); UpdateScrobblePoint(); - emit dataChanged(index(current_item_index_.row(), 0), index(current_item_index_.row(), ColumnCount-1)); + emit dataChanged(index(current_item_index_.row(), 0), + index(current_item_index_.row(), ColumnCount - 1)); } bool Playlist::stop_after_current() const { @@ -1567,21 +1661,20 @@ bool Playlist::stop_after_current() const { PlaylistItemPtr Playlist::current_item() const { // QList[] runs in constant time, so no need to cache current_item - if (current_item_index_.isValid() && current_item_index_.row() <= items_.length()) + if (current_item_index_.isValid() && + current_item_index_.row() <= items_.length()) return items_[current_item_index_.row()]; - return PlaylistItemPtr(); + return PlaylistItemPtr(); } - + PlaylistItem::Options Playlist::current_item_options() const { - if (!current_item()) - return PlaylistItem::Default; + if (!current_item()) return PlaylistItem::Default; return current_item()->options(); } Song Playlist::current_item_metadata() const { - if (!current_item()) - return Song(); + if (!current_item()) return Song(); return current_item()->Metadata(); } @@ -1590,11 +1683,10 @@ void Playlist::UpdateScrobblePoint() { const qint64 length = current_item_metadata().length_nanosec(); if (length == 0) { - scrobble_point_ = 240ll * kNsecPerSec; // 4 minutes + scrobble_point_ = 240ll * kNsecPerSec; // 4 minutes } else { - scrobble_point_ = qBound(31ll * kNsecPerSec, - length/2, - 240ll * kNsecPerSec); + scrobble_point_ = + qBound(31ll * kNsecPerSec, length / 2, 240ll * kNsecPerSec); } set_lastfm_status(LastFM_New); @@ -1630,16 +1722,14 @@ void Playlist::TurnOffDynamicPlaylist() { } void Playlist::RepopulateDynamicPlaylist() { - if (!dynamic_playlist_) - return; + if (!dynamic_playlist_) return; RemoveItemsNotInQueue(); InsertSmartPlaylist(dynamic_playlist_); } void Playlist::ExpandDynamicPlaylist() { - if (!dynamic_playlist_) - return; + if (!dynamic_playlist_) return; InsertDynamicItems(5); } @@ -1654,31 +1744,27 @@ void Playlist::RemoveItemsNotInQueue() { forever { // Find a place to start - first row that isn't in the queue forever { - if (start >= rowCount()) - return; - if (!queue_->ContainsSourceRow(start)) - break; - start ++; + if (start >= rowCount()) return; + if (!queue_->ContainsSourceRow(start)) break; + start++; } // Figure out how many rows to remove - keep going until we find a row // that is in the queue int count = 1; forever { - if (start + count >= rowCount()) - break; - if (queue_->ContainsSourceRow(start + count)) - break; - count ++; + if (start + count >= rowCount()) break; + if (queue_->ContainsSourceRow(start + count)) break; + count++; } RemoveItemsWithoutUndo(start, count); - start ++; + start++; } } void Playlist::ReloadItems(const QList& rows) { - foreach (int row, rows) { + foreach(int row, rows) { PlaylistItemPtr item = item_at(row); item->Reload(); @@ -1686,7 +1772,7 @@ void Playlist::ReloadItems(const QList& rows) { if (row == current_row()) { InformOfCurrentSongChange(); } else { - emit dataChanged(index(row, 0), index(row, ColumnCount-1)); + emit dataChanged(index(row, 0), index(row, ColumnCount - 1)); } } @@ -1696,7 +1782,7 @@ void Playlist::ReloadItems(const QList& rows) { void Playlist::RateSong(const QModelIndex& index, double rating) { int row = index.row(); - if(has_item_at(row)) { + if (has_item_at(row)) { PlaylistItemPtr item = item_at(row); if (item && item->IsLocalLibraryItem() && item->Metadata().id() != -1) { library_->UpdateSongRatingAsync(item->Metadata().id(), rating); @@ -1706,11 +1792,13 @@ void Playlist::RateSong(const QModelIndex& index, double rating) { void Playlist::AddSongInsertVetoListener(SongInsertVetoListener* listener) { veto_listeners_.append(listener); - connect(listener, SIGNAL(destroyed()), this, SLOT(SongInsertVetoListenerDestroyed())); + connect(listener, SIGNAL(destroyed()), this, + SLOT(SongInsertVetoListenerDestroyed())); } void Playlist::RemoveSongInsertVetoListener(SongInsertVetoListener* listener) { - disconnect(listener, SIGNAL(destroyed()), this, SLOT(SongInsertVetoListenerDestroyed())); + disconnect(listener, SIGNAL(destroyed()), this, + SLOT(SongInsertVetoListenerDestroyed())); veto_listeners_.removeAll(listener); } @@ -1722,11 +1810,11 @@ void Playlist::Shuffle() { PlaylistItemList new_items(items_); int begin = 0; - if(dynamic_playlist_ && current_item_index_.isValid()) + if (dynamic_playlist_ && current_item_index_.isValid()) begin += current_item_index_.row() + 1; const int count = items_.count(); - for (int i=begin; i < count; ++i) { + for (int i = begin; i < count; ++i) { int new_pos = i + (rand() % (count - i)); std::swap(new_items[i], new_items[new_pos]); @@ -1737,13 +1825,12 @@ void Playlist::Shuffle() { namespace { bool AlbumShuffleComparator(const QMap& album_key_positions, - const QMap& album_keys, - int left, int right) { + const QMap& album_keys, int left, + int right) { const int left_pos = album_key_positions[album_keys[left]]; const int right_pos = album_key_positions[album_keys[right]]; - if (left_pos == right_pos) - return left < right; + if (left_pos == right_pos) return left < right; return left_pos < right_pos; } } @@ -1769,54 +1856,54 @@ void Playlist::ReshuffleIndices() { std::advance(begin, current_virtual_index_ + 1); switch (playlist_sequence_->shuffle_mode()) { - case PlaylistSequence::Shuffle_Off: - // Handled above. - break; + case PlaylistSequence::Shuffle_Off: + // Handled above. + break; - case PlaylistSequence::Shuffle_All: - case PlaylistSequence::Shuffle_InsideAlbum: - std::random_shuffle(begin, end); - break; + case PlaylistSequence::Shuffle_All: + case PlaylistSequence::Shuffle_InsideAlbum: + std::random_shuffle(begin, end); + break; - case PlaylistSequence::Shuffle_Albums: { - QMap album_keys; // real index -> key - QSet album_key_set; // unique keys + case PlaylistSequence::Shuffle_Albums: { + QMap album_keys; // real index -> key + QSet album_key_set; // unique keys - // Find all the unique albums in the playlist - for (QList::iterator it = begin ; it != end ; ++it) { - const int index = *it; - const QString key = items_[index]->Metadata().AlbumKey(); - album_keys[index] = key; - album_key_set << key; - } - - // Shuffle them - QStringList shuffled_album_keys = album_key_set.toList(); - std::random_shuffle(shuffled_album_keys.begin(), - shuffled_album_keys.end()); - - // If the user is currently playing a song, force its album to be first. - if (current_virtual_index_ != -1) { - const QString key = items_[current_row()]->Metadata().AlbumKey(); - const int pos = shuffled_album_keys.indexOf(key); - if (pos >= 1) { - std::swap(shuffled_album_keys[0], shuffled_album_keys[pos]); + // Find all the unique albums in the playlist + for (QList::iterator it = begin; it != end; ++it) { + const int index = *it; + const QString key = items_[index]->Metadata().AlbumKey(); + album_keys[index] = key; + album_key_set << key; } + + // Shuffle them + QStringList shuffled_album_keys = album_key_set.toList(); + std::random_shuffle(shuffled_album_keys.begin(), + shuffled_album_keys.end()); + + // If the user is currently playing a song, force its album to be first. + if (current_virtual_index_ != -1) { + const QString key = items_[current_row()]->Metadata().AlbumKey(); + const int pos = shuffled_album_keys.indexOf(key); + if (pos >= 1) { + std::swap(shuffled_album_keys[0], shuffled_album_keys[pos]); + } + } + + // Create album key -> position mapping for fast lookup + QMap album_key_positions; + for (int i = 0; i < shuffled_album_keys.count(); ++i) { + album_key_positions[shuffled_album_keys[i]] = i; + } + + // Sort the virtual items + std::stable_sort(begin, end, + std::bind(AlbumShuffleComparator, album_key_positions, + album_keys, _1, _2)); + + break; } - - // Create album key -> position mapping for fast lookup - QMap album_key_positions; - for (int i=0 ; ishuffle_mode()); } -QSortFilterProxyModel* Playlist::proxy() const { - return proxy_; -} +QSortFilterProxyModel* Playlist::proxy() const { return proxy_; } SongList Playlist::GetAllSongs() const { SongList ret; - foreach (PlaylistItemPtr item, items_) { - ret << item->Metadata(); - } + foreach(PlaylistItemPtr item, items_) { ret << item->Metadata(); } return ret; } -PlaylistItemList Playlist::GetAllItems() const { - return items_; -} +PlaylistItemList Playlist::GetAllItems() const { return items_; } quint64 Playlist::GetTotalLength() const { quint64 ret = 0; - foreach (PlaylistItemPtr item, items_) { + foreach(PlaylistItemPtr item, items_) { quint64 length = item->Metadata().length_nanosec(); - if (length > 0) - ret += length; + if (length > 0) ret += length; } return ret; } @@ -1859,35 +1939,38 @@ PlaylistItemList Playlist::library_items_by_id(int id) const { } void Playlist::TracksAboutToBeDequeued(const QModelIndex&, int begin, int end) { - for (int i=begin ; i<=end ; ++i) { - temp_dequeue_change_indexes_ << queue_->mapToSource(queue_->index(i, Column_Title)); + for (int i = begin; i <= end; ++i) { + temp_dequeue_change_indexes_ + << queue_->mapToSource(queue_->index(i, Column_Title)); } } void Playlist::TracksDequeued() { - foreach (const QModelIndex& index, temp_dequeue_change_indexes_) { + foreach(const QModelIndex & index, temp_dequeue_change_indexes_) { emit dataChanged(index, index); } temp_dequeue_change_indexes_.clear(); } void Playlist::TracksEnqueued(const QModelIndex&, int begin, int end) { - const QModelIndex& b = queue_->mapToSource(queue_->index(begin, Column_Title)); + const QModelIndex& b = + queue_->mapToSource(queue_->index(begin, Column_Title)); const QModelIndex& e = queue_->mapToSource(queue_->index(end, Column_Title)); emit dataChanged(b, e); } void Playlist::QueueLayoutChanged() { - for (int i=0 ; irowCount() ; ++i) { - const QModelIndex& index = queue_->mapToSource(queue_->index(i, Column_Title)); + for (int i = 0; i < queue_->rowCount(); ++i) { + const QModelIndex& index = + queue_->mapToSource(queue_->index(i, Column_Title)); emit dataChanged(index, index); } } void Playlist::ItemChanged(PlaylistItemPtr item) { - for (int row=0 ; rowMetadata(); - if(!song.is_stream()) { + if (!song.is_stream()) { bool exists = QFile::exists(song.url().toLocalFile()); - if(!exists && !item->HasForegroundColor(kInvalidSongPriority)) { + if (!exists && !item->HasForegroundColor(kInvalidSongPriority)) { // gray out the song if it's not there item->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); invalidated_rows.append(row); - } else if(exists && item->HasForegroundColor(kInvalidSongPriority)) { + } else if (exists && item->HasForegroundColor(kInvalidSongPriority)) { item->RemoveForegroundColor(kInvalidSongPriority); invalidated_rows.append(row); } @@ -1936,7 +2019,7 @@ void Playlist::RemoveDeletedSongs() { PlaylistItemPtr item = items_[row]; Song song = item->Metadata(); - if(!song.is_stream() && !QFile::exists(song.url().toLocalFile())) { + if (!song.is_stream() && !QFile::exists(song.url().toLocalFile())) { rows_to_remove.append(row); } } @@ -1945,13 +2028,11 @@ void Playlist::RemoveDeletedSongs() { } struct SongSimilarHash { - long operator() (const Song& song) const { - return HashSimilar(song); - } + long operator()(const Song& song) const { return HashSimilar(song); } }; struct SongSimilarEqual { - long operator() (const Song& song1, const Song& song2) const { + long operator()(const Song& song1, const Song& song2) const { return song1.IsSimilar(song2); } }; @@ -1988,23 +2069,22 @@ void Playlist::RemoveDuplicateSongs() { removeRows(rows_to_remove); } - bool Playlist::ApplyValidityOnCurrentSong(const QUrl& url, bool valid) { PlaylistItemPtr current = current_item(); - if(current) { + if (current) { Song current_song = current->Metadata(); // if validity has changed, reload the item - if(!current_song.is_stream() && - !current_song.is_cdda() && + if (!current_song.is_stream() && !current_song.is_cdda() && current_song.url() == url && - current_song.is_valid() != QFile::exists(current_song.url().toLocalFile())) { + current_song.is_valid() != + QFile::exists(current_song.url().toLocalFile())) { ReloadItems(QList() << current_row()); } // gray out the song if it's now broken; otherwise undo the gray color - if(valid) { + if (valid) { current->RemoveForegroundColor(kInvalidSongPriority); } else { current->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index cf7721dee..7567385e6 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -39,12 +39,12 @@ class QSortFilterProxyModel; class QUndoStack; namespace PlaylistUndoCommands { - class InsertItems; - class RemoveItems; - class MoveItems; - class ReOrderItems; - class SortItems; - class ShuffleItems; +class InsertItems; +class RemoveItems; +class MoveItems; +class ReOrderItems; +class SortItems; +class ShuffleItems; } typedef QMap ColumnAlignmentMap; @@ -57,11 +57,13 @@ Q_DECLARE_METATYPE(ColumnAlignmentMap); class SongInsertVetoListener : public QObject { Q_OBJECT -public: + public: // Listener returns a list of 'invalid' songs. 'old_songs' are songs that are - // currently in the playlist and 'new_songs' are the songs about to be added if + // currently in the playlist and 'new_songs' are the songs about to be added + // if // nobody exercises a veto. - virtual SongList AboutToInsertSongs(const SongList& old_songs, const SongList& new_songs) = 0; + virtual SongList AboutToInsertSongs(const SongList& old_songs, + const SongList& new_songs) = 0; }; class Playlist : public QAbstractListModel { @@ -73,12 +75,9 @@ class Playlist : public QAbstractListModel { friend class PlaylistUndoCommands::ReOrderItems; public: - Playlist(PlaylistBackend* backend, - TaskManager* task_manager, - LibraryBackend* library, - int id, - const QString& special_type = QString(), - bool favorite = false, + Playlist(PlaylistBackend* backend, TaskManager* task_manager, + LibraryBackend* library, int id, + const QString& special_type = QString(), bool favorite = false, QObject* parent = 0); ~Playlist(); @@ -94,7 +93,6 @@ class Playlist : public QAbstractListModel { Column_Disc, Column_Year, Column_Genre, - Column_BPM, Column_Bitrate, Column_Samplerate, @@ -104,21 +102,16 @@ class Playlist : public QAbstractListModel { Column_Filetype, Column_DateCreated, Column_DateModified, - Column_Rating, Column_PlayCount, Column_SkipCount, Column_LastPlayed, Column_Score, - Column_Comment, - Column_Source, Column_Mood, - Column_Performer, Column_Grouping, - ColumnCount }; @@ -131,12 +124,12 @@ class Playlist : public QAbstractListModel { }; enum LastFMStatus { - LastFM_New = 0, // Haven't scrobbled yet, but we want to later - LastFM_Scrobbled, // Scrobbled ok - LastFM_Seeked, // The user seeked so don't scrobble - LastFM_Error, // Tried to scrobble but got an error - LastFM_Invalid, // The song isn't suitable for scrobbling - LastFM_Queued, // Track added to the queue for scrobbling + LastFM_New = 0, // Haven't scrobbled yet, but we want to later + LastFM_Scrobbled, // Scrobbled ok + LastFM_Seeked, // The user seeked so don't scrobble + LastFM_Error, // Tried to scrobble but got an error + LastFM_Invalid, // The song isn't suitable for scrobbling + LastFM_Queued, // Track added to the queue for scrobbling }; static const char* kCddaMimeType; @@ -154,14 +147,15 @@ class Playlist : public QAbstractListModel { static const int kUndoStackSize; static const int kUndoItemLimit; - static bool CompareItems(int column, Qt::SortOrder order, - PlaylistItemPtr a, PlaylistItemPtr b); + static bool CompareItems(int column, Qt::SortOrder order, PlaylistItemPtr a, + PlaylistItemPtr b); static QString column_name(Column column); static QString abbreviated_column_name(Column column); static bool column_is_editable(Playlist::Column column); - static bool set_column_value(Song& song, Column column, const QVariant& value); + static bool set_column_value(Song& song, Column column, + const QVariant& value); // Persistence void Save() const; @@ -192,7 +186,9 @@ class Playlist : public QAbstractListModel { void set_special_type(const QString& v) { special_type_ = v; } const PlaylistItemPtr& item_at(int index) const { return items_[index]; } - const bool has_item_at(int index) const { return index >= 0 && index < rowCount(); } + const bool has_item_at(int index) const { + return index >= 0 && index < rowCount(); + } PlaylistItemPtr current_item() const; @@ -203,7 +199,7 @@ class Playlist : public QAbstractListModel { SongList GetAllSongs() const; PlaylistItemList GetAllItems() const; - quint64 GetTotalLength() const; // in seconds + quint64 GetTotalLength() const; // in seconds void set_sequence(PlaylistSequence* v); PlaylistSequence* sequence() const { return playlist_sequence_; } @@ -213,28 +209,42 @@ class Playlist : public QAbstractListModel { // Scrobbling qint64 scrobble_point_nanosec() const { return scrobble_point_; } LastFMStatus get_lastfm_status() const { return lastfm_status_; } - bool have_incremented_playcount() const { return have_incremented_playcount_; } - void set_lastfm_status(LastFMStatus status) {lastfm_status_ = status; } + bool have_incremented_playcount() const { + return have_incremented_playcount_; + } + void set_lastfm_status(LastFMStatus status) { lastfm_status_ = status; } void set_have_incremented_playcount() { have_incremented_playcount_ = true; } // Changing the playlist - void InsertItems (const PlaylistItemList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertLibraryItems (const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSongs (const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSongsOrLibraryItems(const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSmartPlaylist (smart_playlists::GeneratorPtr gen, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertInternetItems (InternetService* service, - const SongList& songs, int pos = -1, bool play_now = false, bool enqueue = false); + void InsertItems(const PlaylistItemList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertLibraryItems(const SongList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertSongs(const SongList& items, int pos = -1, bool play_now = false, + bool enqueue = false); + void InsertSongsOrLibraryItems(const SongList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertSmartPlaylist(smart_playlists::GeneratorPtr gen, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertInternetItems(InternetService* service, const SongList& songs, + int pos = -1, bool play_now = false, + bool enqueue = false); void ReshuffleIndices(); - - // If this playlist contains the current item, this method will apply the "valid" flag on it. - // If the "valid" flag is false, the song will be greyed out. Otherwise the grey color will + + // If this playlist contains the current item, this method will apply the + // "valid" flag on it. + // If the "valid" flag is false, the song will be greyed out. Otherwise the + // grey color will // be undone. - // If the song is a local file and it's valid but non existent or invalid but exists, the - // song will be reloaded to even out the situation because obviously something has changed. - // This returns true if this playlist had current item when the method was invoked. + // If the song is a local file and it's valid but non existent or invalid but + // exists, the + // song will be reloaded to even out the situation because obviously something + // has changed. + // This returns true if this playlist had current item when the method was + // invoked. bool ApplyValidityOnCurrentSong(const QUrl& url, bool valid); - // Grays out and reloads all deleted songs in all playlists. Also, "ungreys" those songs + // Grays out and reloads all deleted songs in all playlists. Also, "ungreys" + // those songs // which were once deleted but now got restored somehow. void InvalidateDeletedSongs(); // Removes from the playlist all local files that don't exist anymore. @@ -257,18 +267,25 @@ class Playlist : public QAbstractListModel { void MoodbarUpdated(const QModelIndex& index); // QAbstractListModel - int rowCount(const QModelIndex& = QModelIndex()) const { return items_.count(); } - int columnCount(const QModelIndex& = QModelIndex()) const { return ColumnCount; } + int rowCount(const QModelIndex& = QModelIndex()) const { + return items_.count(); + } + int columnCount(const QModelIndex& = QModelIndex()) const { + return ColumnCount; + } QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); - QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - Qt::ItemFlags flags(const QModelIndex &index) const; + bool setData(const QModelIndex& index, const QVariant& value, int role); + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const; + Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); void sort(int column, Qt::SortOrder order); - bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()); + bool removeRows(int row, int count, + const QModelIndex& parent = QModelIndex()); public slots: void set_current_row(int index); @@ -294,11 +311,13 @@ class Playlist : public QAbstractListModel { void SetColumnAlignment(const ColumnAlignmentMap& alignment); - void InsertUrls(const QList& urls, int pos = -1, bool play_now = false, bool enqueue = false); - // Removes items with given indices from the playlist. This operation is not undoable. + void InsertUrls(const QList& urls, int pos = -1, bool play_now = false, + bool enqueue = false); + // Removes items with given indices from the playlist. This operation is not + // undoable. void RemoveItemsWithoutUndo(const QList& indices); - signals: +signals: void RestoreFinished(); void CurrentSongChanged(const Song& metadata); void EditingFinished(const QModelIndex& index); @@ -320,14 +339,15 @@ class Playlist : public QAbstractListModel { void TurnOnDynamicPlaylist(smart_playlists::GeneratorPtr gen); void InsertInternetItems(const InternetModel* model, - const QModelIndexList& items, - int pos, bool play_now, bool enqueue); + const QModelIndexList& items, int pos, bool play_now, + bool enqueue); - template - void InsertSongItems(const SongList& songs, int pos, bool play_now, bool enqueue); + template + void InsertSongItems(const SongList& songs, int pos, bool play_now, + bool enqueue); + + void InsertDynamicItems(int count); - void InsertDynamicItems(int count) ; - // Modify the playlist without changing the undo stack. These are used by // our friends in PlaylistUndoCommands void InsertItemsWithoutUndo(const PlaylistItemList& items, int pos, @@ -348,7 +368,8 @@ class Playlist : public QAbstractListModel { void TracksDequeued(); void TracksEnqueued(const QModelIndex&, int begin, int end); void QueueLayoutChanged(); - void SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index); + void SongSaveComplete(TagReaderReply* reply, + const QPersistentModelIndex& index); void ItemReloadComplete(); void ItemsLoaded(); void SongInsertVetoListenerDestroyed(); @@ -368,8 +389,8 @@ class Playlist : public QAbstractListModel { bool favorite_; PlaylistItemList items_; - QList virtual_items_; // Contains the indices into items_ in the order - // that they will be played. + QList virtual_items_; // Contains the indices into items_ in the order + // that they will be played. // A map of library ID to playlist item - for fast lookups when library // items change. QMultiMap library_items_by_id_; @@ -401,7 +422,7 @@ class Playlist : public QAbstractListModel { QString special_type_; }; -//QDataStream& operator <<(QDataStream&, const Playlist*); -//QDataStream& operator >>(QDataStream&, Playlist*&); +// QDataStream& operator <<(QDataStream&, const Playlist*); +// QDataStream& operator >>(QDataStream&, Playlist*&); -#endif // PLAYLIST_H +#endif // PLAYLIST_H diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index f8a604016..5b63d295d 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -45,11 +45,7 @@ using smart_playlists::GeneratorPtr; const int PlaylistBackend::kSongTableJoins = 4; PlaylistBackend::PlaylistBackend(Application* app, QObject* parent) - : QObject(parent), - app_(app), - db_(app_->database()) -{ -} + : QObject(parent), app_(app), db_(app_->database()) {} PlaylistBackend::PlaylistList PlaylistBackend::GetAllPlaylists() { return GetPlaylists(GetPlaylists_All); @@ -63,7 +59,8 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetAllFavoritePlaylists() { return GetPlaylists(GetPlaylists_Favorite); } -PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags flags) { +PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists( + GetPlaylistsFlags flags) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); @@ -81,15 +78,16 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags fl condition = " WHERE " + condition_list.join(" OR "); } - QSqlQuery q("SELECT ROWID, name, last_played, dynamic_playlist_type," - " dynamic_playlist_data, dynamic_playlist_backend," - " special_type, ui_path, is_favorite" - " FROM playlists" - " " + condition + - " ORDER BY ui_order", db); + QSqlQuery q( + "SELECT ROWID, name, last_played, dynamic_playlist_type," + " dynamic_playlist_data, dynamic_playlist_backend," + " special_type, ui_path, is_favorite" + " FROM playlists" + " " + + condition + " ORDER BY ui_order", + db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { Playlist p; @@ -112,15 +110,16 @@ PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(int id) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("SELECT ROWID, name, last_played, dynamic_playlist_type," - " dynamic_playlist_data, dynamic_playlist_backend," - " special_type, ui_path, is_favorite" - " FROM playlists" - " WHERE ROWID=:id", db); + QSqlQuery q( + "SELECT ROWID, name, last_played, dynamic_playlist_type," + " dynamic_playlist_data, dynamic_playlist_backend," + " special_type, ui_path, is_favorite" + " FROM playlists" + " WHERE ROWID=:id", + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return Playlist(); + if (db_->CheckErrors(q)) return Playlist(); q.next(); @@ -142,10 +141,17 @@ QList PlaylistBackend::GetPlaylistRows(int playlist) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + "," - " magnatune_songs.ROWID, " + Song::JoinSpec("magnatune_songs") + "," - " jamendo_songs.ROWID, " + Song::JoinSpec("jamendo_songs") + "," - " p.ROWID, " + Song::JoinSpec("p") + "," + QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + + "," + " magnatune_songs.ROWID, " + + Song::JoinSpec("magnatune_songs") + + "," + " jamendo_songs.ROWID, " + + Song::JoinSpec("jamendo_songs") + + "," + " p.ROWID, " + + Song::JoinSpec("p") + + "," " p.type, p.radio_service" " FROM playlist_items AS p" " LEFT JOIN songs" @@ -159,8 +165,7 @@ QList PlaylistBackend::GetPlaylistRows(int playlist) { q.bindValue(":playlist", playlist); q.exec(); - if (db_->CheckErrors(q)) - return QList(); + if (db_->CheckErrors(q)) return QList(); QList rows; @@ -179,8 +184,8 @@ QFuture PlaylistBackend::GetPlaylistItems(int playlist) { // same CUE so we're caching results of parsing CUEs std::shared_ptr state_ptr(new NewSongFromQueryState()); return QtConcurrent::mapped( - rows, std::bind( - &PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); + rows, std::bind(&PlaylistBackend::NewPlaylistItemFromQuery, this, _1, + state_ptr)); } QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { @@ -190,7 +195,8 @@ QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs std::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, std::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); + return QtConcurrent::mapped( + rows, std::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); } PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery( @@ -198,7 +204,8 @@ PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery( // The song tables get joined first, plus one each for the song ROWIDs const int playlist_row = (Song::kColumns.count() + 1) * kSongTableJoins; - PlaylistItemPtr item(PlaylistItem::NewFromType(row.value(playlist_row).toString())); + PlaylistItemPtr item( + PlaylistItem::NewFromType(row.value(playlist_row).toString())); if (item) { item->InitFromQuery(row); return RestoreCueData(item, state); @@ -218,20 +225,20 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData( PlaylistItemPtr item, std::shared_ptr state) { // we need library to run a CueParser; also, this method applies only to // file-type PlaylistItems - if(item->type() != "File") { + if (item->type() != "File") { return item; } CueParser cue_parser(app_->library_backend()); Song song = item->Metadata(); // we're only interested in .cue songs here - if(!song.has_cue()) { + if (!song.has_cue()) { return item; } QString cue_path = song.cue_path(); // if .cue was deleted - reload the song - if(!QFile::exists(cue_path)) { + if (!QFile::exists(cue_path)) { item->Reload(); return item; } @@ -240,20 +247,21 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData( { QMutexLocker locker(&state->mutex_); - if(!state->cached_cues_.contains(cue_path)) { + if (!state->cached_cues_.contains(cue_path)) { QFile cue(cue_path); cue.open(QIODevice::ReadOnly); - song_list = cue_parser.Load(&cue, cue_path, QDir(cue_path.section('/', 0, -2))); + song_list = + cue_parser.Load(&cue, cue_path, QDir(cue_path.section('/', 0, -2))); state->cached_cues_[cue_path] = song_list; } else { song_list = state->cached_cues_[cue_path]; } } - foreach(const Song& from_list, song_list) { - if(from_list.url().toEncoded() == song.url().toEncoded() && - from_list.beginning_nanosec() == song.beginning_nanosec()) { + foreach(const Song & from_list, song_list) { + if (from_list.url().toEncoded() == song.url().toEncoded() && + from_list.beginning_nanosec() == song.beginning_nanosec()) { // we found a matching section; replace the input // item with a new one containing CUE metadata return PlaylistItemPtr(new SongPlaylistItem(from_list)); @@ -265,13 +273,13 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData( return item; } -void PlaylistBackend::SavePlaylistAsync(int playlist, const PlaylistItemList &items, +void PlaylistBackend::SavePlaylistAsync(int playlist, + const PlaylistItemList& items, int last_played, GeneratorPtr dynamic) { - metaObject()->invokeMethod(this, "SavePlaylist", Qt::QueuedConnection, - Q_ARG(int, playlist), - Q_ARG(PlaylistItemList, items), - Q_ARG(int, last_played), - Q_ARG(smart_playlists::GeneratorPtr, dynamic)); + metaObject()->invokeMethod( + this, "SavePlaylist", Qt::QueuedConnection, Q_ARG(int, playlist), + Q_ARG(PlaylistItemList, items), Q_ARG(int, last_played), + Q_ARG(smart_playlists::GeneratorPtr, dynamic)); } void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, @@ -280,28 +288,32 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, QSqlDatabase db(db_->Connect()); QSqlQuery clear("DELETE FROM playlist_items WHERE playlist = :playlist", db); - QSqlQuery insert("INSERT INTO playlist_items" - " (playlist, type, library_id, radio_service, " + - Song::kColumnSpec + ")" - " VALUES (:playlist, :type, :library_id, :radio_service, " + - Song::kBindSpec + ")", db); - QSqlQuery update("UPDATE playlists SET " - " last_played=:last_played," - " dynamic_playlist_type=:dynamic_type," - " dynamic_playlist_data=:dynamic_data," - " dynamic_playlist_backend=:dynamic_backend" - " WHERE ROWID=:playlist", db); + QSqlQuery insert( + "INSERT INTO playlist_items" + " (playlist, type, library_id, radio_service, " + + Song::kColumnSpec + + ")" + " VALUES (:playlist, :type, :library_id, :radio_service, " + + Song::kBindSpec + ")", + db); + QSqlQuery update( + "UPDATE playlists SET " + " last_played=:last_played," + " dynamic_playlist_type=:dynamic_type," + " dynamic_playlist_data=:dynamic_data," + " dynamic_playlist_backend=:dynamic_backend" + " WHERE ROWID=:playlist", + db); ScopedTransaction transaction(&db); // Clear the existing items in the playlist clear.bindValue(":playlist", playlist); clear.exec(); - if (db_->CheckErrors(clear)) - return; + if (db_->CheckErrors(clear)) return; // Save the new ones - foreach (PlaylistItemPtr item, items) { + foreach(PlaylistItemPtr item, items) { insert.bindValue(":playlist", playlist); item->BindToQuery(&insert); @@ -322,24 +334,24 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, } update.bindValue(":playlist", playlist); update.exec(); - if (db_->CheckErrors(update)) - return; + if (db_->CheckErrors(update)) return; transaction.Commit(); } -int PlaylistBackend::CreatePlaylist(const QString &name, +int PlaylistBackend::CreatePlaylist(const QString& name, const QString& special_type) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("INSERT INTO playlists (name, special_type)" - " VALUES (:name, :special_type)", db); + QSqlQuery q( + "INSERT INTO playlists (name, special_type)" + " VALUES (:name, :special_type)", + db); q.bindValue(":name", name); q.bindValue(":special_type", special_type); q.exec(); - if (db_->CheckErrors(q)) - return -1; + if (db_->CheckErrors(q)) return -1; return q.lastInsertId().toInt(); } @@ -356,17 +368,15 @@ void PlaylistBackend::RemovePlaylist(int id) { ScopedTransaction transaction(&db); delete_playlist.exec(); - if (db_->CheckErrors(delete_playlist)) - return; + if (db_->CheckErrors(delete_playlist)) return; delete_items.exec(); - if (db_->CheckErrors(delete_items)) - return; + if (db_->CheckErrors(delete_items)) return; transaction.Commit(); } -void PlaylistBackend::RenamePlaylist(int id, const QString &new_name) { +void PlaylistBackend::RenamePlaylist(int id, const QString& new_name) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q("UPDATE playlists SET name=:name WHERE ROWID=:id", db); @@ -380,7 +390,8 @@ void PlaylistBackend::RenamePlaylist(int id, const QString &new_name) { void PlaylistBackend::FavoritePlaylist(int id, bool is_favorite) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id", db); + QSqlQuery q("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id", + db); q.bindValue(":is_favorite", is_favorite ? 1 : 0); q.bindValue(":id", id); @@ -395,16 +406,14 @@ void PlaylistBackend::SetPlaylistOrder(const QList& ids) { QSqlQuery q("UPDATE playlists SET ui_order=-1", db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; q = QSqlQuery("UPDATE playlists SET ui_order=:index WHERE ROWID=:id", db); - for (int i=0 ; iCheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; } transaction.Commit(); @@ -420,8 +429,7 @@ void PlaylistBackend::SetPlaylistUiPath(int id, const QString& path) { q.bindValue(":path", path); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; transaction.Commit(); } diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h index eebf07303..e0d941578 100644 --- a/src/playlist/playlistbackend.h +++ b/src/playlist/playlistbackend.h @@ -37,11 +37,7 @@ class PlaylistBackend : public QObject { Q_INVOKABLE PlaylistBackend(Application* app, QObject* parent = 0); struct Playlist { - Playlist() - : id(-1), - favorite(false), - last_played(0) { - } + Playlist() : id(-1), favorite(false), last_played(0) {} int id; QString name; @@ -73,7 +69,8 @@ class PlaylistBackend : public QObject { int CreatePlaylist(const QString& name, const QString& special_type); void SavePlaylistAsync(int playlist, const PlaylistItemList& items, - int last_played, smart_playlists::GeneratorPtr dynamic); + int last_played, + smart_playlists::GeneratorPtr dynamic); void RenamePlaylist(int id, const QString& new_name); void FavoritePlaylist(int id, bool is_favorite); void RemovePlaylist(int id); @@ -92,9 +89,12 @@ class PlaylistBackend : public QObject { QList GetPlaylistRows(int playlist); - Song NewSongFromQuery(const SqlRow& row, std::shared_ptr state); - PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, std::shared_ptr state); - PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, std::shared_ptr state); + Song NewSongFromQuery(const SqlRow& row, + std::shared_ptr state); + PlaylistItemPtr NewPlaylistItemFromQuery( + const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, + std::shared_ptr state); enum GetPlaylistsFlags { GetPlaylists_OpenInUi = 1, @@ -107,4 +107,4 @@ class PlaylistBackend : public QObject { Database* db_; }; -#endif // PLAYLISTBACKEND_H +#endif // PLAYLISTBACKEND_H diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index 4ef863718..70e0b9327 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -37,19 +37,18 @@ const char* PlaylistContainer::kSettingsGroup = "Playlist"; const int PlaylistContainer::kFilterDelayMs = 100; const int PlaylistContainer::kFilterDelayPlaylistSizeThreshold = 5000; -PlaylistContainer::PlaylistContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui_PlaylistContainer), - manager_(nullptr), - undo_(nullptr), - redo_(nullptr), - playlist_(nullptr), - starting_up_(true), - tab_bar_visible_(false), - tab_bar_animation_(new QTimeLine(500, this)), - no_matches_label_(nullptr), - filter_timer_(new QTimer(this)) -{ +PlaylistContainer::PlaylistContainer(QWidget* parent) + : QWidget(parent), + ui_(new Ui_PlaylistContainer), + manager_(nullptr), + undo_(nullptr), + redo_(nullptr), + playlist_(nullptr), + starting_up_(true), + tab_bar_visible_(false), + tab_bar_animation_(new QTimeLine(500, this)), + no_matches_label_(nullptr), + filter_timer_(new QTimer(this)) { ui_->setupUi(this); no_matches_label_ = new QLabel(ui_->playlist); @@ -61,9 +60,12 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) // Set the colour of the no matches label to the disabled text colour QPalette no_matches_palette = no_matches_label_->palette(); - const QColor no_matches_color = no_matches_palette.color(QPalette::Disabled, QPalette::Text); - no_matches_palette.setColor(QPalette::Normal, QPalette::WindowText, no_matches_color); - no_matches_palette.setColor(QPalette::Inactive, QPalette::WindowText, no_matches_color); + const QColor no_matches_color = + no_matches_palette.color(QPalette::Disabled, QPalette::Text); + no_matches_palette.setColor(QPalette::Normal, QPalette::WindowText, + no_matches_color); + no_matches_palette.setColor(QPalette::Inactive, QPalette::WindowText, + no_matches_color); no_matches_label_->setPalette(no_matches_palette); // Make it bold @@ -77,7 +79,8 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) ui_->tab_bar->setExpanding(false); ui_->tab_bar->setMovable(true); - connect(tab_bar_animation_, SIGNAL(frameChanged(int)), SLOT(SetTabBarHeight(int))); + connect(tab_bar_animation_, SIGNAL(frameChanged(int)), + SLOT(SetTabBarHeight(int))); ui_->tab_bar->setMaximumHeight(0); // Connections @@ -87,21 +90,18 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) // set up timer for delayed filter updates filter_timer_->setSingleShot(true); filter_timer_->setInterval(kFilterDelayMs); - connect(filter_timer_,SIGNAL(timeout()),this,SLOT(UpdateFilter())); + connect(filter_timer_, SIGNAL(timeout()), this, SLOT(UpdateFilter())); // Replace playlist search filter with native search box. connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(MaybeUpdateFilter())); - connect(ui_->playlist, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->playlist, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); ui_->filter->installEventFilter(this); } -PlaylistContainer::~PlaylistContainer() { - delete ui_; -} +PlaylistContainer::~PlaylistContainer() { delete ui_; } -PlaylistView* PlaylistContainer::view() const { - return ui_->playlist; -} +PlaylistView* PlaylistContainer::view() const { return ui_->playlist; } void PlaylistContainer::SetActions(QAction* new_playlist, QAction* load_playlist, @@ -118,55 +118,55 @@ void PlaylistContainer::SetActions(QAction* new_playlist, connect(save_playlist, SIGNAL(triggered()), SLOT(SavePlaylist())); connect(load_playlist, SIGNAL(triggered()), SLOT(LoadPlaylist())); connect(next_playlist, SIGNAL(triggered()), SLOT(GoToNextPlaylistTab())); - connect(previous_playlist, SIGNAL(triggered()), SLOT(GoToPreviousPlaylistTab())); + connect(previous_playlist, SIGNAL(triggered()), + SLOT(GoToPreviousPlaylistTab())); } -void PlaylistContainer::SetManager(PlaylistManager *manager) { +void PlaylistContainer::SetManager(PlaylistManager* manager) { manager_ = manager; ui_->tab_bar->SetManager(manager); - connect(ui_->tab_bar, SIGNAL(CurrentIdChanged(int)), - manager, SLOT(SetCurrentPlaylist(int))); - connect(ui_->tab_bar, SIGNAL(Rename(int,QString)), - manager, SLOT(Rename(int,QString))); - connect(ui_->tab_bar, SIGNAL(Close(int)), - manager, SLOT(Close(int))); - connect(ui_->tab_bar, SIGNAL(PlaylistFavorited(int, bool)), - manager, SLOT(Favorite(int, bool))); + connect(ui_->tab_bar, SIGNAL(CurrentIdChanged(int)), manager, + SLOT(SetCurrentPlaylist(int))); + connect(ui_->tab_bar, SIGNAL(Rename(int, QString)), manager, + SLOT(Rename(int, QString))); + connect(ui_->tab_bar, SIGNAL(Close(int)), manager, SLOT(Close(int))); + connect(ui_->tab_bar, SIGNAL(PlaylistFavorited(int, bool)), manager, + SLOT(Favorite(int, bool))); - connect(ui_->tab_bar, SIGNAL(PlaylistOrderChanged(QList)), - manager, SLOT(ChangePlaylistOrder(QList))); + connect(ui_->tab_bar, SIGNAL(PlaylistOrderChanged(QList)), manager, + SLOT(ChangePlaylistOrder(QList))); connect(manager, SIGNAL(CurrentChanged(Playlist*)), SLOT(SetViewModel(Playlist*))); - connect(manager, SIGNAL(PlaylistAdded(int,QString,bool)), - SLOT(PlaylistAdded(int,QString,bool))); - connect(manager, SIGNAL(PlaylistClosed(int)), - SLOT(PlaylistClosed(int))); - connect(manager, SIGNAL(PlaylistRenamed(int,QString)), - SLOT(PlaylistRenamed(int,QString))); + connect(manager, SIGNAL(PlaylistAdded(int, QString, bool)), + SLOT(PlaylistAdded(int, QString, bool))); + connect(manager, SIGNAL(PlaylistClosed(int)), SLOT(PlaylistClosed(int))); + connect(manager, SIGNAL(PlaylistRenamed(int, QString)), + SLOT(PlaylistRenamed(int, QString))); } void PlaylistContainer::SetViewModel(Playlist* playlist) { if (view()->selectionModel()) { - disconnect(view()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(SelectionChanged())); + disconnect(view()->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, + SLOT(SelectionChanged())); } if (playlist_ && playlist_->proxy()) { - disconnect(playlist_->proxy(), SIGNAL(modelReset()), + disconnect(playlist_->proxy(), SIGNAL(modelReset()), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex,int,int)), + disconnect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, SLOT(UpdateNoMatchesLabel())); } if (playlist_) { - disconnect(playlist_, SIGNAL(modelReset()), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(modelReset()), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateNoMatchesLabel())); } playlist_ = playlist; @@ -176,23 +176,30 @@ void PlaylistContainer::SetViewModel(Playlist* playlist) { view()->setModel(playlist->proxy()); view()->SetItemDelegates(manager_->library_backend()); view()->SetPlaylist(playlist); - view()->selectionModel()->select(manager_->current_selection(), QItemSelectionModel::ClearAndSelect); + view()->selectionModel()->select(manager_->current_selection(), + QItemSelectionModel::ClearAndSelect); playlist->IgnoreSorting(false); - connect(view()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(SelectionChanged())); + connect(view()->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, + SLOT(SelectionChanged())); emit ViewSelectionModelChanged(); // Update filter ui_->filter->setText(playlist->proxy()->filterRegExp().pattern()); // Update the no matches label - connect(playlist_->proxy(), SIGNAL(modelReset()), SLOT(UpdateNoMatchesLabel())); - connect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); - connect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(modelReset()), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); connect(playlist_, SIGNAL(modelReset()), SLOT(UpdateNoMatchesLabel())); - connect(playlist_, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); - connect(playlist_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); + connect(playlist_, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); UpdateNoMatchesLabel(); // Ensure that tab is current @@ -213,7 +220,6 @@ void PlaylistContainer::SetViewModel(Playlist* playlist) { ui_->redo->setDefaultAction(redo_); emit UndoRedoActionsChanged(undo_, redo_); - } void PlaylistContainer::ActivePlaying() { @@ -224,22 +230,20 @@ void PlaylistContainer::ActivePaused() { UpdateActiveIcon(QIcon(":tiny-pause.png")); } -void PlaylistContainer::ActiveStopped() { - UpdateActiveIcon(QIcon()); -} +void PlaylistContainer::ActiveStopped() { UpdateActiveIcon(QIcon()); } void PlaylistContainer::UpdateActiveIcon(const QIcon& icon) { // Unset all existing icons - for (int i=0 ; itab_bar->count() ; ++i) { + for (int i = 0; i < ui_->tab_bar->count(); ++i) { ui_->tab_bar->setTabIcon(i, QIcon()); } // Set our icon - if (!icon.isNull()) - ui_->tab_bar->set_icon_by_id(manager_->active_id(), icon); + if (!icon.isNull()) ui_->tab_bar->set_icon_by_id(manager_->active_id(), icon); } -void PlaylistContainer::PlaylistAdded(int id, const QString &name, bool favorite) { +void PlaylistContainer::PlaylistAdded(int id, const QString& name, + bool favorite) { const int index = ui_->tab_bar->count(); ui_->tab_bar->InsertTab(id, index, name, favorite); @@ -268,26 +272,21 @@ void PlaylistContainer::PlaylistAdded(int id, const QString &name, bool favorite void PlaylistContainer::PlaylistClosed(int id) { ui_->tab_bar->RemoveTab(id); - if (ui_->tab_bar->count() <= 1) - SetTabBarVisible(false); + if (ui_->tab_bar->count() <= 1) SetTabBarVisible(false); } -void PlaylistContainer::PlaylistRenamed(int id, const QString &new_name) { +void PlaylistContainer::PlaylistRenamed(int id, const QString& new_name) { ui_->tab_bar->set_text_by_id(id, new_name); } -void PlaylistContainer::NewPlaylist() { - manager_->New(tr("Playlist")); -} +void PlaylistContainer::NewPlaylist() { manager_->New(tr("Playlist")); } void PlaylistContainer::LoadPlaylist() { QString filename = settings_.value("last_load_playlist").toString(); - filename = QFileDialog::getOpenFileName( - this, tr("Load playlist"), filename, - manager_->parser()->filters()); + filename = QFileDialog::getOpenFileName(this, tr("Load playlist"), filename, + manager_->parser()->filters()); - if (filename.isNull()) - return; + if (filename.isNull()) return; settings_.setValue("last_load_playlist", filename); @@ -303,34 +302,33 @@ void PlaylistContainer::SavePlaylist(int id = -1) { void PlaylistContainer::GoToNextPlaylistTab() { // Get the next tab' id - int id_next = - ui_->tab_bar->id_of((ui_->tab_bar->currentIndex()+1)%ui_->tab_bar->count()); + int id_next = ui_->tab_bar->id_of((ui_->tab_bar->currentIndex() + 1) % + ui_->tab_bar->count()); // Switch to next tab manager_->SetCurrentPlaylist(id_next); } void PlaylistContainer::GoToPreviousPlaylistTab() { // Get the next tab' id - int id_previous = - ui_->tab_bar->id_of((ui_->tab_bar->currentIndex()+ui_->tab_bar->count()-1) - % ui_->tab_bar->count()); + int id_previous = ui_->tab_bar->id_of( + (ui_->tab_bar->currentIndex() + ui_->tab_bar->count() - 1) % + ui_->tab_bar->count()); // Switch to next tab manager_->SetCurrentPlaylist(id_previous); } void PlaylistContainer::Save() { - if (starting_up_) - return; + if (starting_up_) return; settings_.setValue("current_playlist", ui_->tab_bar->current_id()); } void PlaylistContainer::SetTabBarVisible(bool visible) { - if (tab_bar_visible_ == visible) - return; + if (tab_bar_visible_ == visible) return; tab_bar_visible_ = visible; - tab_bar_animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + tab_bar_animation_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); tab_bar_animation_->start(); } @@ -363,7 +361,9 @@ void PlaylistContainer::UpdateNoMatchesLabel() { QString text; if (has_rows && !has_results) { - text = tr("No matches found. Clear the search box to show the whole playlist again."); + text = + tr("No matches found. Clear the search box to show the whole playlist " + "again."); } if (!text.isEmpty()) { @@ -380,7 +380,7 @@ void PlaylistContainer::resizeEvent(QResizeEvent* e) { RepositionNoMatchesLabel(); } -void PlaylistContainer::FocusOnFilter(QKeyEvent *event) { +void PlaylistContainer::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(); if (event->key() == Qt::Key_Escape) { ui_->filter->clear(); @@ -390,12 +390,12 @@ void PlaylistContainer::FocusOnFilter(QKeyEvent *event) { } void PlaylistContainer::RepositionNoMatchesLabel(bool force) { - if (!force && !no_matches_label_->isVisible()) - return; + if (!force && !no_matches_label_->isVisible()) return; const int kBorder = 10; - QPoint pos = ui_->playlist->viewport()->mapTo(ui_->playlist, QPoint(kBorder, kBorder)); + QPoint pos = + ui_->playlist->viewport()->mapTo(ui_->playlist, QPoint(kBorder, kBorder)); QSize size = ui_->playlist->viewport()->size(); size.setWidth(size.width() - kBorder * 2); size.setHeight(size.height() - kBorder * 2); @@ -408,11 +408,11 @@ void PlaylistContainer::SelectionChanged() { manager_->SelectionChanged(view()->selectionModel()->selection()); } -bool PlaylistContainer::eventFilter(QObject *objectWatched, QEvent *event) { - if(objectWatched == ui_->filter) { +bool PlaylistContainer::eventFilter(QObject* objectWatched, QEvent* event) { + if (objectWatched == ui_->filter) { if (event->type() == QEvent::KeyPress) { - QKeyEvent *e = static_cast(event); - switch(e->key()) { + QKeyEvent* e = static_cast(event); + switch (e->key()) { case Qt::Key_Up: case Qt::Key_Down: case Qt::Key_PageUp: diff --git a/src/playlist/playlistcontainer.h b/src/playlist/playlistcontainer.h index 24412fac5..e3a680ae8 100644 --- a/src/playlist/playlistcontainer.h +++ b/src/playlist/playlistcontainer.h @@ -35,20 +35,20 @@ class QLabel; class PlaylistContainer : public QWidget { Q_OBJECT -public: - PlaylistContainer(QWidget *parent = 0); + public: + PlaylistContainer(QWidget* parent = 0); ~PlaylistContainer(); static const char* kSettingsGroup; void SetActions(QAction* new_playlist, QAction* load_playlist, - QAction* save_playlist, - QAction* next_playlist, QAction* previous_playlist); + QAction* save_playlist, QAction* next_playlist, + QAction* previous_playlist); void SetManager(PlaylistManager* manager); PlaylistView* view() const; - bool eventFilter(QObject *objectWatched, QEvent *event); + bool eventFilter(QObject* objectWatched, QEvent* event); signals: void TabChanged(int id); @@ -57,11 +57,11 @@ signals: void UndoRedoActionsChanged(QAction* undo, QAction* redo); void ViewSelectionModelChanged(); -protected: + protected: // QWidget - void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent*); -private slots: + private slots: void NewPlaylist(); void LoadPlaylist(); void SavePlaylist() { SavePlaylist(-1); } @@ -86,15 +86,15 @@ private slots: void SelectionChanged(); void MaybeUpdateFilter(); void UpdateFilter(); - void FocusOnFilter(QKeyEvent *event); + void FocusOnFilter(QKeyEvent* event); void UpdateNoMatchesLabel(); -private: + private: void UpdateActiveIcon(const QIcon& icon); void RepositionNoMatchesLabel(bool force = false); -private: + private: static const int kFilterDelayMs; static const int kFilterDelayPlaylistSizeThreshold; @@ -116,4 +116,4 @@ private: QTimer* filter_timer_; }; -#endif // PLAYLISTCONTAINER_H +#endif // PLAYLISTCONTAINER_H diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index b49b46ee3..a9cc47a71 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -44,23 +44,22 @@ #include "core/mac_utilities.h" #endif // Q_OS_DARWIN -const int QueuedItemDelegate::kQueueBoxBorder = 1; -const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; -const int QueuedItemDelegate::kQueueBoxLength = 30; -const QRgb QueuedItemDelegate::kQueueBoxGradientColor1 = qRgb(102, 150, 227); -const QRgb QueuedItemDelegate::kQueueBoxGradientColor2 = qRgb(77, 121, 200); -const int QueuedItemDelegate::kQueueOpacitySteps = 10; +const int QueuedItemDelegate::kQueueBoxBorder = 1; +const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; +const int QueuedItemDelegate::kQueueBoxLength = 30; +const QRgb QueuedItemDelegate::kQueueBoxGradientColor1 = qRgb(102, 150, 227); +const QRgb QueuedItemDelegate::kQueueBoxGradientColor2 = qRgb(77, 121, 200); +const int QueuedItemDelegate::kQueueOpacitySteps = 10; const float QueuedItemDelegate::kQueueOpacityLowerBound = 0.4; -const int PlaylistDelegateBase::kMinHeight = 19; +const int PlaylistDelegateBase::kMinHeight = 19; -QueuedItemDelegate::QueuedItemDelegate(QObject *parent, int indicator_column) - : QStyledItemDelegate(parent), - indicator_column_(indicator_column) -{ -} +QueuedItemDelegate::QueuedItemDelegate(QObject* parent, int indicator_column) + : QStyledItemDelegate(parent), indicator_column_(indicator_column) {} -void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { +void QueuedItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QStyledItemDelegate::paint(painter, option, index); if (index.column() == indicator_column_) { @@ -73,7 +72,7 @@ void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op opacity += kQueueOpacityLowerBound; painter->setOpacity(opacity); - DrawBox(painter, option.rect, option.font, QString::number(queue_pos+1), + DrawBox(painter, option.rect, option.font, QString::number(queue_pos + 1), kQueueBoxLength); painter->setOpacity(1.0); @@ -81,15 +80,14 @@ void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op } } -void QueuedItemDelegate::DrawBox( - QPainter* painter, const QRect& line_rect, const QFont& font, - const QString& text, int width) const { +void QueuedItemDelegate::DrawBox(QPainter* painter, const QRect& line_rect, + const QFont& font, const QString& text, + int width) const { QFont smaller = font; smaller.setPointSize(smaller.pointSize() - 1); smaller.setBold(true); - if (width == -1) - width = QFontMetrics(font).width(text + " "); + if (width == -1) width = QFontMetrics(font).width(text + " "); QRect rect(line_rect); rect.setLeft(rect.right() - width - kQueueBoxBorder); @@ -123,36 +121,33 @@ int QueuedItemDelegate::queue_indicator_size(const QModelIndex& index) const { if (index.column() == indicator_column_) { const int queue_pos = index.data(Playlist::Role_QueuePosition).toInt(); if (queue_pos != -1) { - return kQueueBoxLength + kQueueBoxBorder*2; + return kQueueBoxLength + kQueueBoxBorder * 2; } } return 0; } +PlaylistDelegateBase::PlaylistDelegateBase(QObject* parent, + const QString& suffix) + : QueuedItemDelegate(parent), + view_(qobject_cast(parent)), + suffix_(suffix) {} -PlaylistDelegateBase::PlaylistDelegateBase(QObject* parent, const QString& suffix) - : QueuedItemDelegate(parent), - view_(qobject_cast(parent)), - suffix_(suffix) -{ -} - -QString PlaylistDelegateBase::displayText(const QVariant& value, const QLocale&) const { +QString PlaylistDelegateBase::displayText(const QVariant& value, + const QLocale&) const { QString text; switch (static_cast(value.type())) { case QMetaType::Int: { int v = value.toInt(); - if (v > 0) - text = QString::number(v); + if (v > 0) text = QString::number(v); break; } case QMetaType::Float: case QMetaType::Double: { double v = value.toDouble(); - if (v > 0) - text = QString::number(v); + if (v > 0) text = QString::number(v); break; } @@ -161,19 +156,20 @@ QString PlaylistDelegateBase::displayText(const QVariant& value, const QLocale&) break; } - if (!text.isNull() && !suffix_.isNull()) - text += " " + suffix_; + if (!text.isNull() && !suffix_.isNull()) text += " " + suffix_; return text; } -QSize PlaylistDelegateBase::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { +QSize PlaylistDelegateBase::sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const { QSize size = QueuedItemDelegate::sizeHint(option, index); - if (size.height() < kMinHeight) - size.setHeight(kMinHeight); + if (size.height() < kMinHeight) size.setHeight(kMinHeight); return size; } -void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void PlaylistDelegateBase::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QueuedItemDelegate::paint(painter, Adjusted(option, index), index); // Stop after indicator @@ -187,9 +183,9 @@ void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& } } -QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted(const QStyleOptionViewItem& option, const QModelIndex& index) const { - if (!view_) - return option; +QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted( + const QStyleOptionViewItem& option, const QModelIndex& index) const { + if (!view_) return option; QPoint top_left(-view_->horizontalScrollBar()->value(), -view_->verticalScrollBar()->value()); @@ -208,19 +204,18 @@ QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted(const QStyleOptionViewItem return ret; } -bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, - const QModelIndex &index) { +bool PlaylistDelegateBase::helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, + const QModelIndex& index) { // This function is copied from QAbstractItemDelegate, and changed to show // displayText() in the tooltip, rather than the index's naked // Qt::ToolTipRole text. Q_UNUSED(option); - if (!event || !view) - return false; + if (!event || !view) return false; - QHelpEvent *he = static_cast(event); + QHelpEvent* he = static_cast(event); QString text = displayText(index.data(), QLocale::system()); // Special case: we want newlines in the comment tooltip @@ -232,8 +227,7 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, text.replace("\n", "
"); } - if (text.isEmpty() || !he) - return false; + if (text.isEmpty() || !he) return false; switch (event->type()) { case QEvent::ToolTip: { @@ -244,9 +238,9 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, real_text = sizeHint(option, index); displayed_text = view->visualRect(index); is_elided = displayed_text.width() < real_text.width(); - if(is_elided) { + if (is_elided) { QToolTip::showText(he->globalPos(), text, view); - } else { // in case that another text was previously displayed + } else { // in case that another text was previously displayed QToolTip::hideText(); } return true; @@ -265,83 +259,80 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, return false; } - -QString LengthItemDelegate::displayText(const QVariant& value, const QLocale&) const { +QString LengthItemDelegate::displayText(const QVariant& value, + const QLocale&) const { bool ok = false; qint64 nanoseconds = value.toLongLong(&ok); - if (ok && nanoseconds > 0) - return Utilities::PrettyTimeNanosec(nanoseconds); + if (ok && nanoseconds > 0) return Utilities::PrettyTimeNanosec(nanoseconds); return QString::null; } - -QString SizeItemDelegate::displayText(const QVariant& value, const QLocale&) const { +QString SizeItemDelegate::displayText(const QVariant& value, + const QLocale&) const { bool ok = false; int bytes = value.toInt(&ok); - if (ok) - return Utilities::PrettySize(bytes); + if (ok) return Utilities::PrettySize(bytes); return QString(); } -QString DateItemDelegate::displayText(const QVariant &value, const QLocale &locale) const { +QString DateItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; int time = value.toInt(&ok); - if (!ok || time == -1) - return QString::null; + if (!ok || time == -1) return QString::null; - return QDateTime::fromTime_t(time).toString( - QLocale::system().dateTimeFormat(QLocale::ShortFormat)); + return QDateTime::fromTime_t(time) + .toString(QLocale::system().dateTimeFormat(QLocale::ShortFormat)); } -QString LastPlayedItemDelegate::displayText(const QVariant& value, const QLocale& locale) const { +QString LastPlayedItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; const int time = value.toInt(&ok); - if (!ok || time == -1) - return tr("Never"); + if (!ok || time == -1) return tr("Never"); return Utilities::Ago(time, locale); } -QString FileTypeItemDelegate::displayText(const QVariant &value, const QLocale &locale) const { +QString FileTypeItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; Song::FileType type = Song::FileType(value.toInt(&ok)); - if (!ok) - return tr("Unknown"); + if (!ok) return tr("Unknown"); return Song::TextForFiletype(type); } -QWidget* TextItemDelegate::createEditor( - QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const { +QWidget* TextItemDelegate::createEditor(QWidget* parent, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { return new QLineEdit(parent); } RatingItemDelegate::RatingItemDelegate(QObject* parent) - : PlaylistDelegateBase(parent) -{ -} + : PlaylistDelegateBase(parent) {} -void RatingItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void RatingItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Draw the background const QStyleOptionViewItemV3* vopt = qstyleoption_cast(&option); - vopt->widget->style()->drawPrimitive( - QStyle::PE_PanelItemViewItem, vopt, painter, vopt->widget); + vopt->widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, vopt, + painter, vopt->widget); // Don't draw anything else if the user can't set the rating of this item - if (!index.data(Playlist::Role_CanSetRating).toBool()) - return; + if (!index.data(Playlist::Role_CanSetRating).toBool()) return; - const bool hover = mouse_over_index_.isValid() && ( - mouse_over_index_ == index || ( - selected_indexes_.contains(mouse_over_index_) && - selected_indexes_.contains(index))); + const bool hover = mouse_over_index_.isValid() && + (mouse_over_index_ == index || + (selected_indexes_.contains(mouse_over_index_) && + selected_indexes_.contains(index))); const double rating = (hover ? RatingPainter::RatingForPos(mouse_over_pos_, option.rect) @@ -350,27 +341,27 @@ void RatingItemDelegate::paint( painter_.Paint(painter, option.rect, rating); } -QSize RatingItemDelegate::sizeHint( - const QStyleOptionViewItem& option, const QModelIndex& index) const { +QSize RatingItemDelegate::sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const { QSize size = PlaylistDelegateBase::sizeHint(option, index); size.setWidth(size.height() * RatingPainter::kStarCount); return size; } -QString RatingItemDelegate::displayText( - const QVariant& value, const QLocale&) const { - if (value.isNull() || value.toDouble() <= 0) - return QString(); +QString RatingItemDelegate::displayText(const QVariant& value, + const QLocale&) const { + if (value.isNull() || value.toDouble() <= 0) return QString(); // Round to the nearest 0.5 - const double rating = float(int(value.toDouble() * RatingPainter::kStarCount * 2 + 0.5)) / 2; + const double rating = + float(int(value.toDouble() * RatingPainter::kStarCount * 2 + 0.5)) / 2; return QString::number(rating, 'f', 1); } -TagCompletionModel::TagCompletionModel(LibraryBackend* backend, Playlist::Column column) - : QStringListModel() -{ +TagCompletionModel::TagCompletionModel(LibraryBackend* backend, + Playlist::Column column) + : QStringListModel() { QString col = database_column(column); if (!col.isEmpty()) { setStringList(backend->GetAll(col)); @@ -379,13 +370,20 @@ TagCompletionModel::TagCompletionModel(LibraryBackend* backend, Playlist::Column QString TagCompletionModel::database_column(Playlist::Column column) { switch (column) { - case Playlist::Column_Artist: return "artist"; - case Playlist::Column_Album: return "album"; - case Playlist::Column_AlbumArtist: return "albumartist"; - case Playlist::Column_Composer: return "composer"; - case Playlist::Column_Performer: return "performer"; - case Playlist::Column_Grouping: return "grouping"; - case Playlist::Column_Genre: return "genre"; + case Playlist::Column_Artist: + return "artist"; + case Playlist::Column_Album: + return "album"; + case Playlist::Column_AlbumArtist: + return "albumartist"; + case Playlist::Column_Composer: + return "composer"; + case Playlist::Column_Performer: + return "performer"; + case Playlist::Column_Grouping: + return "grouping"; + case Playlist::Column_Genre: + return "genre"; default: qLog(Warning) << "Unknown column" << column; return QString(); @@ -399,11 +397,9 @@ static TagCompletionModel* InitCompletionModel(LibraryBackend* backend, TagCompleter::TagCompleter(LibraryBackend* backend, Playlist::Column column, QLineEdit* editor) - : QCompleter(editor), - editor_(editor) -{ - QFuture future = QtConcurrent::run( - &InitCompletionModel, backend, column); + : QCompleter(editor), editor_(editor) { + QFuture future = + QtConcurrent::run(&InitCompletionModel, backend, column); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); @@ -414,8 +410,7 @@ TagCompleter::TagCompleter(LibraryBackend* backend, Playlist::Column column, void TagCompleter::ModelReady() { QFutureWatcher* watcher = dynamic_cast*>(sender()); - if (!watcher) - return; + if (!watcher) return; TagCompletionModel* model = watcher->result(); setModel(model); @@ -423,8 +418,9 @@ void TagCompleter::ModelReady() { editor_->setCompleter(this); } -QWidget* TagCompletionItemDelegate::createEditor( - QWidget* parent, const QStyleOptionViewItem&, const QModelIndex&) const { +QWidget* TagCompletionItemDelegate::createEditor(QWidget* parent, + const QStyleOptionViewItem&, + const QModelIndex&) const { QLineEdit* editor = new QLineEdit(parent); new TagCompleter(backend_, column_, editor); @@ -432,7 +428,8 @@ QWidget* TagCompletionItemDelegate::createEditor( return editor; } -QString NativeSeparatorsDelegate::displayText(const QVariant& value, const QLocale&) const { +QString NativeSeparatorsDelegate::displayText(const QVariant& value, + const QLocale&) const { const QString string_value = value.toString(); QUrl url; @@ -451,15 +448,15 @@ QString NativeSeparatorsDelegate::displayText(const QVariant& value, const QLoca } SongSourceDelegate::SongSourceDelegate(QObject* parent, Player* player) - : PlaylistDelegateBase(parent), - player_(player) { -} + : PlaylistDelegateBase(parent), player_(player) {} -QString SongSourceDelegate::displayText(const QVariant& value, const QLocale&) const { +QString SongSourceDelegate::displayText(const QVariant& value, + const QLocale&) const { return QString(); } -QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, const QSize& size) const { +QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, + const QSize& size) const { QPixmap pixmap; if (cache_.find(url.scheme(), &pixmap)) { return pixmap; @@ -485,8 +482,9 @@ QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, const QSize& size) con return pixmap; } -void SongSourceDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void SongSourceDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Draw the background PlaylistDelegateBase::paint(painter, option, index); @@ -504,7 +502,8 @@ void SongSourceDelegate::paint( #endif // Draw the pixmap in the middle of the rectangle - QRect draw_rect(QPoint(0, 0), option_copy.decorationSize / device_pixel_ratio); + QRect draw_rect(QPoint(0, 0), + option_copy.decorationSize / device_pixel_ratio); draw_rect.moveCenter(option_copy.rect.center()); painter->drawPixmap(draw_rect, pixmap); diff --git a/src/playlist/playlistdelegates.h b/src/playlist/playlistdelegates.h index 7239dd9e2..c935b6b2e 100644 --- a/src/playlist/playlistdelegates.h +++ b/src/playlist/playlistdelegates.h @@ -31,15 +31,17 @@ class Player; class QueuedItemDelegate : public QStyledItemDelegate { -public: - QueuedItemDelegate(QObject* parent, int indicator_column = Playlist::Column_Title); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - void DrawBox(QPainter* painter, const QRect& line_rect, - const QFont& font, const QString& text, int width = -1) const; + public: + QueuedItemDelegate(QObject* parent, + int indicator_column = Playlist::Column_Title); + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; + void DrawBox(QPainter* painter, const QRect& line_rect, const QFont& font, + const QString& text, int width = -1) const; int queue_indicator_size(const QModelIndex& index) const; -private: + private: static const int kQueueBoxBorder; static const int kQueueBoxCornerRadius; static const int kQueueBoxLength; @@ -55,17 +57,20 @@ class PlaylistDelegateBase : public QueuedItemDelegate { Q_OBJECT public: PlaylistDelegateBase(QObject* parent, const QString& suffix = QString()); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; QString displayText(const QVariant& value, const QLocale& locale) const; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const; - QStyleOptionViewItemV4 Adjusted(const QStyleOptionViewItem& option, const QModelIndex& index) const; + QStyleOptionViewItemV4 Adjusted(const QStyleOptionViewItem& option, + const QModelIndex& index) const; static const int kMinHeight; public slots: - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, const QModelIndex &index); + bool helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, const QModelIndex& index); protected: QTreeView* view_; @@ -91,7 +96,7 @@ class DateItemDelegate : public PlaylistDelegateBase { }; class LastPlayedItemDelegate : public PlaylistDelegateBase { -public: + public: LastPlayedItemDelegate(QObject* parent) : PlaylistDelegateBase(parent) {} QString displayText(const QVariant& value, const QLocale& locale) const; }; @@ -106,29 +111,31 @@ class TextItemDelegate : public PlaylistDelegateBase { public: TextItemDelegate(QObject* parent) : PlaylistDelegateBase(parent) {} QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const; }; class RatingItemDelegate : public PlaylistDelegateBase { -public: + public: RatingItemDelegate(QObject* parent); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; + QSize sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const; QString displayText(const QVariant& value, const QLocale& locale) const; void set_mouse_over(const QModelIndex& index, const QModelIndexList& selected_indexes, const QPoint& pos) { - mouse_over_index_ = index; - selected_indexes_ = selected_indexes; - mouse_over_pos_ = pos; + mouse_over_index_ = index; + selected_indexes_ = selected_indexes; + mouse_over_pos_ = pos; } void set_mouse_out() { mouse_over_index_ = QModelIndex(); } bool is_mouse_over() const { return mouse_over_index_.isValid(); } QModelIndex mouse_over_index() const { return mouse_over_index_; } -private: + private: RatingPainter painter_; QModelIndex mouse_over_index_; @@ -137,34 +144,35 @@ private: }; class TagCompletionModel : public QStringListModel { -public: + public: TagCompletionModel(LibraryBackend* backend, Playlist::Column column); -private: + private: static QString database_column(Playlist::Column column); }; class TagCompleter : public QCompleter { Q_OBJECT -public: + public: TagCompleter(LibraryBackend* backend, Playlist::Column column, QLineEdit* editor); -private slots: + private slots: void ModelReady(); -private: + private: QLineEdit* editor_; }; class TagCompletionItemDelegate : public PlaylistDelegateBase { public: - TagCompletionItemDelegate(QObject* parent, LibraryBackend* backend, Playlist::Column column) : - PlaylistDelegateBase(parent), backend_(backend), column_(column) {}; + TagCompletionItemDelegate(QObject* parent, LibraryBackend* backend, + Playlist::Column column) + : PlaylistDelegateBase(parent), backend_(backend), column_(column) {}; QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const; private: LibraryBackend* backend_; @@ -181,7 +189,8 @@ class SongSourceDelegate : public PlaylistDelegateBase { public: SongSourceDelegate(QObject* parent, Player* player); QString displayText(const QVariant& value, const QLocale& locale) const; - void paint(QPainter* paint, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* paint, const QStyleOptionViewItem& option, + const QModelIndex& index) const; private: QPixmap LookupPixmap(const QUrl& url, const QSize& size) const; @@ -190,4 +199,4 @@ class SongSourceDelegate : public PlaylistDelegateBase { mutable QPixmapCache cache_; }; -#endif // PLAYLISTDELEGATES_H +#endif // PLAYLISTDELEGATES_H diff --git a/src/playlist/playlistfilter.cpp b/src/playlist/playlistfilter.cpp index d96dc0d3f..68e7c88c3 100644 --- a/src/playlist/playlistfilter.cpp +++ b/src/playlist/playlistfilter.cpp @@ -20,11 +20,10 @@ #include -PlaylistFilter::PlaylistFilter(QObject *parent) - : QSortFilterProxyModel(parent), - filter_tree_(new NopFilter), - query_hash_(0) -{ +PlaylistFilter::PlaylistFilter(QObject* parent) + : QSortFilterProxyModel(parent), + filter_tree_(new NopFilter), + query_hash_(0) { setDynamicSortFilter(true); column_names_["title"] = Playlist::Column_Title; @@ -47,25 +46,21 @@ PlaylistFilter::PlaylistFilter(QObject *parent) column_names_["filename"] = Playlist::Column_Filename; column_names_["rating"] = Playlist::Column_Rating; - numerical_columns_ << Playlist::Column_Length - << Playlist::Column_Track - << Playlist::Column_Disc - << Playlist::Column_Year - << Playlist::Column_Score - << Playlist::Column_BPM - << Playlist::Column_Bitrate - << Playlist::Column_Rating; + numerical_columns_ << Playlist::Column_Length << Playlist::Column_Track + << Playlist::Column_Disc << Playlist::Column_Year + << Playlist::Column_Score << Playlist::Column_BPM + << Playlist::Column_Bitrate << Playlist::Column_Rating; } -PlaylistFilter::~PlaylistFilter() { -} +PlaylistFilter::~PlaylistFilter() {} void PlaylistFilter::sort(int column, Qt::SortOrder order) { // Pass this through to the Playlist, it does sorting itself sourceModel()->sort(column, order); } -bool PlaylistFilter::filterAcceptsRow(int row, const QModelIndex &parent) const { +bool PlaylistFilter::filterAcceptsRow(int row, + const QModelIndex& parent) const { QString filter = filterRegExp().pattern(); uint hash = qHash(filter); @@ -78,5 +73,5 @@ bool PlaylistFilter::filterAcceptsRow(int row, const QModelIndex &parent) const } // Test the row - return filter_tree_->accept(row,parent,sourceModel()); + return filter_tree_->accept(row, parent, sourceModel()); } diff --git a/src/playlist/playlistfilter.h b/src/playlist/playlistfilter.h index 70a04db77..ae1ee03af 100644 --- a/src/playlist/playlistfilter.h +++ b/src/playlist/playlistfilter.h @@ -30,7 +30,7 @@ class FilterTree; class PlaylistFilter : public QSortFilterProxyModel { Q_OBJECT -public: + public: PlaylistFilter(QObject* parent = 0); ~PlaylistFilter(); @@ -39,9 +39,9 @@ public: // QSortFilterProxyModel // public so Playlist::NextVirtualIndex and friends can get at it - bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; + bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; -private: + private: // Mutable because they're modified from filterAcceptsRow() const mutable QScopedPointer filter_tree_; mutable uint query_hash_; @@ -50,4 +50,4 @@ private: QSet numerical_columns_; }; -#endif // PLAYLISTFILTER_H +#endif // PLAYLISTFILTER_H diff --git a/src/playlist/playlistfilterparser.cpp b/src/playlist/playlistfilterparser.cpp index d4dadadab..b5628524c 100644 --- a/src/playlist/playlistfilterparser.cpp +++ b/src/playlist/playlistfilterparser.cpp @@ -34,6 +34,7 @@ class DefaultComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.contains(search_term_); } + private: QString search_term_; }; @@ -44,6 +45,7 @@ class EqComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return search_term_ == element; } + private: QString search_term_; }; @@ -54,6 +56,7 @@ class NeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return search_term_ != element; } + private: QString search_term_; }; @@ -64,6 +67,7 @@ class LexicalGtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element > search_term_; } + private: QString search_term_; }; @@ -74,6 +78,7 @@ class LexicalGeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element >= search_term_; } + private: QString search_term_; }; @@ -84,6 +89,7 @@ class LexicalLtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element < search_term_; } + private: QString search_term_; }; @@ -94,6 +100,7 @@ class LexicalLeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element <= search_term_; } + private: QString search_term_; }; @@ -104,6 +111,7 @@ class GtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() > search_term_; } + private: int search_term_; }; @@ -114,6 +122,7 @@ class GeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() >= search_term_; } + private: int search_term_; }; @@ -124,6 +133,7 @@ class LtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() < search_term_; } + private: int search_term_; }; @@ -134,6 +144,7 @@ class LeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() <= search_term_; } + private: int search_term_; }; @@ -149,10 +160,11 @@ class DropTailComparatorDecorator : public SearchTermComparator { virtual bool Matches(const QString& element) const { if (element.length() > 9) - return cmp_->Matches(element.left(element.length()-9)); + return cmp_->Matches(element.left(element.length() - 9)); else return cmp_->Matches(element); } + private: QScopedPointer cmp_; }; @@ -164,6 +176,7 @@ class RatingComparatorDecorator : public SearchTermComparator { return cmp_->Matches( QString::number(static_cast(element.toDouble() * 10.0 + 0.5))); } + private: QScopedPointer cmp_; }; @@ -171,32 +184,39 @@ class RatingComparatorDecorator : public SearchTermComparator { // filter that applies a SearchTermComparator to all fields of a playlist entry class FilterTerm : public FilterTree { public: - explicit FilterTerm(SearchTermComparator* comparator, const QList& columns) : cmp_(comparator), columns_(columns) {} + explicit FilterTerm(SearchTermComparator* comparator, + const QList& columns) + : cmp_(comparator), columns_(columns) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (int i, columns_) { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + foreach(int i, columns_) { QModelIndex idx(model->index(row, i, parent)); - if (cmp_->Matches(idx.data().toString().toLower())) - return true; + if (cmp_->Matches(idx.data().toString().toLower())) return true; } return false; } virtual FilterType type() { return Term; } + private: QScopedPointer cmp_; QList columns_; }; -// filter that applies a SearchTermComparator to one specific field of a playlist entry +// filter that applies a SearchTermComparator to one specific field of a +// playlist entry class FilterColumnTerm : public FilterTree { public: - FilterColumnTerm(int column, SearchTermComparator* comparator) : col(column), cmp_(comparator) {} + FilterColumnTerm(int column, SearchTermComparator* comparator) + : col(column), cmp_(comparator) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { QModelIndex idx(model->index(row, col, parent)); return cmp_->Matches(idx.data().toString().toLower()); } virtual FilterType type() { return Column; } + private: int col; QScopedPointer cmp_; @@ -206,26 +226,29 @@ class NotFilter : public FilterTree { public: explicit NotFilter(const FilterTree* inv) : child_(inv) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { return !child_->accept(row, parent, model); } virtual FilterType type() { return Not; } + private: QScopedPointer child_; }; -class OrFilter : public FilterTree { +class OrFilter : public FilterTree { public: ~OrFilter() { qDeleteAll(children_); } virtual void add(FilterTree* child) { children_.append(child); } - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (FilterTree* child, children_) { - if (child->accept(row, parent, model)) - return true; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + foreach(FilterTree * child, children_) { + if (child->accept(row, parent, model)) return true; } return false; } FilterType type() { return Or; } + private: QList children_; }; @@ -234,22 +257,25 @@ class AndFilter : public FilterTree { public: virtual ~AndFilter() { qDeleteAll(children_); } virtual void add(FilterTree* child) { children_.append(child); } - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (FilterTree* child, children_) { - if (!child->accept(row, parent, model)) - return false; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + foreach(FilterTree * child, children_) { + if (!child->accept(row, parent, model)) return false; } return true; } FilterType type() { return And; } + private: QList children_; }; -FilterParser::FilterParser(const QString& filter, const QMap& columns, const QSet& numerical_cols) - : filterstring_(filter), columns_(columns), numerical_columns_(numerical_cols) -{ -} +FilterParser::FilterParser(const QString& filter, + const QMap& columns, + const QSet& numerical_cols) + : filterstring_(filter), + columns_(columns), + numerical_columns_(numerical_cols) {} FilterTree* FilterParser::parse() { iter_ = filterstring_.constBegin(); @@ -265,8 +291,7 @@ void FilterParser::advance() { FilterTree* FilterParser::parseOrGroup() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; OrFilter* group = new OrFilter; group->add(parseAndGroup()); @@ -280,15 +305,13 @@ FilterTree* FilterParser::parseOrGroup() { FilterTree* FilterParser::parseAndGroup() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; AndFilter* group = new AndFilter(); do { group->add(parseSearchExpression()); advance(); - if (iter_ != end_ && *iter_ == QChar(')')) - break; + if (iter_ != end_ && *iter_ == QChar(')')) break; if (checkOr(false)) { break; } @@ -308,7 +331,8 @@ bool FilterParser::checkAnd() { if (iter_ != end_ && *iter_ == QChar('D')) { buf_ += *iter_; iter_++; - if (iter_ != end_ && (iter_->isSpace() || *iter_ == QChar('-') || *iter_ == '(')) { + if (iter_ != end_ && + (iter_->isSpace() || *iter_ == QChar('-') || *iter_ == '(')) { advance(); buf_.clear(); return true; @@ -337,7 +361,8 @@ bool FilterParser::checkOr(bool step_over) { if (iter_ != end_ && *iter_ == 'R') { buf_ += *iter_; iter_++; - if (iter_ != end_ && (iter_->isSpace() || *iter_ == '-' || *iter_ == '(')) { + if (iter_ != end_ && + (iter_->isSpace() || *iter_ == '-' || *iter_ == '(')) { if (step_over) { buf_.clear(); advance(); @@ -353,8 +378,7 @@ bool FilterParser::checkOr(bool step_over) { FilterTree* FilterParser::parseSearchExpression() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; if (*iter_ == '(') { iter_++; advance(); @@ -369,8 +393,7 @@ FilterTree* FilterParser::parseSearchExpression() { } else if (*iter_ == '-') { ++iter_; FilterTree* tree = parseSearchExpression(); - if (tree->type() != FilterTree::Nop) - return new NotFilter(tree); + if (tree->type() != FilterTree::Nop) return new NotFilter(tree); return tree; } else { return parseSearchTerm(); @@ -395,17 +418,14 @@ FilterTree* FilterParser::parseSearchTerm() { col = buf_.toLower(); buf_.clear(); prefix.clear(); // prefix isn't allowed here - let's ignore it - } else if (iter_->isSpace() || - *iter_ == '(' || - *iter_ == ')' || - *iter_ == '-') { - break; + } else if (iter_->isSpace() || *iter_ == '(' || *iter_ == ')' || + *iter_ == '-') { + break; } else if (buf_.isEmpty()) { // we don't know whether there is a column part in this search term // thus we assume the latter and just try and read a prefix - if (prefix.isEmpty() && - (*iter_ == '>' || *iter_ == '<' || *iter_ == '=' || - *iter_ == '!')) { + if (prefix.isEmpty() && (*iter_ == '>' || *iter_ == '<' || + *iter_ == '=' || *iter_ == '!')) { prefix += *iter_; } else if (prefix != "=" && *iter_ == '=') { prefix += *iter_; @@ -481,8 +501,7 @@ FilterTree* FilterParser::createSearchTermTreeNode( cmp = new RatingComparatorDecorator(cmp); } return new FilterColumnTerm(columns_[col], cmp); - } - else { + } else { return new FilterTerm(cmp, columns_.values()); } } @@ -504,7 +523,7 @@ int FilterParser::parseTime(const QString& time_str) const { int seconds = 0; int accum = 0; int colon_count = 0; - foreach (const QChar& c, time_str) { + foreach(const QChar & c, time_str) { if (c.isDigit()) { accum = accum * 10 + c.digitValue(); } else if (c == ':') { diff --git a/src/playlist/playlistfilterparser.h b/src/playlist/playlistfilterparser.h index e921ee172..f6fa21454 100644 --- a/src/playlist/playlistfilterparser.h +++ b/src/playlist/playlistfilterparser.h @@ -29,26 +29,22 @@ class QAbstractItemModel; class FilterTree { public: virtual ~FilterTree() {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const = 0; - enum FilterType { - Nop = 0, - Or, - And, - Not, - Column, - Term - }; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const = 0; + enum FilterType { Nop = 0, Or, And, Not, Column, Term }; virtual FilterType type() = 0; }; // trivial filter that accepts *anything* class NopFilter : public FilterTree { public: - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { return true; } + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + return true; + } virtual FilterType type() { return Nop; } }; - // A utility class to parse search filter strings into a decision tree // that can decide whether a playlist entry matches the filter. // @@ -64,10 +60,8 @@ class NopFilter : public FilterTree { // col ::= "title" | "artist" | ... class FilterParser { public: - FilterParser( - const QString& filter, - const QMap& columns, - const QSet& numerical_cols); + FilterParser(const QString& filter, const QMap& columns, + const QSet& numerical_cols); FilterTree* parse(); @@ -84,8 +78,9 @@ class FilterParser { FilterTree* parseSearchExpression(); FilterTree* parseSearchTerm(); - FilterTree* createSearchTermTreeNode( - const QString& col, const QString& prefix, const QString& search) const; + FilterTree* createSearchTermTreeNode(const QString& col, + const QString& prefix, + const QString& search) const; int parseTime(const QString& time_str) const; QString::const_iterator iter_; diff --git a/src/playlist/playlistheader.cpp b/src/playlist/playlistheader.cpp index 49d24c244..51a79c2dc 100644 --- a/src/playlist/playlistheader.cpp +++ b/src/playlist/playlistheader.cpp @@ -28,24 +28,25 @@ PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView* view, : StretchHeaderView(orientation, parent), view_(view), menu_(new QMenu(this)), - show_mapper_(new QSignalMapper(this)) -{ + show_mapper_(new QSignalMapper(this)) { hide_action_ = menu_->addAction(tr("&Hide..."), this, SLOT(HideCurrent())); - stretch_action_ = menu_->addAction(tr("&Stretch columns to fit window"), this, SLOT(ToggleStretchEnabled())); + stretch_action_ = menu_->addAction(tr("&Stretch columns to fit window"), this, + SLOT(ToggleStretchEnabled())); menu_->addSeparator(); - QMenu* align_menu = new QMenu(tr("&Align text"), this); + QMenu* align_menu = new QMenu(tr("&Align text"), this); QActionGroup* align_group = new QActionGroup(this); - align_left_action_ = new QAction(tr("&Left"), align_group); - align_center_action_ = new QAction(tr("&Center"), align_group); - align_right_action_ = new QAction(tr("&Right"), align_group); + align_left_action_ = new QAction(tr("&Left"), align_group); + align_center_action_ = new QAction(tr("&Center"), align_group); + align_right_action_ = new QAction(tr("&Right"), align_group); align_left_action_->setCheckable(true); align_center_action_->setCheckable(true); align_right_action_->setCheckable(true); align_menu->addActions(align_group->actions()); - connect(align_group, SIGNAL(triggered(QAction*)), SLOT(SetColumnAlignment(QAction*))); + connect(align_group, SIGNAL(triggered(QAction*)), + SLOT(SetColumnAlignment(QAction*))); menu_->addMenu(align_menu); menu_->addSeparator(); @@ -54,7 +55,8 @@ PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView* view, stretch_action_->setChecked(is_stretch_enabled()); connect(show_mapper_, SIGNAL(mapped(int)), SLOT(ToggleVisible(int))); - connect(this, SIGNAL(StretchEnabledChanged(bool)), stretch_action_, SLOT(setChecked(bool))); + connect(this, SIGNAL(StretchEnabledChanged(bool)), stretch_action_, + SLOT(setChecked(bool))); } void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) { @@ -66,18 +68,22 @@ void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) { else { hide_action_->setVisible(true); - QString title(model()->headerData(menu_section_, Qt::Horizontal).toString()); + QString title( + model()->headerData(menu_section_, Qt::Horizontal).toString()); hide_action_->setText(tr("&Hide %1").arg(title)); Qt::Alignment alignment = view_->column_alignment(menu_section_); - if (alignment & Qt::AlignLeft) align_left_action_->setChecked(true); - else if (alignment & Qt::AlignHCenter) align_center_action_->setChecked(true); - else if (alignment & Qt::AlignRight) align_right_action_->setChecked(true); + if (alignment & Qt::AlignLeft) + align_left_action_->setChecked(true); + else if (alignment & Qt::AlignHCenter) + align_center_action_->setChecked(true); + else if (alignment & Qt::AlignRight) + align_right_action_->setChecked(true); } qDeleteAll(show_actions_); show_actions_.clear(); - for (int i=0 ; iSetColumnAlignment(menu_section_, alignment); } @@ -123,6 +128,4 @@ void PlaylistHeader::ToggleVisible(int section) { emit SectionVisibilityChanged(section, !isSectionHidden(section)); } -void PlaylistHeader::enterEvent(QEvent*) { - emit MouseEntered(); -} +void PlaylistHeader::enterEvent(QEvent*) { emit MouseEntered(); } diff --git a/src/playlist/playlistheader.h b/src/playlist/playlistheader.h index 0280b1724..bdd1039ad 100644 --- a/src/playlist/playlistheader.h +++ b/src/playlist/playlistheader.h @@ -36,7 +36,7 @@ class PlaylistHeader : public StretchHeaderView { void contextMenuEvent(QContextMenuEvent* e); void enterEvent(QEvent*); - signals: +signals: void SectionVisibilityChanged(int logical, bool visible); void MouseEntered(); @@ -63,4 +63,4 @@ class PlaylistHeader : public StretchHeaderView { QSignalMapper* show_mapper_; }; -#endif // PLAYLISTHEADER_H +#endif // PLAYLISTHEADER_H diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index cbd803cc0..aa82c5595 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -31,19 +31,13 @@ #include #include - -PlaylistItem::~PlaylistItem() { -} +PlaylistItem::~PlaylistItem() {} PlaylistItem* PlaylistItem::NewFromType(const QString& type) { - if (type == "Library") - 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 == "Library") 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 == "Internet" || type == "Radio") return new InternetPlaylistItem("Internet"); @@ -51,9 +45,9 @@ PlaylistItem* PlaylistItem::NewFromType(const QString& type) { return nullptr; } -PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, const Song& song) { - if (table == Library::kSongsTable) - return new LibraryPlaylistItem(song); +PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, + const Song& song) { + if (table == Library::kSongsTable) return new LibraryPlaylistItem(song); if (table == MagnatuneService::kSongsTable) return new MagnatunePlaylistItem(song); if (table == JamendoService::kSongsTable) @@ -76,13 +70,9 @@ void PlaylistItem::SetTemporaryMetadata(const Song& metadata) { temp_metadata_.set_filetype(Song::Type_Stream); } -void PlaylistItem::ClearTemporaryMetadata() { - temp_metadata_ = Song(); -} +void PlaylistItem::ClearTemporaryMetadata() { temp_metadata_ = Song(); } -static void ReloadPlaylistItem(PlaylistItemPtr item) { - item->Reload(); -} +static void ReloadPlaylistItem(PlaylistItemPtr item) { item->Reload(); } QFuture PlaylistItem::BackgroundReload() { return QtConcurrent::run(ReloadPlaylistItem, shared_from_this()); @@ -99,8 +89,8 @@ void PlaylistItem::RemoveBackgroundColor(short priority) { } QColor PlaylistItem::GetCurrentBackgroundColor() const { return background_colors_.isEmpty() - ? QColor() - : background_colors_[background_colors_.keys().last()]; + ? QColor() + : background_colors_[background_colors_.keys().last()]; } bool PlaylistItem::HasCurrentBackgroundColor() const { return !background_colors_.isEmpty(); @@ -117,8 +107,8 @@ void PlaylistItem::RemoveForegroundColor(short priority) { } QColor PlaylistItem::GetCurrentForegroundColor() const { return foreground_colors_.isEmpty() - ? QColor() - : foreground_colors_[foreground_colors_.keys().last()]; + ? QColor() + : foreground_colors_[foreground_colors_.keys().last()]; } bool PlaylistItem::HasCurrentForegroundColor() const { return !foreground_colors_.isEmpty(); diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 467d10c09..8863c4edf 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -32,12 +32,12 @@ class SqlRow; class PlaylistItem : public std::enable_shared_from_this { public: - PlaylistItem(const QString& type) - : type_(type) {} + PlaylistItem(const QString& type) : type_(type) {} virtual ~PlaylistItem(); static PlaylistItem* NewFromType(const QString& type); - static PlaylistItem* NewFromSongsTable(const QString& table, const Song& song); + static PlaylistItem* NewFromSongsTable(const QString& table, + const Song& song); enum Option { Default = 0x00, @@ -93,13 +93,11 @@ class PlaylistItem : public std::enable_shared_from_this { virtual bool IsLocalLibraryItem() const { return false; } protected: - enum DatabaseColumn { - Column_LibraryId, - Column_InternetService, - }; + enum DatabaseColumn { Column_LibraryId, Column_InternetService, }; virtual QVariant DatabaseValue(DatabaseColumn) const { - return QVariant(QVariant::String); } + return QVariant(QVariant::String); + } virtual Song DatabaseSongMetadata() const { return Song(); } QString type_; @@ -116,4 +114,4 @@ Q_DECLARE_METATYPE(PlaylistItemPtr) Q_DECLARE_METATYPE(QList) Q_DECLARE_OPERATORS_FOR_FLAGS(PlaylistItem::Options) -#endif // PLAYLISTITEM_H +#endif // PLAYLISTITEM_H diff --git a/src/playlist/playlistitemmimedata.h b/src/playlist/playlistitemmimedata.h index 6d0a0eb18..2be3b59d3 100644 --- a/src/playlist/playlistitemmimedata.h +++ b/src/playlist/playlistitemmimedata.h @@ -24,13 +24,12 @@ class PlaylistItemMimeData : public MimeData { Q_OBJECT -public: + public: PlaylistItemMimeData(const PlaylistItemPtr& item) - : items_(PlaylistItemList() << item) {} - PlaylistItemMimeData(const PlaylistItemList& items) - : items_(items) {} + : items_(PlaylistItemList() << item) {} + PlaylistItemMimeData(const PlaylistItemList& items) : items_(items) {} PlaylistItemList items_; }; -#endif // PLAYLISTITEMMIMEDATA_H +#endif // PLAYLISTITEMMIMEDATA_H diff --git a/src/playlist/playlistlistcontainer.cpp b/src/playlist/playlistlistcontainer.cpp index 468647d28..42bc73a5c 100644 --- a/src/playlist/playlistlistcontainer.cpp +++ b/src/playlist/playlistlistcontainer.cpp @@ -34,15 +34,14 @@ #include class PlaylistListSortFilterModel : public QSortFilterProxyModel { -public: + public: explicit PlaylistListSortFilterModel(QObject* parent) - : QSortFilterProxyModel(parent) { - } + : QSortFilterProxyModel(parent) {} bool lessThan(const QModelIndex& left, const QModelIndex& right) const { // Compare the display text first. - const int ret = left.data().toString().localeAwareCompare( - right.data().toString()); + const int ret = + left.data().toString().localeAwareCompare(right.data().toString()); if (ret < 0) return true; if (ret > 0) return false; @@ -52,26 +51,25 @@ public: } }; - PlaylistListContainer::PlaylistListContainer(QWidget* parent) - : QWidget(parent), - app_(nullptr), - ui_(new Ui_PlaylistListContainer), - menu_(nullptr), - action_new_folder_(new QAction(this)), - action_remove_(new QAction(this)), - action_save_playlist_(new QAction(this)), - model_(new PlaylistListModel(this)), - proxy_(new PlaylistListSortFilterModel(this)), - loaded_icons_(false), - active_playlist_id_(-1) -{ + : QWidget(parent), + app_(nullptr), + ui_(new Ui_PlaylistListContainer), + menu_(nullptr), + action_new_folder_(new QAction(this)), + action_remove_(new QAction(this)), + action_save_playlist_(new QAction(this)), + model_(new PlaylistListModel(this)), + proxy_(new PlaylistListSortFilterModel(this)), + loaded_icons_(false), + active_playlist_id_(-1) { ui_->setupUi(this); ui_->tree->setAttribute(Qt::WA_MacShowFocusRect, false); action_new_folder_->setText(tr("New folder")); action_remove_->setText(tr("Delete")); - action_save_playlist_->setText(tr("Save playlist", "Save playlist menu action.")); + action_save_playlist_->setText( + tr("Save playlist", "Save playlist menu action.")); ui_->new_folder->setDefaultAction(action_new_folder_); ui_->remove->setDefaultAction(action_remove_); @@ -80,8 +78,8 @@ PlaylistListContainer::PlaylistListContainer(QWidget* parent) connect(action_new_folder_, SIGNAL(triggered()), SLOT(NewFolderClicked())); connect(action_remove_, SIGNAL(triggered()), SLOT(DeleteClicked())); connect(action_save_playlist_, SIGNAL(triggered()), SLOT(SavePlaylist())); - connect(model_, SIGNAL(PlaylistPathChanged(int,QString)), - SLOT(PlaylistPathChanged(int,QString))); + connect(model_, SIGNAL(PlaylistPathChanged(int, QString)), + SLOT(PlaylistPathChanged(int, QString))); proxy_->setSourceModel(model_); proxy_->setDynamicSortFilter(true); @@ -89,14 +87,13 @@ PlaylistListContainer::PlaylistListContainer(QWidget* parent) ui_->tree->setModel(proxy_); connect(ui_->tree, SIGNAL(doubleClicked(QModelIndex)), - SLOT(ItemDoubleClicked(QModelIndex))); + SLOT(ItemDoubleClicked(QModelIndex))); - model_->invisibleRootItem()->setData(PlaylistListModel::Type_Folder, PlaylistListModel::Role_Type); + model_->invisibleRootItem()->setData(PlaylistListModel::Type_Folder, + PlaylistListModel::Role_Type); } -PlaylistListContainer::~PlaylistListContainer() { - delete ui_; -} +PlaylistListContainer::~PlaylistListContainer() { delete ui_; } void PlaylistListContainer::showEvent(QShowEvent* e) { // Loading icons is expensive so only do it when the view is first opened @@ -120,17 +117,17 @@ void PlaylistListContainer::showEvent(QShowEvent* e) { } void PlaylistListContainer::RecursivelySetIcons(QStandardItem* parent) const { - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < parent->rowCount(); ++i) { QStandardItem* child = parent->child(i); switch (child->data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Folder: - child->setIcon(model_->folder_icon()); - RecursivelySetIcons(child); - break; + case PlaylistListModel::Type_Folder: + child->setIcon(model_->folder_icon()); + RecursivelySetIcons(child); + break; - case PlaylistListModel::Type_Playlist: - child->setIcon(model_->playlist_icon()); - break; + case PlaylistListModel::Type_Playlist: + child->setIcon(model_->playlist_icon()); + break; } } } @@ -140,27 +137,27 @@ void PlaylistListContainer::SetApplication(Application* app) { PlaylistManager* manager = app_->playlist_manager(); Player* player = app_->player(); - connect(manager, SIGNAL(PlaylistAdded(int,QString,bool)), - SLOT(AddPlaylist(int,QString,bool))); - connect(manager, SIGNAL(PlaylistFavorited(int,bool)), - SLOT(PlaylistFavoriteStateChanged(int,bool))); - connect(manager, SIGNAL(PlaylistRenamed(int,QString)), - SLOT(PlaylistRenamed(int,QString))); + connect(manager, SIGNAL(PlaylistAdded(int, QString, bool)), + SLOT(AddPlaylist(int, QString, bool))); + connect(manager, SIGNAL(PlaylistFavorited(int, bool)), + SLOT(PlaylistFavoriteStateChanged(int, bool))); + connect(manager, SIGNAL(PlaylistRenamed(int, QString)), + SLOT(PlaylistRenamed(int, QString))); connect(manager, SIGNAL(CurrentChanged(Playlist*)), SLOT(CurrentChanged(Playlist*))); connect(manager, SIGNAL(ActiveChanged(Playlist*)), SLOT(ActiveChanged(Playlist*))); - connect(model_, SIGNAL(PlaylistRenamed(int,QString)), - manager, SLOT(Rename(int,QString))); + connect(model_, SIGNAL(PlaylistRenamed(int, QString)), manager, + SLOT(Rename(int, QString))); connect(player, SIGNAL(Paused()), SLOT(ActivePaused())); connect(player, SIGNAL(Playing()), SLOT(ActivePlaying())); connect(player, SIGNAL(Stopped()), SLOT(ActiveStopped())); // Get all playlists, even ones that are hidden in the UI. - foreach (const PlaylistBackend::Playlist& p, - app->playlist_backend()->GetAllFavoritePlaylists()) { + foreach(const PlaylistBackend::Playlist & p, + app->playlist_backend()->GetAllFavoritePlaylists()) { QStandardItem* playlist_item = model_->NewPlaylist(p.name, p.id); QStandardItem* parent_folder = model_->FolderByPath(p.ui_path); parent_folder->appendRow(playlist_item); @@ -179,7 +176,8 @@ void PlaylistListContainer::NewFolderClicked() { model_->invisibleRootItem()->appendRow(model_->NewFolder(name)); } -void PlaylistListContainer::AddPlaylist(int id, const QString& name, bool favorite) { +void PlaylistListContainer::AddPlaylist(int id, const QString& name, + bool favorite) { if (!favorite) { return; } @@ -218,19 +216,22 @@ void PlaylistListContainer::RemovePlaylist(int id) { } void PlaylistListContainer::SavePlaylist() { - const QModelIndex& current_index = proxy_->mapToSource(ui_->tree->currentIndex()); + const QModelIndex& current_index = + proxy_->mapToSource(ui_->tree->currentIndex()); // Is it a playlist? if (current_index.data(PlaylistListModel::Role_Type).toInt() == PlaylistListModel::Type_Playlist) { - const int playlist_id = current_index.data(PlaylistListModel::Role_PlaylistId).toInt(); + const int playlist_id = + current_index.data(PlaylistListModel::Role_PlaylistId).toInt(); QStandardItem* item = model_->PlaylistById(playlist_id); QString playlist_name = item ? item->text() : tr("Playlist"); app_->playlist_manager()->SaveWithUI(playlist_id, playlist_name); } } -void PlaylistListContainer::PlaylistFavoriteStateChanged(int id, bool favorite) { +void PlaylistListContainer::PlaylistFavoriteStateChanged(int id, + bool favorite) { if (favorite) { const QString& name = app_->playlist_manager()->GetPlaylistName(id); AddPlaylist(id, name, favorite); @@ -262,11 +263,12 @@ void PlaylistListContainer::CurrentChanged(Playlist* new_playlist) { QModelIndex index = proxy_->mapFromSource(item->index()); ui_->tree->selectionModel()->setCurrentIndex( - index, QItemSelectionModel::ClearAndSelect); + index, QItemSelectionModel::ClearAndSelect); ui_->tree->scrollTo(index); } -void PlaylistListContainer::PlaylistPathChanged(int id, const QString& new_path) { +void PlaylistListContainer::PlaylistPathChanged(int id, + const QString& new_path) { // Update the path in the database app_->playlist_backend()->SetPlaylistUiPath(id, new_path); Playlist* playlist = app_->playlist_manager()->playlist(id); @@ -283,7 +285,7 @@ void PlaylistListContainer::ItemDoubleClicked(const QModelIndex& proxy_index) { if (index.data(PlaylistListModel::Role_Type).toInt() == PlaylistListModel::Type_Playlist) { app_->playlist_manager()->SetCurrentOrOpen( - index.data(PlaylistListModel::Role_PlaylistId).toInt()); + index.data(PlaylistListModel::Role_PlaylistId).toInt()); } } @@ -291,30 +293,31 @@ void PlaylistListContainer::DeleteClicked() { QSet ids; QList folders_to_delete; - foreach (const QModelIndex& proxy_index, - ui_->tree->selectionModel()->selectedRows(0)) { + foreach(const QModelIndex & proxy_index, + ui_->tree->selectionModel()->selectedRows(0)) { const QModelIndex& index = proxy_->mapToSource(proxy_index); // Is it a playlist? switch (index.data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Playlist: - ids << index.data(PlaylistListModel::Role_PlaylistId).toInt(); - break; + case PlaylistListModel::Type_Playlist: + ids << index.data(PlaylistListModel::Role_PlaylistId).toInt(); + break; - case PlaylistListModel::Type_Folder: - // Find all the playlists inside. - RecursivelyFindPlaylists(index, &ids); - folders_to_delete << index; - break; + case PlaylistListModel::Type_Folder: + // Find all the playlists inside. + RecursivelyFindPlaylists(index, &ids); + folders_to_delete << index; + break; } } // Make sure the user really wants to unfavorite all these playlists. if (ids.count() > 1) { - const int button = - QMessageBox::question(this, tr("Remove playlists"), - tr("You are about to remove %1 playlists from your favorites, are you sure?").arg(ids.count()), - QMessageBox::Yes, QMessageBox::Cancel); + const int button = QMessageBox::question( + this, tr("Remove playlists"), + tr("You are about to remove %1 playlists from your favorites, are you " + "sure?").arg(ids.count()), + QMessageBox::Yes, QMessageBox::Cancel); if (button != QMessageBox::Yes) { return; @@ -322,30 +325,28 @@ void PlaylistListContainer::DeleteClicked() { } // Unfavorite the playlists - foreach (int id, ids) { - app_->playlist_manager()->Favorite(id, false); - } + foreach(int id, ids) { app_->playlist_manager()->Favorite(id, false); } // Delete the top-level folders. - foreach (const QPersistentModelIndex& index, folders_to_delete) { + foreach(const QPersistentModelIndex & index, folders_to_delete) { if (index.isValid()) { model_->removeRow(index.row(), index.parent()); } } } -void PlaylistListContainer::RecursivelyFindPlaylists( - const QModelIndex& parent, QSet* ids) const { +void PlaylistListContainer::RecursivelyFindPlaylists(const QModelIndex& parent, + QSet* ids) const { switch (parent.data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Playlist: - ids->insert(parent.data(PlaylistListModel::Role_PlaylistId).toInt()); - break; + case PlaylistListModel::Type_Playlist: + ids->insert(parent.data(PlaylistListModel::Role_PlaylistId).toInt()); + break; - case PlaylistListModel::Type_Folder: - for (int i=0 ; irowCount(parent) ; ++i) { - RecursivelyFindPlaylists(parent.child(i, 0), ids); - } - break; + case PlaylistListModel::Type_Folder: + for (int i = 0; i < parent.model()->rowCount(parent); ++i) { + RecursivelyFindPlaylists(parent.child(i, 0), ids); + } + break; } } @@ -367,8 +368,8 @@ void PlaylistListContainer::ActivePlaying() { new_pixmap.fill(Qt::transparent); QPainter p(&new_pixmap); - p.drawPixmap((new_pixmap.width() - pixmap.width()) / 2, 0, - pixmap.width(), pixmap.height(), pixmap); + p.drawPixmap((new_pixmap.width() - pixmap.width()) / 2, 0, pixmap.width(), + pixmap.height(), pixmap); p.end(); padded_play_icon_.addPixmap(new_pixmap); diff --git a/src/playlist/playlistlistcontainer.h b/src/playlist/playlistlistcontainer.h index ecebb073d..b9b4dcd27 100644 --- a/src/playlist/playlistlistcontainer.h +++ b/src/playlist/playlistlistcontainer.h @@ -34,17 +34,17 @@ class Ui_PlaylistListContainer; class PlaylistListContainer : public QWidget { Q_OBJECT -public: + public: PlaylistListContainer(QWidget* parent = 0); ~PlaylistListContainer(); void SetApplication(Application* app); -protected: + protected: void showEvent(QShowEvent* e); void contextMenuEvent(QContextMenuEvent* e); -private slots: + private slots: // From the UI void NewFolderClicked(); void DeleteClicked(); @@ -68,12 +68,13 @@ private slots: void ActivePaused(); void ActiveStopped(); -private: + private: QStandardItem* ItemForPlaylist(const QString& name, int id); QStandardItem* ItemForFolder(const QString& name) const; void RecursivelySetIcons(QStandardItem* parent) const; - void RecursivelyFindPlaylists(const QModelIndex& parent, QSet* ids) const; + void RecursivelyFindPlaylists(const QModelIndex& parent, + QSet* ids) const; void UpdateActiveIcon(int id, const QIcon& icon); @@ -94,4 +95,4 @@ private: int active_playlist_id_; }; -#endif // PLAYLISTLISTCONTAINER_H +#endif // PLAYLISTLISTCONTAINER_H diff --git a/src/playlist/playlistlistmodel.cpp b/src/playlist/playlistlistmodel.cpp index 8d96528e7..dced9a74d 100644 --- a/src/playlist/playlistlistmodel.cpp +++ b/src/playlist/playlistlistmodel.cpp @@ -3,16 +3,14 @@ #include -PlaylistListModel::PlaylistListModel(QObject *parent) : - QStandardItemModel(parent), - dropping_rows_(false) -{ - connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - SLOT(RowsChanged(QModelIndex,QModelIndex))); - connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), - SLOT(RowsInserted(QModelIndex,int,int))); +PlaylistListModel::PlaylistListModel(QObject* parent) + : QStandardItemModel(parent), dropping_rows_(false) { + connect(this, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + SLOT(RowsChanged(QModelIndex, QModelIndex))); + connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(this, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(RowsInserted(QModelIndex, int, int))); } void PlaylistListModel::SetIcons(const QIcon& playlist_icon, @@ -25,7 +23,8 @@ bool PlaylistListModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { dropping_rows_ = true; - bool ret = QStandardItemModel::dropMimeData(data, action, row, column, parent); + bool ret = + QStandardItemModel::dropMimeData(data, action, row, column, parent); dropping_rows_ = false; return ret; @@ -50,8 +49,8 @@ void PlaylistListModel::RowsChanged(const QModelIndex& begin, AddRowMappings(begin, end); } -void PlaylistListModel::RowsInserted(const QModelIndex& parent, - int start, int end) { +void PlaylistListModel::RowsInserted(const QModelIndex& parent, int start, + int end) { // RowsChanged will take care of these when dropping. if (!dropping_rows_) { AddRowMappings(index(start, 0, parent), index(end, 0, parent)); @@ -62,52 +61,53 @@ void PlaylistListModel::AddRowMappings(const QModelIndex& begin, const QModelIndex& end) { const QString parent_path = ItemPath(itemFromIndex(begin)); - for (int i=begin.row() ; i<=end.row() ; ++i) { + for (int i = begin.row(); i <= end.row(); ++i) { const QModelIndex index = begin.sibling(i, 0); QStandardItem* item = itemFromIndex(index); AddRowItem(item, parent_path); } } -void PlaylistListModel::AddRowItem(QStandardItem* item, const QString& parent_path) { +void PlaylistListModel::AddRowItem(QStandardItem* item, + const QString& parent_path) { switch (item->data(Role_Type).toInt()) { - case Type_Playlist: { - const int id = item->data(Role_PlaylistId).toInt(); - playlists_by_id_[id] = item; - if (dropping_rows_) { - emit PlaylistPathChanged(id, parent_path); + case Type_Playlist: { + const int id = item->data(Role_PlaylistId).toInt(); + playlists_by_id_[id] = item; + if (dropping_rows_) { + emit PlaylistPathChanged(id, parent_path); + } + + break; } - break; - } - - case Type_Folder: - for (int j=0; jrowCount(); ++j) { - QStandardItem* child_item = item->child(j); - AddRowItem(child_item, parent_path); - } - break; + case Type_Folder: + for (int j = 0; j < item->rowCount(); ++j) { + QStandardItem* child_item = item->child(j); + AddRowItem(child_item, parent_path); + } + break; } } void PlaylistListModel::RowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) { - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { const QModelIndex idx = index(i, 0, parent); const QStandardItem* item = itemFromIndex(idx); switch (idx.data(Role_Type).toInt()) { - case Type_Playlist: { - const int id = idx.data(Role_PlaylistId).toInt(); - QMap::Iterator it = playlists_by_id_.find(id); - if (it != playlists_by_id_.end() && it.value() == item) { - playlists_by_id_.erase(it); + case Type_Playlist: { + const int id = idx.data(Role_PlaylistId).toInt(); + QMap::Iterator it = playlists_by_id_.find(id); + if (it != playlists_by_id_.end() && it.value() == item) { + playlists_by_id_.erase(it); + } + break; } - break; - } - case Type_Folder: - break; + case Type_Folder: + break; } } } @@ -126,11 +126,11 @@ QStandardItem* PlaylistListModel::FolderByPath(const QString& path) { QStandardItem* parent = invisibleRootItem(); const QStringList parts = path.split('/', QString::SkipEmptyParts); - foreach (const QString& part, parts) { + foreach(const QString & part, parts) { QStandardItem* matching_child = nullptr; const int child_count = parent->rowCount(); - for (int i=0 ; ichild(i)->data(Qt::DisplayRole).toString() == part) { matching_child = parent->child(i); break; @@ -160,33 +160,34 @@ QStandardItem* PlaylistListModel::NewFolder(const QString& name) const { return ret; } -QStandardItem* PlaylistListModel::NewPlaylist(const QString& name, int id) const { +QStandardItem* PlaylistListModel::NewPlaylist(const QString& name, + int id) const { QStandardItem* ret = new QStandardItem; ret->setText(name); ret->setData(PlaylistListModel::Type_Playlist, PlaylistListModel::Role_Type); ret->setData(id, PlaylistListModel::Role_PlaylistId); ret->setIcon(playlist_icon_); - ret->setFlags(Qt::ItemIsDragEnabled | - Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); + ret->setFlags(Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | + Qt::ItemIsSelectable | Qt::ItemIsEditable); return ret; } -bool PlaylistListModel::setData(const QModelIndex& index, - const QVariant& value, int role) { +bool PlaylistListModel::setData(const QModelIndex& index, const QVariant& value, + int role) { if (!QStandardItemModel::setData(index, value, role)) { return false; } switch (index.data(Role_Type).toInt()) { - case Type_Playlist: - emit PlaylistRenamed(index.data(Role_PlaylistId).toInt(), - value.toString()); - break; + case Type_Playlist: + emit PlaylistRenamed(index.data(Role_PlaylistId).toInt(), + value.toString()); + break; - case Type_Folder: - // Walk all the children and modify their paths. - UpdatePathsRecursive(index); - break; + case Type_Folder: + // Walk all the children and modify their paths. + UpdatePathsRecursive(index); + break; } return true; @@ -194,15 +195,15 @@ bool PlaylistListModel::setData(const QModelIndex& index, void PlaylistListModel::UpdatePathsRecursive(const QModelIndex& parent) { switch (parent.data(Role_Type).toInt()) { - case Type_Playlist: - emit PlaylistPathChanged(parent.data(Role_PlaylistId).toInt(), - ItemPath(itemFromIndex(parent))); - break; + case Type_Playlist: + emit PlaylistPathChanged(parent.data(Role_PlaylistId).toInt(), + ItemPath(itemFromIndex(parent))); + break; - case Type_Folder: - for (int i=0 ; i folders_by_path_; }; -#endif // PLAYLISTLISTMODEL_H +#endif // PLAYLISTLISTMODEL_H diff --git a/src/playlist/playlistlistview.cpp b/src/playlist/playlistlistview.cpp index e0db25b20..411458d23 100644 --- a/src/playlist/playlistlistview.cpp +++ b/src/playlist/playlistlistview.cpp @@ -20,10 +20,7 @@ #include PlaylistListView::PlaylistListView(QWidget* parent) - : AutoExpandingTreeView(parent) -{ -} - + : AutoExpandingTreeView(parent) {} void PlaylistListView::paintEvent(QPaintEvent* event) { if (model()->rowCount() <= 0) { @@ -36,9 +33,11 @@ void PlaylistListView::paintEvent(QPaintEvent* event) { bold_font.setBold(true); p.setFont(bold_font); - p.drawText(rect, Qt::AlignHCenter | Qt::TextWordWrap, tr("\n\n" - "You can favorite playlists by clicking the star icon next to a playlist name\n\n" - "Favorited playlists will be saved here")); + p.drawText(rect, Qt::AlignHCenter | Qt::TextWordWrap, + tr("\n\n" + "You can favorite playlists by clicking the star icon next " + "to a playlist name\n\n" + "Favorited playlists will be saved here")); } else { AutoExpandingTreeView::paintEvent(event); } diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index da69a0c78..1c0dbd25d 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -38,16 +38,15 @@ using smart_playlists::GeneratorPtr; -PlaylistManager::PlaylistManager(Application* app, QObject *parent) - : PlaylistManagerInterface(app, parent), - app_(app), - playlist_backend_(nullptr), - library_backend_(nullptr), - sequence_(nullptr), - parser_(nullptr), - current_(-1), - active_(-1) -{ +PlaylistManager::PlaylistManager(Application* app, QObject* parent) + : PlaylistManagerInterface(app, parent), + app_(app), + playlist_backend_(nullptr), + library_backend_(nullptr), + sequence_(nullptr), + parser_(nullptr), + current_(-1), + active_(-1) { connect(app_->player(), SIGNAL(Paused()), SLOT(SetActivePaused())); connect(app_->player(), SIGNAL(Playing()), SLOT(SetActivePlaying())); connect(app_->player(), SIGNAL(Stopped()), SLOT(SetActiveStopped())); @@ -56,9 +55,7 @@ PlaylistManager::PlaylistManager(Application* app, QObject *parent) } PlaylistManager::~PlaylistManager() { - foreach (const Data& data, playlists_.values()) { - delete data.p; - } + foreach(const Data & data, playlists_.values()) { delete data.p; } } void PlaylistManager::Init(LibraryBackend* library_backend, @@ -71,17 +68,20 @@ void PlaylistManager::Init(LibraryBackend* library_backend, parser_ = new PlaylistParser(library_backend, this); playlist_container_ = playlist_container; - connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), SLOT(SongsDiscovered(SongList))); - connect(library_backend_, SIGNAL(SongsStatisticsChanged(SongList)), SLOT(SongsDiscovered(SongList))); - connect(library_backend_, SIGNAL(SongsRatingChanged(SongList)), SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsStatisticsChanged(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsRatingChanged(SongList)), + SLOT(SongsDiscovered(SongList))); - foreach (const PlaylistBackend::Playlist& p, playlist_backend->GetAllOpenPlaylists()) { + foreach(const PlaylistBackend::Playlist & p, + playlist_backend->GetAllOpenPlaylists()) { AddPlaylist(p.id, p.name, p.special_type, p.ui_path, p.favorite); } // If no playlist exists then make a new one - if (playlists_.isEmpty()) - New(tr("Playlist")); + if (playlists_.isEmpty()) New(tr("Playlist")); emit PlaylistManagerInitialized(); } @@ -89,9 +89,7 @@ void PlaylistManager::Init(LibraryBackend* library_backend, QList PlaylistManager::GetAllPlaylists() const { QList result; - foreach(const Data& data, playlists_.values()) { - result.append(data.p); - } + foreach(const Data & data, playlists_.values()) { result.append(data.p); } return result; } @@ -103,21 +101,24 @@ QItemSelection PlaylistManager::selection(int id) const { Playlist* PlaylistManager::AddPlaylist(int id, const QString& name, const QString& special_type, - const QString& ui_path, - bool favorite) { + const QString& ui_path, bool favorite) { Playlist* ret = new Playlist(playlist_backend_, app_->task_manager(), library_backend_, id, special_type, favorite); ret->set_sequence(sequence_); ret->set_ui_path(ui_path); - connect(ret, SIGNAL(CurrentSongChanged(Song)), SIGNAL(CurrentSongChanged(Song))); + connect(ret, SIGNAL(CurrentSongChanged(Song)), + SIGNAL(CurrentSongChanged(Song))); connect(ret, SIGNAL(PlaylistChanged()), SLOT(OneOfPlaylistsChanged())); connect(ret, SIGNAL(PlaylistChanged()), SLOT(UpdateSummaryText())); - connect(ret, SIGNAL(EditingFinished(QModelIndex)), SIGNAL(EditingFinished(QModelIndex))); + connect(ret, SIGNAL(EditingFinished(QModelIndex)), + SIGNAL(EditingFinished(QModelIndex))); connect(ret, SIGNAL(LoadTracksError(QString)), SIGNAL(Error(QString))); - connect(ret, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex))); - connect(playlist_container_->view(), SIGNAL(ColumnAlignmentChanged(ColumnAlignmentMap)), - ret, SLOT(SetColumnAlignment(ColumnAlignmentMap))); + connect(ret, SIGNAL(PlayRequested(QModelIndex)), + SIGNAL(PlayRequested(QModelIndex))); + connect(playlist_container_->view(), + SIGNAL(ColumnAlignmentChanged(ColumnAlignmentMap)), ret, + SLOT(SetColumnAlignment(ColumnAlignmentMap))); playlists_[id] = Data(ret, name); @@ -135,13 +136,11 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name, void PlaylistManager::New(const QString& name, const SongList& songs, const QString& special_type) { - if (name.isNull()) - return; + if (name.isNull()) return; int id = playlist_backend_->CreatePlaylist(name, special_type); - if (id == -1) - qFatal("Couldn't create playlist"); + if (id == -1) qFatal("Couldn't create playlist"); Playlist* playlist = AddPlaylist(id, name, special_type, QString(), false); playlist->InsertSongsOrLibraryItems(songs); @@ -163,8 +162,8 @@ void PlaylistManager::Load(const QString& filename) { if (result == SongLoader::Error || (result == SongLoader::Success && loader->songs().isEmpty())) { - app_->AddError(tr("The playlist '%1' was empty or could not be loaded.").arg( - info.completeBaseName())); + app_->AddError(tr("The playlist '%1' was empty or could not be loaded.") + .arg(info.completeBaseName())); delete loader; return; } @@ -181,8 +180,8 @@ void PlaylistManager::LoadFinished(bool success) { QString localfile = loader->url().toLocalFile(); QFileInfo info(localfile); if (!success || loader->songs().isEmpty()) { - app_->AddError(tr("The playlist '%1' was empty or could not be loaded.").arg( - info.completeBaseName())); + app_->AddError(tr("The playlist '%1' was empty or could not be loaded.") + .arg(info.completeBaseName())); } New(info.baseName(), loader->songs()); @@ -192,20 +191,21 @@ void PlaylistManager::Save(int id, const QString& filename) { if (playlists_.contains(id)) { parser_->Save(playlist(id)->GetAllSongs(), filename); } else { - // Playlist is not in the playlist manager: probably save action was triggered + // Playlist is not in the playlist manager: probably save action was + // triggered // from the left side bar and the playlist isn't loaded. QFuture future = playlist_backend_->GetPlaylistSongs(id); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ItemsLoadedForSavePlaylist(QFutureWatcher*, QString)), watcher, filename); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ItemsLoadedForSavePlaylist(QFutureWatcher*, QString)), + watcher, filename); } } -void PlaylistManager::ItemsLoadedForSavePlaylist( - QFutureWatcher* watcher, - const QString& filename) { +void PlaylistManager::ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, + const QString& filename) { SongList song_list = watcher->future().results(); parser_->Save(song_list, filename); @@ -220,35 +220,30 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { // Strip off filename components until we find something that's a folder forever { QFileInfo fileinfo(filename); - if (filename.isEmpty() || fileinfo.isDir()) - break; + if (filename.isEmpty() || fileinfo.isDir()) break; filename = filename.section('/', 0, -2); } // Use the home directory as a fallback in case the path is empty. - if (filename.isEmpty()) - filename = QDir::homePath(); + if (filename.isEmpty()) filename = QDir::homePath(); // Add the suggested filename - filename += "/" + suggested_filename + - "." + parser()->default_extension(); + filename += "/" + suggested_filename + "." + parser()->default_extension(); QString default_filter = parser()->default_filter(); filename = QFileDialog::getSaveFileName( - nullptr, tr("Save playlist", "Title of the playlist save dialog."), filename, - parser()->filters(), &default_filter); + nullptr, tr("Save playlist", "Title of the playlist save dialog."), + filename, parser()->filters(), &default_filter); - if (filename.isNull()) - return; + if (filename.isNull()) return; settings_.setValue("last_save_playlist", filename); Save(id == -1 ? current_id() : id, filename); } - void PlaylistManager::Rename(int id, const QString& new_name) { Q_ASSERT(playlists_.contains(id)); @@ -261,12 +256,14 @@ void PlaylistManager::Rename(int id, const QString& new_name) { void PlaylistManager::Favorite(int id, bool favorite) { if (playlists_.contains(id)) { - // If playlists_ contains this playlist, its means it's opened: star or unstar it. + // If playlists_ contains this playlist, its means it's opened: star or + // unstar it. playlist_backend_->FavoritePlaylist(id, favorite); playlists_[id].p->set_favorite(favorite); } else { Q_ASSERT(!favorite); - // Otherwise it means user wants to remove this playlist from the left panel, + // Otherwise it means user wants to remove this playlist from the left + // panel, // while it's not visible in the playlist tabbar either, because it has been // closed: delete it. playlist_backend_->RemovePlaylist(id); @@ -276,23 +273,19 @@ void PlaylistManager::Favorite(int id, bool favorite) { bool PlaylistManager::Close(int id) { // Won't allow removing the last playlist - if (playlists_.count() <= 1 || !playlists_.contains(id)) - return false; + if (playlists_.count() <= 1 || !playlists_.contains(id)) return false; int next_id = -1; - foreach (int possible_next_id, playlists_.keys()) { + foreach(int possible_next_id, playlists_.keys()) { if (possible_next_id != id) { next_id = possible_next_id; break; } } - if (next_id == -1) - return false; + if (next_id == -1) return false; - if (id == active_) - SetActivePlaylist(next_id); - if (id == current_) - SetCurrentPlaylist(next_id); + if (id == active_) SetActivePlaylist(next_id); + if (id == current_) SetCurrentPlaylist(next_id); Data data = playlists_.take(id); emit PlaylistClosed(id); @@ -331,8 +324,7 @@ void PlaylistManager::SetActivePlaylist(int id) { // Kinda a hack: unset the current item from the old active playlist before // setting the new one - if (active_ != -1 && active_ != id) - active()->set_current_row(-1); + if (active_ != -1 && active_ != id) active()->set_current_row(-1); active_ = id; emit ActiveChanged(active()); @@ -350,31 +342,22 @@ void PlaylistManager::SetActiveToCurrent() { } } -void PlaylistManager::ClearCurrent() { - current()->Clear(); -} +void PlaylistManager::ClearCurrent() { current()->Clear(); } -void PlaylistManager::ShuffleCurrent() { - current()->Shuffle(); -} +void PlaylistManager::ShuffleCurrent() { current()->Shuffle(); } void PlaylistManager::RemoveDuplicatesCurrent() { current()->RemoveDuplicateSongs(); } -void PlaylistManager::SetActivePlaying() { - active()->Playing(); -} +void PlaylistManager::SetActivePlaying() { active()->Playing(); } -void PlaylistManager::SetActivePaused() { - active()->Paused(); -} +void PlaylistManager::SetActivePaused() { active()->Paused(); } -void PlaylistManager::SetActiveStopped() { - active()->Stopped(); -} +void PlaylistManager::SetActiveStopped() { active()->Stopped(); } -void PlaylistManager::SetActiveStreamMetadata(const QUrl &url, const Song &song) { +void PlaylistManager::SetActiveStreamMetadata(const QUrl& url, + const Song& song) { active()->SetStreamMetadata(url, song); } @@ -396,15 +379,15 @@ void PlaylistManager::UpdateSummaryText() { int selected = 0; // Get the length of the selected tracks - foreach (const QItemSelectionRange& range, playlists_[current_id()].selection) { - if (!range.isValid()) - continue; + foreach(const QItemSelectionRange & range, + playlists_[current_id()].selection) { + if (!range.isValid()) continue; selected += range.bottom() - range.top() + 1; - for (int i=range.top() ; i<=range.bottom() ; ++i) { - qint64 length = range.model()->index(i, Playlist::Column_Length).data().toLongLong(); - if (length > 0) - nanoseconds += length; + for (int i = range.top(); i <= range.bottom(); ++i) { + qint64 length = + range.model()->index(i, Playlist::Column_Length).data().toLongLong(); + if (length > 0) nanoseconds += length; } } @@ -433,12 +416,11 @@ void PlaylistManager::SongsDiscovered(const SongList& songs) { // Some songs might've changed in the library, let's update any playlist // items we have that match those songs - foreach (const Song& song, songs) { - foreach (const Data& data, playlists_) { + foreach(const Song & song, songs) { + foreach(const Data & data, playlists_) { PlaylistItemList items = data.p->library_items_by_id(song.id()); - foreach (PlaylistItemPtr item, items) { - if (item->Metadata().directory_id() != song.directory_id()) - continue; + foreach(PlaylistItemPtr item, items) { + if (item->Metadata().directory_id() != song.directory_id()) continue; static_cast(item.get())->SetMetadata(song); data.p->ItemChanged(item); } @@ -446,7 +428,8 @@ void PlaylistManager::SongsDiscovered(const SongList& songs) { } } -void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, bool clear) { +void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, + bool clear) { if (as_new) { New(generator->name()); } @@ -460,34 +443,35 @@ void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, boo // When Player has processed the new song chosen by the user... void PlaylistManager::SongChangeRequestProcessed(const QUrl& url, bool valid) { - foreach(Playlist* playlist, GetAllPlaylists()) { - if(playlist->ApplyValidityOnCurrentSong(url, valid)) { + foreach(Playlist * playlist, GetAllPlaylists()) { + if (playlist->ApplyValidityOnCurrentSong(url, valid)) { return; } } } -void PlaylistManager::InsertUrls(int id, const QList &urls, int pos, +void PlaylistManager::InsertUrls(int id, const QList& urls, int pos, bool play_now, bool enqueue) { Q_ASSERT(playlists_.contains(id)); playlists_[id].p->InsertUrls(urls, pos, play_now, enqueue); } -void PlaylistManager::RemoveItemsWithoutUndo(int id, const QList &indices) { +void PlaylistManager::RemoveItemsWithoutUndo(int id, + const QList& indices) { Q_ASSERT(playlists_.contains(id)); playlists_[id].p->RemoveItemsWithoutUndo(indices); } void PlaylistManager::InvalidateDeletedSongs() { - foreach(Playlist* playlist, GetAllPlaylists()) { + foreach(Playlist * playlist, GetAllPlaylists()) { playlist->InvalidateDeletedSongs(); } } void PlaylistManager::RemoveDeletedSongs() { - foreach(Playlist* playlist, GetAllPlaylists()) { + foreach(Playlist * playlist, GetAllPlaylists()) { playlist->RemoveDeletedSongs(); } } @@ -500,15 +484,11 @@ QString PlaylistManager::GetNameForNewPlaylist(const SongList& songs) { QSet artists; QSet albums; - foreach(const Song& song, songs) { - artists << (song.artist().isEmpty() - ? tr("Unknown") - : song.artist()); - albums << (song.album().isEmpty() - ? tr("Unknown") - : song.album()); + foreach(const Song & song, songs) { + artists << (song.artist().isEmpty() ? tr("Unknown") : song.artist()); + albums << (song.album().isEmpty() ? tr("Unknown") : song.album()); - if(artists.size() > 1) { + if (artists.size() > 1) { break; } } @@ -516,13 +496,13 @@ QString PlaylistManager::GetNameForNewPlaylist(const SongList& songs) { bool various_artists = artists.size() > 1; QString result; - if(various_artists) { + if (various_artists) { result = tr("Various artists"); } else { result = artists.values().first(); } - if(!various_artists && albums.size() == 1) { + if (!various_artists && albums.size() == 1) { result += " - " + albums.toList().first(); } @@ -547,6 +527,4 @@ void PlaylistManager::SetCurrentOrOpen(int id) { SetCurrentPlaylist(id); } -bool PlaylistManager::IsPlaylistOpen(int id) { - return playlists_.contains(id); -} +bool PlaylistManager::IsPlaylistOpen(int id) { return playlists_.contains(id); } diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index 6be882f7f..f20f37e3b 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -42,9 +42,9 @@ class QUrl; class PlaylistManagerInterface : public QObject { Q_OBJECT -public: + public: PlaylistManagerInterface(Application* app, QObject* parent) - : QObject(parent) {} + : QObject(parent) {} virtual int current_id() const = 0; virtual int active_id() const = 0; @@ -72,7 +72,7 @@ public: virtual PlaylistParser* parser() const = 0; virtual PlaylistContainer* playlist_container() const = 0; -public slots: + public slots: virtual void New(const QString& name, const SongList& songs = SongList(), const QString& special_type = QString()) = 0; virtual void Load(const QString& filename) = 0; @@ -104,7 +104,8 @@ public slots: // Rate current song using 0 - 5 scale. virtual void RateCurrentSong(int rating) = 0; - virtual void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, bool clear) = 0; + virtual void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, + bool as_new, bool clear) = 0; signals: void PlaylistManagerInitialized(); @@ -133,8 +134,8 @@ signals: class PlaylistManager : public PlaylistManagerInterface { Q_OBJECT -public: - PlaylistManager(Application* app, QObject *parent = 0); + public: + PlaylistManager(Application* app, QObject* parent = 0); ~PlaylistManager(); int current_id() const { return current_; } @@ -162,7 +163,9 @@ public: QItemSelection active_selection() const { return selection(active_id()); } QString GetPlaylistName(int index) const { return playlists_[index].name; } - bool IsPlaylistFavorite(int index) const { return playlists_[index].p->is_favorite(); } + bool IsPlaylistFavorite(int index) const { + return playlists_[index].p->is_favorite(); + } void Init(LibraryBackend* library_backend, PlaylistBackend* playlist_backend, PlaylistSequence* sequence, PlaylistContainer* playlist_container); @@ -173,7 +176,7 @@ public: PlaylistParser* parser() const { return parser_; } PlaylistContainer* playlist_container() const { return playlist_container_; } -public slots: + public slots: void New(const QString& name, const SongList& songs = SongList(), const QString& special_type = QString()); void Load(const QString& filename); @@ -207,15 +210,18 @@ public slots: // Rate current song using 0 - 5 scale. void RateCurrentSong(int rating); - void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, bool clear); + void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, + bool clear); void SongChangeRequestProcessed(const QUrl& url, bool valid); - void InsertUrls(int id, const QList& urls, int pos = -1, bool play_now = false, bool enqueue = false); - // Removes items with given indices from the playlist. This operation is not undoable. + void InsertUrls(int id, const QList& urls, int pos = -1, + bool play_now = false, bool enqueue = false); + // Removes items with given indices from the playlist. This operation is not + // undoable. void RemoveItemsWithoutUndo(int id, const QList& indices); -private slots: + private slots: void SetActivePlaying(); void SetActivePaused(); void SetActiveStopped(); @@ -224,15 +230,18 @@ private slots: void UpdateSummaryText(); void SongsDiscovered(const SongList& songs); void LoadFinished(bool success); - void ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, const QString& filename); + void ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, + const QString& filename); -private: - Playlist* AddPlaylist(int id, const QString& name, const QString& special_type, - const QString& ui_path, bool favorite); + private: + Playlist* AddPlaylist(int id, const QString& name, + const QString& special_type, const QString& ui_path, + bool favorite); -private: + private: struct Data { - Data(Playlist* _p = NULL, const QString& _name = QString()) : p(_p), name(_name) {} + Data(Playlist* _p = NULL, const QString& _name = QString()) + : p(_p), name(_name) {} Playlist* p; QString name; QItemSelection selection; @@ -254,4 +263,4 @@ private: int active_; }; -#endif // PLAYLISTMANAGER_H +#endif // PLAYLISTMANAGER_H diff --git a/src/playlist/playlistsequence.cpp b/src/playlist/playlistsequence.cpp index 225a1dbde..5cf1986da 100644 --- a/src/playlist/playlistsequence.cpp +++ b/src/playlist/playlistsequence.cpp @@ -27,22 +27,23 @@ const char* PlaylistSequence::kSettingsGroup = "PlaylistSequence"; -PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings) - : QWidget(parent), - ui_(new Ui_PlaylistSequence), - settings_(settings ? settings : new DefaultSettingsProvider), - repeat_menu_(new QMenu(this)), - shuffle_menu_(new QMenu(this)), - loading_(false), - repeat_mode_(Repeat_Off), - shuffle_mode_(Shuffle_Off), - dynamic_(false) -{ +PlaylistSequence::PlaylistSequence(QWidget* parent, SettingsProvider* settings) + : QWidget(parent), + ui_(new Ui_PlaylistSequence), + settings_(settings ? settings : new DefaultSettingsProvider), + repeat_menu_(new QMenu(this)), + shuffle_menu_(new QMenu(this)), + loading_(false), + repeat_mode_(Repeat_Off), + shuffle_mode_(Shuffle_Off), + dynamic_(false) { ui_->setupUi(this); // Icons - ui_->repeat->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat"))); - ui_->shuffle->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle"))); + ui_->repeat->setIcon( + AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat"))); + ui_->shuffle->setIcon( + AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle"))); settings_->set_group(kSettingsGroup); @@ -62,20 +63,22 @@ PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings) shuffle_menu_->addActions(shuffle_group->actions()); ui_->shuffle->setMenu(shuffle_menu_); - connect(repeat_group, SIGNAL(triggered(QAction*)), SLOT(RepeatActionTriggered(QAction*))); - connect(shuffle_group, SIGNAL(triggered(QAction*)), SLOT(ShuffleActionTriggered(QAction*))); + connect(repeat_group, SIGNAL(triggered(QAction*)), + SLOT(RepeatActionTriggered(QAction*))); + connect(shuffle_group, SIGNAL(triggered(QAction*)), + SLOT(ShuffleActionTriggered(QAction*))); Load(); } -PlaylistSequence::~PlaylistSequence() { - delete ui_; -} +PlaylistSequence::~PlaylistSequence() { delete ui_; } void PlaylistSequence::Load() { - loading_ = true; // Stops these setter functions calling Save() - SetShuffleMode(ShuffleMode(settings_->value("shuffle_mode", Shuffle_Off).toInt())); - SetRepeatMode(RepeatMode(settings_->value("repeat_mode", Repeat_Off).toInt())); + loading_ = true; // Stops these setter functions calling Save() + SetShuffleMode( + ShuffleMode(settings_->value("shuffle_mode", Shuffle_Off).toInt())); + SetRepeatMode( + RepeatMode(settings_->value("repeat_mode", Repeat_Off).toInt())); loading_ = false; } @@ -88,7 +91,7 @@ void PlaylistSequence::Save() { QIcon PlaylistSequence::AddDesaturatedIcon(const QIcon& icon) { QIcon ret; - foreach (const QSize& size, icon.availableSizes()) { + foreach(const QSize & size, icon.availableSizes()) { QPixmap on(icon.pixmap(size)); QPixmap off(DesaturatedPixmap(on)); @@ -112,8 +115,8 @@ QPixmap PlaylistSequence::DesaturatedPixmap(const QPixmap& pixmap) { void PlaylistSequence::RepeatActionTriggered(QAction* action) { RepeatMode mode = Repeat_Off; - if (action == ui_->action_repeat_track) mode = Repeat_Track; - if (action == ui_->action_repeat_album) mode = Repeat_Album; + if (action == ui_->action_repeat_track) mode = Repeat_Track; + if (action == ui_->action_repeat_album) mode = Repeat_Album; if (action == ui_->action_repeat_playlist) mode = Repeat_Playlist; SetRepeatMode(mode); @@ -121,9 +124,9 @@ void PlaylistSequence::RepeatActionTriggered(QAction* action) { void PlaylistSequence::ShuffleActionTriggered(QAction* action) { ShuffleMode mode = Shuffle_Off; - if (action == ui_->action_shuffle_all) mode = Shuffle_All; + if (action == ui_->action_shuffle_all) mode = Shuffle_All; if (action == ui_->action_shuffle_inside_album) mode = Shuffle_InsideAlbum; - if (action == ui_->action_shuffle_albums) mode = Shuffle_Albums; + if (action == ui_->action_shuffle_albums) mode = Shuffle_Albums; SetShuffleMode(mode); } @@ -131,11 +134,19 @@ void PlaylistSequence::ShuffleActionTriggered(QAction* action) { void PlaylistSequence::SetRepeatMode(RepeatMode mode) { ui_->repeat->setChecked(mode != Repeat_Off); - switch(mode) { - case Repeat_Off: ui_->action_repeat_off->setChecked(true); break; - case Repeat_Track: ui_->action_repeat_track->setChecked(true); break; - case Repeat_Album: ui_->action_repeat_album->setChecked(true); break; - case Repeat_Playlist: ui_->action_repeat_playlist->setChecked(true); break; + switch (mode) { + case Repeat_Off: + ui_->action_repeat_off->setChecked(true); + break; + case Repeat_Track: + ui_->action_repeat_track->setChecked(true); + break; + case Repeat_Album: + ui_->action_repeat_album->setChecked(true); + break; + case Repeat_Playlist: + ui_->action_repeat_playlist->setChecked(true); + break; } if (mode != repeat_mode_) { @@ -150,13 +161,20 @@ void PlaylistSequence::SetShuffleMode(ShuffleMode mode) { ui_->shuffle->setChecked(mode != Shuffle_Off); switch (mode) { - case Shuffle_Off: ui_->action_shuffle_off->setChecked(true); break; - case Shuffle_All: ui_->action_shuffle_all->setChecked(true); break; - case Shuffle_InsideAlbum: ui_->action_shuffle_inside_album->setChecked(true); break; - case Shuffle_Albums: ui_->action_shuffle_albums->setChecked(true); break; + case Shuffle_Off: + ui_->action_shuffle_off->setChecked(true); + break; + case Shuffle_All: + ui_->action_shuffle_all->setChecked(true); + break; + case Shuffle_InsideAlbum: + ui_->action_shuffle_inside_album->setChecked(true); + break; + case Shuffle_Albums: + ui_->action_shuffle_albums->setChecked(true); + break; } - if (mode != shuffle_mode_) { shuffle_mode_ = mode; emit ShuffleModeChanged(mode); @@ -167,7 +185,8 @@ void PlaylistSequence::SetShuffleMode(ShuffleMode mode) { void PlaylistSequence::SetUsingDynamicPlaylist(bool dynamic) { dynamic_ = dynamic; - const QString not_available(tr("Not available while using a dynamic playlist")); + const QString not_available( + tr("Not available while using a dynamic playlist")); setEnabled(!dynamic); ui_->shuffle->setToolTip(dynamic ? not_available : tr("Shuffle")); @@ -182,29 +201,43 @@ PlaylistSequence::RepeatMode PlaylistSequence::repeat_mode() const { return dynamic_ ? Repeat_Off : repeat_mode_; } -//called from global shortcut +// called from global shortcut void PlaylistSequence::CycleShuffleMode() { ShuffleMode mode = Shuffle_Off; - //we cycle through the shuffle modes + // we cycle through the shuffle modes switch (shuffle_mode()) { - case Shuffle_Off: mode = Shuffle_All; break; - case Shuffle_All: mode = Shuffle_InsideAlbum; break; - case Shuffle_InsideAlbum: mode = Shuffle_Albums; break; - case Shuffle_Albums: break; + case Shuffle_Off: + mode = Shuffle_All; + break; + case Shuffle_All: + mode = Shuffle_InsideAlbum; + break; + case Shuffle_InsideAlbum: + mode = Shuffle_Albums; + break; + case Shuffle_Albums: + break; } SetShuffleMode(mode); } -//called from global shortcut +// called from global shortcut void PlaylistSequence::CycleRepeatMode() { RepeatMode mode = Repeat_Off; - //we cycle through the repeat modes + // we cycle through the repeat modes switch (repeat_mode()) { - case Repeat_Off: mode = Repeat_Track; break; - case Repeat_Track: mode = Repeat_Album; break; - case Repeat_Album: mode = Repeat_Playlist; break; - case Repeat_Playlist: break; + case Repeat_Off: + mode = Repeat_Track; + break; + case Repeat_Track: + mode = Repeat_Album; + break; + case Repeat_Album: + mode = Repeat_Playlist; + break; + case Repeat_Playlist: + break; } SetRepeatMode(mode); diff --git a/src/playlist/playlistsequence.h b/src/playlist/playlistsequence.h index 0141b09cf..c607d740e 100644 --- a/src/playlist/playlistsequence.h +++ b/src/playlist/playlistsequence.h @@ -32,7 +32,7 @@ class PlaylistSequence : public QWidget { Q_OBJECT public: - PlaylistSequence(QWidget *parent = 0, SettingsProvider* settings = 0); + PlaylistSequence(QWidget* parent = 0, SettingsProvider* settings = 0); ~PlaylistSequence(); enum RepeatMode { @@ -63,7 +63,7 @@ class PlaylistSequence : public QWidget { void CycleRepeatMode(); void SetUsingDynamicPlaylist(bool dynamic); - signals: +signals: void RepeatModeChanged(PlaylistSequence::RepeatMode mode); void ShuffleModeChanged(PlaylistSequence::ShuffleMode mode); @@ -90,4 +90,4 @@ class PlaylistSequence : public QWidget { bool dynamic_; }; -#endif // PLAYLISTSEQUENCE_H +#endif // PLAYLISTSEQUENCE_H diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 4f5b898d0..341100873 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -38,22 +38,24 @@ const char* PlaylistTabBar::kSettingsGroup = "PlaylistTabBar"; -PlaylistTabBar::PlaylistTabBar(QWidget *parent) - : QTabBar(parent), - manager_(nullptr), - menu_(new QMenu(this)), - menu_index_(-1), - suppress_current_changed_(false), - rename_editor_(new RenameTabLineEdit(this)) -{ +PlaylistTabBar::PlaylistTabBar(QWidget* parent) + : QTabBar(parent), + manager_(nullptr), + menu_(new QMenu(this)), + menu_index_(-1), + suppress_current_changed_(false), + rename_editor_(new RenameTabLineEdit(this)) { setAcceptDrops(true); setElideMode(Qt::ElideRight); setUsesScrollButtons(true); setTabsClosable(true); - close_ = menu_->addAction(IconLoader::Load("list-remove"), tr("Close playlist"), this, SLOT(Close())); - rename_ = menu_->addAction(IconLoader::Load("edit-rename"), tr("Rename playlist..."), this, SLOT(Rename())); - save_ = menu_->addAction(IconLoader::Load("document-save"), tr("Save playlist..."), this, SLOT(Save())); + close_ = menu_->addAction(IconLoader::Load("list-remove"), + tr("Close playlist"), this, SLOT(Close())); + rename_ = menu_->addAction(IconLoader::Load("edit-rename"), + tr("Rename playlist..."), this, SLOT(Rename())); + save_ = menu_->addAction(IconLoader::Load("document-save"), + tr("Save playlist..."), this, SLOT(Save())); menu_->addSeparator(); rename_editor_->setVisible(false); @@ -61,29 +63,28 @@ PlaylistTabBar::PlaylistTabBar(QWidget *parent) connect(rename_editor_, SIGNAL(EditingCanceled()), SLOT(HideEditor())); connect(this, SIGNAL(currentChanged(int)), SLOT(CurrentIndexChanged(int))); - connect(this, SIGNAL(tabMoved(int,int)), SLOT(TabMoved())); + connect(this, SIGNAL(tabMoved(int, int)), SLOT(TabMoved())); // We can't just emit Close signal, we need to extract the playlist id first connect(this, SIGNAL(tabCloseRequested(int)), SLOT(CloseFromTabIndex(int))); } -void PlaylistTabBar::SetActions( - QAction* new_playlist, QAction* load_playlist) { +void PlaylistTabBar::SetActions(QAction* new_playlist, QAction* load_playlist) { menu_->insertAction(0, new_playlist); menu_->insertAction(0, load_playlist); new_ = new_playlist; } -void PlaylistTabBar::SetManager(PlaylistManager *manager) { +void PlaylistTabBar::SetManager(PlaylistManager* manager) { manager_ = manager; connect(manager_, SIGNAL(PlaylistFavorited(int, bool)), - SLOT(PlaylistFavoritedSlot(int, bool))); + SLOT(PlaylistFavoritedSlot(int, bool))); } void PlaylistTabBar::contextMenuEvent(QContextMenuEvent* e) { - //we need to finish the renaming action before showing context menu + // we need to finish the renaming action before showing context menu if (rename_editor_->isVisible()) { - //discard any change + // discard any change HideEditor(); } @@ -105,19 +106,18 @@ void PlaylistTabBar::mouseReleaseEvent(QMouseEvent* e) { QTabBar::mouseReleaseEvent(e); } -void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { +void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent* e) { int index = tabAt(e->pos()); - //discard a double click with the middle button + // discard a double click with the middle button if (e->button() != Qt::MidButton) { if (index == -1) { new_->activate(QAction::Trigger); - } - else { - //update current tab + } else { + // update current tab menu_index_ = index; - //set position + // set position rename_editor_->setGeometry(tabRect(index)); rename_editor_->setText(tabText(index)); rename_editor_->setVisible(true); @@ -129,16 +129,14 @@ void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { } void PlaylistTabBar::Rename() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; QString name = tabText(menu_index_); - name = QInputDialog::getText( - this, tr("Rename playlist"), tr("Enter a new name for this playlist"), - QLineEdit::Normal, name); + name = QInputDialog::getText(this, tr("Rename playlist"), + tr("Enter a new name for this playlist"), + QLineEdit::Normal, name); - if (name.isNull()) - return; + if (name.isNull()) return; emit Rename(tabData(menu_index_).toInt(), name); } @@ -149,16 +147,16 @@ void PlaylistTabBar::RenameInline() { } void PlaylistTabBar::HideEditor() { - //editingFinished() will be called twice due to Qt bug #40, so we reuse the same instance, don't delete it + // editingFinished() will be called twice due to Qt bug #40, so we reuse the + // same instance, don't delete it rename_editor_->setVisible(false); - //hack to give back focus to playlist view + // hack to give back focus to playlist view manager_->SetCurrentPlaylist(manager_->current()->id()); } void PlaylistTabBar::Close() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; const int playlist_id = tabData(menu_index_).toInt(); @@ -174,12 +172,14 @@ void PlaylistTabBar::Close() { confirmation_box.setWindowTitle(tr("Remove playlist")); confirmation_box.setIcon(QMessageBox::Question); confirmation_box.setText( - tr("You are about to remove a playlist which is not part of your favorite playlists: " + tr("You are about to remove a playlist which is not part of your " + "favorite playlists: " "the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?")); confirmation_box.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - QCheckBox dont_prompt_again(tr("Warn me when closing a playlist tab"), &confirmation_box); + QCheckBox dont_prompt_again(tr("Warn me when closing a playlist tab"), + &confirmation_box); dont_prompt_again.setChecked(ask_for_delete); dont_prompt_again.blockSignals(true); dont_prompt_again.setToolTip( @@ -188,13 +188,13 @@ void PlaylistTabBar::Close() { QGridLayout* grid = qobject_cast(confirmation_box.layout()); QDialogButtonBox* buttons = confirmation_box.findChild(); if (grid && buttons) { - const int index = grid->indexOf(buttons); - int row, column, row_span, column_span = 0; - grid->getItemPosition(index, &row, &column, &row_span, &column_span); - QLayoutItem* buttonsItem = grid->takeAt(index); - grid->addWidget(&dont_prompt_again, row, column, row_span, column_span, - Qt::AlignLeft | Qt::AlignTop); - grid->addItem(buttonsItem, ++row, column, row_span, column_span); + const int index = grid->indexOf(buttons); + int row, column, row_span, column_span = 0; + grid->getItemPosition(index, &row, &column, &row_span, &column_span); + QLayoutItem* buttonsItem = grid->takeAt(index); + grid->addWidget(&dont_prompt_again, row, column, row_span, column_span, + Qt::AlignLeft | Qt::AlignTop); + grid->addItem(buttonsItem, ++row, column, row_span, column_span); } else { confirmation_box.addButton(&dont_prompt_again, QMessageBox::ActionRole); } @@ -231,21 +231,18 @@ void PlaylistTabBar::CloseFromTabIndex(int index) { } void PlaylistTabBar::Save() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; emit Save(tabData(menu_index_).toInt()); } int PlaylistTabBar::current_id() const { - if (currentIndex() == -1) - return -1; + if (currentIndex() == -1) return -1; return tabData(currentIndex()).toInt(); } - int PlaylistTabBar::index_of(int id) const { - for (int i=0 ; i= count()) { @@ -265,40 +260,38 @@ int PlaylistTabBar::id_of(int index) const { return tabData(index).toInt(); } -void PlaylistTabBar::set_icon_by_id(int id, const QIcon &icon) { +void PlaylistTabBar::set_icon_by_id(int id, const QIcon& icon) { setTabIcon(index_of(id), icon); } -void PlaylistTabBar::RemoveTab(int id) { - removeTab(index_of(id)); -} +void PlaylistTabBar::RemoveTab(int id) { removeTab(index_of(id)); } -void PlaylistTabBar::set_text_by_id(int id, const QString &text) { +void PlaylistTabBar::set_text_by_id(int id, const QString& text) { setTabText(index_of(id), text); setTabToolTip(index_of(id), text); } void PlaylistTabBar::CurrentIndexChanged(int index) { - if (!suppress_current_changed_) - emit CurrentIdChanged(tabData(index).toInt()); + if (!suppress_current_changed_) emit CurrentIdChanged(tabData(index).toInt()); } -void PlaylistTabBar::InsertTab(int id, int index, const QString& text, bool favorite) { +void PlaylistTabBar::InsertTab(int id, int index, const QString& text, + bool favorite) { suppress_current_changed_ = true; insertTab(index, text); setTabData(index, id); setTabToolTip(index, text); FavoriteWidget* widget = new FavoriteWidget(id, favorite); - widget->setToolTip(tr( - "Click here to favorite this playlist so it will be saved and remain accessible " - "through the \"Playlists\" panel on the left side bar")); + widget->setToolTip( + tr("Click here to favorite this playlist so it will be saved and remain " + "accessible " + "through the \"Playlists\" panel on the left side bar")); connect(widget, SIGNAL(FavoriteStateChanged(int, bool)), - SIGNAL(PlaylistFavorited(int, bool))); + SIGNAL(PlaylistFavorited(int, bool))); setTabButton(index, QTabBar::LeftSide, widget); suppress_current_changed_ = false; - if (currentIndex() == index) - emit CurrentIdChanged(id); + if (currentIndex() == index) emit CurrentIdChanged(id); // Update playlist tab order/visibility TabMoved(); @@ -306,7 +299,7 @@ void PlaylistTabBar::InsertTab(int id, int index, const QString& text, bool favo void PlaylistTabBar::TabMoved() { QList ids; - for (int i=0 ; itimerId() == drag_hover_timer_.timerId()) { drag_hover_timer_.stop(); - if (drag_hover_tab_ != -1) - setCurrentIndex(drag_hover_tab_); + if (drag_hover_tab_ != -1) setCurrentIndex(drag_hover_tab_); } } void PlaylistTabBar::dropEvent(QDropEvent* e) { if (drag_hover_tab_ == -1) { - const MimeData *mime_data = qobject_cast(e->mimeData()); - if(mime_data && !mime_data->name_for_new_playlist_.isEmpty()) { + const MimeData* mime_data = qobject_cast(e->mimeData()); + if (mime_data && !mime_data->name_for_new_playlist_.isEmpty()) { manager_->New(mime_data->name_for_new_playlist_); } else { manager_->New(tr("Playlist")); @@ -361,13 +353,14 @@ void PlaylistTabBar::dropEvent(QDropEvent* e) { setCurrentIndex(drag_hover_tab_); } - manager_->current()->dropMimeData(e->mimeData(), e->proposedAction(), -1, 0, QModelIndex()); + manager_->current()->dropMimeData(e->mimeData(), e->proposedAction(), -1, 0, + QModelIndex()); } bool PlaylistTabBar::event(QEvent* e) { switch (e->type()) { case QEvent::ToolTip: { - QHelpEvent *he = static_cast(e); + QHelpEvent* he = static_cast(e); QRect displayed_tab; QSize real_tab; @@ -377,7 +370,7 @@ bool PlaylistTabBar::event(QEvent* e) { displayed_tab = tabRect(tabAt(he->pos())); // Check whether the tab is elided or not is_elided = displayed_tab.width() < real_tab.width(); - if(!is_elided) { + if (!is_elided) { // If it's not elided, don't show the tooltip QToolTip::hideText(); } else { @@ -392,7 +385,8 @@ bool PlaylistTabBar::event(QEvent* e) { void PlaylistTabBar::PlaylistFavoritedSlot(int id, bool favorite) { const int index = index_of(id); - FavoriteWidget* favorite_widget = qobject_cast(tabButton(index, QTabBar::LeftSide)); + FavoriteWidget* favorite_widget = + qobject_cast(tabButton(index, QTabBar::LeftSide)); if (favorite_widget) { favorite_widget->SetFavorite(favorite); } diff --git a/src/playlist/playlisttabbar.h b/src/playlist/playlisttabbar.h index 63ad8146e..5cd1081ac 100644 --- a/src/playlist/playlisttabbar.h +++ b/src/playlist/playlisttabbar.h @@ -30,8 +30,8 @@ class QMenu; class PlaylistTabBar : public QTabBar { Q_OBJECT -public: - PlaylistTabBar(QWidget *parent = 0); + public: + PlaylistTabBar(QWidget* parent = 0); static const int kDragHoverTimeout = 500; static const char* kSettingsGroup; @@ -61,7 +61,7 @@ signals: void PlaylistOrderChanged(const QList& ids); void PlaylistFavorited(int id, bool favorite); -protected: + protected: void contextMenuEvent(QContextMenuEvent* e); void mouseReleaseEvent(QMouseEvent* e); void mouseDoubleClickEvent(QMouseEvent* e); @@ -72,7 +72,7 @@ protected: void timerEvent(QTimerEvent* e); bool event(QEvent* e); -private slots: + private slots: void CurrentIndexChanged(int index); void Rename(); void RenameInline(); @@ -85,7 +85,7 @@ private slots: void TabMoved(); void Save(); -private: + private: PlaylistManager* manager_; QMenu* menu_; @@ -104,4 +104,4 @@ private: RenameTabLineEdit* rename_editor_; }; -#endif // PLAYLISTTABBAR_H +#endif // PLAYLISTTABBAR_H diff --git a/src/playlist/playlistundocommands.cpp b/src/playlist/playlistundocommands.cpp index e505489b4..57c6f917f 100644 --- a/src/playlist/playlistundocommands.cpp +++ b/src/playlist/playlistundocommands.cpp @@ -20,20 +20,11 @@ namespace PlaylistUndoCommands { -Base::Base(Playlist *playlist) - : QUndoCommand(0), - playlist_(playlist) -{ -} +Base::Base(Playlist* playlist) : QUndoCommand(0), playlist_(playlist) {} - -InsertItems::InsertItems(Playlist *playlist, const PlaylistItemList& items, +InsertItems::InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, bool enqueue) - : Base(playlist), - items_(items), - pos_(pos), - enqueue_(enqueue) -{ + : Base(playlist), items_(items), pos_(pos), enqueue_(enqueue) { setText(tr("add %n songs", "", items_.count())); } @@ -42,13 +33,12 @@ void InsertItems::redo() { } void InsertItems::undo() { - const int start = pos_ == -1 ? - playlist_->rowCount() - items_.count() : pos_; + const int start = pos_ == -1 ? playlist_->rowCount() - items_.count() : pos_; playlist_->RemoveItemsWithoutUndo(start, items_.count()); } bool InsertItems::UpdateItem(const PlaylistItemPtr& updated_item) { - for (int i=0; iMetadata().url() == updated_item->Metadata().url()) { items_[i] = updated_item; @@ -58,84 +48,63 @@ bool InsertItems::UpdateItem(const PlaylistItemPtr& updated_item) { return false; } - -RemoveItems::RemoveItems(Playlist *playlist, int pos, int count) - : Base(playlist) -{ +RemoveItems::RemoveItems(Playlist* playlist, int pos, int count) + : Base(playlist) { setText(tr("remove %n songs", "", count)); ranges_ << Range(pos, count); } void RemoveItems::redo() { - for (int i=0 ; iRemoveItemsWithoutUndo( - ranges_[i].pos_, ranges_[i].count_); + for (int i = 0; i < ranges_.count(); ++i) + ranges_[i].items_ = + playlist_->RemoveItemsWithoutUndo(ranges_[i].pos_, ranges_[i].count_); } void RemoveItems::undo() { - for (int i=ranges_.count()-1 ; i>=0 ; --i) + for (int i = ranges_.count() - 1; i >= 0; --i) playlist_->InsertItemsWithoutUndo(ranges_[i].items_, ranges_[i].pos_); } -bool RemoveItems::mergeWith(const QUndoCommand *other) { +bool RemoveItems::mergeWith(const QUndoCommand* other) { const RemoveItems* remove_command = static_cast(other); ranges_.append(remove_command->ranges_); int sum = 0; - foreach (const Range& range, ranges_) - sum += range.count_; + foreach(const Range & range, ranges_) + sum += range.count_; setText(tr("remove %n songs", "", sum)); return true; } - -MoveItems::MoveItems(Playlist *playlist, const QList &source_rows, int pos) - : Base(playlist), - source_rows_(source_rows), - pos_(pos) -{ +MoveItems::MoveItems(Playlist* playlist, const QList& source_rows, int pos) + : Base(playlist), source_rows_(source_rows), pos_(pos) { setText(tr("move %n songs", "", source_rows.count())); } -void MoveItems::redo() { - playlist_->MoveItemsWithoutUndo(source_rows_, pos_); -} +void MoveItems::redo() { playlist_->MoveItemsWithoutUndo(source_rows_, pos_); } -void MoveItems::undo() { - playlist_->MoveItemsWithoutUndo(pos_, source_rows_); -} +void MoveItems::undo() { playlist_->MoveItemsWithoutUndo(pos_, source_rows_); } +ReOrderItems::ReOrderItems(Playlist* playlist, + const PlaylistItemList& new_items) + : Base(playlist), old_items_(playlist->items_), new_items_(new_items) {} -ReOrderItems::ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items) - : Base(playlist), - old_items_(playlist->items_), - new_items_(new_items) { } +void ReOrderItems::undo() { playlist_->ReOrderWithoutUndo(old_items_); } -void ReOrderItems::undo() { - playlist_->ReOrderWithoutUndo(old_items_); -} +void ReOrderItems::redo() { playlist_->ReOrderWithoutUndo(new_items_); } -void ReOrderItems::redo() { - playlist_->ReOrderWithoutUndo(new_items_); -} - - -SortItems::SortItems(Playlist* playlist, int column, Qt::SortOrder order, +SortItems::SortItems(Playlist* playlist, int column, Qt::SortOrder order, const PlaylistItemList& new_items) - : ReOrderItems(playlist, new_items), - column_(column), - order_(order) -{ + : ReOrderItems(playlist, new_items), column_(column), order_(order) { setText(tr("sort songs")); } - -ShuffleItems::ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items) - : ReOrderItems(playlist, new_items) -{ +ShuffleItems::ShuffleItems(Playlist* playlist, + const PlaylistItemList& new_items) + : ReOrderItems(playlist, new_items) { setText(tr("shuffle songs")); } -} // namespace +} // namespace diff --git a/src/playlist/playlistundocommands.h b/src/playlist/playlistundocommands.h index 0a0f9fe47..f2860e9a6 100644 --- a/src/playlist/playlistundocommands.h +++ b/src/playlist/playlistundocommands.h @@ -26,98 +26,97 @@ class Playlist; namespace PlaylistUndoCommands { - enum Types { - Type_RemoveItems = 0, - }; +enum Types { Type_RemoveItems = 0, }; - class Base : public QUndoCommand { - Q_DECLARE_TR_FUNCTIONS(PlaylistUndoCommands); +class Base : public QUndoCommand { + Q_DECLARE_TR_FUNCTIONS(PlaylistUndoCommands); - public: - Base(Playlist* playlist); + public: + Base(Playlist* playlist); - protected: - Playlist* playlist_; - }; + protected: + Playlist* playlist_; +}; - class InsertItems : public Base { - public: - InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, - bool enqueue = false); +class InsertItems : public Base { + public: + InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, + bool enqueue = false); - void undo(); - void redo(); - // When load is async, items have already been pushed, so we need to update them. - // This function try to find the equivalent item, and replace it with the - // new (completely loaded) one. - // return true if the was found (and updated), false otherwise - bool UpdateItem(const PlaylistItemPtr& updated_item); + void undo(); + void redo(); + // When load is async, items have already been pushed, so we need to update + // them. + // This function try to find the equivalent item, and replace it with the + // new (completely loaded) one. + // return true if the was found (and updated), false otherwise + bool UpdateItem(const PlaylistItemPtr& updated_item); - private: + private: + PlaylistItemList items_; + int pos_; + bool enqueue_; +}; + +class RemoveItems : public Base { + public: + RemoveItems(Playlist* playlist, int pos, int count); + + int id() const { return Type_RemoveItems; } + + void undo(); + void redo(); + bool mergeWith(const QUndoCommand* other); + + private: + struct Range { + Range(int pos, int count) : pos_(pos), count_(count) {} + int pos_; + int count_; PlaylistItemList items_; - int pos_; - bool enqueue_; }; - class RemoveItems : public Base { - public: - RemoveItems(Playlist* playlist, int pos, int count); + QList ranges_; +}; - int id() const { return Type_RemoveItems; } +class MoveItems : public Base { + public: + MoveItems(Playlist* playlist, const QList& source_rows, int pos); - void undo(); - void redo(); - bool mergeWith(const QUndoCommand *other); + void undo(); + void redo(); - private: - struct Range { - Range(int pos, int count) : pos_(pos), count_(count) {} - int pos_; - int count_; - PlaylistItemList items_; - }; + private: + QList source_rows_; + int pos_; +}; - QList ranges_; - }; +class ReOrderItems : public Base { + public: + ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items); - class MoveItems : public Base { - public: - MoveItems(Playlist* playlist, const QList& source_rows, int pos); + void undo(); + void redo(); - void undo(); - void redo(); + private: + PlaylistItemList old_items_; + PlaylistItemList new_items_; +}; - private: - QList source_rows_; - int pos_; - }; +class SortItems : public ReOrderItems { + public: + SortItems(Playlist* playlist, int column, Qt::SortOrder order, + const PlaylistItemList& new_items); - class ReOrderItems : public Base { - public: - ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items); + private: + int column_; + Qt::SortOrder order_; +}; - void undo(); - void redo(); +class ShuffleItems : public ReOrderItems { + public: + ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items); +}; +} // namespace - private: - PlaylistItemList old_items_; - PlaylistItemList new_items_; - }; - - class SortItems : public ReOrderItems { - public: - SortItems(Playlist* playlist, int column, Qt::SortOrder order, - const PlaylistItemList& new_items); - - private: - int column_; - Qt::SortOrder order_; - }; - - class ShuffleItems : public ReOrderItems { - public: - ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items); - }; -} //namespace - -#endif // PLAYLISTUNDOCOMMANDS_H +#endif // PLAYLISTUNDOCOMMANDS_H diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index b29b35b61..5d459c272 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -43,38 +43,40 @@ #include #ifdef HAVE_MOODBAR -# include "moodbar/moodbaritemdelegate.h" +#include "moodbar/moodbaritemdelegate.h" #endif const int PlaylistView::kStateVersion = 6; const int PlaylistView::kGlowIntensitySteps = 24; -const int PlaylistView::kAutoscrollGraceTimeout = 30; // seconds +const int PlaylistView::kAutoscrollGraceTimeout = 30; // seconds const int PlaylistView::kDropIndicatorWidth = 2; const int PlaylistView::kDropIndicatorGradientWidth = 5; -const char* PlaylistView::kSettingBackgroundImageType = "playlistview_background_type"; -const char* PlaylistView::kSettingBackgroundImageFilename = "playlistview_background_image_file"; +const char* PlaylistView::kSettingBackgroundImageType = + "playlistview_background_type"; +const char* PlaylistView::kSettingBackgroundImageFilename = + "playlistview_background_image_file"; const int PlaylistView::kDefaultBlurRadius = 0; const int PlaylistView::kDefaultOpacityLevel = 40; - PlaylistProxyStyle::PlaylistProxyStyle(QStyle* base) - : QProxyStyle(base), - cleanlooks_(new QCleanlooksStyle){ -} + : QProxyStyle(base), cleanlooks_(new QCleanlooksStyle) {} -void PlaylistProxyStyle::drawControl( - ControlElement element, const QStyleOption* option, QPainter* painter, - const QWidget* widget) const { +void PlaylistProxyStyle::drawControl(ControlElement element, + const QStyleOption* option, + QPainter* painter, + const QWidget* widget) const { if (element == CE_Header) { - const QStyleOptionHeader* header_option = qstyleoption_cast(option); + const QStyleOptionHeader* header_option = + qstyleoption_cast(option); const QRect& rect = header_option->rect; const QString& text = header_option->text; const QFontMetrics& font_metrics = header_option->fontMetrics; // spaces added to make transition less abrupt if (rect.width() < font_metrics.width(text + " ")) { - const Playlist::Column column = static_cast(header_option->section); + const Playlist::Column column = + static_cast(header_option->section); QStyleOptionHeader new_option(*header_option); new_option.text = Playlist::abbreviated_column_name(column); QProxyStyle::drawControl(element, &new_option, painter, widget); @@ -88,7 +90,10 @@ void PlaylistProxyStyle::drawControl( QProxyStyle::drawControl(element, option, painter, widget); } -void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const { +void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, + const QStyleOption* option, + QPainter* painter, + const QWidget* widget) const { if (element == QStyle::PE_PanelItemViewRow || element == QStyle::PE_PanelItemViewItem) cleanlooks_->drawPrimitive(element, option, painter, widget); @@ -96,57 +101,62 @@ void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt QProxyStyle::drawPrimitive(element, option, painter, widget); } - -PlaylistView::PlaylistView(QWidget *parent) - : QTreeView(parent), - app_(nullptr), - style_(new PlaylistProxyStyle(style())), - playlist_(nullptr), - header_(new PlaylistHeader(Qt::Horizontal, this, this)), - setting_initial_header_layout_(false), - upgrading_from_qheaderview_(false), - read_only_settings_(true), - upgrading_from_version_(-1), - background_image_type_(Default), - previous_background_image_opacity_(0.0), - fade_animation_(new QTimeLine(1000, this)), - last_height_(-1), - last_width_(-1), - force_background_redraw_(false), - glow_enabled_(true), - currently_glowing_(false), - glow_intensity_step_(0), - rating_delegate_(nullptr), - inhibit_autoscroll_timer_(new QTimer(this)), - inhibit_autoscroll_(false), - currently_autoscrolling_(false), - row_height_(-1), - currenttrack_play_(":currenttrack_play.png"), - currenttrack_pause_(":currenttrack_pause.png"), - cached_current_row_row_(-1), - drop_indicator_row_(-1), - drag_over_(false), - dynamic_controls_(new DynamicPlaylistControls(this)) -{ +PlaylistView::PlaylistView(QWidget* parent) + : QTreeView(parent), + app_(nullptr), + style_(new PlaylistProxyStyle(style())), + playlist_(nullptr), + header_(new PlaylistHeader(Qt::Horizontal, this, this)), + setting_initial_header_layout_(false), + upgrading_from_qheaderview_(false), + read_only_settings_(true), + upgrading_from_version_(-1), + background_image_type_(Default), + previous_background_image_opacity_(0.0), + fade_animation_(new QTimeLine(1000, this)), + last_height_(-1), + last_width_(-1), + force_background_redraw_(false), + glow_enabled_(true), + currently_glowing_(false), + glow_intensity_step_(0), + rating_delegate_(nullptr), + inhibit_autoscroll_timer_(new QTimer(this)), + inhibit_autoscroll_(false), + currently_autoscrolling_(false), + row_height_(-1), + currenttrack_play_(":currenttrack_play.png"), + currenttrack_pause_(":currenttrack_pause.png"), + cached_current_row_row_(-1), + drop_indicator_row_(-1), + drag_over_(false), + dynamic_controls_(new DynamicPlaylistControls(this)) { setHeader(header_); header_->setMovable(true); setStyle(style_); setMouseTracking(true); - connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); - connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); - connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(sectionResized(int, int, int)), SLOT(SaveGeometry())); + connect(header_, SIGNAL(sectionMoved(int, int, int)), SLOT(SaveGeometry())); + connect(header_, SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), + SLOT(SaveGeometry())); + connect(header_, SIGNAL(SectionVisibilityChanged(int, bool)), + SLOT(SaveGeometry())); + connect(header_, SIGNAL(sectionResized(int, int, int)), + SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(sectionMoved(int, int, int)), + SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(SectionVisibilityChanged(int, bool)), + SLOT(InvalidateCachedCurrentPixmap())); connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(SaveSettings())); - connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(StretchChanged(bool))); + connect(header_, SIGNAL(StretchEnabledChanged(bool)), + SLOT(StretchChanged(bool))); connect(header_, SIGNAL(MouseEntered()), SLOT(RatingHoverOut())); inhibit_autoscroll_timer_->setInterval(kAutoscrollGraceTimeout * 1000); inhibit_autoscroll_timer_->setSingleShot(true); - connect(inhibit_autoscroll_timer_, SIGNAL(timeout()), SLOT(InhibitAutoscrollTimeout())); + connect(inhibit_autoscroll_timer_, SIGNAL(timeout()), + SLOT(InhibitAutoscrollTimeout())); horizontalScrollBar()->installEventFilter(this); verticalScrollBar()->installEventFilter(this); @@ -161,11 +171,12 @@ PlaylistView::PlaylistView(QWidget *parent) setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); #endif // For fading - connect(fade_animation_, SIGNAL(valueChanged(qreal)), SLOT(FadePreviousBackgroundImage(qreal))); - fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 + connect(fade_animation_, SIGNAL(valueChanged(qreal)), + SLOT(FadePreviousBackgroundImage(qreal))); + fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 } -void PlaylistView::SetApplication(Application *app) { +void PlaylistView::SetApplication(Application* app) { Q_ASSERT(app); app_ = app; connect(app_->current_art_loader(), @@ -182,38 +193,57 @@ void PlaylistView::SetItemDelegates(LibraryBackend* backend) { setItemDelegate(new PlaylistDelegateBase(this)); setItemDelegateForColumn(Playlist::Column_Title, new TextItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Album, + setItemDelegateForColumn( + Playlist::Column_Album, new TagCompletionItemDelegate(this, backend, Playlist::Column_Album)); - setItemDelegateForColumn(Playlist::Column_Artist, + setItemDelegateForColumn( + Playlist::Column_Artist, new TagCompletionItemDelegate(this, backend, Playlist::Column_Artist)); setItemDelegateForColumn(Playlist::Column_AlbumArtist, - new TagCompletionItemDelegate(this, backend, Playlist::Column_AlbumArtist)); - setItemDelegateForColumn(Playlist::Column_Genre, + new TagCompletionItemDelegate( + this, backend, Playlist::Column_AlbumArtist)); + setItemDelegateForColumn( + Playlist::Column_Genre, new TagCompletionItemDelegate(this, backend, Playlist::Column_Genre)); - setItemDelegateForColumn(Playlist::Column_Composer, + setItemDelegateForColumn( + Playlist::Column_Composer, new TagCompletionItemDelegate(this, backend, Playlist::Column_Composer)); - setItemDelegateForColumn(Playlist::Column_Performer, + setItemDelegateForColumn( + Playlist::Column_Performer, new TagCompletionItemDelegate(this, backend, Playlist::Column_Performer)); - setItemDelegateForColumn(Playlist::Column_Grouping, + setItemDelegateForColumn( + Playlist::Column_Grouping, new TagCompletionItemDelegate(this, backend, Playlist::Column_Grouping)); - setItemDelegateForColumn(Playlist::Column_Length, new LengthItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Filesize, new SizeItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Filetype, new FileTypeItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_DateCreated, new DateItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_DateModified, new DateItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_BPM, new PlaylistDelegateBase(this, tr("bpm"))); - setItemDelegateForColumn(Playlist::Column_Samplerate, new PlaylistDelegateBase(this, ("Hz"))); - setItemDelegateForColumn(Playlist::Column_Bitrate, new PlaylistDelegateBase(this, tr("kbps"))); - setItemDelegateForColumn(Playlist::Column_Filename, new NativeSeparatorsDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Length, + new LengthItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Filesize, + new SizeItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Filetype, + new FileTypeItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_DateCreated, + new DateItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_DateModified, + new DateItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_BPM, + new PlaylistDelegateBase(this, tr("bpm"))); + setItemDelegateForColumn(Playlist::Column_Samplerate, + new PlaylistDelegateBase(this, ("Hz"))); + setItemDelegateForColumn(Playlist::Column_Bitrate, + new PlaylistDelegateBase(this, tr("kbps"))); + setItemDelegateForColumn(Playlist::Column_Filename, + new NativeSeparatorsDelegate(this)); setItemDelegateForColumn(Playlist::Column_Rating, rating_delegate_); - setItemDelegateForColumn(Playlist::Column_LastPlayed, new LastPlayedItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_LastPlayed, + new LastPlayedItemDelegate(this)); #ifdef HAVE_MOODBAR - setItemDelegateForColumn(Playlist::Column_Mood, new MoodbarItemDelegate(app_, this, this)); + setItemDelegateForColumn(Playlist::Column_Mood, + new MoodbarItemDelegate(app_, this, this)); #endif if (app_ && app_->player()) { - setItemDelegateForColumn(Playlist::Column_Source, new SongSourceDelegate(this, app_->player())); + setItemDelegateForColumn(Playlist::Column_Source, + new SongSourceDelegate(this, app_->player())); } else { header_->HideSection(Playlist::Column_Source); } @@ -221,18 +251,18 @@ void PlaylistView::SetItemDelegates(LibraryBackend* backend) { void PlaylistView::SetPlaylist(Playlist* playlist) { if (playlist_) { - disconnect(playlist_, SIGNAL(CurrentSongChanged(Song)), - this, SLOT(MaybeAutoscroll())); - disconnect(playlist_, SIGNAL(DynamicModeChanged(bool)), - this, SLOT(DynamicModeChanged(bool))); + disconnect(playlist_, SIGNAL(CurrentSongChanged(Song)), this, + SLOT(MaybeAutoscroll())); + disconnect(playlist_, SIGNAL(DynamicModeChanged(bool)), this, + SLOT(DynamicModeChanged(bool))); disconnect(playlist_, SIGNAL(destroyed()), this, SLOT(PlaylistDestroyed())); - disconnect(dynamic_controls_, SIGNAL(Expand()), - playlist_, SLOT(ExpandDynamicPlaylist())); - disconnect(dynamic_controls_, SIGNAL(Repopulate()), - playlist_, SLOT(RepopulateDynamicPlaylist())); - disconnect(dynamic_controls_, SIGNAL(TurnOff()), - playlist_, SLOT(TurnOffDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(Expand()), playlist_, + SLOT(ExpandDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, + SLOT(RepopulateDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, + SLOT(TurnOffDynamicPlaylist())); } playlist_ = playlist; @@ -245,19 +275,23 @@ void PlaylistView::SetPlaylist(Playlist* playlist) { connect(playlist_, SIGNAL(RestoreFinished()), SLOT(JumpToLastPlayedTrack())); connect(playlist_, SIGNAL(CurrentSongChanged(Song)), SLOT(MaybeAutoscroll())); - connect(playlist_, SIGNAL(DynamicModeChanged(bool)), SLOT(DynamicModeChanged(bool))); + connect(playlist_, SIGNAL(DynamicModeChanged(bool)), + SLOT(DynamicModeChanged(bool))); connect(playlist_, SIGNAL(destroyed()), SLOT(PlaylistDestroyed())); - connect(dynamic_controls_, SIGNAL(Expand()), playlist_, SLOT(ExpandDynamicPlaylist())); - connect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, SLOT(RepopulateDynamicPlaylist())); - connect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, SLOT(TurnOffDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(Expand()), playlist_, + SLOT(ExpandDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, + SLOT(RepopulateDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, + SLOT(TurnOffDynamicPlaylist())); } -void PlaylistView::setModel(QAbstractItemModel *m) { +void PlaylistView::setModel(QAbstractItemModel* m) { if (model()) { - disconnect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(InvalidateCachedCurrentPixmap())); - disconnect(model(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(RatingHoverOut())); + disconnect(model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(InvalidateCachedCurrentPixmap())); + disconnect(model(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(RatingHoverOut())); // When changing the model, always invalidate the current pixmap. // If a remote client uses "stop after", without invaliding the stop // mark would not appear. @@ -266,10 +300,10 @@ void PlaylistView::setModel(QAbstractItemModel *m) { QTreeView::setModel(m); - connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(InvalidateCachedCurrentPixmap())); - connect(model(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(RatingHoverOut())); + connect(model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(InvalidateCachedCurrentPixmap())); + connect(model(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(RatingHoverOut())); } void PlaylistView::LoadGeometry() { @@ -335,7 +369,7 @@ void PlaylistView::LoadGeometry() { // Make sure at least one column is visible bool all_hidden = true; - for (int i=0 ; icount() ; ++i) { + for (int i = 0; i < header_->count(); ++i) { if (!header_->isSectionHidden(i) && header_->sectionSize(i) > 0) { all_hidden = false; break; @@ -347,8 +381,7 @@ void PlaylistView::LoadGeometry() { } void PlaylistView::SaveGeometry() { - if (read_only_settings_) - return; + if (read_only_settings_) return; QSettings settings; settings.beginGroup(Playlist::kSettingsGroup); @@ -375,11 +408,11 @@ QList PlaylistView::LoadBarPixmap(const QString& filename) { // Animation steps QList ret; - for(int i=0 ; i(this)->current_paint_region_ = QRegion(); } -void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void PlaylistView::drawRow(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QStyleOptionViewItemV4 opt(option); bool is_current = index.data(Playlist::Role_IsCurrent).toBool(); @@ -406,7 +441,7 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option int step = glow_intensity_step_; if (step >= kGlowIntensitySteps) - step = 2*(kGlowIntensitySteps-1) - step + 1; + step = 2 * (kGlowIntensitySteps - 1) - step + 1; int row_height = opt.rect.height(); if (row_height != row_height_) { @@ -425,7 +460,9 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option // Draw the bar painter->drawPixmap(opt.rect.topLeft(), currenttrack_bar_left_[step]); - painter->drawPixmap(opt.rect.topRight() - currenttrack_bar_right_[0].rect().topRight(), currenttrack_bar_right_[step]); + painter->drawPixmap( + opt.rect.topRight() - currenttrack_bar_right_[0].rect().topRight(), + currenttrack_bar_right_[step]); painter->drawPixmap(middle, currenttrack_bar_mid_[step]); // Draw the play icon @@ -435,11 +472,12 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option is_paused ? currenttrack_pause_ : currenttrack_play_); // Set the font - opt.palette.setColor(QPalette::Text, QApplication::palette().color(QPalette::HighlightedText)); + opt.palette.setColor(QPalette::Text, QApplication::palette().color( + QPalette::HighlightedText)); opt.palette.setColor(QPalette::Highlight, Qt::transparent); opt.palette.setColor(QPalette::AlternateBase, Qt::transparent); opt.font.setItalic(true); - opt.decorationSize = QSize(20,20); + opt.decorationSize = QSize(20, 20); // Draw the actual row data on top. We cache this, because it's fairly // expensive (1-2ms), and we do it many times per second. @@ -457,7 +495,8 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option painter->drawPixmap(opt.rect, cached_current_row_); } else { if (whole_region) { - const_cast(this)->UpdateCachedCurrentRowPixmap(opt, index); + const_cast(this) + ->UpdateCachedCurrentRowPixmap(opt, index); painter->drawPixmap(opt.rect, cached_current_row_); } else { QTreeView::drawRow(painter, opt, index); @@ -487,8 +526,7 @@ void PlaylistView::InvalidateCachedCurrentPixmap() { void PlaylistView::timerEvent(QTimerEvent* event) { QTreeView::timerEvent(event); - if (event->timerId() == glow_timer_.timerId()) - GlowIntensityChanged(); + if (event->timerId() == glow_timer_.timerId()) GlowIntensityChanged(); } void PlaylistView::GlowIntensityChanged() { @@ -509,9 +547,7 @@ void PlaylistView::StartGlowing() { glow_timer_.start(1500 / kGlowIntensitySteps, this); } -void PlaylistView::hideEvent(QHideEvent*) { - glow_timer_.stop(); -} +void PlaylistView::hideEvent(QHideEvent*) { glow_timer_.stop(); } void PlaylistView::showEvent(QShowEvent*) { if (currently_glowing_ && glow_enabled_) @@ -519,7 +555,8 @@ void PlaylistView::showEvent(QShowEvent*) { MaybeAutoscroll(); } -bool CompareSelectionRanges(const QItemSelectionRange& a, const QItemSelectionRange& b) { +bool CompareSelectionRanges(const QItemSelectionRange& a, + const QItemSelectionRange& b) { return b.bottom() < a.bottom(); } @@ -536,26 +573,28 @@ void PlaylistView::keyPressEvent(QKeyEvent* event) { #endif } else if (event == QKeySequence::Copy) { CopyCurrentSongToClipboard(); - } else if (event->key() == Qt::Key_Enter || - event->key() == Qt::Key_Return) { - if (currentIndex().isValid()) - emit PlayItem(currentIndex()); + } else if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { + if (currentIndex().isValid()) emit PlayItem(currentIndex()); event->accept(); - } else if(event->modifiers() != Qt::ControlModifier //Ctrl+Space selects the item - && event->key() == Qt::Key_Space) { + } else if (event->modifiers() != + Qt::ControlModifier // Ctrl+Space selects the item + && + event->key() == Qt::Key_Space) { emit PlayPause(); event->accept(); - } else if(event->key() == Qt::Key_Left) { + } else if (event->key() == Qt::Key_Left) { emit SeekTrack(-1); event->accept(); - } else if(event->key() == Qt::Key_Right) { + } else if (event->key() == Qt::Key_Right) { emit SeekTrack(1); event->accept(); - } else if(event->modifiers() == Qt::NoModifier // No modifier keys currently pressed... - // ... and key pressed is something related to text - && ( (event->key() >= Qt::Key_A && event->key() <= Qt::Key_Z) - || event->key() == Qt::Key_Backspace - || event->key() == Qt::Key_Escape)) { + } else if (event->modifiers() == + Qt::NoModifier // No modifier keys currently pressed... + // ... and key pressed is something related to text + && + ((event->key() >= Qt::Key_A && event->key() <= Qt::Key_Z) || + event->key() == Qt::Key_Backspace || + event->key() == Qt::Key_Escape)) { emit FocusOnFilterSignal(event); event->accept(); } else { @@ -583,7 +622,7 @@ void PlaylistView::RemoveSelected() { // Store the last selected row, which is the first in the list int last_row = selection.first().bottom(); - foreach (const QItemSelectionRange& range, selection) { + foreach(const QItemSelectionRange & range, selection) { rows_removed += range.height(); model()->removeRows(range.top(), range.height(), range.parent()); } @@ -592,31 +631,35 @@ void PlaylistView::RemoveSelected() { // Index of the first column for the row to select QModelIndex new_index = model()->index(new_row, 0); - // Select the new current item, we want always the item after the last selected + // Select the new current item, we want always the item after the last + // selected if (new_index.isValid()) { // Update visual selection with the entire row - selectionModel()->select(QItemSelection(new_index, model()->index(new_row, model()->columnCount()-1)), - QItemSelectionModel::Select); + selectionModel()->select( + QItemSelection(new_index, + model()->index(new_row, model()->columnCount() - 1)), + QItemSelectionModel::Select); // Update keyboard selected row, if it's not the first row if (new_row != 0) - keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier)); + keyPressEvent( + new QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier)); } else { // We're removing the last item, select the new last row - selectionModel()->select(QItemSelection(model()->index(model()->rowCount()-1, 0), - model()->index(model()->rowCount()-1, model()->columnCount()-1)), - QItemSelectionModel::Select); + selectionModel()->select( + QItemSelection(model()->index(model()->rowCount() - 1, 0), + model()->index(model()->rowCount() - 1, + model()->columnCount() - 1)), + QItemSelectionModel::Select); } } QList PlaylistView::GetEditableColumns() { QList columns; QHeaderView* h = header(); - for (int col=0; colcount(); col++) { - if (h->isSectionHidden(col)) - continue; + for (int col = 0; col < h->count(); col++) { + if (h->isSectionHidden(col)) continue; QModelIndex index = model()->index(0, col); - if (index.flags() & Qt::ItemIsEditable) - columns << h->visualIndex(col); + if (index.flags() & Qt::ItemIsEditable) columns << h->visualIndex(col); } qSort(columns); return columns; @@ -627,10 +670,10 @@ QModelIndex PlaylistView::NextEditableIndex(const QModelIndex& current) { QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); - if(index+1 >= columns.size()) - return model()->index(current.row()+1, h->logicalIndex(columns.first())); + if (index + 1 >= columns.size()) + return model()->index(current.row() + 1, h->logicalIndex(columns.first())); - return model()->index(current.row(), h->logicalIndex(columns[index+1])); + return model()->index(current.row(), h->logicalIndex(columns[index + 1])); } QModelIndex PlaylistView::PrevEditableIndex(const QModelIndex& current) { @@ -638,13 +681,14 @@ QModelIndex PlaylistView::PrevEditableIndex(const QModelIndex& current) { QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); - if(index-1 < 0) - return model()->index(current.row()-1, h->logicalIndex(columns.last())); + if (index - 1 < 0) + return model()->index(current.row() - 1, h->logicalIndex(columns.last())); - return model()->index(current.row(), h->logicalIndex(columns[index-1])); + return model()->index(current.row(), h->logicalIndex(columns[index - 1])); } -void PlaylistView::closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) { +void PlaylistView::closeEditor(QWidget* editor, + QAbstractItemDelegate::EndEditHint hint) { if (hint == QAbstractItemDelegate::NoHint) { QTreeView::closeEditor(editor, QAbstractItemDelegate::SubmitModelCache); } else if (hint == QAbstractItemDelegate::EditNextItem || @@ -698,7 +742,7 @@ void PlaylistView::RatingHoverIn(const QModelIndex& index, const QPoint& pos) { update(index); update(old_index); - foreach (const QModelIndex& index, selectedIndexes()) { + foreach(const QModelIndex & index, selectedIndexes()) { if (index.column() == Playlist::Column_Rating) { update(index); } @@ -720,7 +764,7 @@ void PlaylistView::RatingHoverOut() { setCursor(QCursor()); update(old_index); - foreach (const QModelIndex& index, selectedIndexes()) { + foreach(const QModelIndex & index, selectedIndexes()) { if (index.column() == Playlist::Column_Rating) { update(index); } @@ -741,14 +785,15 @@ void PlaylistView::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton && index.isValid() && index.data(Playlist::Role_CanSetRating).toBool()) { // Calculate which star was clicked - double new_rating = RatingPainter::RatingForPos( - event->pos(), visualRect(index)); + double new_rating = + RatingPainter::RatingForPos(event->pos(), visualRect(index)); if (selectedIndexes().contains(index)) { // Update all the selected items - foreach (const QModelIndex& index, selectedIndexes()) { + foreach(const QModelIndex & index, selectedIndexes()) { if (index.data(Playlist::Role_CanSetRating).toBool()) { - playlist_->RateSong(playlist_->proxy()->mapToSource(index), new_rating); + playlist_->RateSong(playlist_->proxy()->mapToSource(index), + new_rating); } } } else { @@ -785,23 +830,21 @@ void PlaylistView::InhibitAutoscrollTimeout() { } void PlaylistView::MaybeAutoscroll() { - if (!inhibit_autoscroll_) - JumpToCurrentlyPlayingTrack(); + if (!inhibit_autoscroll_) JumpToCurrentlyPlayingTrack(); } void PlaylistView::JumpToCurrentlyPlayingTrack() { Q_ASSERT(playlist_); - // Usage of the "Jump to the currently playing track" action shall enable autoscroll + // Usage of the "Jump to the currently playing track" action shall enable + // autoscroll inhibit_autoscroll_ = false; - if (playlist_->current_row() == -1) - return; + if (playlist_->current_row() == -1) return; QModelIndex current = playlist_->proxy()->mapFromSource( playlist_->index(playlist_->current_row(), 0)); - if (!current.isValid()) - return; + if (!current.isValid()) return; currently_autoscrolling_ = true; @@ -814,13 +857,11 @@ void PlaylistView::JumpToCurrentlyPlayingTrack() { void PlaylistView::JumpToLastPlayedTrack() { Q_ASSERT(playlist_); - if (playlist_->last_played_row() == -1) - return; + if (playlist_->last_played_row() == -1) return; QModelIndex last_played = playlist_->proxy()->mapFromSource( playlist_->index(playlist_->last_played_row(), 0)); - if (!last_played.isValid()) - return; + if (!last_played.isValid()) return; // Select last played song last_current_item_ = last_played; @@ -844,26 +885,26 @@ void PlaylistView::paintEvent(QPaintEvent* event) { // dragLeaveEvent, dropEvent and scrollContentsBy. // Draw background - if (background_image_type_ == Custom || background_image_type_ == AlbumCover) { + if (background_image_type_ == Custom || + background_image_type_ == AlbumCover) { if (!background_image_.isNull() || !previous_background_image_.isNull()) { QPainter background_painter(viewport()); // Check if we should recompute the background image - if (height() != last_height_ || width() != last_width_ - || force_background_redraw_) { + if (height() != last_height_ || width() != last_width_ || + force_background_redraw_) { if (background_image_.isNull()) { cached_scaled_background_image_ = QPixmap(); } else { - cached_scaled_background_image_ = QPixmap::fromImage( - background_image_.scaled( - width(), height(), - Qt::KeepAspectRatioByExpanding, + cached_scaled_background_image_ = + QPixmap::fromImage(background_image_.scaled( + width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); } last_height_ = height(); - last_width_ = width(); + last_width_ = width(); force_background_redraw_ = false; } @@ -871,18 +912,21 @@ void PlaylistView::paintEvent(QPaintEvent* event) { if (!cached_scaled_background_image_.isNull()) { // Set opactiy only if needed, as this deactivate hardware acceleration if (!qFuzzyCompare(previous_background_image_opacity_, qreal(0.0))) { - background_painter.setOpacity(1.0 - previous_background_image_opacity_); + background_painter.setOpacity(1.0 - + previous_background_image_opacity_); } - background_painter.drawPixmap((width() - cached_scaled_background_image_.width()) / 2, - (height() - cached_scaled_background_image_.height()) / 2, - cached_scaled_background_image_); + background_painter.drawPixmap( + (width() - cached_scaled_background_image_.width()) / 2, + (height() - cached_scaled_background_image_.height()) / 2, + cached_scaled_background_image_); } // Draw the previous background image if we're fading if (!previous_background_image_.isNull()) { background_painter.setOpacity(previous_background_image_opacity_); - background_painter.drawPixmap((width() - previous_background_image_.width()) / 2, - (height() - previous_background_image_.height()) / 2, - previous_background_image_); + background_painter.drawPixmap( + (width() - previous_background_image_.width()) / 2, + (height() - previous_background_image_.height()) / 2, + previous_background_image_); } } } @@ -911,7 +955,7 @@ void PlaylistView::paintEvent(QPaintEvent* event) { int drop_pos = -1; switch (dropIndicatorPosition()) { case QAbstractItemView::OnItem: - return; // Don't draw anything + return; // Don't draw anything case QAbstractItemView::AboveItem: drop_pos = visualRect(drop_index).top(); @@ -925,8 +969,8 @@ void PlaylistView::paintEvent(QPaintEvent* event) { if (model()->rowCount() == 0) drop_pos = 1; else - drop_pos = 1 + visualRect( - model()->index(model()->rowCount() - 1, first_column)).bottom(); + drop_pos = 1 + visualRect(model()->index(model()->rowCount() - 1, + first_column)).bottom(); break; } @@ -944,37 +988,35 @@ void PlaylistView::paintEvent(QPaintEvent* event) { gradient.setColorAt(1.0, shadow_fadeout_color); QPen gradient_pen(QBrush(gradient), kDropIndicatorGradientWidth * 2); p.setPen(gradient_pen); - p.drawLine(QPoint(0, drop_pos), - QPoint(width(), drop_pos)); + p.drawLine(QPoint(0, drop_pos), QPoint(width(), drop_pos)); // Now draw the line on top QPen line_pen(line_color, kDropIndicatorWidth); p.setPen(line_pen); - p.drawLine(QPoint(0, drop_pos), - QPoint(width(), drop_pos)); + p.drawLine(QPoint(0, drop_pos), QPoint(width(), drop_pos)); } -void PlaylistView::dragMoveEvent(QDragMoveEvent *event) { +void PlaylistView::dragMoveEvent(QDragMoveEvent* event) { QTreeView::dragMoveEvent(event); QModelIndex index(indexAt(event->pos())); drop_indicator_row_ = index.isValid() ? index.row() : 0; } -void PlaylistView::dragEnterEvent(QDragEnterEvent *event) { +void PlaylistView::dragEnterEvent(QDragEnterEvent* event) { QTreeView::dragEnterEvent(event); cached_tree_ = QPixmap(); drag_over_ = true; } -void PlaylistView::dragLeaveEvent(QDragLeaveEvent *event) { +void PlaylistView::dragLeaveEvent(QDragLeaveEvent* event) { QTreeView::dragLeaveEvent(event); cached_tree_ = QPixmap(); drag_over_ = false; drop_indicator_row_ = -1; } -void PlaylistView::dropEvent(QDropEvent *event) { +void PlaylistView::dropEvent(QDropEvent* event) { QTreeView::dropEvent(event); cached_tree_ = QPixmap(); drop_indicator_row_ = -1; @@ -996,10 +1038,8 @@ void PlaylistView::ReloadSettings() { upgrading_from_qheaderview_ = false; } - if (currently_glowing_ && glow_enabled_ && isVisible()) - StartGlowing(); - if (!glow_enabled_) - StopGlowing(); + if (currently_glowing_ && glow_enabled_ && isVisible()) StartGlowing(); + if (!glow_enabled_) StopGlowing(); if (setting_initial_header_layout_) { header_->SetColumnWidth(Playlist::Column_Length, 0.06); @@ -1022,13 +1062,15 @@ void PlaylistView::ReloadSettings() { emit ColumnAlignmentChanged(column_alignment_); // Background: - QVariant q_playlistview_background_type = s.value(kSettingBackgroundImageType); + QVariant q_playlistview_background_type = + s.value(kSettingBackgroundImageType); BackgroundImageType background_type(Default); // bg_enabled should also be checked for backward compatibility (in releases // <= 1.0, there was just a boolean to activate/deactivate the background) QVariant bg_enabled = s.value("bg_enabled"); if (q_playlistview_background_type.isValid()) { - background_type = static_cast(q_playlistview_background_type.toInt()); + background_type = static_cast( + q_playlistview_background_type.toInt()); } else if (bg_enabled.isValid()) { if (bg_enabled.toBool()) { background_type = Default; @@ -1036,7 +1078,8 @@ void PlaylistView::ReloadSettings() { background_type = None; } } - QString background_image_filename = s.value(kSettingBackgroundImageFilename).toString(); + QString background_image_filename = + s.value(kSettingBackgroundImageFilename).toString(); int blur_radius = s.value("blur_radius", kDefaultBlurRadius).toInt(); int opacity_level = s.value("opacity_level", kDefaultOpacityLevel).toInt(); // Check if background properties have changed. @@ -1046,8 +1089,7 @@ void PlaylistView::ReloadSettings() { // "force_background_redraw". if (background_image_filename != background_image_filename_ || background_type != background_image_type_ || - blur_radius_ != blur_radius || - opacity_level_ != opacity_level) { + blur_radius_ != blur_radius || opacity_level_ != opacity_level) { // Store background properties background_image_type_ = background_type; background_image_filename_ = background_image_filename; @@ -1066,15 +1108,15 @@ void PlaylistView::ReloadSettings() { cached_scaled_background_image_ = QPixmap(); previous_background_image_ = QPixmap(); } - setProperty("default_background_enabled", background_image_type_ == Default); + setProperty("default_background_enabled", + background_image_type_ == Default); emit BackgroundPropertyChanged(); force_background_redraw_ = true; } } void PlaylistView::SaveSettings() { - if (read_only_settings_) - return; + if (read_only_settings_) return; QSettings s; s.beginGroup(Playlist::kSettingsGroup); @@ -1084,7 +1126,8 @@ void PlaylistView::SaveSettings() { } void PlaylistView::StretchChanged(bool stretch) { - setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff : Qt::ScrollBarAsNeeded); + setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff + : Qt::ScrollBarAsNeeded); SaveGeometry(); } @@ -1127,31 +1170,29 @@ void PlaylistView::rowsInserted(const QModelIndex& parent, int start, int end) { if (at_end) { // If the rows were inserted at the end of the playlist then let's scroll // the view so the user can see. - scrollTo(model()->index(start, 0, parent), QAbstractItemView::PositionAtTop); + scrollTo(model()->index(start, 0, parent), + QAbstractItemView::PositionAtTop); } } ColumnAlignmentMap PlaylistView::DefaultColumnAlignment() { ColumnAlignmentMap ret; - ret[Playlist::Column_Length] = - ret[Playlist::Column_Track] = - ret[Playlist::Column_Disc] = - ret[Playlist::Column_Year] = - ret[Playlist::Column_BPM] = - ret[Playlist::Column_Bitrate] = - ret[Playlist::Column_Samplerate] = - ret[Playlist::Column_Filesize] = - ret[Playlist::Column_PlayCount] = - ret[Playlist::Column_SkipCount] = (Qt::AlignRight | Qt::AlignVCenter); - ret[Playlist::Column_Score] = (Qt::AlignCenter); + ret[Playlist::Column_Length] = ret[Playlist::Column_Track] = + ret[Playlist::Column_Disc] = ret[Playlist::Column_Year] = + ret[Playlist::Column_BPM] = ret[Playlist::Column_Bitrate] = + ret[Playlist::Column_Samplerate] = + ret[Playlist::Column_Filesize] = + ret[Playlist::Column_PlayCount] = + ret[Playlist::Column_SkipCount] = + (Qt::AlignRight | Qt::AlignVCenter); + ret[Playlist::Column_Score] = (Qt::AlignCenter); return ret; } void PlaylistView::SetColumnAlignment(int section, Qt::Alignment alignment) { - if (section < 0) - return; + if (section < 0) return; column_alignment_[section] = alignment; emit ColumnAlignmentChanged(column_alignment_); @@ -1166,21 +1207,23 @@ void PlaylistView::CopyCurrentSongToClipboard() const { // Get the display text of all visible columns. QStringList columns; - for (int i=0 ; icount() ; ++i) { + for (int i = 0; i < header()->count(); ++i) { if (header()->isSectionHidden(i)) { continue; } - const QVariant data = model()->data( - currentIndex().sibling(currentIndex().row(), i)); + const QVariant data = + model()->data(currentIndex().sibling(currentIndex().row(), i)); if (data.type() == QVariant::String) { columns << data.toString(); } } // Get the song's URL - const QUrl url = model()->data(currentIndex().sibling( - currentIndex().row(), Playlist::Column_Filename)).toUrl(); + const QUrl url = model() + ->data(currentIndex().sibling(currentIndex().row(), + Playlist::Column_Filename)) + .toUrl(); QMimeData* mime_data = new QMimeData; mime_data->setUrls(QList() << url); @@ -1189,11 +1232,9 @@ void PlaylistView::CopyCurrentSongToClipboard() const { QApplication::clipboard()->setMimeData(mime_data); } -void PlaylistView::CurrentSongChanged(const Song& song, - const QString& uri, +void PlaylistView::CurrentSongChanged(const Song& song, const QString& uri, const QImage& song_art) { - if (current_song_cover_art_ == song_art) - return; + if (current_song_cover_art_ == song_art) return; current_song_cover_art_ = song_art; if (background_image_type_ == AlbumCover) { @@ -1220,12 +1261,15 @@ void PlaylistView::set_background_image(const QImage& image) { if (!background_image_.isNull()) { // Apply opacity filter uchar* bits = background_image_.bits(); - for (int i = 0; i < background_image_.height() * background_image_.bytesPerLine(); i+=4) { - bits[i+3] = (opacity_level_ / 100.0) * 255; + for (int i = 0; + i < background_image_.height() * background_image_.bytesPerLine(); + i += 4) { + bits[i + 3] = (opacity_level_ / 100.0) * 255; } if (blur_radius_ != 0) { - QImage blurred(background_image_.size(), QImage::Format_ARGB32_Premultiplied); + QImage blurred(background_image_.size(), + QImage::Format_ARGB32_Premultiplied); blurred.fill(Qt::transparent); QPainter blur_painter(&blurred); qt_blurImage(&blur_painter, background_image_, blur_radius_, true, false); @@ -1265,8 +1309,7 @@ void PlaylistView::focusInEvent(QFocusEvent* event) { // only 1 item in the view it is now impossible to select that item without // using the mouse. const QModelIndex& current = selectionModel()->currentIndex(); - if (current.isValid() && - selectionModel()->selectedIndexes().isEmpty()) { + if (current.isValid() && selectionModel()->selectedIndexes().isEmpty()) { QItemSelection new_selection( current.sibling(current.row(), 0), current.sibling(current.row(), diff --git a/src/playlist/playlistview.h b/src/playlist/playlistview.h index 8ce39747c..df444053a 100644 --- a/src/playlist/playlistview.h +++ b/src/playlist/playlistview.h @@ -36,7 +36,6 @@ class RadioLoadingIndicator; class RatingItemDelegate; class QTimeLine; - // This proxy style works around a bug/feature introduced in Qt 4.7's QGtkStyle // that uses Gtk to paint row backgrounds, ignoring any custom brush or palette // the caller set in the QStyleOption. That breaks our currently playing track @@ -44,27 +43,21 @@ class QTimeLine; // This proxy style uses QCleanlooksStyle to paint the affected elements. // This class is used by the global search view as well. class PlaylistProxyStyle : public QProxyStyle { -public: + public: PlaylistProxyStyle(QStyle* base); void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; -private: + private: std::unique_ptr cleanlooks_; }; - class PlaylistView : public QTreeView { Q_OBJECT public: - enum BackgroundImageType { - Default, - None, - Custom, - AlbumCover - }; + enum BackgroundImageType { Default, None, Custom, AlbumCover }; PlaylistView(QWidget* parent = 0); @@ -86,12 +79,15 @@ class PlaylistView : public QTreeView { void SetReadOnlySettings(bool read_only) { read_only_settings_ = read_only; } Playlist* playlist() const { return playlist_; } - BackgroundImageType background_image_type() const { return background_image_type_; } + BackgroundImageType background_image_type() const { + return background_image_type_; + } Qt::Alignment column_alignment(int section) const; // QTreeView void drawTree(QPainter* painter, const QRegion& region) const; - void drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void drawRow(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; void setModel(QAbstractItemModel* model); public slots: @@ -105,15 +101,16 @@ class PlaylistView : public QTreeView { void SetColumnAlignment(int section, Qt::Alignment alignment); void CopyCurrentSongToClipboard() const; - void CurrentSongChanged(const Song& new_song, const QString& uri, const QImage& cover_art); + void CurrentSongChanged(const Song& new_song, const QString& uri, + const QImage& cover_art); void PlayerStopped(); - signals: +signals: void PlayItem(const QModelIndex& index); void PlayPause(); void RightClicked(const QPoint& global_pos, const QModelIndex& index); void SeekTrack(int gap); - void FocusOnFilterSignal(QKeyEvent *event); + void FocusOnFilterSignal(QKeyEvent* event); void BackgroundPropertyChanged(); void ColumnAlignmentChanged(const ColumnAlignmentMap& alignment); @@ -127,11 +124,11 @@ class PlaylistView : public QTreeView { void mouseMoveEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent* event); void leaveEvent(QEvent*); - void paintEvent(QPaintEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - void dragEnterEvent(QDragEnterEvent *event); - void dragLeaveEvent(QDragLeaveEvent *event); - void dropEvent(QDropEvent *event); + void paintEvent(QPaintEvent* event); + void dragMoveEvent(QDragMoveEvent* event); + void dragEnterEvent(QDragEnterEvent* event); + void dragLeaveEvent(QDragLeaveEvent* event); + void dropEvent(QDropEvent* event); void resizeEvent(QResizeEvent* event); bool eventFilter(QObject* object, QEvent* event); void focusInEvent(QFocusEvent* event); @@ -165,8 +162,12 @@ class PlaylistView : public QTreeView { void UpdateCachedCurrentRowPixmap(QStyleOptionViewItemV4 option, const QModelIndex& index); - void set_background_image_type(BackgroundImageType bg) { background_image_type_ = bg; emit BackgroundPropertyChanged(); } - // Save image as the background_image_ after applying some modifications (opacity, ...). + void set_background_image_type(BackgroundImageType bg) { + background_image_type_ = bg; + emit BackgroundPropertyChanged(); + } + // Save image as the background_image_ after applying some modifications + // (opacity, ...). // Should be used instead of modifying background_image_ directly void set_background_image(const QImage& image); @@ -226,7 +227,7 @@ class PlaylistView : public QTreeView { bool inhibit_autoscroll_; bool currently_autoscrolling_; - int row_height_; // Used to invalidate the currenttrack_bar pixmaps + int row_height_; // Used to invalidate the currenttrack_bar pixmaps QList currenttrack_bar_left_; QList currenttrack_bar_mid_; QList currenttrack_bar_right_; @@ -247,4 +248,4 @@ class PlaylistView : public QTreeView { ColumnAlignmentMap column_alignment_; }; -#endif // PLAYLISTVIEW_H +#endif // PLAYLISTVIEW_H diff --git a/src/playlist/queue.cpp b/src/playlist/queue.cpp index c7783bfd4..167937c67 100644 --- a/src/playlist/queue.cpp +++ b/src/playlist/queue.cpp @@ -23,17 +23,13 @@ const char* Queue::kRowsMimetype = "application/x-clementine-queue-rows"; -Queue::Queue(QObject* parent) - : QAbstractProxyModel(parent) -{ -} +Queue::Queue(QObject* parent) : QAbstractProxyModel(parent) {} QModelIndex Queue::mapFromSource(const QModelIndex& source_index) const { - if (!source_index.isValid()) - return QModelIndex(); + if (!source_index.isValid()) return QModelIndex(); const int source_row = source_index.row(); - for (int i=0 ; iindex(row, 0)); - if (!proxy_index.isValid()) - continue; + if (!proxy_index.isValid()) continue; emit dataChanged(proxy_index, proxy_index); } } void Queue::SourceLayoutChanged() { - for (int i=0 ; i& proxy_rows, int pos) { // Take the items out of the list first, keeping track of whether the // insertion point changes int offset = 0; - foreach (int row, proxy_rows) { - moved_items << source_indexes_.takeAt(row-offset); - if (pos != -1 && pos >= row) - pos --; + foreach(int row, proxy_rows) { + moved_items << source_indexes_.takeAt(row - offset); + if (pos != -1 && pos >= row) pos--; offset++; } // Put the items back in const int start = pos == -1 ? source_indexes_.count() : pos; - for (int i=start ; i row) - d --; + foreach(int row, proxy_rows) { + if (pidx.row() > row) d--; } - if (pidx.row() + d >= start) - d += proxy_rows.count(); + if (pidx.row() + d >= start) d += proxy_rows.count(); - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } layoutChanged(); } -void Queue::MoveUp(int row) { - Move(QList() << row, row - 1); -} +void Queue::MoveUp(int row) { Move(QList() << row, row - 1); } -void Queue::MoveDown(int row) { - Move(QList() << row, row + 2); -} +void Queue::MoveDown(int row) { Move(QList() << row, row + 2); } QStringList Queue::mimeTypes() const { return QStringList() << kRowsMimetype << Playlist::kRowsMimetype; @@ -235,9 +222,8 @@ QMimeData* Queue::mimeData(const QModelIndexList& indexes) const { QMimeData* data = new QMimeData; QList rows; - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + foreach(const QModelIndex & index, indexes) { + if (index.column() != 0) continue; rows << index.row(); } @@ -253,9 +239,9 @@ QMimeData* Queue::mimeData(const QModelIndexList& indexes) const { return data; } -bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int, const QModelIndex&) { - if (action == Qt::IgnoreAction) - return false; +bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int, const QModelIndex&) { + if (action == Qt::IgnoreAction) return false; if (data->hasFormat(kRowsMimetype)) { // Dragged from the queue @@ -263,7 +249,7 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, QList proxy_rows; QDataStream stream(data->data(kRowsMimetype)); stream >> proxy_rows; - qStableSort(proxy_rows); // Make sure we take them in order + qStableSort(proxy_rows); // Make sure we take them in order Move(proxy_rows, row); } else if (data->hasFormat(Playlist::kRowsMimetype)) { @@ -276,7 +262,7 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, stream >> source_rows; QModelIndexList source_indexes; - foreach (int source_row, source_rows) { + foreach(int source_row, source_rows) { const QModelIndex source_index = sourceModel()->index(source_row, 0); const QModelIndex proxy_index = mapFromSource(source_index); if (proxy_index.isValid()) { @@ -289,8 +275,9 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, if (!source_indexes.isEmpty()) { const int insert_point = row == -1 ? source_indexes_.count() : row; - beginInsertRows(QModelIndex(), insert_point, insert_point + source_indexes.count() - 1); - for (int i=0 ; i& proxy_rows) { - //order the rows + // order the rows qStableSort(proxy_rows); - //reflects immediately changes in the playlist + // reflects immediately changes in the playlist layoutAboutToBeChanged(); int removed_rows = 0; - foreach (int row, proxy_rows) { - //after the first row, the row number needs to be updated - const int real_row = row-removed_rows; + foreach(int row, proxy_rows) { + // after the first row, the row number needs to be updated + const int real_row = row - removed_rows; beginRemoveRows(QModelIndex(), real_row, real_row); source_indexes_.removeAt(real_row); endRemoveRows(); diff --git a/src/playlist/queue.h b/src/playlist/queue.h index 67fa1f6a1..56c66d3f3 100644 --- a/src/playlist/queue.h +++ b/src/playlist/queue.h @@ -25,7 +25,7 @@ class Queue : public QAbstractProxyModel { Q_OBJECT -public: + public: Queue(QObject* parent = 0); static const char* kRowsMimetype; @@ -51,24 +51,27 @@ public: QModelIndex mapToSource(const QModelIndex& proxy_index) const; // QAbstractItemModel - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - QModelIndex parent(const QModelIndex &child) const; - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; + QModelIndex index(int row, int column, + const QModelIndex& parent = QModelIndex()) const; + QModelIndex parent(const QModelIndex& child) const; + int rowCount(const QModelIndex& parent = QModelIndex()) const; + int columnCount(const QModelIndex& parent = QModelIndex()) const; QVariant data(const QModelIndex& proxy_index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); - Qt::ItemFlags flags(const QModelIndex &index) const; + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); + Qt::ItemFlags flags(const QModelIndex& index) const; -private slots: - void SourceDataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right); + private slots: + void SourceDataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right); void SourceLayoutChanged(); -private: + private: QList source_indexes_; }; -#endif // QUEUE_H +#endif // QUEUE_H diff --git a/src/playlist/queuemanager.cpp b/src/playlist/queuemanager.cpp index 319feec50..00e601cd5 100644 --- a/src/playlist/queuemanager.cpp +++ b/src/playlist/queuemanager.cpp @@ -26,12 +26,11 @@ #include #include -QueueManager::QueueManager(QWidget *parent) - : QDialog(parent), - ui_(new Ui_QueueManager), - playlists_(nullptr), - current_playlist_(nullptr) -{ +QueueManager::QueueManager(QWidget* parent) + : QDialog(parent), + ui_(new Ui_QueueManager), + playlists_(nullptr), + current_playlist_(nullptr) { ui_->setupUi(this); ui_->list->setItemDelegate(new QueuedItemDelegate(this, 0)); @@ -41,7 +40,7 @@ QueueManager::QueueManager(QWidget *parent) ui_->remove->setIcon(IconLoader::Load("edit-delete")); ui_->clear->setIcon(IconLoader::Load("edit-clear-list")); - //Set a standard shortcut + // Set a standard shortcut ui_->remove->setShortcut(QKeySequence::Delete); // Button connections @@ -54,43 +53,47 @@ QueueManager::QueueManager(QWidget *parent) connect(close, SIGNAL(activated()), SLOT(close())); } -QueueManager::~QueueManager() { - delete ui_; -} +QueueManager::~QueueManager() { delete ui_; } void QueueManager::SetPlaylistManager(PlaylistManager* manager) { playlists_ = manager; - connect(playlists_, SIGNAL(CurrentChanged(Playlist*)), SLOT(CurrentPlaylistChanged(Playlist*))); + connect(playlists_, SIGNAL(CurrentChanged(Playlist*)), + SLOT(CurrentPlaylistChanged(Playlist*))); CurrentPlaylistChanged(playlists_->current()); } void QueueManager::CurrentPlaylistChanged(Playlist* playlist) { if (current_playlist_) { - disconnect(current_playlist_->queue(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_->queue(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_->queue(), SIGNAL(layoutChanged()), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_, SIGNAL(destroyed()), - this, SLOT(PlaylistDestroyed())); + disconnect(current_playlist_->queue(), + SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_->queue(), + SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_->queue(), SIGNAL(layoutChanged()), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_, SIGNAL(destroyed()), this, + SLOT(PlaylistDestroyed())); } current_playlist_ = playlist; - connect(current_playlist_->queue(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - connect(current_playlist_->queue(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - connect(current_playlist_->queue(), SIGNAL(layoutChanged()), - this, SLOT(UpdateButtonState())); - connect(current_playlist_, SIGNAL(destroyed()), - this, SLOT(PlaylistDestroyed())); + connect(current_playlist_->queue(), + SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + connect(current_playlist_->queue(), + SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + connect(current_playlist_->queue(), SIGNAL(layoutChanged()), this, + SLOT(UpdateButtonState())); + connect(current_playlist_, SIGNAL(destroyed()), this, + SLOT(PlaylistDestroyed())); ui_->list->setModel(current_playlist_->queue()); - connect(ui_->list->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + connect(ui_->list->selectionModel(), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(UpdateButtonState())); } @@ -98,10 +101,9 @@ void QueueManager::MoveUp() { QModelIndexList indexes = ui_->list->selectionModel()->selectedRows(); qStableSort(indexes); - if (indexes.isEmpty() || indexes.first().row() == 0) - return; + if (indexes.isEmpty() || indexes.first().row() == 0) return; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { current_playlist_->queue()->MoveUp(index.row()); } } @@ -110,24 +112,23 @@ void QueueManager::MoveDown() { QModelIndexList indexes = ui_->list->selectionModel()->selectedRows(); qStableSort(indexes); - if (indexes.isEmpty() || indexes.last().row() == current_playlist_->queue()->rowCount()-1) + if (indexes.isEmpty() || + indexes.last().row() == current_playlist_->queue()->rowCount() - 1) return; - for (int i=indexes.count()-1 ; i>=0 ; --i) { + for (int i = indexes.count() - 1; i >= 0; --i) { current_playlist_->queue()->MoveDown(indexes[i].row()); } } -void QueueManager::Clear() { - current_playlist_->queue()->Clear(); -} +void QueueManager::Clear() { current_playlist_->queue()->Clear(); } void QueueManager::Remove() { - //collect the rows to be removed + // collect the rows to be removed QList row_list; - foreach (const QModelIndex& index, ui_->list->selectionModel()->selectedRows()) { - if (index.isValid()) - row_list << index.row(); + foreach(const QModelIndex & index, + ui_->list->selectionModel()->selectedRows()) { + if (index.isValid()) row_list << index.row(); } current_playlist_->queue()->Remove(row_list); @@ -138,7 +139,8 @@ void QueueManager::UpdateButtonState() { if (current.isValid()) { ui_->move_up->setEnabled(current.row() != 0); - ui_->move_down->setEnabled(current.row() != current_playlist_->queue()->rowCount()-1); + ui_->move_down->setEnabled(current.row() != + current_playlist_->queue()->rowCount() - 1); ui_->remove->setEnabled(true); } else { ui_->move_up->setEnabled(false); diff --git a/src/playlist/queuemanager.h b/src/playlist/queuemanager.h index a136f2c33..1457eb94e 100644 --- a/src/playlist/queuemanager.h +++ b/src/playlist/queuemanager.h @@ -29,13 +29,13 @@ class QModelIndex; class QueueManager : public QDialog { Q_OBJECT -public: + public: QueueManager(QWidget* parent = 0); ~QueueManager(); void SetPlaylistManager(PlaylistManager* manager); -private slots: + private slots: void CurrentPlaylistChanged(Playlist* playlist); void PlaylistDestroyed(); void UpdateButtonState(); @@ -45,11 +45,11 @@ private slots: void Remove(); void Clear(); -private: + private: Ui_QueueManager* ui_; PlaylistManager* playlists_; Playlist* current_playlist_; }; -#endif // QUEUEMANAGER_H +#endif // QUEUEMANAGER_H diff --git a/src/playlist/songloaderinserter.cpp b/src/playlist/songloaderinserter.cpp index bdc99ec7f..01d115533 100644 --- a/src/playlist/songloaderinserter.cpp +++ b/src/playlist/songloaderinserter.cpp @@ -34,32 +34,31 @@ SongLoaderInserter::SongLoaderInserter(TaskManager* task_manager, async_load_id_(0), async_progress_(0), library_(library), - player_(player) { -} + player_(player) {} SongLoaderInserter::~SongLoaderInserter() { qDeleteAll(pending_); qDeleteAll(pending_async_); } -void SongLoaderInserter::Load(Playlist *destination, - int row, bool play_now, bool enqueue, - const QList &urls) { +void SongLoaderInserter::Load(Playlist* destination, int row, bool play_now, + bool enqueue, const QList& urls) { destination_ = destination; row_ = row; play_now_ = play_now; enqueue_ = enqueue; connect(destination, SIGNAL(destroyed()), SLOT(DestinationDestroyed())); - connect(this, SIGNAL(EffectiveLoadFinished(const SongList&)), - destination, SLOT(UpdateItems(const SongList&))); + connect(this, SIGNAL(EffectiveLoadFinished(const SongList&)), destination, + SLOT(UpdateItems(const SongList&))); - foreach (const QUrl& url, urls) { + foreach(const QUrl & url, urls) { SongLoader* loader = new SongLoader(library_, player_, this); // we're connecting this before we're even sure if this is an async load // to avoid race conditions (signal emission before we're listening to it) - connect(loader, SIGNAL(LoadFinished(bool)), SLOT(PendingLoadFinished(bool))); + connect(loader, SIGNAL(LoadFinished(bool)), + SLOT(PendingLoadFinished(bool))); SongLoader::Result ret = loader->Load(url); if (ret == SongLoader::WillLoadAsync) { @@ -79,7 +78,8 @@ void SongLoaderInserter::Load(Playlist *destination, else { async_progress_ = 0; async_load_id_ = task_manager_->StartTask(tr("Loading tracks")); - task_manager_->SetTaskProgress(async_load_id_, async_progress_, pending_.count()); + task_manager_->SetTaskProgress(async_load_id_, async_progress_, + pending_.count()); } } @@ -87,8 +87,8 @@ void SongLoaderInserter::Load(Playlist *destination, // First, we add tracks (without metadata) into the playlist // In the meantine, MusicBrainz will be queried to get songs' metadata. // AudioCDTagsLoaded will be called next, and playlist's items will be updated. -void SongLoaderInserter::LoadAudioCD(Playlist *destination, - int row, bool play_now, bool enqueue) { +void SongLoaderInserter::LoadAudioCD(Playlist* destination, int row, + bool play_now, bool enqueue) { destination_ = destination; row_ = row; play_now_ = play_now; @@ -106,14 +106,11 @@ void SongLoaderInserter::LoadAudioCD(Playlist *destination, PartiallyFinished(); } -void SongLoaderInserter::DestinationDestroyed() { - destination_ = nullptr; -} +void SongLoaderInserter::DestinationDestroyed() { destination_ = nullptr; } void SongLoaderInserter::AudioCDTagsLoaded(bool success) { SongLoader* loader = qobject_cast(sender()); - if (!loader || !destination_) - return; + if (!loader || !destination_) return; if (success) destination_->UpdateItems(loader->songs()); @@ -124,8 +121,7 @@ void SongLoaderInserter::AudioCDTagsLoaded(bool success) { void SongLoaderInserter::PendingLoadFinished(bool success) { SongLoader* loader = qobject_cast(sender()); - if (!loader || !pending_.contains(loader)) - return; + if (!loader || !pending_.contains(loader)) return; pending_.remove(loader); pending_async_.insert(loader); @@ -139,7 +135,8 @@ void SongLoaderInserter::PendingLoadFinished(bool success) { task_manager_->SetTaskFinished(async_load_id_); async_progress_ = 0; async_load_id_ = task_manager_->StartTask(tr("Loading tracks info")); - task_manager_->SetTaskProgress(async_load_id_, async_progress_, pending_async_.count()); + task_manager_->SetTaskProgress(async_load_id_, async_progress_, + pending_async_.count()); PartiallyFinished(); QtConcurrent::run(this, &SongLoaderInserter::EffectiveLoad); } @@ -154,7 +151,7 @@ void SongLoaderInserter::PartiallyFinished() { } void SongLoaderInserter::EffectiveLoad() { - foreach (SongLoader* loader, pending_async_) { + foreach(SongLoader * loader, pending_async_) { loader->EffectiveSongsLoad(); task_manager_->SetTaskProgress(async_load_id_, ++async_progress_); emit EffectiveLoadFinished(loader->songs()); diff --git a/src/playlist/songloaderinserter.h b/src/playlist/songloaderinserter.h index 01f6e8c9a..d273e4161 100644 --- a/src/playlist/songloaderinserter.h +++ b/src/playlist/songloaderinserter.h @@ -34,10 +34,9 @@ class QModelIndex; class SongLoaderInserter : public QObject { Q_OBJECT -public: + public: SongLoaderInserter(TaskManager* task_manager, - LibraryBackendInterface* library, - const Player* player); + LibraryBackendInterface* library, const Player* player); ~SongLoaderInserter(); void Load(Playlist* destination, int row, bool play_now, bool enqueue, @@ -48,17 +47,17 @@ signals: void Error(const QString& message); void EffectiveLoadFinished(const SongList& songs); -private slots: + private slots: void PendingLoadFinished(bool success); void DestinationDestroyed(); void AudioCDTagsLoaded(bool success); -private: + private: void PartiallyFinished(); void EffectiveLoad(); void Finished(); -private: + private: TaskManager* task_manager_; Playlist* destination_; @@ -76,4 +75,4 @@ private: const Player* player_; }; -#endif // SONGLOADERINSERTER_H +#endif // SONGLOADERINSERTER_H diff --git a/src/playlist/songmimedata.h b/src/playlist/songmimedata.h index f35d6a265..065b00fa6 100644 --- a/src/playlist/songmimedata.h +++ b/src/playlist/songmimedata.h @@ -28,12 +28,11 @@ class LibraryBackendInterface; class SongMimeData : public MimeData { Q_OBJECT -public: - SongMimeData() - : backend(NULL) {} + public: + SongMimeData() : backend(NULL) {} LibraryBackendInterface* backend; SongList songs; }; -#endif // SONGMIMEDATA_H +#endif // SONGMIMEDATA_H diff --git a/src/playlist/songplaylistitem.cpp b/src/playlist/songplaylistitem.cpp index ac0bc103b..446147f1b 100644 --- a/src/playlist/songplaylistitem.cpp +++ b/src/playlist/songplaylistitem.cpp @@ -25,16 +25,10 @@ #include #include -SongPlaylistItem::SongPlaylistItem(const QString& type) - : PlaylistItem(type) -{ -} +SongPlaylistItem::SongPlaylistItem(const QString& type) : PlaylistItem(type) {} SongPlaylistItem::SongPlaylistItem(const Song& song) - : PlaylistItem(song.is_stream() ? "Stream" : "File"), - song_(song) -{ -} + : PlaylistItem(song.is_stream() ? "Stream" : "File"), song_(song) {} bool SongPlaylistItem::InitFromQuery(const SqlRow& query) { song_.InitFromQuery(query, false, (Song::kColumns.count() + 1) * 3); @@ -46,21 +40,16 @@ bool SongPlaylistItem::InitFromQuery(const SqlRow& query) { return true; } -QUrl SongPlaylistItem::Url() const { - return song_.url(); -} +QUrl SongPlaylistItem::Url() const { return song_.url(); } void SongPlaylistItem::Reload() { - if (song_.url().scheme() != "file") - return; + if (song_.url().scheme() != "file") return; - TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), &song_); + TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), + &song_); } Song SongPlaylistItem::Metadata() const { - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return song_; } - - diff --git a/src/playlist/songplaylistitem.h b/src/playlist/songplaylistitem.h index 9ad0b42da..36861c8f8 100644 --- a/src/playlist/songplaylistitem.h +++ b/src/playlist/songplaylistitem.h @@ -43,4 +43,4 @@ class SongPlaylistItem : public PlaylistItem { Song song_; }; -#endif // SONGPLAYLISTITEM_H +#endif // SONGPLAYLISTITEM_H diff --git a/src/playlistparsers/asxiniparser.cpp b/src/playlistparsers/asxiniparser.cpp index 79e5a155c..081d7b535 100644 --- a/src/playlistparsers/asxiniparser.cpp +++ b/src/playlistparsers/asxiniparser.cpp @@ -22,15 +22,14 @@ #include AsxIniParser::AsxIniParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -bool AsxIniParser::TryMagic(const QByteArray &data) const { +bool AsxIniParser::TryMagic(const QByteArray& data) const { return data.toLower().contains("[reference]"); } -SongList AsxIniParser::Load(QIODevice *device, const QString& playlist_path, const QDir &dir) const { +SongList AsxIniParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; while (!device->atEnd()) { @@ -50,12 +49,13 @@ SongList AsxIniParser::Load(QIODevice *device, const QString& playlist_path, con return ret; } -void AsxIniParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void AsxIniParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { QTextStream s(device); s << "[Reference]" << endl; int n = 1; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { s << "Ref" << n << "=" << URLOrRelativeFilename(song.url(), dir) << endl; ++n; } diff --git a/src/playlistparsers/asxiniparser.h b/src/playlistparsers/asxiniparser.h index fe2264178..73de87d59 100644 --- a/src/playlistparsers/asxiniparser.h +++ b/src/playlistparsers/asxiniparser.h @@ -23,16 +23,18 @@ class AsxIniParser : public ParserBase { Q_OBJECT -public: + public: AsxIniParser(LibraryBackendInterface* library, QObject* parent = 0); QString name() const { return "ASX/INI"; } QStringList file_extensions() const { return QStringList() << "asxini"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice *device, const QString& playlist_path = "", const QDir &dir = QDir()) const; - void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; }; -#endif // ASXINIPARSER_H +#endif // ASXINIPARSER_H diff --git a/src/playlistparsers/asxparser.cpp b/src/playlistparsers/asxparser.cpp index 6d714b798..846533e94 100644 --- a/src/playlistparsers/asxparser.cpp +++ b/src/playlistparsers/asxparser.cpp @@ -28,11 +28,9 @@ #include ASXParser::ASXParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} -SongList ASXParser::Load(QIODevice *device, const QString& playlist_path, +SongList ASXParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { // We have to load everything first so we can munge the "XML". QByteArray data = device->readAll(); @@ -80,7 +78,6 @@ SongList ASXParser::Load(QIODevice *device, const QString& playlist_path, return ret; } - Song ASXParser::ParseTrack(QXmlStreamReader* reader, const QDir& dir) const { QString title, artist, album, ref; @@ -120,7 +117,8 @@ return_song: return song; } -void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) const { +void ASXParser::Save(const SongList& songs, QIODevice* device, + const QDir&) const { QXmlStreamWriter writer(device); writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); @@ -128,7 +126,7 @@ void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) cons { StreamElement asx("asx", &writer); writer.writeAttribute("version", "3.0"); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { StreamElement entry("entry", &writer); writer.writeTextElement("title", song.title()); { @@ -143,6 +141,6 @@ void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) cons writer.writeEndDocument(); } -bool ASXParser::TryMagic(const QByteArray &data) const { +bool ASXParser::TryMagic(const QByteArray& data) const { return data.toLower().contains(" #include -const char* CueParser::kFileLineRegExp = "(\\S+)\\s+(?:\"([^\"]+)\"|(\\S+))\\s*(?:\"([^\"]+)\"|(\\S+))?"; +const char* CueParser::kFileLineRegExp = + "(\\S+)\\s+(?:\"([^\"]+)\"|(\\S+))\\s*(?:\"([^\"]+)\"|(\\S+))?"; const char* CueParser::kIndexRegExp = "(\\d{2,3}):(\\d{2}):(\\d{2})"; const char* CueParser::kPerformer = "performer"; @@ -43,15 +44,15 @@ const char* CueParser::kGenre = "genre"; const char* CueParser::kDate = "date"; CueParser::CueParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { +SongList CueParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; QTextStream text_stream(device); - text_stream.setCodec(QTextCodec::codecForUtfText(device->peek(1024), QTextCodec::codecForName("UTF-8"))); + text_stream.setCodec(QTextCodec::codecForUtfText( + device->peek(1024), QTextCodec::codecForName("UTF-8"))); QString dir_path = dir.absolutePath(); // read the first line already @@ -76,7 +77,7 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QStringList splitted = SplitCueLine(line); // uninteresting or incorrect line - if(splitted.size() < 2) { + if (splitted.size() < 2) { continue; } @@ -84,59 +85,59 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QString line_value = splitted[1]; // PERFORMER - if(line_name == kPerformer) { + if (line_name == kPerformer) { album_artist = line_value; - // TITLE - } else if(line_name == kTitle) { + // TITLE + } else if (line_name == kTitle) { album = line_value; - // SONGWRITER - } else if(line_name == kSongWriter) { + // SONGWRITER + } else if (line_name == kSongWriter) { album_composer = line_value; - // FILE - } else if(line_name == kFile) { + // FILE + } else if (line_name == kFile) { file = QDir::isAbsolutePath(line_value) - ? line_value - : dir.absoluteFilePath(line_value); + ? line_value + : dir.absoluteFilePath(line_value); - if(splitted.size() > 2) { + if (splitted.size() > 2) { file_type = splitted[2]; } - // REM - } else if(line_name == kRem) { - if(splitted.size() < 3) { - break; - } + // REM + } else if (line_name == kRem) { + if (splitted.size() < 3) { + break; + } - // REM GENRE - if (line_value.toLower() == kGenre) { - genre = splitted[2]; + // REM GENRE + if (line_value.toLower() == kGenre) { + genre = splitted[2]; // REM DATE - } else if(line_value.toLower() == kDate) { - date = splitted[2]; - } + } else if (line_value.toLower() == kDate) { + date = splitted[2]; + } - // end of the header -> go into the track mode - } else if(line_name == kTrack) { + // end of the header -> go into the track mode + } else if (line_name == kTrack) { files++; break; - } // just ignore the rest of possible field types for now... - } while(!(line = text_stream.readLine()).isNull()); + } while (!(line = text_stream.readLine()).isNull()); - if(line.isNull()) { - qLog(Warning) << "the .cue file from " << dir_path << " defines no tracks!"; + if (line.isNull()) { + qLog(Warning) << "the .cue file from " << dir_path + << " defines no tracks!"; return ret; } @@ -155,83 +156,88 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QStringList splitted = SplitCueLine(line); // uninteresting or incorrect line - if(splitted.size() < 2) { + if (splitted.size() < 2) { continue; } QString line_name = splitted[0].toLower(); QString line_value = splitted[1]; - QString line_additional = splitted.size() > 2 ? splitted[2].toLower() : ""; + QString line_additional = + splitted.size() > 2 ? splitted[2].toLower() : ""; - if(line_name == kTrack) { + if (line_name == kTrack) { - // the beginning of another track's definition - we're saving the current one + // the beginning of another track's definition - we're saving the + // current one // for later (if it's valid of course) - // please note that the same code is repeated just after this 'do-while' loop - if(valid_file && !index.isEmpty() && (track_type.isEmpty() || track_type == kAudioTrackType)) { - entries.append(CueEntry(file, index, title, artist, album_artist, album, composer, album_composer, genre, date)); + // please note that the same code is repeated just after this 'do-while' + // loop + if (valid_file && !index.isEmpty() && + (track_type.isEmpty() || track_type == kAudioTrackType)) { + entries.append(CueEntry(file, index, title, artist, album_artist, + album, composer, album_composer, genre, + date)); } // clear the state track_type = index = artist = title = ""; - if(!line_additional.isEmpty()) { + if (!line_additional.isEmpty()) { track_type = line_additional; } - } else if(line_name == kIndex) { + } else if (line_name == kIndex) { // we need the index's position field - if(!line_additional.isEmpty()) { + if (!line_additional.isEmpty()) { // if there's none "01" index, we'll just take the first one // also, we'll take the "01" index even if it's the last one - if(line_value == "01" || index.isEmpty()) { + if (line_value == "01" || index.isEmpty()) { index = line_additional; - } - } - } else if(line_name == kPerformer) { + } else if (line_name == kPerformer) { artist = line_value; - } else if(line_name == kTitle) { + } else if (line_name == kTitle) { title = line_value; - } else if(line_name == kSongWriter) { + } else if (line_name == kSongWriter) { composer = line_value; - // end of track's for the current file -> parse next one - } else if(line_name == kFile) { + // end of track's for the current file -> parse next one + } else if (line_name == kFile) { break; - } // just ignore the rest of possible field types for now... - } while(!(line = text_stream.readLine()).isNull()); + } while (!(line = text_stream.readLine()).isNull()); // we didn't add the last song yet... - if(valid_file && !index.isEmpty() && (track_type.isEmpty() || track_type == kAudioTrackType)) { - entries.append(CueEntry(file, index, title, artist, album_artist, album, composer, album_composer, genre, date)); + if (valid_file && !index.isEmpty() && + (track_type.isEmpty() || track_type == kAudioTrackType)) { + entries.append(CueEntry(file, index, title, artist, album_artist, album, + composer, album_composer, genre, date)); } } QDateTime cue_mtime = QFileInfo(playlist_path).lastModified(); // finalize parsing songs - for(int i = 0; i < entries.length(); i++) { + for (int i = 0; i < entries.length(); i++) { CueEntry entry = entries.at(i); Song song = LoadSong(entry.file, IndexToMarker(entry.index), dir); // cue song has mtime equal to qMax(media_file_mtime, cue_sheet_mtime) - if(cue_mtime.isValid()) { + if (cue_mtime.isValid()) { song.set_mtime(qMax(cue_mtime.toTime_t(), song.mtime())); } song.set_cue_path(playlist_path); @@ -240,20 +246,22 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const // the current .cue metadata // set track number only in single-file mode - if(files == 1) { + if (files == 1) { song.set_track(i + 1); } - // the last TRACK for every FILE gets it's 'end' marker from the media file's + // the last TRACK for every FILE gets it's 'end' marker from the media + // file's // length - if(i + 1 < entries.size() && entries.at(i).file == entries.at(i + 1).file) { + if (i + 1 < entries.size() && + entries.at(i).file == entries.at(i + 1).file) { // incorrect indices? - if(!UpdateSong(entry, entries.at(i + 1).index, &song)) { + if (!UpdateSong(entry, entries.at(i + 1).index, &song)) { continue; } } else { // incorrect index? - if(!UpdateLastSong(entry, &song)) { + if (!UpdateLastSong(entry, &song)) { continue; } } @@ -264,11 +272,13 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const return ret; } -// This and the kFileLineRegExp do most of the "dirty" work, namely: splitting the raw .cue -// line into logical parts and getting rid of all the unnecessary whitespaces and quoting. +// This and the kFileLineRegExp do most of the "dirty" work, namely: splitting +// the raw .cue +// line into logical parts and getting rid of all the unnecessary whitespaces +// and quoting. QStringList CueParser::SplitCueLine(const QString& line) const { QRegExp line_regexp(kFileLineRegExp); - if(!line_regexp.exactMatch(line.trimmed())) { + if (!line_regexp.exactMatch(line.trimmed())) { return QStringList(); } @@ -276,20 +286,21 @@ QStringList CueParser::SplitCueLine(const QString& line) const { return line_regexp.capturedTexts().filter(QRegExp(".+")).mid(1, -1); } -// Updates the song with data from the .cue entry. This one mustn't be used for the +// Updates the song with data from the .cue entry. This one mustn't be used for +// the // last song in the .cue file. -bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, Song* song) const { +bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, + Song* song) const { qint64 beginning = IndexToMarker(entry.index); qint64 end = IndexToMarker(next_index); // incorrect indices (we won't be able to calculate beginning or end) - if(beginning == -1 || end == -1) { + if (beginning == -1 || end == -1) { return false; } // believe the CUE: Init() forces validity - song->Init(entry.title, entry.PrettyArtist(), - entry.album, beginning, end); + song->Init(entry.title, entry.PrettyArtist(), entry.album, beginning, end); song->set_albumartist(entry.album_artist); song->set_composer(entry.PrettyComposer()); song->set_genre(entry.genre); @@ -298,13 +309,14 @@ bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, Son return true; } -// Updates the song with data from the .cue entry. This one must be used only for the +// Updates the song with data from the .cue entry. This one must be used only +// for the // last song in the .cue file. bool CueParser::UpdateLastSong(const CueEntry& entry, Song* song) const { qint64 beginning = IndexToMarker(entry.index); // incorrect index (we won't be able to calculate beginning) - if(beginning == -1) { + if (beginning == -1) { return false; } @@ -328,30 +340,32 @@ bool CueParser::UpdateLastSong(const CueEntry& entry, Song* song) const { qint64 CueParser::IndexToMarker(const QString& index) const { QRegExp index_regexp(kIndexRegExp); - if(!index_regexp.exactMatch(index)) { + if (!index_regexp.exactMatch(index)) { return -1; } QStringList splitted = index_regexp.capturedTexts().mid(1, -1); - qlonglong frames = splitted.at(0).toLongLong() * 60 * 75 + splitted.at(1).toLongLong() * 75 + + qlonglong frames = splitted.at(0).toLongLong() * 60 * 75 + + splitted.at(1).toLongLong() * 75 + splitted.at(2).toLongLong(); return (frames * kNsecPerSec) / 75; } -void CueParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void CueParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { // TODO } // Looks for a track starting with one of the .cue's keywords. -bool CueParser::TryMagic(const QByteArray &data) const { +bool CueParser::TryMagic(const QByteArray& data) const { QStringList splitted = QString::fromUtf8(data.constData()).split('\n'); - for(int i = 0; i < splitted.length(); i++) { + for (int i = 0; i < splitted.length(); i++) { QString line = splitted.at(i).trimmed(); - if(line.startsWith(kPerformer, Qt::CaseInsensitive) || - line.startsWith(kTitle, Qt::CaseInsensitive) || - line.startsWith(kFile, Qt::CaseInsensitive) || - line.startsWith(kTrack, Qt::CaseInsensitive)) { + if (line.startsWith(kPerformer, Qt::CaseInsensitive) || + line.startsWith(kTitle, Qt::CaseInsensitive) || + line.startsWith(kFile, Qt::CaseInsensitive) || + line.startsWith(kTrack, Qt::CaseInsensitive)) { return true; } } diff --git a/src/playlistparsers/cueparser.h b/src/playlistparsers/cueparser.h index f3c773a70..2ba8f5826 100644 --- a/src/playlistparsers/cueparser.h +++ b/src/playlistparsers/cueparser.h @@ -51,8 +51,10 @@ class CueParser : public ParserBase { bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; private: // A single TRACK entry in .cue file. @@ -72,12 +74,16 @@ class CueParser : public ParserBase { QString genre; QString date; - QString PrettyArtist() const { return artist.isEmpty() ? album_artist : artist; } - QString PrettyComposer() const { return composer.isEmpty() ? album_composer : composer; } + QString PrettyArtist() const { + return artist.isEmpty() ? album_artist : artist; + } + QString PrettyComposer() const { + return composer.isEmpty() ? album_composer : composer; + } CueEntry(QString& file, QString& index, QString& title, QString& artist, - QString& album_artist, QString& album, QString& composer, QString& album_composer, - QString& genre, QString& date) { + QString& album_artist, QString& album, QString& composer, + QString& album_composer, QString& genre, QString& date) { this->file = file; this->index = index; this->title = title; @@ -91,7 +97,8 @@ class CueParser : public ParserBase { } }; - bool UpdateSong(const CueEntry& entry, const QString& next_index, Song* song) const; + bool UpdateSong(const CueEntry& entry, const QString& next_index, + Song* song) const; bool UpdateLastSong(const CueEntry& entry, Song* song) const; QStringList SplitCueLine(const QString& line) const; diff --git a/src/playlistparsers/m3uparser.cpp b/src/playlistparsers/m3uparser.cpp index 53807b379..827753b88 100644 --- a/src/playlistparsers/m3uparser.cpp +++ b/src/playlistparsers/m3uparser.cpp @@ -23,11 +23,10 @@ #include M3UParser::M3UParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { +SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; M3UType type = STANDARD; @@ -79,7 +78,8 @@ SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, const return ret; } -bool M3UParser::ParseMetadata(const QString& line, M3UParser::Metadata* metadata) const { +bool M3UParser::ParseMetadata(const QString& line, + M3UParser::Metadata* metadata) const { // Extended info, eg. // #EXTINF:123,Sample Artist - Sample title QString info = line.section(':', 1); @@ -102,21 +102,23 @@ bool M3UParser::ParseMetadata(const QString& line, M3UParser::Metadata* metadata return true; } -void M3UParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void M3UParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { device->write("#EXTM3U\n"); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song.url().isEmpty()) { continue; } QString meta = QString("#EXTINF:%1,%2 - %3\n") - .arg(song.length_nanosec() / kNsecPerSec) - .arg(song.artist()).arg(song.title()); + .arg(song.length_nanosec() / kNsecPerSec) + .arg(song.artist()) + .arg(song.title()); device->write(meta.toUtf8()); device->write(URLOrRelativeFilename(song.url(), dir).toUtf8()); device->write("\n"); } } -bool M3UParser::TryMagic(const QByteArray &data) const { +bool M3UParser::TryMagic(const QByteArray& data) const { return data.contains("#EXTM3U") || data.contains("#EXTINF"); } diff --git a/src/playlistparsers/m3uparser.h b/src/playlistparsers/m3uparser.h index 28008007f..53ef2185f 100644 --- a/src/playlistparsers/m3uparser.h +++ b/src/playlistparsers/m3uparser.h @@ -31,13 +31,18 @@ class M3UParser : public ParserBase { M3UParser(LibraryBackendInterface* library, QObject* parent = 0); QString name() const { return "M3U"; } - QStringList file_extensions() const { return QStringList() << "m3u" << "m3u8"; } + QStringList file_extensions() const { + return QStringList() << "m3u" + << "m3u8"; + } QString mime_type() const { return "text/uri-list"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList &songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; private: enum M3UType { diff --git a/src/playlistparsers/parserbase.cpp b/src/playlistparsers/parserbase.cpp index 7c57fe476..578dbbfd5 100644 --- a/src/playlistparsers/parserbase.cpp +++ b/src/playlistparsers/parserbase.cpp @@ -23,11 +23,8 @@ #include -ParserBase::ParserBase(LibraryBackendInterface* library, QObject *parent) - : QObject(parent), - library_(library) -{ -} +ParserBase::ParserBase(LibraryBackendInterface* library, QObject* parent) + : QObject(parent), library_(library) {} void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir, Song* song) const { @@ -79,22 +76,22 @@ void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, } } -Song ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir) const { +Song ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir) const { Song song; LoadSong(filename_or_url, beginning, dir, &song); return song; } -QString ParserBase::URLOrRelativeFilename(const QUrl& url, const QDir& dir) const { - if (url.scheme() != "file") - return url.toString(); +QString ParserBase::URLOrRelativeFilename(const QUrl& url, + const QDir& dir) const { + if (url.scheme() != "file") return url.toString(); const QString filename = url.toLocalFile(); if (QDir::isAbsolutePath(filename)) { const QString relative = dir.relativeFilePath(filename); - if (!relative.contains("..")) - return relative; + if (!relative.contains("..")) return relative; } return filename; } diff --git a/src/playlistparsers/parserbase.h b/src/playlistparsers/parserbase.h index cf141a5b3..ca91d168d 100644 --- a/src/playlistparsers/parserbase.h +++ b/src/playlistparsers/parserbase.h @@ -28,7 +28,7 @@ class LibraryBackendInterface; class ParserBase : public QObject { Q_OBJECT -public: + public: ParserBase(LibraryBackendInterface* library, QObject* parent = 0); virtual QString name() const = 0; @@ -37,33 +37,41 @@ public: virtual bool TryMagic(const QByteArray& data) const = 0; - // Loads all songs from playlist found at path 'playlist_path' in directory 'dir'. + // Loads all songs from playlist found at path 'playlist_path' in directory + // 'dir'. // The 'device' argument is an opened and ready to read from represantation of // this playlist. - // This method might not return all of the songs found in the playlist. Any playlist - // parser may decide to leave out some entries if it finds them incomplete or invalid. - // This means that the final resulting SongList should be considered valid (at least + // This method might not return all of the songs found in the playlist. Any + // playlist + // parser may decide to leave out some entries if it finds them incomplete or + // invalid. + // This means that the final resulting SongList should be considered valid (at + // least // from the parser's point of view). - virtual SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const = 0; - virtual void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const = 0; + virtual SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const = 0; + virtual void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const = 0; -protected: + protected: // Loads a song. If filename_or_url is a URL (with a scheme other than // "file") then it is set on the song and the song marked as a stream. // If it is a filename or a file:// URL then it is made absolute and canonical // and set as a file:// url on the song. Also sets the song's metadata by // searching in the Library, or loading from the file as a fallback. // This function should always be used when loading a playlist. - Song LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir) const; - void LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir, Song* song) const; + Song LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir) const; + void LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir, Song* song) const; // If the URL is a file:// URL then returns its path relative to the // directory. Otherwise returns the URL as is. // This function should always be used when saving a playlist. QString URLOrRelativeFilename(const QUrl& url, const QDir& dir) const; -private: + private: LibraryBackendInterface* library_; }; -#endif // PARSERBASE_H +#endif // PARSERBASE_H diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index cb998c462..46d319d7d 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -29,9 +29,9 @@ const int PlaylistParser::kMagicSize = 512; -PlaylistParser::PlaylistParser(LibraryBackendInterface* library, QObject *parent) - : QObject(parent) -{ +PlaylistParser::PlaylistParser(LibraryBackendInterface* library, + QObject* parent) + : QObject(parent) { default_parser_ = new XSPFParser(library, this); parsers_ << new M3UParser(library, this); parsers_ << default_parser_; @@ -45,9 +45,7 @@ PlaylistParser::PlaylistParser(LibraryBackendInterface* library, QObject *parent QStringList PlaylistParser::file_extensions() const { QStringList ret; - foreach (ParserBase* parser, parsers_) { - ret << parser->file_extensions(); - } + foreach(ParserBase * parser, parsers_) { ret << parser->file_extensions(); } qStableSort(ret); return ret; @@ -56,7 +54,7 @@ QStringList PlaylistParser::file_extensions() const { QString PlaylistParser::filters() const { QStringList filters; QStringList all_extensions; - foreach (ParserBase* parser, parsers_) { + foreach(ParserBase * parser, parsers_) { filters << FilterForParser(parser, &all_extensions); } @@ -65,13 +63,13 @@ QString PlaylistParser::filters() const { return filters.join(";;"); } -QString PlaylistParser::FilterForParser(const ParserBase *parser, QStringList *all_extensions) const { +QString PlaylistParser::FilterForParser(const ParserBase* parser, + QStringList* all_extensions) const { QStringList extensions; - foreach (const QString& extension, parser->file_extensions()) - extensions << "*." + extension; + foreach(const QString & extension, parser->file_extensions()) + extensions << "*." + extension; - if (all_extensions) - *all_extensions << extensions; + if (all_extensions) *all_extensions << extensions; return tr("%1 playlists (%2)").arg(parser->name(), extensions.join(" ")); } @@ -85,16 +83,15 @@ QString PlaylistParser::default_filter() const { } ParserBase* PlaylistParser::ParserForExtension(const QString& suffix) const { - foreach (ParserBase* p, parsers_) { - if (p->file_extensions().contains(suffix)) - return p; + foreach(ParserBase * p, parsers_) { + if (p->file_extensions().contains(suffix)) return p; } return nullptr; } ParserBase* PlaylistParser::ParserForMagic(const QByteArray& data, const QString& mime_type) const { - foreach (ParserBase* p, parsers_) { + foreach(ParserBase * p, parsers_) { if ((!mime_type.isEmpty() && mime_type == p->mime_type()) || p->TryMagic(data)) return p; @@ -131,7 +128,8 @@ SongList PlaylistParser::LoadFromDevice(QIODevice* device, return parser->Load(device, path_hint, dir_hint); } -void PlaylistParser::Save(const SongList& songs, const QString& filename) const { +void PlaylistParser::Save(const SongList& songs, + const QString& filename) const { QFileInfo info(filename); // Find a parser that supports this file extension diff --git a/src/playlistparsers/playlistparser.h b/src/playlistparsers/playlistparser.h index b987b8faa..00a82a9f3 100644 --- a/src/playlistparsers/playlistparser.h +++ b/src/playlistparsers/playlistparser.h @@ -29,7 +29,7 @@ class LibraryBackendInterface; class PlaylistParser : public QObject { Q_OBJECT -public: + public: PlaylistParser(LibraryBackendInterface* library, QObject* parent = 0); static const int kMagicSize; @@ -45,17 +45,18 @@ public: ParserBase* ParserForExtension(const QString& suffix) const; SongList LoadFromFile(const QString& filename) const; - SongList LoadFromDevice(QIODevice* device, const QString& path_hint = QString(), + SongList LoadFromDevice(QIODevice* device, + const QString& path_hint = QString(), const QDir& dir_hint = QDir()) const; void Save(const SongList& songs, const QString& filename) const; -private: + private: QString FilterForParser(const ParserBase* parser, QStringList* all_extensions = NULL) const; -private: + private: QList parsers_; ParserBase* default_parser_; }; -#endif // PLAYLISTPARSER_H +#endif // PLAYLISTPARSER_H diff --git a/src/playlistparsers/plsparser.cpp b/src/playlistparsers/plsparser.cpp index 0c105a89e..dd87927c9 100644 --- a/src/playlistparsers/plsparser.cpp +++ b/src/playlistparsers/plsparser.cpp @@ -23,11 +23,10 @@ #include PLSParser::PLSParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const QDir &dir) const { +SongList PLSParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { QMap songs; QRegExp n_re("\\d+$"); @@ -44,8 +43,7 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const Song song = LoadSong(value, 0, dir); // Use the title and length we've already loaded if any - if (!songs[n].title().isEmpty()) - song.set_title(songs[n].title()); + if (!songs[n].title().isEmpty()) song.set_title(songs[n].title()); if (songs[n].length_nanosec() != -1) song.set_length_nanosec(songs[n].length_nanosec()); @@ -63,14 +61,15 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const return songs.values(); } -void PLSParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void PLSParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { QTextStream s(device); s << "[playlist]" << endl; s << "Version=2" << endl; s << "NumberOfEntries=" << songs.count() << endl; int n = 1; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { s << "File" << n << "=" << URLOrRelativeFilename(song.url(), dir) << endl; s << "Title" << n << "=" << song.title() << endl; s << "Length" << n << "=" << song.length_nanosec() / kNsecPerSec << endl; diff --git a/src/playlistparsers/plsparser.h b/src/playlistparsers/plsparser.h index 1867baffb..ddc8e8c2d 100644 --- a/src/playlistparsers/plsparser.h +++ b/src/playlistparsers/plsparser.h @@ -23,16 +23,18 @@ class PLSParser : public ParserBase { Q_OBJECT -public: + public: PLSParser(LibraryBackendInterface* library, QObject* parent = 0); QString name() const { return "PLS"; } QStringList file_extensions() const { return QStringList() << "pls"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; }; -#endif // PLSPARSER_H +#endif // PLSPARSER_H diff --git a/src/playlistparsers/wplparser.cpp b/src/playlistparsers/wplparser.cpp index 8f53fd181..3b72424e3 100644 --- a/src/playlistparsers/wplparser.cpp +++ b/src/playlistparsers/wplparser.cpp @@ -22,9 +22,7 @@ #include WplParser::WplParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} bool WplParser::TryMagic(const QByteArray& data) const { return data.contains(""); @@ -89,7 +87,8 @@ void WplParser::Save(const SongList& songs, QIODevice* device, { StreamElement head("head", &writer); - WriteMeta("Generator", "Clementine -- " CLEMENTINE_VERSION_DISPLAY, &writer); + WriteMeta("Generator", "Clementine -- " CLEMENTINE_VERSION_DISPLAY, + &writer); WriteMeta("ItemCount", QString::number(songs.count()), &writer); } @@ -97,7 +96,7 @@ void WplParser::Save(const SongList& songs, QIODevice* device, StreamElement body("body", &writer); { StreamElement seq("seq", &writer); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { writer.writeStartElement("media"); writer.writeAttribute("src", URLOrRelativeFilename(song.url(), dir)); writer.writeEndElement(); diff --git a/src/playlistparsers/wplparser.h b/src/playlistparsers/wplparser.h index 54d02d5ca..7853fbefa 100644 --- a/src/playlistparsers/wplparser.h +++ b/src/playlistparsers/wplparser.h @@ -34,11 +34,11 @@ class WplParser : public XMLParser { const QDir& dir) const; void Save(const SongList& songs, QIODevice* device, const QDir& dir) const; -private: + private: void ParseSeq(const QDir& dir, QXmlStreamReader* reader, SongList* songs) const; void WriteMeta(const QString& name, const QString& content, QXmlStreamWriter* writer) const; }; -#endif // WPLPARSER_H +#endif // WPLPARSER_H diff --git a/src/playlistparsers/xmlparser.cpp b/src/playlistparsers/xmlparser.cpp index 68d4d59d5..791869eb9 100644 --- a/src/playlistparsers/xmlparser.cpp +++ b/src/playlistparsers/xmlparser.cpp @@ -25,5 +25,4 @@ #include XMLParser::XMLParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) { -} + : ParserBase(library, parent) {} diff --git a/src/playlistparsers/xmlparser.h b/src/playlistparsers/xmlparser.h index 33750b028..193e4d27c 100644 --- a/src/playlistparsers/xmlparser.h +++ b/src/playlistparsers/xmlparser.h @@ -32,13 +32,12 @@ class XMLParser : public ParserBase { class StreamElement { public: - StreamElement(const QString& name, QXmlStreamWriter* stream) : stream_(stream) { + StreamElement(const QString& name, QXmlStreamWriter* stream) + : stream_(stream) { stream->writeStartElement(name); } - ~StreamElement() { - stream_->writeEndElement(); - } + ~StreamElement() { stream_->writeEndElement(); } private: QXmlStreamWriter* stream_; diff --git a/src/playlistparsers/xspfparser.cpp b/src/playlistparsers/xspfparser.cpp index f394dce84..526b0794f 100644 --- a/src/playlistparsers/xspfparser.cpp +++ b/src/playlistparsers/xspfparser.cpp @@ -27,11 +27,9 @@ #include XSPFParser::XSPFParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} -SongList XSPFParser::Load(QIODevice *device, const QString& playlist_path, +SongList XSPFParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { SongList ret; @@ -102,7 +100,8 @@ return_song: return song; } -void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) const { +void XSPFParser::Save(const SongList& songs, QIODevice* device, + const QDir&) const { QXmlStreamWriter writer(device); writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); @@ -112,7 +111,7 @@ void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) con writer.writeDefaultNamespace("http://xspf.org/ns/0/"); StreamElement tracklist("trackList", &writer); - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { StreamElement track("track", &writer); writer.writeTextElement("location", song.url().toString()); writer.writeTextElement("title", song.title()); @@ -123,10 +122,12 @@ void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) con writer.writeTextElement("album", song.album()); } if (song.length_nanosec() != -1) { - writer.writeTextElement("duration", QString::number(song.length_nanosec() / kNsecPerMsec)); + writer.writeTextElement( + "duration", QString::number(song.length_nanosec() / kNsecPerMsec)); } - QString art = song.art_manual().isEmpty() ? song.art_automatic() : song.art_manual(); + QString art = + song.art_manual().isEmpty() ? song.art_automatic() : song.art_manual(); // Ignore images that are in our resource bundle. if (!art.startsWith(":") && !art.isEmpty()) { // Convert local files to URLs. @@ -139,6 +140,6 @@ void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) con writer.writeEndDocument(); } -bool XSPFParser::TryMagic(const QByteArray &data) const { +bool XSPFParser::TryMagic(const QByteArray& data) const { return data.contains(" - + 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 . */ @@ -26,17 +26,14 @@ #include AddPodcastByUrl::AddPodcastByUrl(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_AddPodcastByUrl), - loader_(new PodcastUrlLoader(this)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_AddPodcastByUrl), + loader_(new PodcastUrlLoader(this)) { ui_->setupUi(this); connect(ui_->go, SIGNAL(clicked()), SLOT(GoClicked())); } -AddPodcastByUrl::~AddPodcastByUrl() { - delete ui_; -} +AddPodcastByUrl::~AddPodcastByUrl() { delete ui_; } void AddPodcastByUrl::SetUrlAndGo(const QUrl& url) { ui_->url->setText(url.toString()); @@ -56,9 +53,8 @@ void AddPodcastByUrl::GoClicked() { PodcastUrlLoaderReply* reply = loader_->Load(ui_->url->text()); ui_->url->setText(reply->url().toString()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(RequestFinished(PodcastUrlLoaderReply*)), - reply); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(RequestFinished(PodcastUrlLoaderReply*)), reply); } void AddPodcastByUrl::RequestFinished(PodcastUrlLoaderReply* reply) { @@ -73,15 +69,16 @@ void AddPodcastByUrl::RequestFinished(PodcastUrlLoaderReply* reply) { } switch (reply->result_type()) { - case PodcastUrlLoaderReply::Type_Podcast: - foreach (const Podcast& podcast, reply->podcast_results()) { - model()->appendRow(model()->CreatePodcastItem(podcast)); - } - break; + case PodcastUrlLoaderReply::Type_Podcast: + foreach(const Podcast & podcast, reply->podcast_results()) { + model()->appendRow(model()->CreatePodcastItem(podcast)); + } + break; - case PodcastUrlLoaderReply::Type_Opml: - model()->CreateOpmlContainerItems(reply->opml_results(), model()->invisibleRootItem()); - break; + case PodcastUrlLoaderReply::Type_Opml: + model()->CreateOpmlContainerItems(reply->opml_results(), + model()->invisibleRootItem()); + break; } } @@ -92,8 +89,9 @@ void AddPodcastByUrl::Show() { } const QClipboard* clipboard = QApplication::clipboard(); - foreach (const QString& contents, QStringList() << clipboard->text(QClipboard::Clipboard) - << clipboard->text(QClipboard::Selection)) { + foreach(const QString & contents, + QStringList() << clipboard->text(QClipboard::Clipboard) + << clipboard->text(QClipboard::Selection)) { if (contents.contains("://")) { ui_->url->setText(contents); return; diff --git a/src/podcasts/addpodcastbyurl.h b/src/podcasts/addpodcastbyurl.h index 2da080874..fe3185b81 100644 --- a/src/podcasts/addpodcastbyurl.h +++ b/src/podcasts/addpodcastbyurl.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,8 +30,8 @@ class QUrl; class AddPodcastByUrl : public AddPodcastPage { Q_OBJECT - -public: + + public: AddPodcastByUrl(Application* app, QWidget* parent = 0); ~AddPodcastByUrl(); @@ -40,13 +40,13 @@ public: void SetOpml(const OpmlContainer& opml); void SetUrlAndGo(const QUrl& url); -private slots: + private slots: void GoClicked(); void RequestFinished(PodcastUrlLoaderReply* reply); -private: + private: Ui_AddPodcastByUrl* ui_; PodcastUrlLoader* loader_; }; -#endif // ADDPODCASTBYURL_H +#endif // ADDPODCASTBYURL_H diff --git a/src/podcasts/addpodcastdialog.cpp b/src/podcasts/addpodcastdialog.cpp index 97677e980..b18b4e51c 100644 --- a/src/podcasts/addpodcastdialog.cpp +++ b/src/podcasts/addpodcastdialog.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -32,14 +32,14 @@ #include #include -const char* AddPodcastDialog::kBbcOpmlUrl = "http://www.bbc.co.uk/podcasts.opml"; +const char* AddPodcastDialog::kBbcOpmlUrl = + "http://www.bbc.co.uk/podcasts.opml"; AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) - : QDialog(parent), - app_(app), - ui_(new Ui_AddPodcastDialog), - last_opml_path_(QDir::homePath()) -{ + : QDialog(parent), + app_(app), + ui_(new Ui_AddPodcastDialog), + last_opml_path_(QDir::homePath()) { ui_->setupUi(this); ui_->details->SetApplication(app); ui_->results->SetExpandOnReset(false); @@ -48,29 +48,33 @@ AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) fader_ = new WidgetFadeHelper(ui_->details_scroll_area); - connect(ui_->provider_list, SIGNAL(currentRowChanged(int)), SLOT(ChangePage(int))); + connect(ui_->provider_list, SIGNAL(currentRowChanged(int)), + SLOT(ChangePage(int))); connect(ui_->details, SIGNAL(LoadingFinished()), fader_, SLOT(StartFade())); - connect(ui_->results, SIGNAL(doubleClicked(QModelIndex)), SLOT(PodcastDoubleClicked(QModelIndex))); + connect(ui_->results, SIGNAL(doubleClicked(QModelIndex)), + SLOT(PodcastDoubleClicked(QModelIndex))); // Create Add and Remove Podcast buttons - add_button_ = new QPushButton(IconLoader::Load("list-add"), tr("Add Podcast"), this); + add_button_ = + new QPushButton(IconLoader::Load("list-add"), tr("Add Podcast"), this); add_button_->setEnabled(false); connect(add_button_, SIGNAL(clicked()), SLOT(AddPodcast())); ui_->button_box->addButton(add_button_, QDialogButtonBox::ActionRole); - remove_button_ = new QPushButton(IconLoader::Load("list-remove"), tr("Unsubscribe"), this); + remove_button_ = + new QPushButton(IconLoader::Load("list-remove"), tr("Unsubscribe"), this); remove_button_->setEnabled(false); connect(remove_button_, SIGNAL(clicked()), SLOT(RemovePodcast())); ui_->button_box->addButton(remove_button_, QDialogButtonBox::ActionRole); QPushButton* settings_button = new QPushButton( - IconLoader::Load("configure"), tr("Configure podcasts..."), this); + IconLoader::Load("configure"), tr("Configure podcasts..."), this); connect(settings_button, SIGNAL(clicked()), SLOT(OpenSettingsPage())); ui_->button_box->addButton(settings_button, QDialogButtonBox::ResetRole); // Create an Open OPML file button QPushButton* open_opml_button = new QPushButton( - IconLoader::Load("document-open"), tr("Open OPML file..."), this); + IconLoader::Load("document-open"), tr("Open OPML file..."), this); connect(open_opml_button, SIGNAL(clicked()), this, SLOT(OpenOPMLFile())); ui_->button_box->addButton(open_opml_button, QDialogButtonBox::ResetRole); @@ -86,9 +90,7 @@ AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) ui_->provider_list->setCurrentRow(0); } -AddPodcastDialog::~AddPodcastDialog() { - delete ui_; -} +AddPodcastDialog::~AddPodcastDialog() { delete ui_; } void AddPodcastDialog::ShowWithUrl(const QUrl& url) { by_url_page_->SetUrlAndGo(url); @@ -107,7 +109,8 @@ void AddPodcastDialog::AddPage(AddPodcastPage* page) { page_is_busy_.append(false); ui_->stack->addWidget(page); - new QListWidgetItem(page->windowIcon(), page->windowTitle(), ui_->provider_list); + new QListWidgetItem(page->windowIcon(), page->windowTitle(), + ui_->provider_list); connect(page, SIGNAL(Busy(bool)), SLOT(PageBusyChanged(bool))); } @@ -120,9 +123,10 @@ void AddPodcastDialog::ChangePage(int index) { ui_->results->setModel(page->model()); ui_->results_stack->setCurrentWidget( - page_is_busy_[index] ? ui_->busy_page : ui_->results_page); + page_is_busy_[index] ? ui_->busy_page : ui_->results_page); - connect(ui_->results->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), + connect(ui_->results->selectionModel(), + SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), SLOT(ChangePodcast(QModelIndex))); ChangePodcast(QModelIndex()); CurrentPageBusyChanged(page_is_busy_[index]); @@ -169,8 +173,7 @@ void AddPodcastDialog::ChangePodcast(const QModelIndex& current) { void AddPodcastDialog::PageBusyChanged(bool busy) { const int index = pages_.indexOf(qobject_cast(sender())); - if (index == -1) - return; + if (index == -1) return; page_is_busy_[index] = busy; @@ -180,7 +183,8 @@ void AddPodcastDialog::PageBusyChanged(bool busy) { } void AddPodcastDialog::CurrentPageBusyChanged(bool busy) { - ui_->results_stack->setCurrentWidget(busy ? ui_->busy_page : ui_->results_page); + ui_->results_stack->setCurrentWidget(busy ? ui_->busy_page + : ui_->results_page); ui_->stack->setDisabled(busy); QTimer::singleShot(0, this, SLOT(SelectFirstPodcast())); @@ -188,10 +192,11 @@ void AddPodcastDialog::CurrentPageBusyChanged(bool busy) { void AddPodcastDialog::SelectFirstPodcast() { // Select the first item if there was one. - const PodcastDiscoveryModel* model = pages_[ui_->provider_list->currentRow()]->model(); + const PodcastDiscoveryModel* model = + pages_[ui_->provider_list->currentRow()]->model(); if (model->rowCount() > 0) { ui_->results->selectionModel()->setCurrentIndex( - model->index(0, 0), QItemSelectionModel::ClearAndSelect); + model->index(0, 0), QItemSelectionModel::ClearAndSelect); } } @@ -209,7 +214,7 @@ void AddPodcastDialog::PodcastDoubleClicked(const QModelIndex& index) { current_podcast_ = podcast_variant.value(); app_->podcast_backend()->Subscribe(¤t_podcast_); - + add_button_->setEnabled(false); remove_button_->setEnabled(true); } @@ -227,7 +232,7 @@ void AddPodcastDialog::OpenSettingsPage() { void AddPodcastDialog::OpenOPMLFile() { const QString filename = QFileDialog::getOpenFileName( - this, tr("Open OPML file"), last_opml_path_, "OPML files (*.opml)"); + this, tr("Open OPML file"), last_opml_path_, "OPML files (*.opml)"); if (filename.isEmpty()) { return; diff --git a/src/podcasts/addpodcastdialog.h b/src/podcasts/addpodcastdialog.h index fbbf1fc18..19c994370 100644 --- a/src/podcasts/addpodcastdialog.h +++ b/src/podcasts/addpodcastdialog.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,8 +33,8 @@ class QModelIndex; class AddPodcastDialog : public QDialog { Q_OBJECT - -public: + + public: AddPodcastDialog(Application* app, QWidget* parent = 0); ~AddPodcastDialog(); @@ -46,7 +46,7 @@ public: void ShowWithUrl(const QUrl& url); void ShowWithOpml(const OpmlContainer& opml); -private slots: + private slots: void OpenSettingsPage(); void AddPodcast(); void PodcastDoubleClicked(const QModelIndex& index); @@ -61,10 +61,10 @@ private slots: void OpenOPMLFile(); -private: + private: void AddPage(AddPodcastPage* page); - -private: + + private: Application* app_; Ui_AddPodcastDialog* ui_; @@ -82,4 +82,4 @@ private: QString last_opml_path_; }; -#endif // ADDPODCASTDIALOG_H +#endif // ADDPODCASTDIALOG_H diff --git a/src/podcasts/addpodcastpage.cpp b/src/podcasts/addpodcastpage.cpp index f9076dfed..d27eb01fa 100644 --- a/src/podcasts/addpodcastpage.cpp +++ b/src/podcasts/addpodcastpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,10 +19,7 @@ #include "podcastdiscoverymodel.h" AddPodcastPage::AddPodcastPage(Application* app, QWidget* parent) - : QWidget(parent), - model_(new PodcastDiscoveryModel(app, this)) -{ -} + : QWidget(parent), model_(new PodcastDiscoveryModel(app, this)) {} void AddPodcastPage::SetModel(PodcastDiscoveryModel* model) { delete model_; diff --git a/src/podcasts/addpodcastpage.h b/src/podcasts/addpodcastpage.h index 79736545b..43c674a6d 100644 --- a/src/podcasts/addpodcastpage.h +++ b/src/podcasts/addpodcastpage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,7 +26,7 @@ class PodcastDiscoveryModel; class AddPodcastPage : public QWidget { Q_OBJECT -public: + public: AddPodcastPage(Application* app, QWidget* parent = 0); PodcastDiscoveryModel* model() const { return model_; } @@ -37,11 +37,11 @@ public: signals: void Busy(bool busy); -protected: + protected: void SetModel(PodcastDiscoveryModel* model); -private: + private: PodcastDiscoveryModel* model_; }; -#endif // ADDPODCASTPAGE_H +#endif // ADDPODCASTPAGE_H diff --git a/src/podcasts/fixedopmlpage.cpp b/src/podcasts/fixedopmlpage.cpp index 6ec42b041..9c4c78341 100644 --- a/src/podcasts/fixedopmlpage.cpp +++ b/src/podcasts/fixedopmlpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,11 +25,10 @@ FixedOpmlPage::FixedOpmlPage(const QUrl& opml_url, const QString& title, const QIcon& icon, Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - loader_(new PodcastUrlLoader(this)), - opml_url_(opml_url), - done_initial_load_(false) -{ + : AddPodcastPage(app, parent), + loader_(new PodcastUrlLoader(this)), + opml_url_(opml_url), + done_initial_load_(false) { setWindowTitle(title); setWindowIcon(icon); } @@ -40,9 +39,8 @@ void FixedOpmlPage::Show() { done_initial_load_ = true; PodcastUrlLoaderReply* reply = loader_->Load(opml_url_); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(LoadFinished(PodcastUrlLoaderReply*)), - reply); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(LoadFinished(PodcastUrlLoaderReply*)), reply); } } @@ -57,14 +55,15 @@ void FixedOpmlPage::LoadFinished(PodcastUrlLoaderReply* reply) { } switch (reply->result_type()) { - case PodcastUrlLoaderReply::Type_Podcast: - foreach (const Podcast& podcast, reply->podcast_results()) { - model()->appendRow(model()->CreatePodcastItem(podcast)); - } - break; + case PodcastUrlLoaderReply::Type_Podcast: + foreach(const Podcast & podcast, reply->podcast_results()) { + model()->appendRow(model()->CreatePodcastItem(podcast)); + } + break; - case PodcastUrlLoaderReply::Type_Opml: - model()->CreateOpmlContainerItems(reply->opml_results(), model()->invisibleRootItem()); - break; + case PodcastUrlLoaderReply::Type_Opml: + model()->CreateOpmlContainerItems(reply->opml_results(), + model()->invisibleRootItem()); + break; } } diff --git a/src/podcasts/fixedopmlpage.h b/src/podcasts/fixedopmlpage.h index af0315079..c801a5c15 100644 --- a/src/podcasts/fixedopmlpage.h +++ b/src/podcasts/fixedopmlpage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,21 +28,21 @@ class PodcastUrlLoaderReply; class FixedOpmlPage : public AddPodcastPage { Q_OBJECT -public: + public: FixedOpmlPage(const QUrl& opml_url, const QString& title, const QIcon& icon, Application* app, QWidget* parent = 0); bool has_visible_widget() const { return false; } void Show(); -private slots: + private slots: void LoadFinished(PodcastUrlLoaderReply* reply); -private: + private: PodcastUrlLoader* loader_; QUrl opml_url_; bool done_initial_load_; }; -#endif // FIXEDOPMLPAGE_H +#endif // FIXEDOPMLPAGE_H diff --git a/src/podcasts/gpoddersearchpage.cpp b/src/podcasts/gpoddersearchpage.cpp index 024d72692..e862c9659 100644 --- a/src/podcasts/gpoddersearchpage.cpp +++ b/src/podcasts/gpoddersearchpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,11 +25,10 @@ #include GPodderSearchPage::GPodderSearchPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_GPodderSearchPage), - network_(new NetworkAccessManager(this)), - api_(new mygpo::ApiRequest(network_)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_GPodderSearchPage), + network_(new NetworkAccessManager(this)), + api_(new mygpo::ApiRequest(network_)) { ui_->setupUi(this); connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); } @@ -43,15 +42,12 @@ void GPodderSearchPage::SearchClicked() { emit Busy(true); mygpo::PodcastListPtr list(api_->search(ui_->query->text())); - NewClosure(list, SIGNAL(finished()), - this, SLOT(SearchFinished(mygpo::PodcastListPtr)), - list); - NewClosure(list, SIGNAL(parseError()), - this, SLOT(SearchFailed(mygpo::PodcastListPtr)), - list); - NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(SearchFailed(mygpo::PodcastListPtr)), - list); + NewClosure(list, SIGNAL(finished()), this, + SLOT(SearchFinished(mygpo::PodcastListPtr)), list); + NewClosure(list, SIGNAL(parseError()), this, + SLOT(SearchFailed(mygpo::PodcastListPtr)), list); + NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(SearchFailed(mygpo::PodcastListPtr)), list); } void GPodderSearchPage::SearchFinished(mygpo::PodcastListPtr list) { @@ -59,7 +55,7 @@ void GPodderSearchPage::SearchFinished(mygpo::PodcastListPtr list) { model()->clear(); - foreach (mygpo::PodcastPtr gpo_podcast, list->list()) { + foreach(mygpo::PodcastPtr gpo_podcast, list->list()) { Podcast podcast; podcast.InitFromGpo(gpo_podcast.data()); @@ -73,10 +69,10 @@ void GPodderSearchPage::SearchFailed(mygpo::PodcastListPtr list) { model()->clear(); if (QMessageBox::warning( - nullptr, tr("Failed to fetch podcasts"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch podcasts"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } @@ -84,6 +80,4 @@ void GPodderSearchPage::SearchFailed(mygpo::PodcastListPtr list) { SearchClicked(); } -void GPodderSearchPage::Show() { - ui_->query->setFocus(); -} +void GPodderSearchPage::Show() { ui_->query->setFocus(); } diff --git a/src/podcasts/gpoddersearchpage.h b/src/podcasts/gpoddersearchpage.h index 02dc750a2..c16fa25f7 100644 --- a/src/podcasts/gpoddersearchpage.h +++ b/src/podcasts/gpoddersearchpage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -29,23 +29,22 @@ class Ui_GPodderSearchPage; class GPodderSearchPage : public AddPodcastPage { Q_OBJECT -public: + public: GPodderSearchPage(Application* app, QWidget* parent = 0); ~GPodderSearchPage(); void Show(); -private slots: + private slots: void SearchClicked(); void SearchFinished(mygpo::PodcastListPtr list); void SearchFailed(mygpo::PodcastListPtr list); -private: + private: Ui_GPodderSearchPage* ui_; QNetworkAccessManager* network_; mygpo::ApiRequest* api_; - }; -#endif // GPODDERSEARCHPAGE_H +#endif // GPODDERSEARCHPAGE_H diff --git a/src/podcasts/gpoddersync.cpp b/src/podcasts/gpoddersync.cpp index 4110f56cb..6dfcd9dad 100644 --- a/src/podcasts/gpoddersync.cpp +++ b/src/podcasts/gpoddersync.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,25 +33,27 @@ #include const char* GPodderSync::kSettingsGroup = "Podcasts"; -const int GPodderSync::kFlushUpdateQueueDelay = 30 * kMsecPerSec; // 30 seconds -const int GPodderSync::kGetUpdatesInterval = 30*60 * kMsecPerSec; // 30 minutes +const int GPodderSync::kFlushUpdateQueueDelay = 30 * kMsecPerSec; // 30 seconds +const int GPodderSync::kGetUpdatesInterval = + 30 * 60 * kMsecPerSec; // 30 minutes GPodderSync::GPodderSync(Application* app, QObject* parent) - : QObject(parent), - app_(app), - network_(new NetworkAccessManager(this)), - backend_(app_->podcast_backend()), - loader_(new PodcastUrlLoader(this)), - get_updates_timer_(new QTimer(this)), - flush_queue_timer_(new QTimer(this)), - flushing_queue_(false) -{ + : QObject(parent), + app_(app), + network_(new NetworkAccessManager(this)), + backend_(app_->podcast_backend()), + loader_(new PodcastUrlLoader(this)), + get_updates_timer_(new QTimer(this)), + flush_queue_timer_(new QTimer(this)), + flushing_queue_(false) { ReloadSettings(); LoadQueue(); connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); - connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); - connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), SLOT(SubscriptionRemoved(Podcast))); + connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), + SLOT(SubscriptionAdded(Podcast))); + connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), + SLOT(SubscriptionRemoved(Podcast))); get_updates_timer_->setInterval(kGetUpdatesInterval); connect(get_updates_timer_, SIGNAL(timeout()), SLOT(GetUpdatesNow())); @@ -67,17 +69,17 @@ GPodderSync::GPodderSync(Application* app, QObject* parent) } } -GPodderSync::~GPodderSync() { -} +GPodderSync::~GPodderSync() {} QString GPodderSync::DeviceId() { - return QString("%1-%2").arg(qApp->applicationName(), - QHostInfo::localHostName()).toLower(); + return QString("%1-%2") + .arg(qApp->applicationName(), QHostInfo::localHostName()) + .toLower(); } QString GPodderSync::DefaultDeviceName() { - return tr("%1 on %2").arg(qApp->applicationName(), - QHostInfo::localHostName()); + return tr("%1 on %2") + .arg(qApp->applicationName(), QHostInfo::localHostName()); } bool GPodderSync::is_logged_in() const { @@ -97,22 +99,22 @@ void GPodderSync::ReloadSettings() { } } -QNetworkReply* GPodderSync::Login(const QString& username, const QString& password, +QNetworkReply* GPodderSync::Login(const QString& username, + const QString& password, const QString& device_name) { api_.reset(new mygpo::ApiRequest(username, password, network_)); QNetworkReply* reply = api_->renameDevice( - username, DeviceId(), device_name, - Utilities::IsLaptop() ? mygpo::Device::LAPTOP - : mygpo::Device::DESKTOP); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*,QString,QString)), - reply, username, password); + username, DeviceId(), device_name, + Utilities::IsLaptop() ? mygpo::Device::LAPTOP : mygpo::Device::DESKTOP); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*, QString, QString)), reply, + username, password); return reply; } -void GPodderSync::LoginFinished(QNetworkReply* reply, - const QString& username, const QString& password) { +void GPodderSync::LoginFinished(QNetworkReply* reply, const QString& username, + const QString& password) { reply->deleteLater(); if (reply->error() == QNetworkReply::NoError) { @@ -141,24 +143,21 @@ void GPodderSync::Logout() { } void GPodderSync::GetUpdatesNow() { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; qlonglong timestamp = 0; if (last_successful_get_.isValid()) { timestamp = last_successful_get_.toTime_t(); } - mygpo::DeviceUpdatesPtr reply(api_->deviceUpdates(username_, DeviceId(), timestamp)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr)), - reply); - NewClosure(reply, SIGNAL(parseError()), - this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), - reply); - NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), - reply); + mygpo::DeviceUpdatesPtr reply( + api_->deviceUpdates(username_, DeviceId(), timestamp)); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr)), reply); + NewClosure(reply, SIGNAL(parseError()), this, + SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), reply); + NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), reply); } void GPodderSync::DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr reply) { @@ -169,18 +168,19 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { // Remember episode actions for each podcast, so when we add a new podcast // we can apply the actions immediately. QMap > episodes_by_podcast; - foreach (mygpo::EpisodePtr episode, reply->updateList()) { + foreach(mygpo::EpisodePtr episode, reply->updateList()) { episodes_by_podcast[episode->podcastUrl()].append(episode); } - foreach (mygpo::PodcastPtr podcast, reply->addList()) { + foreach(mygpo::PodcastPtr podcast, reply->addList()) { const QUrl url(podcast->url()); // Are we subscribed to this podcast already? Podcast existing_podcast = backend_->GetSubscriptionByUrl(url); if (existing_podcast.is_valid()) { // Just apply actions to this existing podcast - ApplyActions(episodes_by_podcast[url], existing_podcast.mutable_episodes()); + ApplyActions(episodes_by_podcast[url], + existing_podcast.mutable_episodes()); backend_->UpdateEpisodes(existing_podcast.episodes()); continue; } @@ -188,13 +188,14 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { // Start loading the podcast. Remember actions and apply them after we // have a list of the episodes. PodcastUrlLoaderReply* loader_reply = loader_->Load(url); - NewClosure(loader_reply, SIGNAL(Finished(bool)), - this, SLOT(NewPodcastLoaded(PodcastUrlLoaderReply*,QUrl,QList)), + NewClosure(loader_reply, SIGNAL(Finished(bool)), this, + SLOT(NewPodcastLoaded(PodcastUrlLoaderReply*, QUrl, + QList)), loader_reply, url, episodes_by_podcast[url]); } // Unsubscribe from podcasts that were removed. - foreach (const QUrl& url, reply->removeList()) { + foreach(const QUrl & url, reply->removeList()) { backend_->Unsubscribe(backend_->GetSubscriptionByUrl(url)); } @@ -205,7 +206,8 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { s.setValue("gpodder_last_get", last_successful_get_); } -void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url, +void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, + const QUrl& url, const QList& actions) { reply->deleteLater(); @@ -221,7 +223,7 @@ void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url } // Apply the actions to the episodes in the podcast. - foreach (Podcast podcast, reply->podcast_results()) { + foreach(Podcast podcast, reply->podcast_results()) { ApplyActions(actions, podcast.mutable_episodes()); // Add the subscription @@ -229,23 +231,23 @@ void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url } } -void GPodderSync::ApplyActions(const QList >& actions, - PodcastEpisodeList* episodes) { - for (PodcastEpisodeList::iterator it = episodes->begin() ; - it != episodes->end() ; ++it) { +void GPodderSync::ApplyActions( + const QList >& actions, + PodcastEpisodeList* episodes) { + for (PodcastEpisodeList::iterator it = episodes->begin(); + it != episodes->end(); ++it) { // Find an action for this episode - foreach (mygpo::EpisodePtr action, actions) { - if (action->url() != it->url()) - continue; + foreach(mygpo::EpisodePtr action, actions) { + if (action->url() != it->url()) continue; switch (action->status()) { - case mygpo::Episode::PLAY: - case mygpo::Episode::DOWNLOAD: - it->set_listened(true); - break; + case mygpo::Episode::PLAY: + case mygpo::Episode::DOWNLOAD: + it->set_listened(true); + break; - default: - break; + default: + break; } break; } @@ -253,8 +255,7 @@ void GPodderSync::ApplyActions(const QList >& act } void GPodderSync::SubscriptionAdded(const Podcast& podcast) { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; const QUrl& url = podcast.url(); @@ -266,8 +267,7 @@ void GPodderSync::SubscriptionAdded(const Podcast& podcast) { } void GPodderSync::SubscriptionRemoved(const Podcast& podcast) { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; const QUrl& url = podcast.url(); @@ -279,72 +279,72 @@ void GPodderSync::SubscriptionRemoved(const Podcast& podcast) { } namespace { - template - void WriteContainer(const T& container, QSettings* s, const char* array_name, - const char* item_name) { - s->beginWriteArray(array_name, container.count()); - int index = 0; - foreach (const typename T::value_type& item, container) { - s->setArrayIndex(index ++); - s->setValue(item_name, item); - } - s->endArray(); +template +void WriteContainer(const T& container, QSettings* s, const char* array_name, + const char* item_name) { + s->beginWriteArray(array_name, container.count()); + int index = 0; + foreach(const typename T::value_type & item, container) { + s->setArrayIndex(index++); + s->setValue(item_name, item); } + s->endArray(); +} - template - void ReadContainer(T* container, QSettings* s, const char* array_name, - const char* item_name) { - container->clear(); - const int count = s->beginReadArray(array_name); - for (int i=0 ; isetArrayIndex(i); - *container << s->value(item_name).value(); - } - s->endArray(); +template +void ReadContainer(T* container, QSettings* s, const char* array_name, + const char* item_name) { + container->clear(); + const int count = s->beginReadArray(array_name); + for (int i = 0; i < count; ++i) { + s->setArrayIndex(i); + *container << s->value(item_name).value(); } + s->endArray(); +} } void GPodderSync::SaveQueue() { QSettings s; s.beginGroup(kSettingsGroup); - WriteContainer(queued_add_subscriptions_, &s, "gpodder_queued_add_subscriptions", "url"); - WriteContainer(queued_remove_subscriptions_, &s, "gpodder_queued_remove_subscriptions", "url"); + WriteContainer(queued_add_subscriptions_, &s, + "gpodder_queued_add_subscriptions", "url"); + WriteContainer(queued_remove_subscriptions_, &s, + "gpodder_queued_remove_subscriptions", "url"); } void GPodderSync::LoadQueue() { QSettings s; s.beginGroup(kSettingsGroup); - ReadContainer(&queued_add_subscriptions_, &s, "gpodder_queued_add_subscriptions", "url"); - ReadContainer(&queued_remove_subscriptions_, &s, "gpodder_queued_remove_subscriptions", "url"); + ReadContainer(&queued_add_subscriptions_, &s, + "gpodder_queued_add_subscriptions", "url"); + ReadContainer(&queued_remove_subscriptions_, &s, + "gpodder_queued_remove_subscriptions", "url"); } void GPodderSync::FlushUpdateQueue() { - if (!is_logged_in() || flushing_queue_) - return; + if (!is_logged_in() || flushing_queue_) return; - QSet all_urls = queued_add_subscriptions_ + queued_remove_subscriptions_; - if (all_urls.isEmpty()) - return; + QSet all_urls = + queued_add_subscriptions_ + queued_remove_subscriptions_; + if (all_urls.isEmpty()) return; flushing_queue_ = true; - mygpo::AddRemoveResultPtr reply( - api_->addRemoveSubscriptions(username_, DeviceId(), - queued_add_subscriptions_.toList(), - queued_remove_subscriptions_.toList())); + mygpo::AddRemoveResultPtr reply(api_->addRemoveSubscriptions( + username_, DeviceId(), queued_add_subscriptions_.toList(), + queued_remove_subscriptions_.toList())); qLog(Info) << "Sending" << all_urls.count() << "changes to gpodder.net"; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AddRemoveFinished(mygpo::AddRemoveResultPtr,QList)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(AddRemoveFinished(mygpo::AddRemoveResultPtr, QList)), reply, all_urls.toList()); - NewClosure(reply, SIGNAL(parseError()), - this, SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), - reply); - NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), - reply); + NewClosure(reply, SIGNAL(parseError()), this, + SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), reply); + NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), reply); } void GPodderSync::AddRemoveFailed(mygpo::AddRemoveResultPtr reply) { @@ -357,7 +357,7 @@ void GPodderSync::AddRemoveFinished(mygpo::AddRemoveResultPtr reply, flushing_queue_ = false; // Remove the URLs from the queue. - foreach (const QUrl& url, affected_urls) { + foreach(const QUrl & url, affected_urls) { queued_add_subscriptions_.remove(url); queued_remove_subscriptions_.remove(url); } @@ -365,7 +365,8 @@ void GPodderSync::AddRemoveFinished(mygpo::AddRemoveResultPtr reply, SaveQueue(); // Did more change in the mean time? - if (!queued_add_subscriptions_.isEmpty() || !queued_remove_subscriptions_.isEmpty()) { + if (!queued_add_subscriptions_.isEmpty() || + !queued_remove_subscriptions_.isEmpty()) { flush_queue_timer_->start(); } } @@ -378,7 +379,7 @@ void GPodderSync::DoInitialSync() { // Send our complete list of subscriptions queued_remove_subscriptions_.clear(); queued_add_subscriptions_.clear(); - foreach (const Podcast& podcast, backend_->GetAllSubscriptions()) { + foreach(const Podcast & podcast, backend_->GetAllSubscriptions()) { queued_add_subscriptions_.insert(podcast.url()); } diff --git a/src/podcasts/gpoddersync.h b/src/podcasts/gpoddersync.h index 9ba6b1e6e..0a3683925 100644 --- a/src/podcasts/gpoddersync.h +++ b/src/podcasts/gpoddersync.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -42,7 +42,7 @@ class QTimer; class GPodderSync : public QObject { Q_OBJECT -public: + public: GPodderSync(Application* app, QObject* parent = 0); ~GPodderSync(); @@ -65,13 +65,13 @@ public: // Clears any saved username and password from QSettings. void Logout(); -public slots: + public slots: void GetUpdatesNow(); -private slots: + private slots: void ReloadSettings(); - void LoginFinished(QNetworkReply* reply, - const QString& username, const QString& password); + void LoginFinished(QNetworkReply* reply, const QString& username, + const QString& password); void DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply); void DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr reply); @@ -90,13 +90,13 @@ private slots: const QList& affected_urls); void AddRemoveFailed(mygpo::AddRemoveResultPtr reply); -private: + private: void LoadQueue(); void SaveQueue(); void DoInitialSync(); -private: + private: Application* app_; QNetworkAccessManager* network_; QScopedPointer api_; @@ -115,4 +115,4 @@ private: bool flushing_queue_; }; -#endif // GPODDERSYNC_H +#endif // GPODDERSYNC_H diff --git a/src/podcasts/gpoddertoptagsmodel.cpp b/src/podcasts/gpoddertoptagsmodel.cpp index 9a4ec569e..a42277cfd 100644 --- a/src/podcasts/gpoddertoptagsmodel.cpp +++ b/src/podcasts/gpoddertoptagsmodel.cpp @@ -24,16 +24,12 @@ #include -GPodderTopTagsModel::GPodderTopTagsModel(mygpo::ApiRequest* api, Application* app, - QObject* parent) - : PodcastDiscoveryModel(app, parent), - api_(api) -{ -} +GPodderTopTagsModel::GPodderTopTagsModel(mygpo::ApiRequest* api, + Application* app, QObject* parent) + : PodcastDiscoveryModel(app, parent), api_(api) {} bool GPodderTopTagsModel::hasChildren(const QModelIndex& parent) const { - if (parent.isValid() && - parent.data(Role_Type).toInt() == Type_Folder) { + if (parent.isValid() && parent.data(Role_Type).toInt() == Type_Folder) { return true; } @@ -41,8 +37,7 @@ bool GPodderTopTagsModel::hasChildren(const QModelIndex& parent) const { } bool GPodderTopTagsModel::canFetchMore(const QModelIndex& parent) const { - if (parent.isValid() && - parent.data(Role_Type).toInt() == Type_Folder && + if (parent.isValid() && parent.data(Role_Type).toInt() == Type_Folder && parent.data(Role_HasLazyLoaded).toBool() == false) { return true; } @@ -51,8 +46,7 @@ bool GPodderTopTagsModel::canFetchMore(const QModelIndex& parent) const { } void GPodderTopTagsModel::fetchMore(const QModelIndex& parent) { - if (!parent.isValid() || - parent.data(Role_Type).toInt() != Type_Folder || + if (!parent.isValid() || parent.data(Role_Type).toInt() != Type_Folder || parent.data(Role_HasLazyLoaded).toBool()) { return; } @@ -61,32 +55,31 @@ void GPodderTopTagsModel::fetchMore(const QModelIndex& parent) { // Create a little Loading... item. itemFromIndex(parent)->appendRow(CreateLoadingIndicator()); - mygpo::PodcastListPtr list( - api_->podcastsOfTag(GPodderTopTagsPage::kMaxTagCount, parent.data().toString())); + mygpo::PodcastListPtr list(api_->podcastsOfTag( + GPodderTopTagsPage::kMaxTagCount, parent.data().toString())); - NewClosure(list, SIGNAL(finished()), - this, SLOT(PodcastsOfTagFinished(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(finished()), this, + SLOT(PodcastsOfTagFinished(QModelIndex, mygpo::PodcastList*)), parent, list.data()); - NewClosure(list, SIGNAL(parseError()), - this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(parseError()), this, + SLOT(PodcastsOfTagFailed(QModelIndex, mygpo::PodcastList*)), parent, list.data()); - NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(PodcastsOfTagFailed(QModelIndex, mygpo::PodcastList*)), parent, list.data()); } void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent, mygpo::PodcastList* list) { QStandardItem* parent_item = itemFromIndex(parent); - if (!parent_item) - return; + if (!parent_item) return; // Remove the Loading... item. while (parent_item->hasChildren()) { parent_item->removeRow(0); } - foreach (mygpo::PodcastPtr gpo_podcast, list->list()) { + foreach(mygpo::PodcastPtr gpo_podcast, list->list()) { Podcast podcast; podcast.InitFromGpo(gpo_podcast.data()); @@ -97,8 +90,7 @@ void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent, void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent, mygpo::PodcastList* list) { QStandardItem* parent_item = itemFromIndex(parent); - if (!parent_item) - return; + if (!parent_item) return; // Remove the Loading... item. while (parent_item->hasChildren()) { @@ -106,10 +98,10 @@ void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent, } if (QMessageBox::warning( - nullptr, tr("Failed to fetch podcasts"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch podcasts"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } diff --git a/src/podcasts/gpoddertoptagsmodel.h b/src/podcasts/gpoddertoptagsmodel.h index a3794b660..0e0fbce8c 100644 --- a/src/podcasts/gpoddertoptagsmodel.h +++ b/src/podcasts/gpoddertoptagsmodel.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,20 +21,19 @@ #include "podcastdiscoverymodel.h" namespace mygpo { - class ApiRequest; - class PodcastList; +class ApiRequest; +class PodcastList; } class GPodderTopTagsModel : public PodcastDiscoveryModel { Q_OBJECT -public: + public: GPodderTopTagsModel(mygpo::ApiRequest* api, Application* app, QObject* parent = 0); enum Role { Role_HasLazyLoaded = PodcastDiscoveryModel::RoleCount, - RoleCount }; @@ -42,12 +41,13 @@ public: bool canFetchMore(const QModelIndex& parent) const; void fetchMore(const QModelIndex& parent); -private slots: - void PodcastsOfTagFinished(const QModelIndex& parent, mygpo::PodcastList* list); + private slots: + void PodcastsOfTagFinished(const QModelIndex& parent, + mygpo::PodcastList* list); void PodcastsOfTagFailed(const QModelIndex& parent, mygpo::PodcastList* list); -private: + private: mygpo::ApiRequest* api_; }; -#endif // GPODDERTOPTAGSMODEL_H +#endif // GPODDERTOPTAGSMODEL_H diff --git a/src/podcasts/gpoddertoptagspage.cpp b/src/podcasts/gpoddertoptagspage.cpp index 47c24b357..0936a14f7 100644 --- a/src/podcasts/gpoddertoptagspage.cpp +++ b/src/podcasts/gpoddertoptagspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,22 +24,18 @@ const int GPodderTopTagsPage::kMaxTagCount = 100; - GPodderTopTagsPage::GPodderTopTagsPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - network_(new NetworkAccessManager(this)), - api_(new mygpo::ApiRequest(network_)), - done_initial_load_(false) -{ + : AddPodcastPage(app, parent), + network_(new NetworkAccessManager(this)), + api_(new mygpo::ApiRequest(network_)), + done_initial_load_(false) { setWindowTitle(tr("gpodder.net directory")); setWindowIcon(QIcon(":providers/mygpo32.png")); SetModel(new GPodderTopTagsModel(api_, app, this)); } -GPodderTopTagsPage::~GPodderTopTagsPage() { - delete api_; -} +GPodderTopTagsPage::~GPodderTopTagsPage() { delete api_; } void GPodderTopTagsPage::Show() { if (!done_initial_load_) { @@ -48,22 +44,19 @@ void GPodderTopTagsPage::Show() { done_initial_load_ = true; mygpo::TagListPtr tag_list(api_->topTags(kMaxTagCount)); - NewClosure(tag_list, SIGNAL(finished()), - this, SLOT(TagListLoaded(mygpo::TagListPtr)), - tag_list); - NewClosure(tag_list, SIGNAL(parseError()), - this, SLOT(TagListFailed(mygpo::TagListPtr)), - tag_list); + NewClosure(tag_list, SIGNAL(finished()), this, + SLOT(TagListLoaded(mygpo::TagListPtr)), tag_list); + NewClosure(tag_list, SIGNAL(parseError()), this, + SLOT(TagListFailed(mygpo::TagListPtr)), tag_list); NewClosure(tag_list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(TagListFailed(mygpo::TagListPtr)), - tag_list); + this, SLOT(TagListFailed(mygpo::TagListPtr)), tag_list); } } void GPodderTopTagsPage::TagListLoaded(mygpo::TagListPtr tag_list) { emit Busy(false); - foreach (mygpo::TagPtr tag, tag_list->list()) { + foreach(mygpo::TagPtr tag, tag_list->list()) { model()->appendRow(model()->CreateFolder(tag->tag())); } } @@ -73,10 +66,10 @@ void GPodderTopTagsPage::TagListFailed(mygpo::TagListPtr list) { done_initial_load_ = false; if (QMessageBox::warning( - nullptr, tr("Failed to fetch directory"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch directory"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } diff --git a/src/podcasts/gpoddertoptagspage.h b/src/podcasts/gpoddertoptagspage.h index 320297945..79cc932fb 100644 --- a/src/podcasts/gpoddertoptagspage.h +++ b/src/podcasts/gpoddertoptagspage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -29,7 +29,7 @@ class QNetworkAccessManager; class GPodderTopTagsPage : public AddPodcastPage { Q_OBJECT -public: + public: GPodderTopTagsPage(Application* app, QWidget* parent = 0); ~GPodderTopTagsPage(); @@ -38,15 +38,15 @@ public: virtual bool has_visible_widget() const { return false; } virtual void Show(); -private slots: + private slots: void TagListLoaded(mygpo::TagListPtr tag_list); void TagListFailed(mygpo::TagListPtr tag_list); -private: + private: QNetworkAccessManager* network_; mygpo::ApiRequest* api_; bool done_initial_load_; }; -#endif // GPODDERTOPTAGSPAGE_H +#endif // GPODDERTOPTAGSPAGE_H diff --git a/src/podcasts/itunessearchpage.cpp b/src/podcasts/itunessearchpage.cpp index 4c4a92e8c..945c14c6a 100644 --- a/src/podcasts/itunessearchpage.cpp +++ b/src/podcasts/itunessearchpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,20 +28,18 @@ #include const char* ITunesSearchPage::kUrlBase = - "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?country=US&media=podcast"; + "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/" + "wa/wsSearch?country=US&media=podcast"; ITunesSearchPage::ITunesSearchPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_ITunesSearchPage), - network_(new NetworkAccessManager(this)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_ITunesSearchPage), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); } -ITunesSearchPage::~ITunesSearchPage() { - delete ui_; -} +ITunesSearchPage::~ITunesSearchPage() { delete ui_; } void ITunesSearchPage::SearchClicked() { emit Busy(true); @@ -50,9 +48,8 @@ void ITunesSearchPage::SearchClicked() { url.addQueryItem("term", ui_->query->text()); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchFinished(QNetworkReply*)), reply); } void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { @@ -63,7 +60,8 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { // Was there a network error? if (reply->error() != QNetworkReply::NoError) { - QMessageBox::warning(this, tr("Failed to fetch podcasts"), reply->errorString()); + QMessageBox::warning(this, tr("Failed to fetch podcasts"), + reply->errorString()); return; } @@ -72,8 +70,9 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { // Was it valid JSON? if (data.isNull()) { - QMessageBox::warning(this, tr("Failed to fetch podcasts"), - tr("There was a problem parsing the response from the iTunes Store")); + QMessageBox::warning( + this, tr("Failed to fetch podcasts"), + tr("There was a problem parsing the response from the iTunes Store")); return; } @@ -84,7 +83,7 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { return; } - foreach (const QVariant& result_variant, data.toMap()["results"].toList()) { + foreach(const QVariant & result_variant, data.toMap()["results"].toList()) { QVariantMap result(result_variant.toMap()); if (result["kind"].toString() != "podcast") { continue; @@ -102,6 +101,4 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { } } -void ITunesSearchPage::Show() { - ui_->query->setFocus(); -} +void ITunesSearchPage::Show() { ui_->query->setFocus(); } diff --git a/src/podcasts/itunessearchpage.h b/src/podcasts/itunessearchpage.h index d898138c7..dce87da5c 100644 --- a/src/podcasts/itunessearchpage.h +++ b/src/podcasts/itunessearchpage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,7 +28,7 @@ class QNetworkReply; class ITunesSearchPage : public AddPodcastPage { Q_OBJECT -public: + public: ITunesSearchPage(Application* app, QWidget* parent); ~ITunesSearchPage(); @@ -36,14 +36,14 @@ public: static const char* kUrlBase; -private slots: + private slots: void SearchClicked(); void SearchFinished(QNetworkReply* reply); -private: + private: Ui_ITunesSearchPage* ui_; QNetworkAccessManager* network_; }; -#endif // ITUNESSEARCHPAGE_H +#endif // ITUNESSEARCHPAGE_H diff --git a/src/podcasts/opmlcontainer.h b/src/podcasts/opmlcontainer.h index 425542352..9e2d30fb6 100644 --- a/src/podcasts/opmlcontainer.h +++ b/src/podcasts/opmlcontainer.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,7 +21,7 @@ #include "podcast.h" class OpmlContainer { -public: + public: // Only set for the top-level container QUrl url; @@ -32,4 +32,4 @@ public: Q_DECLARE_METATYPE(OpmlContainer) -#endif // OPMLCONTAINER_H +#endif // OPMLCONTAINER_H diff --git a/src/podcasts/podcast.cpp b/src/podcasts/podcast.cpp index e666a499d..ee277d296 100644 --- a/src/podcasts/podcast.cpp +++ b/src/podcasts/podcast.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,16 +23,27 @@ #include -const QStringList Podcast::kColumns = QStringList() - << "url" << "title" << "description" << "copyright" << "link" - << "image_url_large" << "image_url_small" << "author" << "owner_name" - << "owner_email" << "last_updated" << "last_update_error" << "extra"; +const QStringList Podcast::kColumns = QStringList() << "url" + << "title" + << "description" + << "copyright" + << "link" + << "image_url_large" + << "image_url_small" + << "author" + << "owner_name" + << "owner_email" + << "last_updated" + << "last_update_error" + << "extra"; const QString Podcast::kColumnSpec = Podcast::kColumns.join(", "); -const QString Podcast::kJoinSpec = Utilities::Prepend("p.", Podcast::kColumns).join(", "); -const QString Podcast::kBindSpec = Utilities::Prepend(":", Podcast::kColumns).join(", "); -const QString Podcast::kUpdateSpec = Utilities::Updateify(Podcast::kColumns).join(", "); - +const QString Podcast::kJoinSpec = + Utilities::Prepend("p.", Podcast::kColumns).join(", "); +const QString Podcast::kBindSpec = + Utilities::Prepend(":", Podcast::kColumns).join(", "); +const QString Podcast::kUpdateSpec = + Utilities::Updateify(Podcast::kColumns).join(", "); struct Podcast::Private : public QSharedData { Private(); @@ -61,26 +72,15 @@ struct Podcast::Private : public QSharedData { PodcastEpisodeList episodes_; }; -Podcast::Private::Private() - : database_id_(-1) -{ -} +Podcast::Private::Private() : database_id_(-1) {} +Podcast::Podcast() : d(new Private) {} -Podcast::Podcast() - : d(new Private) -{ -} +Podcast::Podcast(const Podcast& other) : d(other.d) {} -Podcast::Podcast(const Podcast& other) - : d(other.d) -{ -} +Podcast::~Podcast() {} -Podcast::~Podcast() { -} - -Podcast& Podcast::operator =(const Podcast& other) { +Podcast& Podcast::operator=(const Podcast& other) { d = other.d; return *this; } @@ -97,7 +97,9 @@ const QString& Podcast::author() const { return d->author_; } const QString& Podcast::owner_name() const { return d->owner_name_; } const QString& Podcast::owner_email() const { return d->owner_email_; } const QDateTime& Podcast::last_updated() const { return d->last_updated_; } -const QString& Podcast::last_update_error() const { return d->last_update_error_; } +const QString& Podcast::last_update_error() const { + return d->last_update_error_; +} const QVariantMap& Podcast::extra() const { return d->extra_; } QVariant Podcast::extra(const QString& key) const { return d->extra_[key]; } @@ -113,14 +115,20 @@ void Podcast::set_author(const QString& v) { d->author_ = v; } void Podcast::set_owner_name(const QString& v) { d->owner_name_ = v; } void Podcast::set_owner_email(const QString& v) { d->owner_email_ = v; } void Podcast::set_last_updated(const QDateTime& v) { d->last_updated_ = v; } -void Podcast::set_last_update_error(const QString& v) { d->last_update_error_ = v; } +void Podcast::set_last_update_error(const QString& v) { + d->last_update_error_ = v; +} void Podcast::set_extra(const QVariantMap& v) { d->extra_ = v; } -void Podcast::set_extra(const QString& key, const QVariant& value) { d->extra_[key] = value; } +void Podcast::set_extra(const QString& key, const QVariant& value) { + d->extra_[key] = value; +} const PodcastEpisodeList& Podcast::episodes() const { return d->episodes_; } PodcastEpisodeList* Podcast::mutable_episodes() { return &d->episodes_; } void Podcast::set_episodes(const PodcastEpisodeList& v) { d->episodes_ = v; } -void Podcast::add_episode(const PodcastEpisode& episode) { d->episodes_.append(episode); } +void Podcast::add_episode(const PodcastEpisode& episode) { + d->episodes_.append(episode); +} void Podcast::InitFromQuery(const QSqlQuery& query) { d->database_id_ = query.value(0).toInt(); diff --git a/src/podcasts/podcast.h b/src/podcasts/podcast.h index e793af409..d607ee03d 100644 --- a/src/podcasts/podcast.h +++ b/src/podcasts/podcast.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,11 +26,11 @@ #include namespace mygpo { - class Podcast; +class Podcast; } class Podcast { -public: + public: Podcast(); Podcast(const Podcast& other); ~Podcast(); @@ -82,8 +82,12 @@ public: // Small images are suitable for 16x16 icons in lists. Large images are // used in detailed information displays. - const QUrl& ImageUrlLarge() const { return image_url_large().isValid() ? image_url_large() : image_url_small(); } - const QUrl& ImageUrlSmall() const { return image_url_small().isValid() ? image_url_small() : image_url_large(); } + const QUrl& ImageUrlLarge() const { + return image_url_large().isValid() ? image_url_large() : image_url_small(); + } + const QUrl& ImageUrlSmall() const { + return image_url_small().isValid() ? image_url_small() : image_url_large(); + } // These are stored in a different database table, and aren't loaded or // persisted by InitFromQuery or BindToQuery. @@ -92,9 +96,9 @@ public: void set_episodes(const PodcastEpisodeList& v); void add_episode(const PodcastEpisode& episode); - Podcast& operator =(const Podcast& other); + Podcast& operator=(const Podcast& other); -private: + private: struct Private; QSharedDataPointer d; }; @@ -103,4 +107,4 @@ Q_DECLARE_METATYPE(Podcast) typedef QList PodcastList; Q_DECLARE_METATYPE(QList) -#endif // PODCAST_H +#endif // PODCAST_H diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index cd3b13578..18dc23cb5 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,11 +24,7 @@ #include PodcastBackend::PodcastBackend(Application* app, QObject* parent) - : QObject(parent), - app_(app), - db_(app->database()) -{ -} + : QObject(parent), app_(app), db_(app->database()) {} void PodcastBackend::Subscribe(Podcast* podcast) { // If this podcast is already in the database, do nothing @@ -48,13 +44,15 @@ void PodcastBackend::Subscribe(Podcast* podcast) { ScopedTransaction t(&db); // Insert the podcast. - QSqlQuery q("INSERT INTO podcasts (" + Podcast::kColumnSpec + ")" - " VALUES (" + Podcast::kBindSpec + ")", db); + QSqlQuery q("INSERT INTO podcasts (" + Podcast::kColumnSpec + + ")" + " VALUES (" + + Podcast::kBindSpec + ")", + db); podcast->BindToQuery(&q); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; // Update the database ID. const int database_id = q.lastInsertId().toInt(); @@ -62,7 +60,7 @@ void PodcastBackend::Subscribe(Podcast* podcast) { // Update the IDs of any episodes. PodcastEpisodeList* episodes = podcast->mutable_episodes(); - for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin(); it != episodes->end(); ++it) { it->set_podcast_database_id(database_id); } @@ -88,30 +86,31 @@ void PodcastBackend::Unsubscribe(const Podcast& podcast) { QSqlQuery q("DELETE FROM podcasts WHERE ROWID = :id", db); q.bindValue(":id", podcast.database_id()); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; // Remove all episodes in the podcast q = QSqlQuery("DELETE FROM podcast_episodes WHERE podcast_id = :id", db); q.bindValue(":id", podcast.database_id()); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; t.Commit(); emit SubscriptionRemoved(podcast); } -void PodcastBackend::AddEpisodes(PodcastEpisodeList* episodes, QSqlDatabase* db) { - QSqlQuery q("INSERT INTO podcast_episodes (" + PodcastEpisode::kColumnSpec + ")" - " VALUES (" + PodcastEpisode::kBindSpec + ")", *db); +void PodcastBackend::AddEpisodes(PodcastEpisodeList* episodes, + QSqlDatabase* db) { + QSqlQuery q("INSERT INTO podcast_episodes (" + PodcastEpisode::kColumnSpec + + ")" + " VALUES (" + + PodcastEpisode::kBindSpec + ")", + *db); - for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin(); it != episodes->end(); ++it) { it->BindToQuery(&q); q.exec(); - if (db_->CheckErrors(q)) - continue; + if (db_->CheckErrors(q)) continue; const int database_id = q.lastInsertId().toInt(); it->set_database_id(database_id); @@ -134,12 +133,14 @@ void PodcastBackend::UpdateEpisodes(const PodcastEpisodeList& episodes) { QSqlDatabase db(db_->Connect()); ScopedTransaction t(&db); - QSqlQuery q("UPDATE podcast_episodes" - " SET listened = :listened," - " listened_date = :listened_date," - " downloaded = :downloaded," - " local_url = :local_url" - " WHERE ROWID = :id", db); + QSqlQuery q( + "UPDATE podcast_episodes" + " SET listened = :listened," + " listened_date = :listened_date," + " downloaded = :downloaded," + " local_url = :local_url" + " WHERE ROWID = :id", + db); for (const PodcastEpisode& episode : episodes) { q.bindValue(":listened", episode.listened()); @@ -164,8 +165,7 @@ PodcastList PodcastBackend::GetAllSubscriptions() { QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + " FROM podcasts", db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { Podcast podcast; @@ -183,8 +183,9 @@ Podcast PodcastBackend::GetSubscriptionById(int id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + - " FROM podcasts" - " WHERE ROWID = :id", db); + " FROM podcasts" + " WHERE ROWID = :id", + db); q.bindValue(":id", id); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -201,8 +202,9 @@ Podcast PodcastBackend::GetSubscriptionByUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + - " FROM podcasts" - " WHERE url = :url", db); + " FROM podcasts" + " WHERE url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -219,12 +221,12 @@ PodcastEpisodeList PodcastBackend::GetEpisodes(int podcast_id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE podcast_id = :id", db); + " FROM podcast_episodes" + " WHERE podcast_id = :id", + db); q.bindValue(":db", podcast_id); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; @@ -242,8 +244,9 @@ PodcastEpisode PodcastBackend::GetEpisodeById(int id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE ROWID = :id", db); + " FROM podcast_episodes" + " WHERE ROWID = :id", + db); q.bindValue(":db", id); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -260,8 +263,9 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE url = :url", db); + " FROM podcast_episodes" + " WHERE url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -278,9 +282,10 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrlOrLocalUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE url = :url" - " OR local_url = :url", db); + " FROM podcast_episodes" + " WHERE url = :url" + " OR local_url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -290,20 +295,21 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrlOrLocalUrl(const QUrl& url) { return ret; } -PodcastEpisodeList PodcastBackend::GetOldDownloadedEpisodes(const QDateTime& max_listened_date) { +PodcastEpisodeList PodcastBackend::GetOldDownloadedEpisodes( + const QDateTime& max_listened_date) { PodcastEpisodeList ret; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE downloaded = 'true'" - " AND listened_date <= :max_listened_date", db); + " FROM podcast_episodes" + " WHERE downloaded = 'true'" + " AND listened_date <= :max_listened_date", + db); q.bindValue(":max_listened_date", max_listened_date.toTime_t()); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; @@ -321,12 +327,12 @@ PodcastEpisodeList PodcastBackend::GetNewDownloadedEpisodes() { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE downloaded = 'true'" - " AND listened = 'false'", db); + " FROM podcast_episodes" + " WHERE downloaded = 'true'" + " AND listened = 'false'", + db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; diff --git a/src/podcasts/podcastbackend.h b/src/podcasts/podcastbackend.h index 87f5264a0..c5d1325d1 100644 --- a/src/podcasts/podcastbackend.h +++ b/src/podcasts/podcastbackend.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,7 +28,7 @@ class Database; class PodcastBackend : public QObject { Q_OBJECT -public: + public: PodcastBackend(Application* app, QObject* parent = 0); // Adds the podcast and any included Episodes to the database. Updates the @@ -58,7 +58,8 @@ public: // Returns a list of episodes that have local data (downloaded=true) but were // last listened to before the given QDateTime. This query is NOT indexed so // it involves a full search of the table. - PodcastEpisodeList GetOldDownloadedEpisodes(const QDateTime& max_listened_date); + PodcastEpisodeList GetOldDownloadedEpisodes( + const QDateTime& max_listened_date); PodcastEpisodeList GetNewDownloadedEpisodes(); // Adds episodes to the database. Every episode must have a valid @@ -68,7 +69,7 @@ public: // Updates the editable fields (listened, listened_date, downloaded, and // local_url) on episodes that must already exist in the database. void UpdateEpisodes(const PodcastEpisodeList& episodes); - + signals: void SubscriptionAdded(const Podcast& podcast); void SubscriptionRemoved(const Podcast& podcast); @@ -79,14 +80,14 @@ signals: // Emitted when existing episodes are updated. void EpisodesUpdated(const PodcastEpisodeList& episodes); -private: + private: // Adds each episode to the database, setting their IDs after inserting each // one. void AddEpisodes(PodcastEpisodeList* episodes, QSqlDatabase* db); -private: + private: Application* app_; Database* db_; }; -#endif // PODCASTBACKEND_H +#endif // PODCASTBACKEND_H diff --git a/src/podcasts/podcastdiscoverymodel.cpp b/src/podcasts/podcastdiscoverymodel.cpp index 1283674bd..b16b9ef01 100644 --- a/src/podcasts/podcastdiscoverymodel.cpp +++ b/src/podcasts/podcastdiscoverymodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,18 +26,19 @@ #include PodcastDiscoveryModel::PodcastDiscoveryModel(Application* app, QObject* parent) - : QStandardItemModel(parent), - app_(app), - icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), - default_icon_(":providers/podcast16.png") -{ + : QStandardItemModel(parent), + app_(app), + icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), + default_icon_(":providers/podcast16.png") { icon_loader_->SetModel(this); } QVariant PodcastDiscoveryModel::data(const QModelIndex& index, int role) const { if (index.isValid() && role == Qt::DecorationRole && - QStandardItemModel::data(index, Role_StartedLoadingImage).toBool() == false) { - const QUrl image_url = QStandardItemModel::data(index, Role_ImageUrl).toUrl(); + QStandardItemModel::data(index, Role_StartedLoadingImage).toBool() == + false) { + const QUrl image_url = + QStandardItemModel::data(index, Role_ImageUrl).toUrl(); if (image_url.isValid()) { const_cast(this)->LazyLoadImage(image_url, index); } @@ -46,7 +47,8 @@ QVariant PodcastDiscoveryModel::data(const QModelIndex& index, int role) const { return QStandardItemModel::data(index, role); } -QStandardItem* PodcastDiscoveryModel::CreatePodcastItem(const Podcast& podcast) { +QStandardItem* PodcastDiscoveryModel::CreatePodcastItem( + const Podcast& podcast) { QStandardItem* item = new QStandardItem; item->setIcon(default_icon_); item->setText(podcast.title()); @@ -68,25 +70,28 @@ QStandardItem* PodcastDiscoveryModel::CreateFolder(const QString& name) { return item; } -QStandardItem* PodcastDiscoveryModel::CreateOpmlContainerItem(const OpmlContainer& container) { +QStandardItem* PodcastDiscoveryModel::CreateOpmlContainerItem( + const OpmlContainer& container) { QStandardItem* item = CreateFolder(container.name); CreateOpmlContainerItems(container, item); return item; } -void PodcastDiscoveryModel::CreateOpmlContainerItems(const OpmlContainer& container, QStandardItem* parent) { - foreach (const OpmlContainer& child, container.containers) { +void PodcastDiscoveryModel::CreateOpmlContainerItems( + const OpmlContainer& container, QStandardItem* parent) { + foreach(const OpmlContainer & child, container.containers) { QStandardItem* child_item = CreateOpmlContainerItem(child); parent->appendRow(child_item); } - foreach (const Podcast& child, container.feeds) { + foreach(const Podcast & child, container.feeds) { QStandardItem* child_item = CreatePodcastItem(child); parent->appendRow(child_item); } } -void PodcastDiscoveryModel::LazyLoadImage(const QUrl& url, const QModelIndex& index) { +void PodcastDiscoveryModel::LazyLoadImage(const QUrl& url, + const QModelIndex& index) { QStandardItem* item = itemFromIndex(index); item->setData(true, Role_StartedLoadingImage); icon_loader_->LoadIcon(url.toString(), QString(), item); diff --git a/src/podcasts/podcastdiscoverymodel.h b/src/podcasts/podcastdiscoverymodel.h index c791c9c46..28be25e3c 100644 --- a/src/podcasts/podcastdiscoverymodel.h +++ b/src/podcasts/podcastdiscoverymodel.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -31,25 +31,21 @@ class StandardItemIconLoader; class PodcastDiscoveryModel : public QStandardItemModel { Q_OBJECT -public: + public: PodcastDiscoveryModel(Application* app, QObject* parent = 0); - enum Type { - Type_Folder, - Type_Podcast, - Type_LoadingIndicator - }; + enum Type { Type_Folder, Type_Podcast, Type_LoadingIndicator }; enum Role { Role_Podcast = Qt::UserRole, Role_Type, Role_ImageUrl, Role_StartedLoadingImage, - RoleCount }; - void CreateOpmlContainerItems(const OpmlContainer& container, QStandardItem* parent); + void CreateOpmlContainerItems(const OpmlContainer& container, + QStandardItem* parent); QStandardItem* CreateOpmlContainerItem(const OpmlContainer& container); QStandardItem* CreatePodcastItem(const Podcast& podcast); QStandardItem* CreateFolder(const QString& name); @@ -57,10 +53,10 @@ public: QVariant data(const QModelIndex& index, int role) const; -private: + private: void LazyLoadImage(const QUrl& url, const QModelIndex& index); - -private: + + private: Application* app_; StandardItemIconLoader* icon_loader_; @@ -68,4 +64,4 @@ private: QIcon folder_icon_; }; -#endif // PODCASTDISCOVERYMODEL_H +#endif // PODCASTDISCOVERYMODEL_H diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index 4b5127fd9..c2982404c 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -34,7 +34,8 @@ #include const char* PodcastDownloader::kSettingsGroup = "Podcasts"; -const int PodcastDownloader::kAutoDeleteCheckIntervalMsec = 15 * 60 * kMsecPerSec; // 15 minutes +const int PodcastDownloader::kAutoDeleteCheckIntervalMsec = + 15 * 60 * kMsecPerSec; // 15 minutes struct PodcastDownloader::Task { Task() : file(nullptr) {} @@ -45,17 +46,16 @@ struct PodcastDownloader::Task { }; PodcastDownloader::PodcastDownloader(Application* app, QObject* parent) - : QObject(parent), - app_(app), - backend_(app_->podcast_backend()), - network_(new NetworkAccessManager(this)), - disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), - auto_download_(false), - delete_after_secs_(0), - current_task_(nullptr), - last_progress_signal_(0), - auto_delete_timer_(new QTimer(this)) -{ + : QObject(parent), + app_(app), + backend_(app_->podcast_backend()), + network_(new NetworkAccessManager(this)), + disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), + auto_download_(false), + delete_after_secs_(0), + current_task_(nullptr), + last_progress_signal_(0), + auto_delete_timer_(new QTimer(this)) { connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), SLOT(EpisodesAdded(PodcastEpisodeList))); connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), @@ -91,8 +91,7 @@ void PodcastDownloader::ReloadSettings() { } void PodcastDownloader::DownloadEpisode(const PodcastEpisode& episode) { - if (downloading_episode_ids_.contains(episode.database_id())) - return; + if (downloading_episode_ids_.contains(episode.database_id())) return; downloading_episode_ids_.insert(episode.database_id()); Task* task = new Task; @@ -109,7 +108,8 @@ void PodcastDownloader::DownloadEpisode(const PodcastEpisode& episode) { } void PodcastDownloader::DeleteEpisode(const PodcastEpisode& episode) { - if (!episode.downloaded() || downloading_episode_ids_.contains(episode.database_id())) + if (!episode.downloaded() || + downloading_episode_ids_.contains(episode.database_id())) return; // Delete the local file @@ -127,7 +127,7 @@ void PodcastDownloader::DeleteEpisode(const PodcastEpisode& episode) { void PodcastDownloader::FinishAndDelete(Task* task) { Podcast podcast = - backend_->GetSubscriptionById(task->episode.podcast_database_id()); + backend_->GetSubscriptionById(task->episode.podcast_database_id()); Song song = task->episode.ToSong(podcast); downloading_episode_ids_.remove(task->episode.database_id()); @@ -140,13 +140,13 @@ void PodcastDownloader::FinishAndDelete(Task* task) { NextTask(); } -QString PodcastDownloader::FilenameForEpisode(const QString& directory, - const PodcastEpisode& episode) const { +QString PodcastDownloader::FilenameForEpisode( + const QString& directory, const PodcastEpisode& episode) const { const QString file_extension = QFileInfo(episode.url().path()).suffix(); int count = 0; // The file name contains the publication date and episode title - QString base_filename = + QString base_filename = episode.publication_date().date().toString(Qt::ISODate) + "-" + SanitiseFilenameComponent(episode.title()); @@ -156,11 +156,11 @@ QString PodcastDownloader::FilenameForEpisode(const QString& directory, QString filename; if (count == 0) { - filename = QString("%1/%2.%3").arg( - directory, base_filename, file_extension); + filename = + QString("%1/%2.%3").arg(directory, base_filename, file_extension); } else { filename = QString("%1/%2 (%3).%4").arg( - directory, base_filename, QString::number(count), file_extension); + directory, base_filename, QString::number(count), file_extension); } if (!QFile::exists(filename)) { @@ -184,8 +184,8 @@ void PodcastDownloader::StartDownloading(Task* task) { return; } - const QString directory = download_dir_ + "/" + - SanitiseFilenameComponent(podcast.title()); + const QString directory = + download_dir_ + "/" + SanitiseFilenameComponent(podcast.title()); const QString filepath = FilenameForEpisode(directory, task->episode); // Open the output file @@ -220,25 +220,21 @@ void PodcastDownloader::NextTask() { void PodcastDownloader::ReplyReadyRead() { QNetworkReply* reply = qobject_cast(sender())->reply(); - if (!reply || !current_task_ || !current_task_->file) - return; + if (!reply || !current_task_ || !current_task_->file) return; forever { const qint64 bytes = reply->bytesAvailable(); - if (bytes <= 0) - break; + if (bytes <= 0) break; current_task_->file->write(reply->read(bytes)); } } void PodcastDownloader::ReplyDownloadProgress(qint64 received, qint64 total) { - if (!current_task_ || !current_task_->file || total < 1024) - return; + if (!current_task_ || !current_task_->file || total < 1024) return; const time_t current_time = QDateTime::currentDateTime().toTime_t(); - if (last_progress_signal_ == current_time) - return; + if (last_progress_signal_ == current_time) return; last_progress_signal_ = current_time; emit ProgressChanged(current_task_->episode, Downloading, @@ -247,8 +243,7 @@ void PodcastDownloader::ReplyDownloadProgress(qint64 received, qint64 total) { void PodcastDownloader::ReplyFinished() { RedirectFollower* reply = qobject_cast(sender()); - if (!reply || !current_task_ || !current_task_->file) - return; + if (!reply || !current_task_ || !current_task_->file) return; reply->deleteLater(); @@ -266,7 +261,8 @@ void PodcastDownloader::ReplyFinished() { // Tell the database the episode has been updated. Get it from the DB again // in case the listened field changed in the mean time. - PodcastEpisode episode = backend_->GetEpisodeById(current_task_->episode.database_id()); + PodcastEpisode episode = + backend_->GetEpisodeById(current_task_->episode.database_id()); episode.set_downloaded(true); episode.set_local_url(QUrl::fromLocalFile(current_task_->file->fileName())); backend_->UpdateEpisodes(PodcastEpisodeList() << episode); @@ -274,8 +270,11 @@ void PodcastDownloader::ReplyFinished() { FinishAndDelete(current_task_); } -QString PodcastDownloader::SanitiseFilenameComponent(const QString& text) const { - return QString(text).replace(disallowed_filename_characters_, " ").simplified(); +QString PodcastDownloader::SanitiseFilenameComponent(const QString& text) + const { + return QString(text) + .replace(disallowed_filename_characters_, " ") + .simplified(); } void PodcastDownloader::SubscriptionAdded(const Podcast& podcast) { @@ -298,14 +297,13 @@ void PodcastDownloader::AutoDelete() { QDateTime max_date = QDateTime::currentDateTime(); max_date.addSecs(-delete_after_secs_); - PodcastEpisodeList old_episodes = backend_->GetOldDownloadedEpisodes(max_date); - if (old_episodes.isEmpty()) - return; + PodcastEpisodeList old_episodes = + backend_->GetOldDownloadedEpisodes(max_date); + if (old_episodes.isEmpty()) return; qLog(Info) << "Deleting" << old_episodes.count() << "episodes because they were last listened to" - << (delete_after_secs_ / kSecsPerDay) - << "days ago"; + << (delete_after_secs_ / kSecsPerDay) << "days ago"; for (const PodcastEpisode& episode : old_episodes) { DeleteEpisode(episode); diff --git a/src/podcasts/podcastdownloader.h b/src/podcasts/podcastdownloader.h index 32804c32a..4476c62a5 100644 --- a/src/podcasts/podcastdownloader.h +++ b/src/podcasts/podcastdownloader.h @@ -41,22 +41,17 @@ class QNetworkAccessManager; class PodcastDownloader : public QObject { Q_OBJECT -public: + public: PodcastDownloader(Application* app, QObject* parent = 0); - enum State { - NotDownloading, - Queued, - Downloading, - Finished - }; + enum State { NotDownloading, Queued, Downloading, Finished }; static const char* kSettingsGroup; static const int kAutoDeleteCheckIntervalMsec; QString DefaultDownloadDir() const; -public slots: + public slots: // Adds the episode to the download queue void DownloadEpisode(const PodcastEpisode& episode); @@ -67,7 +62,7 @@ signals: void ProgressChanged(const PodcastEpisode& episode, PodcastDownloader::State state, int percent); -private slots: + private slots: void ReloadSettings(); void SubscriptionAdded(const Podcast& podcast); @@ -79,7 +74,7 @@ private slots: void AutoDelete(); -private: + private: struct Task; void StartDownloading(Task* task); @@ -90,7 +85,7 @@ private: const PodcastEpisode& episode) const; QString SanitiseFilenameComponent(const QString& text) const; -private: + private: Application* app_; PodcastBackend* backend_; QNetworkAccessManager* network_; @@ -110,4 +105,4 @@ private: QTimer* auto_delete_timer_; }; -#endif // PODCASTDOWNLOADER_H +#endif // PODCASTDOWNLOADER_H diff --git a/src/podcasts/podcastepisode.cpp b/src/podcasts/podcastepisode.cpp index 4924a7810..b4e806e57 100644 --- a/src/podcasts/podcastepisode.cpp +++ b/src/podcasts/podcastepisode.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,15 +26,26 @@ #include #include -const QStringList PodcastEpisode::kColumns = QStringList() - << "podcast_id" << "title" << "description" << "author" - << "publication_date" << "duration_secs" << "url" << "listened" - << "listened_date" << "downloaded" << "local_url" << "extra"; +const QStringList PodcastEpisode::kColumns = QStringList() << "podcast_id" + << "title" + << "description" + << "author" + << "publication_date" + << "duration_secs" + << "url" + << "listened" + << "listened_date" + << "downloaded" + << "local_url" + << "extra"; const QString PodcastEpisode::kColumnSpec = PodcastEpisode::kColumns.join(", "); -const QString PodcastEpisode::kJoinSpec = Utilities::Prepend("e.", PodcastEpisode::kColumns).join(", "); -const QString PodcastEpisode::kBindSpec = Utilities::Prepend(":", PodcastEpisode::kColumns).join(", "); -const QString PodcastEpisode::kUpdateSpec = Utilities::Updateify(PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kJoinSpec = + Utilities::Prepend("e.", PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kBindSpec = + Utilities::Prepend(":", PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kUpdateSpec = + Utilities::Updateify(PodcastEpisode::kColumns).join(", "); struct PodcastEpisode::Private : public QSharedData { Private(); @@ -59,61 +70,68 @@ struct PodcastEpisode::Private : public QSharedData { }; PodcastEpisode::Private::Private() - : database_id_(-1), - podcast_database_id_(-1), - duration_secs_(-1), - listened_(false), - downloaded_(false) -{ -} + : database_id_(-1), + podcast_database_id_(-1), + duration_secs_(-1), + listened_(false), + downloaded_(false) {} -PodcastEpisode::PodcastEpisode() - : d(new Private) -{ -} +PodcastEpisode::PodcastEpisode() : d(new Private) {} -PodcastEpisode::PodcastEpisode(const PodcastEpisode& other) - : d(other.d) -{ -} +PodcastEpisode::PodcastEpisode(const PodcastEpisode& other) : d(other.d) {} -PodcastEpisode::~PodcastEpisode() { -} +PodcastEpisode::~PodcastEpisode() {} -PodcastEpisode& PodcastEpisode::operator =(const PodcastEpisode& other) { +PodcastEpisode& PodcastEpisode::operator=(const PodcastEpisode& other) { d = other.d; return *this; } int PodcastEpisode::database_id() const { return d->database_id_; } -int PodcastEpisode::podcast_database_id() const { return d->podcast_database_id_; } +int PodcastEpisode::podcast_database_id() const { + return d->podcast_database_id_; +} const QString& PodcastEpisode::title() const { return d->title_; } const QString& PodcastEpisode::description() const { return d->description_; } const QString& PodcastEpisode::author() const { return d->author_; } -const QDateTime& PodcastEpisode::publication_date() const { return d->publication_date_; } +const QDateTime& PodcastEpisode::publication_date() const { + return d->publication_date_; +} int PodcastEpisode::duration_secs() const { return d->duration_secs_; } const QUrl& PodcastEpisode::url() const { return d->url_; } bool PodcastEpisode::listened() const { return d->listened_; } -const QDateTime& PodcastEpisode::listened_date() const { return d->listened_date_; } +const QDateTime& PodcastEpisode::listened_date() const { + return d->listened_date_; +} bool PodcastEpisode::downloaded() const { return d->downloaded_; } const QUrl& PodcastEpisode::local_url() const { return d->local_url_; } const QVariantMap& PodcastEpisode::extra() const { return d->extra_; } -QVariant PodcastEpisode::extra(const QString& key) const { return d->extra_[key]; } +QVariant PodcastEpisode::extra(const QString& key) const { + return d->extra_[key]; +} void PodcastEpisode::set_database_id(int v) { d->database_id_ = v; } -void PodcastEpisode::set_podcast_database_id(int v) { d->podcast_database_id_ = v; } +void PodcastEpisode::set_podcast_database_id(int v) { + d->podcast_database_id_ = v; +} void PodcastEpisode::set_title(const QString& v) { d->title_ = v; } void PodcastEpisode::set_description(const QString& v) { d->description_ = v; } void PodcastEpisode::set_author(const QString& v) { d->author_ = v; } -void PodcastEpisode::set_publication_date(const QDateTime& v) { d->publication_date_ = v; } +void PodcastEpisode::set_publication_date(const QDateTime& v) { + d->publication_date_ = v; +} void PodcastEpisode::set_duration_secs(int v) { d->duration_secs_ = v; } void PodcastEpisode::set_url(const QUrl& v) { d->url_ = v; } void PodcastEpisode::set_listened(bool v) { d->listened_ = v; } -void PodcastEpisode::set_listened_date(const QDateTime& v) { d->listened_date_ = v; } +void PodcastEpisode::set_listened_date(const QDateTime& v) { + d->listened_date_ = v; +} void PodcastEpisode::set_downloaded(bool v) { d->downloaded_ = v; } void PodcastEpisode::set_local_url(const QUrl& v) { d->local_url_ = v; } void PodcastEpisode::set_extra(const QVariantMap& v) { d->extra_ = v; } -void PodcastEpisode::set_extra(const QString& key, const QVariant& value) { d->extra_[key] = value; } +void PodcastEpisode::set_extra(const QString& key, const QVariant& value) { + d->extra_[key] = value; +} void PodcastEpisode::InitFromQuery(const QSqlQuery& query) { d->database_id_ = query.value(0).toInt(); @@ -175,8 +193,7 @@ Song PodcastEpisode::ToSong(const Podcast& podcast) const { ret.set_album(podcast.title().simplified()); ret.set_art_automatic(podcast.ImageUrlLarge().toString()); - if (author().isEmpty()) - ret.set_artist(podcast.title().simplified()); + if (author().isEmpty()) ret.set_artist(podcast.title().simplified()); } return ret; } diff --git a/src/podcasts/podcastepisode.h b/src/podcasts/podcastepisode.h index 92505f98c..d084c6543 100644 --- a/src/podcasts/podcastepisode.h +++ b/src/podcasts/podcastepisode.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,7 +28,7 @@ class Podcast; class PodcastEpisode { -public: + public: PodcastEpisode(); PodcastEpisode(const PodcastEpisode& other); ~PodcastEpisode(); @@ -76,9 +76,9 @@ public: void set_extra(const QVariantMap& v); void set_extra(const QString& key, const QVariant& value); - PodcastEpisode& operator =(const PodcastEpisode& other); + PodcastEpisode& operator=(const PodcastEpisode& other); -private: + private: struct Private; QSharedDataPointer d; }; @@ -87,4 +87,4 @@ Q_DECLARE_METATYPE(PodcastEpisode) typedef QList PodcastEpisodeList; Q_DECLARE_METATYPE(QList) -#endif // PODCASTEPISODE_H +#endif // PODCASTEPISODE_H diff --git a/src/podcasts/podcastinfowidget.cpp b/src/podcasts/podcastinfowidget.cpp index 8ac024859..8331ed38c 100644 --- a/src/podcasts/podcastinfowidget.cpp +++ b/src/podcasts/podcastinfowidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,11 +21,10 @@ #include "covers/albumcoverloader.h" PodcastInfoWidget::PodcastInfoWidget(QWidget* parent) - : QWidget(parent), - ui_(new Ui_PodcastInfoWidget), - app_(nullptr), - image_id_(0) -{ + : QWidget(parent), + ui_(new Ui_PodcastInfoWidget), + app_(nullptr), + image_id_(0) { ui_->setupUi(this); cover_options_.desired_height_ = 180; @@ -36,38 +35,38 @@ PodcastInfoWidget::PodcastInfoWidget(QWidget* parent) const bool light = palette().color(QPalette::Base).value() > 128; const QColor color = palette().color(QPalette::Dark); QPalette label_palette(palette()); - label_palette.setColor(QPalette::WindowText, light ? color.darker(150) : color.lighter(125)); + label_palette.setColor(QPalette::WindowText, + light ? color.darker(150) : color.lighter(125)); - foreach (QLabel* label, findChildren()) { + foreach(QLabel * label, findChildren()) { if (label->property("field_label").toBool()) { label->setPalette(label_palette); } } } -PodcastInfoWidget::~PodcastInfoWidget() { -} +PodcastInfoWidget::~PodcastInfoWidget() {} void PodcastInfoWidget::SetApplication(Application* app) { app_ = app; - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(ImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(ImageLoaded(quint64, QImage))); } namespace { - template - void SetText(const QString& value, T* label, QLabel* buddy_label = nullptr) { - const bool visible = !value.isEmpty(); +template +void SetText(const QString& value, T* label, QLabel* buddy_label = nullptr) { + const bool visible = !value.isEmpty(); - label->setVisible(visible); - if (buddy_label) { - buddy_label->setVisible(visible); - } - - if (visible) { - label->setText(value); - } + label->setVisible(visible); + if (buddy_label) { + buddy_label->setVisible(visible); } + + if (visible) { + label->setText(value); + } +} } void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { @@ -81,7 +80,7 @@ void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { if (podcast.ImageUrlLarge().isValid()) { // Start loading an image for this item. image_id_ = app_->album_cover_loader()->LoadImageAsync( - cover_options_, podcast.ImageUrlLarge().toString(), QString()); + cover_options_, podcast.ImageUrlLarge().toString(), QString()); } ui_->image->hide(); @@ -92,7 +91,8 @@ void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { SetText(podcast.author(), ui_->author, ui_->author_label); SetText(podcast.owner_name(), ui_->owner, ui_->owner_label); SetText(podcast.link().toString(), ui_->website, ui_->website_label); - SetText(podcast.extra("gpodder:subscribers").toString(), ui_->subscribers, ui_->subscribers_label); + SetText(podcast.extra("gpodder:subscribers").toString(), ui_->subscribers, + ui_->subscribers_label); if (!image_id_) { emit LoadingFinished(); diff --git a/src/podcasts/podcastinfowidget.h b/src/podcasts/podcastinfowidget.h index c5ade4750..158dce9bd 100644 --- a/src/podcasts/podcastinfowidget.h +++ b/src/podcasts/podcastinfowidget.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -31,7 +31,7 @@ class QLabel; class PodcastInfoWidget : public QWidget { Q_OBJECT -public: + public: PodcastInfoWidget(QWidget* parent = 0); ~PodcastInfoWidget(); @@ -42,10 +42,10 @@ public: signals: void LoadingFinished(); -private slots: + private slots: void ImageLoaded(quint64 id, const QImage& image); -private: + private: Ui_PodcastInfoWidget* ui_; AlbumCoverLoaderOptions cover_options_; @@ -55,4 +55,4 @@ private: quint64 image_id_; }; -#endif // PODCASTINFOWIDGET_H +#endif // PODCASTINFOWIDGET_H diff --git a/src/podcasts/podcastparser.cpp b/src/podcasts/podcastparser.cpp index 4cb5afe32..06e570d3f 100644 --- a/src/podcasts/podcastparser.cpp +++ b/src/podcasts/podcastparser.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,7 +24,8 @@ #include const char* PodcastParser::kAtomNamespace = "http://www.w3.org/2005/Atom"; -const char* PodcastParser::kItunesNamespace = "http://www.itunes.com/dtds/podcast-1.0.dtd"; +const char* PodcastParser::kItunesNamespace = + "http://www.itunes.com/dtds/podcast-1.0.dtd"; PodcastParser::PodcastParser() { supported_mime_types_ << "application/rss+xml" @@ -39,7 +40,7 @@ bool PodcastParser::SupportsContentType(const QString& content_type) const { return true; } - foreach (const QString& mime_type, supported_mime_types()) { + foreach(const QString & mime_type, supported_mime_types()) { if (content_type.contains(mime_type)) { return true; } @@ -49,8 +50,7 @@ bool PodcastParser::SupportsContentType(const QString& content_type) const { bool PodcastParser::TryMagic(const QByteArray& data) const { QString str(QString::fromUtf8(data)); - return str.contains(QRegExp("atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "title") { - ret->set_title(reader->readElementText()); - } else if (name == "link" && reader->namespaceUri().isEmpty()) { - ret->set_link(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else if (name == "description") { - ret->set_description(reader->readElementText()); - } else if (name == "owner" && reader->namespaceUri() == kItunesNamespace) { - ParseItunesOwner(reader, ret); - } else if (name == "image") { - ParseImage(reader, ret); - } else if (name == "copyright") { - ret->set_copyright(reader->readElementText()); - } else if (name == "link" && reader->namespaceUri() == kAtomNamespace && - ret->url().isEmpty() && reader->attributes().value("rel") == "self") { - ret->set_url(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else if (name == "item") { - ParseItem(reader, ret); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "title") { + ret->set_title(reader->readElementText()); + } else if (name == "link" && reader->namespaceUri().isEmpty()) { + ret->set_link(QUrl::fromEncoded(reader->readElementText().toAscii())); + } else if (name == "description") { + ret->set_description(reader->readElementText()); + } else if (name == "owner" && + reader->namespaceUri() == kItunesNamespace) { + ParseItunesOwner(reader, ret); + } else if (name == "image") { + ParseImage(reader, ret); + } else if (name == "copyright") { + ret->set_copyright(reader->readElementText()); + } else if (name == "link" && reader->namespaceUri() == kAtomNamespace && + ret->url().isEmpty() && + reader->attributes().value("rel") == "self") { + ret->set_url(QUrl::fromEncoded(reader->readElementText().toAscii())); + } else if (name == "item") { + ParseItem(reader, ret); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } @@ -140,46 +142,48 @@ void PodcastParser::ParseImage(QXmlStreamReader* reader, Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "url") { - ret->set_image_url_large(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "url") { + ret->set_image_url_large( + QUrl::fromEncoded(reader->readElementText().toAscii())); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } -void PodcastParser::ParseItunesOwner(QXmlStreamReader* reader, Podcast* ret) const { +void PodcastParser::ParseItunesOwner(QXmlStreamReader* reader, + Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "name") { - ret->set_owner_name(reader->readElementText()); - } else if (name == "email") { - ret->set_owner_email(reader->readElementText()); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "name") { + ret->set_owner_name(reader->readElementText()); + } else if (name == "email") { + ret->set_owner_email(reader->readElementText()); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } @@ -190,52 +194,55 @@ void PodcastParser::ParseItem(QXmlStreamReader* reader, Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "title") { - episode.set_title(reader->readElementText()); - } else if (name == "description") { - episode.set_description(reader->readElementText()); - } else if (name == "pubDate") { - episode.set_publication_date(Utilities::ParseRFC822DateTime(reader->readElementText())); - } else if (name == "duration" && reader->namespaceUri() == kItunesNamespace) { - // http://www.apple.com/itunes/podcasts/specs.html - QStringList parts = reader->readElementText().split(':'); - if (parts.count() == 2) { - episode.set_duration_secs(parts[0].toInt() * 60 + - parts[1].toInt()); - } else if (parts.count() >= 3) { - episode.set_duration_secs(parts[0].toInt() * 60*60 + - parts[1].toInt() * 60 + - parts[2].toInt()); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "title") { + episode.set_title(reader->readElementText()); + } else if (name == "description") { + episode.set_description(reader->readElementText()); + } else if (name == "pubDate") { + episode.set_publication_date( + Utilities::ParseRFC822DateTime(reader->readElementText())); + } else if (name == "duration" && + reader->namespaceUri() == kItunesNamespace) { + // http://www.apple.com/itunes/podcasts/specs.html + QStringList parts = reader->readElementText().split(':'); + if (parts.count() == 2) { + episode.set_duration_secs(parts[0].toInt() * 60 + parts[1].toInt()); + } else if (parts.count() >= 3) { + episode.set_duration_secs(parts[0].toInt() * 60 * 60 + + parts[1].toInt() * 60 + parts[2].toInt()); + } + } else if (name == "enclosure") { + const QString type = reader->attributes().value("type").toString(); + if (type.startsWith("audio/") || type.startsWith("x-audio/")) { + episode.set_url(QUrl::fromEncoded( + reader->attributes().value("url").toString().toAscii())); + } + Utilities::ConsumeCurrentElement(reader); + } else if (name == "author" && + reader->namespaceUri() == kItunesNamespace) { + episode.set_author(reader->readElementText()); + } else { + Utilities::ConsumeCurrentElement(reader); } - } else if (name == "enclosure") { - const QString type = reader->attributes().value("type").toString(); - if (type.startsWith("audio/") || type.startsWith("x-audio/")) { - episode.set_url(QUrl::fromEncoded(reader->attributes().value("url").toString().toAscii())); + break; + } + + case QXmlStreamReader::EndElement: + if (!episode.url().isEmpty()) { + ret->add_episode(episode); } - Utilities::ConsumeCurrentElement(reader); - } else if (name == "author" && reader->namespaceUri() == kItunesNamespace) { - episode.set_author(reader->readElementText()); - } else { - Utilities::ConsumeCurrentElement(reader); - } - break; - } + return; - case QXmlStreamReader::EndElement: - if (!episode.url().isEmpty()) { - ret->add_episode(episode); - } - return; - - default: - break; + default: + break; } } } -bool PodcastParser::ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) const { +bool PodcastParser::ParseOpml(QXmlStreamReader* reader, + OpmlContainer* ret) const { if (!Utilities::ParseUntilElement(reader, "body")) { return false; } @@ -243,61 +250,63 @@ bool PodcastParser::ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) cons ParseOutline(reader, ret); // OPML files sometimes consist of a single top level container. - while (ret->feeds.count() == 0 && - ret->containers.count() == 1) { + while (ret->feeds.count() == 0 && ret->containers.count() == 1) { *ret = ret->containers[0]; } return true; } -void PodcastParser::ParseOutline(QXmlStreamReader* reader, OpmlContainer* ret) const { +void PodcastParser::ParseOutline(QXmlStreamReader* reader, + OpmlContainer* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name != "outline") { - Utilities::ConsumeCurrentElement(reader); - continue; - } - - QXmlStreamAttributes attributes = reader->attributes(); - - if (attributes.value("type").toString() == "rss") { - // Parse the feed and add it to this container - Podcast podcast; - podcast.set_description(attributes.value("description").toString()); - podcast.set_title(attributes.value("text").toString()); - podcast.set_image_url_large(QUrl::fromEncoded(attributes.value("imageHref").toString().toAscii())); - podcast.set_url(QUrl::fromEncoded(attributes.value("xmlUrl").toString().toAscii())); - ret->feeds.append(podcast); - - // Consume any children and the EndElement. - Utilities::ConsumeCurrentElement(reader); - } else { - // Create a new child container - OpmlContainer child; - - // Take the name from the fullname attribute first if it exists. - child.name = attributes.value("fullname").toString(); - if (child.name.isEmpty()) { - child.name = attributes.value("text").toString(); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name != "outline") { + Utilities::ConsumeCurrentElement(reader); + continue; } - // Parse its contents and add it to this container - ParseOutline(reader, &child); - ret->containers.append(child); + QXmlStreamAttributes attributes = reader->attributes(); + + if (attributes.value("type").toString() == "rss") { + // Parse the feed and add it to this container + Podcast podcast; + podcast.set_description(attributes.value("description").toString()); + podcast.set_title(attributes.value("text").toString()); + podcast.set_image_url_large(QUrl::fromEncoded( + attributes.value("imageHref").toString().toAscii())); + podcast.set_url(QUrl::fromEncoded( + attributes.value("xmlUrl").toString().toAscii())); + ret->feeds.append(podcast); + + // Consume any children and the EndElement. + Utilities::ConsumeCurrentElement(reader); + } else { + // Create a new child container + OpmlContainer child; + + // Take the name from the fullname attribute first if it exists. + child.name = attributes.value("fullname").toString(); + if (child.name.isEmpty()) { + child.name = attributes.value("text").toString(); + } + + // Parse its contents and add it to this container + ParseOutline(reader, &child); + ret->containers.append(child); + } + + break; } - break; - } + case QXmlStreamReader::EndElement: + return; - case QXmlStreamReader::EndElement: - return; - - default: - break; + default: + break; } } } diff --git a/src/podcasts/podcastparser.h b/src/podcasts/podcastparser.h index b5273e544..378cc2455 100644 --- a/src/podcasts/podcastparser.h +++ b/src/podcasts/podcastparser.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,13 +30,15 @@ class QXmlStreamReader; // Returns either a Podcast or an OpmlContainer depending on what was inside // the XML document. class PodcastParser { -public: + public: PodcastParser(); static const char* kAtomNamespace; static const char* kItunesNamespace; - const QStringList& supported_mime_types() const { return supported_mime_types_; } + const QStringList& supported_mime_types() const { + return supported_mime_types_; + } bool SupportsContentType(const QString& content_type) const; // You should check the type of the returned QVariant to see whether it @@ -48,7 +50,7 @@ public: // still return a null QVariant. bool TryMagic(const QByteArray& data) const; -private: + private: bool ParseRss(QXmlStreamReader* reader, Podcast* ret) const; void ParseChannel(QXmlStreamReader* reader, Podcast* ret) const; void ParseImage(QXmlStreamReader* reader, Podcast* ret) const; @@ -58,8 +60,8 @@ private: bool ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) const; void ParseOutline(QXmlStreamReader* reader, OpmlContainer* ret) const; -private: + private: QStringList supported_mime_types_; }; -#endif // PODCASTPARSER_H +#endif // PODCASTPARSER_H diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index c05ef0f26..916982d9a 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -41,49 +41,50 @@ const char* PodcastService::kServiceName = "Podcasts"; const char* PodcastService::kSettingsGroup = "Podcasts"; - class PodcastSortProxyModel : public QSortFilterProxyModel { -public: + public: PodcastSortProxyModel(QObject* parent = nullptr); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; }; - PodcastService::PodcastService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - use_pretty_covers_(true), - icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), - backend_(app->podcast_backend()), - model_(new PodcastServiceModel(this)), - proxy_(new PodcastSortProxyModel(this)), - context_menu_(nullptr), - root_(nullptr), - organise_dialog_(new OrganiseDialog(app_->task_manager())) -{ + : InternetService(kServiceName, app, parent, parent), + use_pretty_covers_(true), + icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), + backend_(app->podcast_backend()), + model_(new PodcastServiceModel(this)), + proxy_(new PodcastSortProxyModel(this)), + context_menu_(nullptr), + root_(nullptr), + organise_dialog_(new OrganiseDialog(app_->task_manager())) { icon_loader_->SetModel(model_); proxy_->setSourceModel(model_); proxy_->setDynamicSortFilter(true); proxy_->sort(0); - connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); - connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), SLOT(SubscriptionRemoved(Podcast))); - connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), SLOT(EpisodesAdded(PodcastEpisodeList))); - connect(backend_, SIGNAL(EpisodesUpdated(PodcastEpisodeList)), SLOT(EpisodesUpdated(PodcastEpisodeList))); + connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), + SLOT(SubscriptionAdded(Podcast))); + connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), + SLOT(SubscriptionRemoved(Podcast))); + connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), + SLOT(EpisodesAdded(PodcastEpisodeList))); + connect(backend_, SIGNAL(EpisodesUpdated(PodcastEpisodeList)), + SLOT(EpisodesUpdated(PodcastEpisodeList))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); } -PodcastService::~PodcastService() { -} +PodcastService::~PodcastService() {} PodcastSortProxyModel::PodcastSortProxyModel(QObject* parent) - : QSortFilterProxyModel(parent) { -} + : QSortFilterProxyModel(parent) {} -bool PodcastSortProxyModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { - const int left_type = left.data(InternetModel::Role_Type).toInt(); +bool PodcastSortProxyModel::lessThan(const QModelIndex& left, + const QModelIndex& right) const { + const int left_type = left.data(InternetModel::Role_Type).toInt(); const int right_type = right.data(InternetModel::Role_Type).toInt(); // The special Add Podcast item comes first @@ -97,18 +98,21 @@ bool PodcastSortProxyModel::lessThan(const QModelIndex& left, const QModelIndex& return QSortFilterProxyModel::lessThan(left, right); switch (left_type) { - case PodcastService::Type_Podcast: - return left.data().toString().localeAwareCompare(right.data().toString()) < 0; + case PodcastService::Type_Podcast: + return left.data().toString().localeAwareCompare( + right.data().toString()) < 0; - case PodcastService::Type_Episode: { - const PodcastEpisode left_episode = left.data(PodcastService::Role_Episode).value(); - const PodcastEpisode right_episode = right.data(PodcastService::Role_Episode).value(); + case PodcastService::Type_Episode: { + const PodcastEpisode left_episode = + left.data(PodcastService::Role_Episode).value(); + const PodcastEpisode right_episode = + right.data(PodcastService::Role_Episode).value(); - return left_episode.publication_date() > right_episode.publication_date(); - } + return left_episode.publication_date() > right_episode.publication_date(); + } - default: - return QSortFilterProxyModel::lessThan(left, right); + default: + return QSortFilterProxyModel::lessThan(left, right); } } @@ -134,22 +138,21 @@ void PodcastService::CopyToDevice(const PodcastEpisodeList& episodes_list) { songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes) { + const QModelIndexList& podcast_indexes) { PodcastEpisode episode_tmp; - SongList songs; + SongList songs; PodcastEpisodeList episodes; Podcast podcast; for (const QModelIndex& index : episode_indexes) { episode_tmp = index.data(Role_Episode).value(); - if (episode_tmp.downloaded()) - episodes << episode_tmp; + if (episode_tmp.downloaded()) episodes << episode_tmp; } for (const QModelIndex& podcast : podcast_indexes) { @@ -165,26 +168,28 @@ void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } void PodcastService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { - case InternetModel::Type_Service: - PopulatePodcastList(model_->invisibleRootItem()); - model()->merged_model()->AddSubModel(parent->index(), proxy_); - break; + case InternetModel::Type_Service: + PopulatePodcastList(model_->invisibleRootItem()); + model()->merged_model()->AddSubModel(parent->index(), proxy_); + break; } } void PodcastService::PopulatePodcastList(QStandardItem* parent) { // Do this here since the downloader won't be created yet in the ctor. - connect(app_->podcast_downloader(), - SIGNAL(ProgressChanged(PodcastEpisode, PodcastDownloader::State, int)), - SLOT(DownloadProgressChanged(PodcastEpisode, PodcastDownloader::State, int))); + connect( + app_->podcast_downloader(), + SIGNAL(ProgressChanged(PodcastEpisode, PodcastDownloader::State, int)), + SLOT(DownloadProgressChanged(PodcastEpisode, PodcastDownloader::State, + int))); if (default_icon_.isNull()) { default_icon_ = QIcon(":providers/podcast16.png"); @@ -195,7 +200,8 @@ void PodcastService::PopulatePodcastList(QStandardItem* parent) { } } -void PodcastService::UpdatePodcastText(QStandardItem* item, int unlistened_count) const { +void PodcastService::UpdatePodcastText(QStandardItem* item, + int unlistened_count) const { const Podcast podcast = item->data(Role_Podcast).value(); QString title = podcast.title().simplified(); @@ -216,7 +222,8 @@ void PodcastService::UpdatePodcastText(QStandardItem* item, int unlistened_count void PodcastService::UpdateEpisodeText(QStandardItem* item, PodcastDownloader::State state, int percent) { - const PodcastEpisode episode = item->data(Role_Episode).value(); + const PodcastEpisode episode = + item->data(Role_Episode).value(); QString title = episode.title().simplified(); QString tooltip; @@ -238,26 +245,27 @@ void PodcastService::UpdateEpisodeText(QStandardItem* item, // Queued or downloading episodes get icons, tooltips, and maybe a title. switch (state) { - case PodcastDownloader::Queued: - if (queued_icon_.isNull()) { - queued_icon_ = QIcon(":icons/22x22/user-away.png"); - } - icon = queued_icon_; - tooltip = tr("Download queued"); - break; + case PodcastDownloader::Queued: + if (queued_icon_.isNull()) { + queued_icon_ = QIcon(":icons/22x22/user-away.png"); + } + icon = queued_icon_; + tooltip = tr("Download queued"); + break; - case PodcastDownloader::Downloading: - if (downloading_icon_.isNull()) { - downloading_icon_ = IconLoader::Load("go-down"); - } - icon = downloading_icon_; - tooltip = tr("Downloading (%1%)...").arg(percent); - title = QString("[ %1% ] %2").arg(QString::number(percent), episode.title()); - break; + case PodcastDownloader::Downloading: + if (downloading_icon_.isNull()) { + downloading_icon_ = IconLoader::Load("go-down"); + } + icon = downloading_icon_; + tooltip = tr("Downloading (%1%)...").arg(percent); + title = + QString("[ %1% ] %2").arg(QString::number(percent), episode.title()); + break; - case PodcastDownloader::Finished: - case PodcastDownloader::NotDownloading: - break; + case PodcastDownloader::Finished: + case PodcastDownloader::NotDownloading: + break; } item->setFont(font); @@ -270,7 +278,8 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { // Add the episodes in this podcast and gather aggregate stats. int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast.database_id())) { + for (const PodcastEpisode& episode : + backend_->GetEpisodes(podcast.database_id())) { if (!episode.listened()) { unlistened_count++; } @@ -281,7 +290,8 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { item->setIcon(default_icon_); item->setData(Type_Podcast, InternetModel::Role_Type); item->setData(QVariant::fromValue(podcast), Role_Podcast); - item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsSelectable); + item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | + Qt::ItemIsSelectable); UpdatePodcastText(item, unlistened_count); // Load the podcast's image if it has one @@ -294,13 +304,16 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { return item; } -QStandardItem* PodcastService::CreatePodcastEpisodeItem(const PodcastEpisode& episode) { +QStandardItem* PodcastService::CreatePodcastEpisodeItem( + const PodcastEpisode& episode) { QStandardItem* item = new QStandardItem; item->setText(episode.title().simplified()); item->setData(Type_Episode, InternetModel::Role_Type); item->setData(QVariant::fromValue(episode), Role_Episode); - item->setData(InternetModel::PlayBehaviour_UseSongLoader, InternetModel::Role_PlayBehaviour); - item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsSelectable); + item->setData(InternetModel::PlayBehaviour_UseSongLoader, + InternetModel::Role_PlayBehaviour); + item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | + Qt::ItemIsSelectable); UpdateEpisodeText(item); @@ -312,47 +325,48 @@ QStandardItem* PodcastService::CreatePodcastEpisodeItem(const PodcastEpisode& ep void PodcastService::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_ = new QMenu; - context_menu_->addAction( - IconLoader::Load("list-add"), tr("Add podcast..."), - this, SLOT(AddPodcast())); - context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Update all podcasts"), - app_->podcast_updater(), SLOT(UpdateAllPodcastsNow())); + context_menu_->addAction(IconLoader::Load("list-add"), tr("Add podcast..."), + this, SLOT(AddPodcast())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Update all podcasts"), app_->podcast_updater(), + SLOT(UpdateAllPodcastsNow())); context_menu_->addSeparator(); context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); update_selected_action_ = context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Update this podcast"), - this, SLOT(UpdateSelectedPodcast())); - download_selected_action_ = context_menu_->addAction( - IconLoader::Load("download"), "", - this, SLOT(DownloadSelectedEpisode())); + IconLoader::Load("view-refresh"), tr("Update this podcast"), this, + SLOT(UpdateSelectedPodcast())); + download_selected_action_ = + context_menu_->addAction(IconLoader::Load("download"), "", this, + SLOT(DownloadSelectedEpisode())); delete_downloaded_action_ = context_menu_->addAction( - IconLoader::Load("edit-delete"), tr("Delete downloaded data"), - this, SLOT(DeleteDownloadedData())); + IconLoader::Load("edit-delete"), tr("Delete downloaded data"), this, + SLOT(DeleteDownloadedData())); copy_to_device_ = context_menu_->addAction( - IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), - this, SLOT(CopyToDevice())); + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Copy to device..."), this, SLOT(CopyToDevice())); remove_selected_action_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Unsubscribe"), - this, SLOT(RemoveSelectedPodcast())); + IconLoader::Load("list-remove"), tr("Unsubscribe"), this, + SLOT(RemoveSelectedPodcast())); context_menu_->addSeparator(); - set_new_action_ = context_menu_->addAction( - tr("Mark as new"), this, SLOT(SetNew())); - set_listened_action_ = context_menu_->addAction( - tr("Mark as listened"), this, SLOT(SetListened())); + set_new_action_ = + context_menu_->addAction(tr("Mark as new"), this, SLOT(SetNew())); + set_listened_action_ = context_menu_->addAction(tr("Mark as listened"), + this, SLOT(SetListened())); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("configure"), tr("Configure podcasts..."), - this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure podcasts..."), this, + SLOT(ShowConfig())); - copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - copy_to_device_, SLOT(setDisabled(bool))); + copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), copy_to_device_, + SLOT(setDisabled(bool))); } selected_episodes_.clear(); @@ -362,28 +376,28 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { for (const QModelIndex& index : model()->selected_indexes()) { switch (index.data(InternetModel::Role_Type).toInt()) { - case Type_Podcast: { - const int id = index.data(Role_Podcast).value().database_id(); - if (!podcast_ids.contains(id)) { - selected_podcasts_.append(index); - explicitly_selected_podcasts_.append(index); - podcast_ids.insert(id); + case Type_Podcast: { + const int id = index.data(Role_Podcast).value().database_id(); + if (!podcast_ids.contains(id)) { + selected_podcasts_.append(index); + explicitly_selected_podcasts_.append(index); + podcast_ids.insert(id); + } + break; } - break; - } - case Type_Episode: { - selected_episodes_.append(index); + case Type_Episode: { + selected_episodes_.append(index); - // Add the parent podcast as well. - const QModelIndex parent = index.parent(); - const int id = parent.data(Role_Podcast).value().database_id(); - if (!podcast_ids.contains(id)) { - selected_podcasts_.append(parent); - podcast_ids.insert(id); + // Add the parent podcast as well. + const QModelIndex parent = index.parent(); + const int id = parent.data(Role_Podcast).value().database_id(); + if (!podcast_ids.contains(id)) { + selected_podcasts_.append(parent); + podcast_ids.insert(id); + } + break; } - break; - } } } @@ -396,7 +410,8 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { set_listened_action_->setEnabled(episodes || podcasts); if (selected_episodes_.count() == 1) { - const PodcastEpisode episode = selected_episodes_[0].data(Role_Episode).value(); + const PodcastEpisode episode = + selected_episodes_[0].data(Role_Episode).value(); const bool downloaded = episode.downloaded(); const bool listened = episode.listened(); @@ -418,7 +433,8 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } if (selected_episodes_.count() > 1) { - download_selected_action_->setText(tr("Download %n episodes", "", selected_episodes_.count())); + download_selected_action_->setText( + tr("Download %n episodes", "", selected_episodes_.count())); } else { download_selected_action_->setText(tr("Download this episode")); } @@ -433,7 +449,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { void PodcastService::UpdateSelectedPodcast() { for (const QModelIndex& index : selected_podcasts_) { app_->podcast_updater()->UpdatePodcastNow( - index.data(Role_Podcast).value()); + index.data(Role_Podcast).value()); } } @@ -483,8 +499,9 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { // Remove any episode ID -> item mappings for the episodes in this podcast. for (int i = 0; i < item->rowCount(); ++i) { QStandardItem* episode_item = item->child(i); - const int episode_id = - episode_item->data(Role_Episode).value().database_id(); + const int episode_id = episode_item->data(Role_Episode) + .value() + .database_id(); episodes_by_database_id_.remove(episode_id); } @@ -500,8 +517,7 @@ void PodcastService::EpisodesAdded(const PodcastEpisodeList& episodes) { for (const PodcastEpisode& episode : episodes) { const int database_id = episode.podcast_database_id(); QStandardItem* parent = podcasts_by_database_id_[database_id]; - if (!parent) - continue; + if (!parent) continue; parent->appendRow(CreatePodcastEpisodeItem(episode)); @@ -527,8 +543,7 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { const int podcast_database_id = episode.podcast_database_id(); QStandardItem* item = episodes_by_database_id_[episode.database_id()]; QStandardItem* parent = podcasts_by_database_id_[podcast_database_id]; - if (!item || !parent) - continue; + if (!item || !parent) continue; // Update the episode data on the item, and update the item's text. item->setData(QVariant::fromValue(episode), Role_Episode); @@ -538,7 +553,8 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { if (!seen_podcast_ids.contains(podcast_database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast_database_id)) { + for (const PodcastEpisode& episode : + backend_->GetEpisodes(podcast_database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -553,14 +569,14 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { void PodcastService::DownloadSelectedEpisode() { for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DownloadEpisode( - index.data(Role_Episode).value()); + index.data(Role_Episode).value()); } } void PodcastService::DeleteDownloadedData() { for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DeleteEpisode( - index.data(Role_Episode).value()); + index.data(Role_Episode).value()); } } @@ -568,8 +584,7 @@ void PodcastService::DownloadProgressChanged(const PodcastEpisode& episode, PodcastDownloader::State state, int percent) { QStandardItem* item = episodes_by_database_id_[episode.database_id()]; - if (!item) - return; + if (!item) return; UpdateEpisodeText(item, state, percent); } @@ -581,8 +596,7 @@ void PodcastService::ShowConfig() { void PodcastService::CurrentSongChanged(const Song& metadata) { // Check whether this song is one of our podcast episodes. PodcastEpisode episode = backend_->GetEpisodeByUrlOrLocalUrl(metadata.url()); - if (!episode.is_valid()) - return; + if (!episode.is_valid()) return; // Mark it as listened if it's not already if (!episode.listened()) { diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 40e135748..1cf0f63fc 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -37,7 +37,7 @@ class QSortFilterProxyModel; class PodcastService : public InternetService { Q_OBJECT -public: + public: PodcastService(Application* app, InternetModel* parent); ~PodcastService(); @@ -50,11 +50,8 @@ public: Type_Episode }; - enum Role { - Role_Podcast = InternetModel::RoleCount, - Role_Episode - }; - + enum Role { Role_Podcast = InternetModel::RoleCount, Role_Episode }; + QStandardItem* CreateRootItem(); void LazyPopulate(QStandardItem* parent); @@ -65,11 +62,11 @@ public: // subscription to the podcast and displays it in the UI. If the QVariant // contains an OPML file then this displays it in the Add Podcast dialog. void SubscribeAndShow(const QVariant& podcast_or_opml); - -public slots: + + public slots: void AddPodcast(); -private slots: + private slots: void UpdateSelectedPodcast(); void RemoveSelectedPodcast(); void DownloadSelectedEpisode(); @@ -84,24 +81,24 @@ private slots: void EpisodesUpdated(const PodcastEpisodeList& episodes); void DownloadProgressChanged(const PodcastEpisode& episode, - PodcastDownloader::State state, - int percent); + PodcastDownloader::State state, int percent); void CurrentSongChanged(const Song& metadata); void CopyToDevice(); void CopyToDevice(const PodcastEpisodeList& episodes_list); void CopyToDevice(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes); + const QModelIndexList& podcast_indexes); -private: + private: void EnsureAddPodcastDialogCreated(); void PopulatePodcastList(QStandardItem* parent); void UpdatePodcastText(QStandardItem* item, int unlistened_count) const; - void UpdateEpisodeText(QStandardItem* item, - PodcastDownloader::State state = PodcastDownloader::NotDownloading, - int percent = 0); + void UpdateEpisodeText( + QStandardItem* item, + PodcastDownloader::State state = PodcastDownloader::NotDownloading, + int percent = 0); QStandardItem* CreatePodcastItem(const Podcast& podcast); QStandardItem* CreatePodcastEpisodeItem(const PodcastEpisode& episode); @@ -109,14 +106,12 @@ private: QModelIndex MapToMergedModel(const QModelIndex& index) const; void SetListened(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes, - bool listened); - void SetListened(const PodcastEpisodeList& episodes_list, - bool listened); + const QModelIndexList& podcast_indexes, bool listened); + void SetListened(const PodcastEpisodeList& episodes_list, bool listened); void LazyLoadRoot(); -private: + private: bool use_pretty_covers_; StandardItemIconLoader* icon_loader_; @@ -153,4 +148,4 @@ private: QScopedPointer add_podcast_dialog_; }; -#endif // PODCASTSERVICE_H +#endif // PODCASTSERVICE_H diff --git a/src/podcasts/podcastservicemodel.cpp b/src/podcasts/podcastservicemodel.cpp index 1aab9cb07..5bd7ecb6b 100644 --- a/src/podcasts/podcastservicemodel.cpp +++ b/src/podcasts/podcastservicemodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -20,23 +20,21 @@ #include "playlist/songmimedata.h" PodcastServiceModel::PodcastServiceModel(QObject* parent) - : QStandardItemModel(parent) -{ -} + : QStandardItemModel(parent) {} QMimeData* PodcastServiceModel::mimeData(const QModelIndexList& indexes) const { SongMimeData* data = new SongMimeData; QList urls; - foreach (const QModelIndex& index, indexes) { + foreach(const QModelIndex & index, indexes) { switch (index.data(InternetModel::Role_Type).toInt()) { - case PodcastService::Type_Episode: - MimeDataForEpisode(index, data, &urls); - break; + case PodcastService::Type_Episode: + MimeDataForEpisode(index, data, &urls); + break; - case PodcastService::Type_Podcast: - MimeDataForPodcast(index, data, &urls); - break; + case PodcastService::Type_Podcast: + MimeDataForPodcast(index, data, &urls); + break; } } @@ -45,10 +43,10 @@ QMimeData* PodcastServiceModel::mimeData(const QModelIndexList& indexes) const { } void PodcastServiceModel::MimeDataForEpisode(const QModelIndex& index, - SongMimeData* data, QList* urls) const { + SongMimeData* data, + QList* urls) const { QVariant episode_variant = index.data(PodcastService::Role_Episode); - if (!episode_variant.isValid()) - return; + if (!episode_variant.isValid()) return; PodcastEpisode episode(episode_variant.value()); @@ -66,7 +64,8 @@ void PodcastServiceModel::MimeDataForEpisode(const QModelIndex& index, } void PodcastServiceModel::MimeDataForPodcast(const QModelIndex& index, - SongMimeData* data, QList* urls) const { + SongMimeData* data, + QList* urls) const { // Get the podcast Podcast podcast; QVariant podcast_variant = index.data(PodcastService::Role_Podcast); @@ -76,10 +75,10 @@ void PodcastServiceModel::MimeDataForPodcast(const QModelIndex& index, // Add each child episode const int children = index.model()->rowCount(index); - for (int i=0 ; i()); Song song = episode.ToSong(podcast); diff --git a/src/podcasts/podcastservicemodel.h b/src/podcasts/podcastservicemodel.h index 463150f8b..15f78451c 100644 --- a/src/podcasts/podcastservicemodel.h +++ b/src/podcasts/podcastservicemodel.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,16 +25,16 @@ class SongMimeData; class PodcastServiceModel : public QStandardItemModel { Q_OBJECT -public: + public: PodcastServiceModel(QObject* parent = 0); - + QMimeData* mimeData(const QModelIndexList& indexes) const; -private: - void MimeDataForPodcast(const QModelIndex& index, - SongMimeData* data, QList* urls) const; - void MimeDataForEpisode(const QModelIndex& index, - SongMimeData* data, QList* urls) const; + private: + void MimeDataForPodcast(const QModelIndex& index, SongMimeData* data, + QList* urls) const; + void MimeDataForEpisode(const QModelIndex& index, SongMimeData* data, + QList* urls) const; }; -#endif // PODCASTSERVICEMODEL_H +#endif // PODCASTSERVICEMODEL_H diff --git a/src/podcasts/podcastsettingspage.cpp b/src/podcasts/podcastsettingspage.cpp index f8f92e029..778135d12 100644 --- a/src/podcasts/podcastsettingspage.cpp +++ b/src/podcasts/podcastsettingspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,40 +33,38 @@ const char* PodcastSettingsPage::kSettingsGroup = "Podcasts"; PodcastSettingsPage::PodcastSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_PodcastSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_PodcastSettingsPage) { ui_->setupUi(this); connect(ui_->login, SIGNAL(clicked()), SLOT(LoginClicked())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(LoginClicked())); connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked())); - connect(ui_->download_dir_browse, SIGNAL(clicked()), SLOT(DownloadDirBrowse())); + connect(ui_->download_dir_browse, SIGNAL(clicked()), + SLOT(DownloadDirBrowse())); ui_->login_state->AddCredentialField(ui_->username); ui_->login_state->AddCredentialField(ui_->device_name); ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->login_group); - ui_->check_interval->setItemData(0, 0); // manually - ui_->check_interval->setItemData(1, 10*60); // 10 minutes - ui_->check_interval->setItemData(2, 20*60); // 20 minutes - ui_->check_interval->setItemData(3, 30*60); // 30 minutes - ui_->check_interval->setItemData(4, 60*60); // 1 hour - ui_->check_interval->setItemData(5, 2*60*60); // 2 hours - ui_->check_interval->setItemData(6, 6*60*60); // 6 hours - ui_->check_interval->setItemData(7, 12*60*60); // 12 hours + ui_->check_interval->setItemData(0, 0); // manually + ui_->check_interval->setItemData(1, 10 * 60); // 10 minutes + ui_->check_interval->setItemData(2, 20 * 60); // 20 minutes + ui_->check_interval->setItemData(3, 30 * 60); // 30 minutes + ui_->check_interval->setItemData(4, 60 * 60); // 1 hour + ui_->check_interval->setItemData(5, 2 * 60 * 60); // 2 hours + ui_->check_interval->setItemData(6, 6 * 60 * 60); // 6 hours + ui_->check_interval->setItemData(7, 12 * 60 * 60); // 12 hours } -PodcastSettingsPage::~PodcastSettingsPage() { - delete ui_; -} +PodcastSettingsPage::~PodcastSettingsPage() { delete ui_; } void PodcastSettingsPage::Load() { QSettings s; s.beginGroup(kSettingsGroup); const int update_interval = s.value("update_interval_secs", 0).toInt(); - ui_->check_interval->setCurrentIndex(ui_->check_interval->findData(update_interval)); + ui_->check_interval->setCurrentIndex( + ui_->check_interval->findData(update_interval)); const QString default_download_dir = dialog()->app()->podcast_downloader()->DefaultDownloadDir(); @@ -76,10 +74,13 @@ void PodcastSettingsPage::Load() { ui_->auto_download->setChecked(s.value("auto_download", false).toBool()); ui_->delete_after->setValue(s.value("delete_after", 0).toInt() / kSecsPerDay); ui_->username->setText(s.value("gpodder_username").toString()); - ui_->device_name->setText(s.value("gpodder_device_name", GPodderSync::DefaultDeviceName()).toString()); + ui_->device_name->setText( + s.value("gpodder_device_name", GPodderSync::DefaultDeviceName()) + .toString()); if (dialog()->app()->gpodder_sync()->is_logged_in()) { - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, ui_->username->text()); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, + ui_->username->text()); } else { ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); } @@ -89,9 +90,10 @@ void PodcastSettingsPage::Save() { QSettings s; s.beginGroup(kSettingsGroup); - s.setValue("update_interval_secs", - ui_->check_interval->itemData(ui_->check_interval->currentIndex())); - s.setValue("download_dir", QDir::fromNativeSeparators(ui_->download_dir->text())); + s.setValue("update_interval_secs", ui_->check_interval->itemData( + ui_->check_interval->currentIndex())); + s.setValue("download_dir", + QDir::fromNativeSeparators(ui_->download_dir->text())); s.setValue("auto_download", ui_->auto_download->isChecked()); s.setValue("delete_after", ui_->delete_after->value() * kSecsPerDay); s.setValue("gpodder_device_name", ui_->device_name->text()); @@ -101,18 +103,17 @@ void PodcastSettingsPage::LoginClicked() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); QNetworkReply* reply = dialog()->app()->gpodder_sync()->Login( - ui_->username->text(), ui_->password->text(), ui_->device_name->text()); + ui_->username->text(), ui_->password->text(), ui_->device_name->text()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*)), reply); } void PodcastSettingsPage::LoginFinished(QNetworkReply* reply) { const bool success = reply->error() == QNetworkReply::NoError; - ui_->login_state->SetLoggedIn(success ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + success ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!success); if (!success) { @@ -129,9 +130,8 @@ void PodcastSettingsPage::LogoutClicked() { void PodcastSettingsPage::DownloadDirBrowse() { QString directory = QFileDialog::getExistingDirectory( - this, tr("Choose podcast download directory"), ui_->download_dir->text()); - if (directory.isEmpty()) - return; + this, tr("Choose podcast download directory"), ui_->download_dir->text()); + if (directory.isEmpty()) return; ui_->download_dir->setText(QDir::toNativeSeparators(directory)); } diff --git a/src/podcasts/podcastsettingspage.h b/src/podcasts/podcastsettingspage.h index 46f8cc850..c3a51565f 100644 --- a/src/podcasts/podcastsettingspage.h +++ b/src/podcasts/podcastsettingspage.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -27,7 +27,7 @@ class QNetworkReply; class PodcastSettingsPage : public SettingsPage { Q_OBJECT -public: + public: PodcastSettingsPage(SettingsDialog* dialog); ~PodcastSettingsPage(); @@ -36,15 +36,15 @@ public: void Load(); void Save(); -private slots: + private slots: void LoginClicked(); void LoginFinished(QNetworkReply* reply); void LogoutClicked(); void DownloadDirBrowse(); -private: + private: Ui_PodcastSettingsPage* ui_; }; -#endif // PODCASTSETTINGSPAGE_H +#endif // PODCASTSETTINGSPAGE_H diff --git a/src/podcasts/podcastupdater.cpp b/src/podcasts/podcastupdater.cpp index 411009243..1720714d2 100644 --- a/src/podcasts/podcastupdater.cpp +++ b/src/podcasts/podcastupdater.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,13 +30,12 @@ const char* PodcastUpdater::kSettingsGroup = "Podcasts"; PodcastUpdater::PodcastUpdater(Application* app, QObject* parent) - : QObject(parent), - app_(app), - update_interval_secs_(0), - update_timer_(new QTimer(this)), - loader_(new PodcastUrlLoader(this)), - pending_replies_(0) -{ + : QObject(parent), + app_(app), + update_interval_secs_(0), + update_timer_(new QTimer(this)), + loader_(new PodcastUrlLoader(this)), + pending_replies_(0) { connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); connect(update_timer_, SIGNAL(timeout()), SLOT(UpdateAllPodcastsNow())); connect(app_->podcast_backend(), SIGNAL(SubscriptionAdded(Podcast)), @@ -78,14 +77,18 @@ void PodcastUpdater::RestartTimer() { qLog(Info) << "Updating podcasts for the first time"; UpdateAllPodcastsNow(); } else { - const QDateTime next_update = last_full_update_.addSecs(update_interval_secs_); - const int secs_until_next_update = QDateTime::currentDateTime().secsTo(next_update); + const QDateTime next_update = + last_full_update_.addSecs(update_interval_secs_); + const int secs_until_next_update = + QDateTime::currentDateTime().secsTo(next_update); if (secs_until_next_update < 0) { - qLog(Info) << "Updating podcasts" << (-secs_until_next_update) << "seconds late"; + qLog(Info) << "Updating podcasts" << (-secs_until_next_update) + << "seconds late"; UpdateAllPodcastsNow(); } else { - qLog(Info) << "Updating podcasts at" << next_update << "(in" << secs_until_next_update << "seconds)"; + qLog(Info) << "Updating podcasts at" << next_update << "(in" + << secs_until_next_update << "seconds)"; update_timer_->start(secs_until_next_update * kMsecPerSec); } } @@ -103,24 +106,25 @@ void PodcastUpdater::SubscriptionAdded(const Podcast& podcast) { void PodcastUpdater::UpdatePodcastNow(const Podcast& podcast) { PodcastUrlLoaderReply* reply = loader_->Load(podcast.url()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(PodcastLoaded(PodcastUrlLoaderReply*,Podcast,bool)), - reply, podcast, false); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(PodcastLoaded(PodcastUrlLoaderReply*, Podcast, bool)), reply, + podcast, false); } void PodcastUpdater::UpdateAllPodcastsNow() { - foreach (const Podcast& podcast, app_->podcast_backend()->GetAllSubscriptions()) { + foreach(const Podcast & podcast, + app_->podcast_backend()->GetAllSubscriptions()) { PodcastUrlLoaderReply* reply = loader_->Load(podcast.url()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(PodcastLoaded(PodcastUrlLoaderReply*,Podcast,bool)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(PodcastLoaded(PodcastUrlLoaderReply*, Podcast, bool)), reply, podcast, true); - pending_replies_ ++; + pending_replies_++; } } -void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& podcast, - bool one_of_many) { +void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, + const Podcast& podcast, bool one_of_many) { reply->deleteLater(); if (one_of_many) { @@ -140,21 +144,22 @@ void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& } if (reply->result_type() != PodcastUrlLoaderReply::Type_Podcast) { - qLog(Warning) << "The URL" << podcast.url() << "no longer contains a podcast"; + qLog(Warning) << "The URL" << podcast.url() + << "no longer contains a podcast"; return; } // Get the episode URLs we had for this podcast already. QSet existing_urls; - foreach (const PodcastEpisode& episode, - app_->podcast_backend()->GetEpisodes(podcast.database_id())) { + foreach(const PodcastEpisode & episode, + app_->podcast_backend()->GetEpisodes(podcast.database_id())) { existing_urls.insert(episode.url()); } // Add any new episodes PodcastEpisodeList new_episodes; - foreach (const Podcast& reply_podcast, reply->podcast_results()) { - foreach (const PodcastEpisode& episode, reply_podcast.episodes()) { + foreach(const Podcast & reply_podcast, reply->podcast_results()) { + foreach(const PodcastEpisode & episode, reply_podcast.episodes()) { if (!existing_urls.contains(episode.url())) { PodcastEpisode episode_copy(episode); episode_copy.set_podcast_database_id(podcast.database_id()); @@ -164,5 +169,6 @@ void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& } app_->podcast_backend()->AddEpisodes(&new_episodes); - qLog(Info) << "Added" << new_episodes.count() << "new episodes for" << podcast.url(); + qLog(Info) << "Added" << new_episodes.count() << "new episodes for" + << podcast.url(); } diff --git a/src/podcasts/podcastupdater.h b/src/podcasts/podcastupdater.h index feb5cd670..4340537a0 100644 --- a/src/podcasts/podcastupdater.h +++ b/src/podcasts/podcastupdater.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,27 +33,27 @@ class QTimer; class PodcastUpdater : public QObject { Q_OBJECT -public: + public: PodcastUpdater(Application* app, QObject* parent = 0); static const char* kSettingsGroup; -public slots: + public slots: void UpdateAllPodcastsNow(); void UpdatePodcastNow(const Podcast& podcast); -private slots: + private slots: void ReloadSettings(); void SubscriptionAdded(const Podcast& podcast); void PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& podcast, bool one_of_many); -private: + private: void RestartTimer(); void SaveSettings(); -private: + private: Application* app_; QDateTime last_full_update_; @@ -64,4 +64,4 @@ private: int pending_replies_; }; -#endif // PODCASTUPDATER_H +#endif // PODCASTUPDATER_H diff --git a/src/podcasts/podcasturlloader.cpp b/src/podcasts/podcasturlloader.cpp index 849fd409c..15247c077 100644 --- a/src/podcasts/podcasturlloader.cpp +++ b/src/podcasts/podcasturlloader.cpp @@ -27,38 +27,36 @@ const int PodcastUrlLoader::kMaxRedirects = 5; - PodcastUrlLoader::PodcastUrlLoader(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - parser_(new PodcastParser), - html_link_re_(""), - html_link_rel_re_("rel\\s*=\\s*['\"]?\\s*alternate"), - html_link_type_re_("type\\s*=\\s*['\"]?([^'\" ]+)"), - html_link_href_re_("href\\s*=\\s*['\"]?([^'\" ]+)") -{ + : QObject(parent), + network_(new NetworkAccessManager(this)), + parser_(new PodcastParser), + html_link_re_(""), + html_link_rel_re_("rel\\s*=\\s*['\"]?\\s*alternate"), + html_link_type_re_("type\\s*=\\s*['\"]?([^'\" ]+)"), + html_link_href_re_("href\\s*=\\s*['\"]?([^'\" ]+)") { html_link_re_.setMinimal(true); html_link_re_.setCaseSensitivity(Qt::CaseInsensitive); } -PodcastUrlLoader::~PodcastUrlLoader() { - delete parser_; -} +PodcastUrlLoader::~PodcastUrlLoader() { delete parser_; } QUrl PodcastUrlLoader::FixPodcastUrl(const QString& url_text) { QString url_text_copy(url_text.trimmed()); // Thanks gpodder! - QuickPrefixList quick_prefixes = QuickPrefixList() + QuickPrefixList quick_prefixes = + QuickPrefixList() << QuickPrefix("fb:", "http://feeds.feedburner.com/%1") << QuickPrefix("yt:", "https://www.youtube.com/rss/user/%1/videos.rss") << QuickPrefix("sc:", "https://soundcloud.com/%1") << QuickPrefix("fm4od:", "http://onapp1.orf.at/webcam/fm4/fod/%1.xspf") - << QuickPrefix("ytpl:", "https://gdata.youtube.com/feeds/api/playlists/%1"); + << QuickPrefix("ytpl:", + "https://gdata.youtube.com/feeds/api/playlists/%1"); // Check if it matches one of the quick prefixes. - for (QuickPrefixList::const_iterator it = quick_prefixes.constBegin() ; - it != quick_prefixes.constEnd() ; ++it) { + for (QuickPrefixList::const_iterator it = quick_prefixes.constBegin(); + it != quick_prefixes.constEnd(); ++it) { if (url_text_copy.startsWith(it->first)) { url_text_copy = it->second.arg(url_text_copy.mid(it->first.length())); } @@ -105,7 +103,8 @@ PodcastUrlLoaderReply* PodcastUrlLoader::Load(const QUrl& url) { return reply; } -void PodcastUrlLoader::SendErrorAndDelete(const QString& error_text, RequestState* state) { +void PodcastUrlLoader::SendErrorAndDelete(const QString& error_text, + RequestState* state) { state->reply_->SetFinished(error_text); delete state; } @@ -120,20 +119,22 @@ void PodcastUrlLoader::NextRequest(const QUrl& url, RequestState* state) { qLog(Debug) << "Loading URL" << url; QNetworkRequest req(url); - req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, + QNetworkRequest::AlwaysNetwork); QNetworkReply* network_reply = network_->get(req); - NewClosure(network_reply, SIGNAL(finished()), - this, SLOT(RequestFinished(RequestState*, QNetworkReply*)), - state, network_reply); + NewClosure(network_reply, SIGNAL(finished()), this, + SLOT(RequestFinished(RequestState*, QNetworkReply*)), state, + network_reply); } -void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply) { +void PodcastUrlLoader::RequestFinished(RequestState* state, + QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { const QUrl next_url = reply->url().resolved( - reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); NextRequest(next_url, state); return; @@ -148,14 +149,19 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply const QVariant http_status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); if (http_status.isValid() && http_status.toInt() != 200) { - SendErrorAndDelete(QString("HTTP %1: %2").arg( - reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString(), - reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()), state); + SendErrorAndDelete( + QString("HTTP %1: %2") + .arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) + .toString(), + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute) + .toString()), + state); return; } // Check the mime type. - const QString content_type = reply->header(QNetworkRequest::ContentTypeHeader).toString(); + const QString content_type = + reply->header(QNetworkRequest::ContentTypeHeader).toString(); if (parser_->SupportsContentType(content_type)) { const QVariant ret = parser_->Load(reply, reply->url()); @@ -164,7 +170,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } else if (ret.canConvert()) { state->reply_->SetFinished(ret.value()); } else { - SendErrorAndDelete(tr("Failed to parse the XML for this RSS feed"), state); + SendErrorAndDelete(tr("Failed to parse the XML for this RSS feed"), + state); return; } @@ -185,7 +192,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } const QString link_type = html_link_type_re_.cap(1); - const QString href = Utilities::DecodeHtmlEntities(html_link_href_re_.cap(1)); + const QString href = + Utilities::DecodeHtmlEntities(html_link_href_re_.cap(1)); if (parser_->supported_mime_types().contains(link_type)) { NextRequest(QUrl(href), state); @@ -199,13 +207,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } } - PodcastUrlLoaderReply::PodcastUrlLoaderReply(const QUrl& url, QObject* parent) - : QObject(parent), - url_(url), - finished_(false) -{ -} + : QObject(parent), url_(url), finished_(false) {} void PodcastUrlLoaderReply::SetFinished(const PodcastList& results) { result_type_ = Type_Podcast; diff --git a/src/podcasts/podcasturlloader.h b/src/podcasts/podcasturlloader.h index 9f4e0ee91..aa910cc26 100644 --- a/src/podcasts/podcasturlloader.h +++ b/src/podcasts/podcasturlloader.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -32,13 +32,10 @@ class QNetworkReply; class PodcastUrlLoaderReply : public QObject { Q_OBJECT -public: + public: PodcastUrlLoaderReply(const QUrl& url, QObject* parent); - enum ResultType { - Type_Podcast, - Type_Opml - }; + enum ResultType { Type_Podcast, Type_Opml }; const QUrl& url() const { return url_; } bool is_finished() const { return finished_; } @@ -56,7 +53,7 @@ public: signals: void Finished(bool success); -private: + private: QUrl url_; bool finished_; QString error_text_; @@ -66,11 +63,10 @@ private: OpmlContainer opml_results_; }; - class PodcastUrlLoader : public QObject { Q_OBJECT -public: + public: PodcastUrlLoader(QObject* parent = 0); ~PodcastUrlLoader(); @@ -86,7 +82,7 @@ public: static QUrl FixPodcastUrl(const QString& url_text); static QUrl FixPodcastUrl(const QUrl& url); -private: + private: struct RequestState { int redirects_remaining_; PodcastUrlLoaderReply* reply_; @@ -95,14 +91,14 @@ private: typedef QPair QuickPrefix; typedef QList QuickPrefixList; -private slots: + private slots: void RequestFinished(RequestState* state, QNetworkReply* reply); -private: + private: void SendErrorAndDelete(const QString& error_text, RequestState* state); void NextRequest(const QUrl& url, RequestState* state); -private: + private: QNetworkAccessManager* network_; PodcastParser* parser_; @@ -113,4 +109,4 @@ private: QRegExp html_link_href_re_; }; -#endif // PODCASTURLLOADER_H +#endif // PODCASTURLLOADER_H diff --git a/src/smartplaylists/generator.cpp b/src/smartplaylists/generator.cpp index 58cb864b1..b8a935128 100644 --- a/src/smartplaylists/generator.cpp +++ b/src/smartplaylists/generator.cpp @@ -28,11 +28,7 @@ const int Generator::kDefaultLimit = 20; const int Generator::kDefaultDynamicHistory = 5; const int Generator::kDefaultDynamicFuture = 15; -Generator::Generator() - : QObject(nullptr), - backend_(nullptr) -{ -} +Generator::Generator() : QObject(nullptr), backend_(nullptr) {} GeneratorPtr Generator::Create(const QString& type) { if (type == "Query") @@ -44,5 +40,4 @@ GeneratorPtr Generator::Create(const QString& type) { return GeneratorPtr(); } -} // namespace - +} // namespace diff --git a/src/smartplaylists/generator.h b/src/smartplaylists/generator.h index 561e3b8f5..52df8ac76 100644 --- a/src/smartplaylists/generator.h +++ b/src/smartplaylists/generator.h @@ -26,10 +26,11 @@ class LibraryBackend; namespace smart_playlists { -class Generator : public QObject, public std::enable_shared_from_this { +class Generator : public QObject, + public std::enable_shared_from_this { Q_OBJECT -public: + public: Generator(); static const int kDefaultLimit; @@ -60,27 +61,30 @@ public: // If the generator can be used as a dynamic playlist then GenerateMore // should return the next tracks in the sequence. The subclass should - // remember the last GetDynamicHistory() + GetDynamicFuture() tracks and ensure that + // remember the last GetDynamicHistory() + GetDynamicFuture() tracks and + // ensure that // the tracks returned from this method are not in that set. virtual bool is_dynamic() const { return false; } virtual void set_dynamic(bool dynamic) {} // Called from non-UI thread. - virtual PlaylistItemList GenerateMore(int count) { return PlaylistItemList(); } + virtual PlaylistItemList GenerateMore(int count) { + return PlaylistItemList(); + } - virtual int GetDynamicHistory () { return kDefaultDynamicHistory; } - virtual int GetDynamicFuture () { return kDefaultDynamicFuture; } + virtual int GetDynamicHistory() { return kDefaultDynamicHistory; } + virtual int GetDynamicFuture() { return kDefaultDynamicFuture; } signals: void Error(const QString& message); -protected: + protected: LibraryBackend* backend_; -private: + private: QString name_; }; -} // namespace +} // namespace #include "generator_fwd.h" -#endif // PLAYLISTGENERATOR_H +#endif // PLAYLISTGENERATOR_H diff --git a/src/smartplaylists/generator_fwd.h b/src/smartplaylists/generator_fwd.h index 4f46aa135..732168ccb 100644 --- a/src/smartplaylists/generator_fwd.h +++ b/src/smartplaylists/generator_fwd.h @@ -26,6 +26,6 @@ class Generator; typedef std::shared_ptr GeneratorPtr; -} // namespace +} // namespace -#endif // PLAYLISTGENERATOR_FWD_H +#endif // PLAYLISTGENERATOR_FWD_H diff --git a/src/smartplaylists/generatorinserter.cpp b/src/smartplaylists/generatorinserter.cpp index 4881c4c49..7fe511304 100644 --- a/src/smartplaylists/generatorinserter.cpp +++ b/src/smartplaylists/generatorinserter.cpp @@ -28,15 +28,13 @@ namespace smart_playlists { typedef QFuture Future; typedef QFutureWatcher FutureWatcher; -GeneratorInserter::GeneratorInserter( - TaskManager* task_manager, LibraryBackend* library, QObject* parent) - : QObject(parent), - task_manager_(task_manager), - library_(library), - task_id_(-1), - is_dynamic_(false) -{ -} +GeneratorInserter::GeneratorInserter(TaskManager* task_manager, + LibraryBackend* library, QObject* parent) + : QObject(parent), + task_manager_(task_manager), + library_(library), + task_id_(-1), + is_dynamic_(false) {} static PlaylistItemList Generate(GeneratorPtr generator, int dynamic_count) { if (dynamic_count) { @@ -46,9 +44,9 @@ static PlaylistItemList Generate(GeneratorPtr generator, int dynamic_count) { } } -void GeneratorInserter::Load( - Playlist* destination, int row, bool play_now, bool enqueue, - GeneratorPtr generator, int dynamic_count) { +void GeneratorInserter::Load(Playlist* destination, int row, bool play_now, + bool enqueue, GeneratorPtr generator, + int dynamic_count) { task_id_ = task_manager_->StartTask(tr("Loading smart playlist")); destination_ = destination; @@ -85,4 +83,4 @@ void GeneratorInserter::Finished() { deleteLater(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/generatorinserter.h b/src/smartplaylists/generatorinserter.h index bbabc9608..693d35e51 100644 --- a/src/smartplaylists/generatorinserter.h +++ b/src/smartplaylists/generatorinserter.h @@ -33,9 +33,9 @@ namespace smart_playlists { class GeneratorInserter : public QObject { Q_OBJECT -public: - GeneratorInserter(TaskManager* task_manager, - LibraryBackend* library, QObject* parent); + public: + GeneratorInserter(TaskManager* task_manager, LibraryBackend* library, + QObject* parent); void Load(Playlist* destination, int row, bool play_now, bool enqueue, GeneratorPtr generator, int dynamic_count = 0); @@ -44,10 +44,10 @@ signals: void Error(const QString& message); void PlayRequested(const QModelIndex& index); -private slots: + private slots: void Finished(); -private: + private: TaskManager* task_manager_; LibraryBackend* library_; int task_id_; @@ -59,6 +59,6 @@ private: bool is_dynamic_; }; -} // namespace +} // namespace -#endif // PLAYLISTGENERATORINSERTER_H +#endif // PLAYLISTGENERATORINSERTER_H diff --git a/src/smartplaylists/generatormimedata.h b/src/smartplaylists/generatormimedata.h index 5285152de..7232b7b1f 100644 --- a/src/smartplaylists/generatormimedata.h +++ b/src/smartplaylists/generatormimedata.h @@ -28,13 +28,12 @@ namespace smart_playlists { class GeneratorMimeData : public MimeData { Q_OBJECT -public: - GeneratorMimeData(GeneratorPtr generator) - : generator_(generator) {} + public: + GeneratorMimeData(GeneratorPtr generator) : generator_(generator) {} GeneratorPtr generator_; }; -} // namespace +} // namespace -#endif // GENERATORMIMEDATA_H +#endif // GENERATORMIMEDATA_H diff --git a/src/smartplaylists/querygenerator.cpp b/src/smartplaylists/querygenerator.cpp index 4088dbf32..f98a1e573 100644 --- a/src/smartplaylists/querygenerator.cpp +++ b/src/smartplaylists/querygenerator.cpp @@ -22,17 +22,11 @@ namespace smart_playlists { -QueryGenerator::QueryGenerator() - : dynamic_(false), - current_pos_(0) -{ -} +QueryGenerator::QueryGenerator() : dynamic_(false), current_pos_(0) {} -QueryGenerator::QueryGenerator(const QString& name, const Search& search, bool dynamic) - : search_(search), - dynamic_(dynamic), - current_pos_(0) -{ +QueryGenerator::QueryGenerator(const QString& name, const Search& search, + bool dynamic) + : search_(search), dynamic_(dynamic), current_pos_(0) { set_name(name); } @@ -77,9 +71,9 @@ PlaylistItemList QueryGenerator::GenerateMore(int count) { SongList songs = backend_->FindSongs(search_copy); PlaylistItemList items; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { items << PlaylistItemPtr(PlaylistItem::NewFromSongsTable( - backend_->songs_table(), song)); + backend_->songs_table(), song)); previous_ids_ << song.id(); if (previous_ids_.count() > GetDynamicFuture() + GetDynamicHistory()) @@ -88,4 +82,4 @@ PlaylistItemList QueryGenerator::GenerateMore(int count) { return items; } -} // namespace +} // namespace diff --git a/src/smartplaylists/querygenerator.h b/src/smartplaylists/querygenerator.h index 5c9922cf9..0dc633e3f 100644 --- a/src/smartplaylists/querygenerator.h +++ b/src/smartplaylists/querygenerator.h @@ -24,9 +24,10 @@ namespace smart_playlists { class QueryGenerator : public Generator { -public: + public: QueryGenerator(); - QueryGenerator(const QString& name, const Search& search, bool dynamic = false); + QueryGenerator(const QString& name, const Search& search, + bool dynamic = false); QString type() const { return "Query"; } @@ -40,9 +41,9 @@ public: void set_dynamic(bool dynamic) { dynamic_ = dynamic; } Search search() const { return search_; } - int GetDynamicFuture () { return search_.limit_; } + int GetDynamicFuture() { return search_.limit_; } -private: + private: Search search_; bool dynamic_; @@ -50,6 +51,6 @@ private: int current_pos_; }; -} // namespace +} // namespace -#endif // QUERYPLAYLISTGENERATOR_H +#endif // QUERYPLAYLISTGENERATOR_H diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp index a5dd900b1..242245175 100644 --- a/src/smartplaylists/querywizardplugin.cpp +++ b/src/smartplaylists/querywizardplugin.cpp @@ -30,21 +30,18 @@ namespace smart_playlists { class QueryWizardPlugin::SearchPage : public QWizardPage { friend class QueryWizardPlugin; -public: + public: SearchPage(QWidget* parent = 0) - : QWizardPage(parent), - ui_(new Ui_SmartPlaylistQuerySearchPage) - { + : QWizardPage(parent), ui_(new Ui_SmartPlaylistQuerySearchPage) { ui_->setupUi(this); } bool isComplete() const { - if (ui_->type->currentIndex() == 2) // All songs + if (ui_->type->currentIndex() == 2) // All songs return true; - foreach (SearchTermWidget* widget, terms_) { - if (!widget->Term().is_valid()) - return false; + foreach(SearchTermWidget * widget, terms_) { + if (!widget->Term().is_valid()) return false; } return true; } @@ -59,9 +56,9 @@ public: }; class QueryWizardPlugin::SortPage : public QWizardPage { -public: + public: SortPage(QueryWizardPlugin* plugin, QWidget* parent, int next_id) - : QWizardPage(parent), next_id_(next_id), plugin_(plugin) {} + : QWizardPage(parent), next_id_(next_id), plugin_(plugin) {} void showEvent(QShowEvent*) { plugin_->UpdateSortPreview(); } @@ -71,20 +68,15 @@ public: QueryWizardPlugin* plugin_; }; +QueryWizardPlugin::QueryWizardPlugin(Application* app, LibraryBackend* library, + QObject* parent) + : WizardPlugin(app, library, parent), + search_page_(nullptr), + previous_scrollarea_max_(0) {} -QueryWizardPlugin::QueryWizardPlugin(Application* app, LibraryBackend* library, QObject* parent) - : WizardPlugin(app, library, parent), - search_page_(nullptr), - previous_scrollarea_max_(0) -{ -} +QueryWizardPlugin::~QueryWizardPlugin() {} -QueryWizardPlugin::~QueryWizardPlugin() { -} - -QString QueryWizardPlugin::name() const { - return tr("Library search"); -} +QString QueryWizardPlugin::name() const { return tr("Library search"); } QString QueryWizardPlugin::description() const { return tr("Find songs in your library that match the criteria you specify."); @@ -100,7 +92,8 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { sort_ui_->limit_value->setValue(Generator::kDefaultLimit); - connect(search_page_->ui_->type, SIGNAL(currentIndexChanged(int)), SLOT(SearchTypeChanged())); + connect(search_page_->ui_->type, SIGNAL(currentIndexChanged(int)), + SLOT(SearchTypeChanged())); // Create the new search term widget search_page_->new_term_ = new SearchTermWidget(library_, search_page_); @@ -108,15 +101,19 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { connect(search_page_->new_term_, SIGNAL(Clicked()), SLOT(AddSearchTerm())); // Add an empty initial term - search_page_->layout_ = static_cast(search_page_->ui_->terms_scroll_area_content->layout()); + search_page_->layout_ = static_cast( + search_page_->ui_->terms_scroll_area_content->layout()); search_page_->layout_->addWidget(search_page_->new_term_); AddSearchTerm(); // Ensure that the terms are scrolled to the bottom when a new one is added - connect(search_page_->ui_->terms_scroll_area->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(MoveTermListToBottom(int, int))); + connect(search_page_->ui_->terms_scroll_area->verticalScrollBar(), + SIGNAL(rangeChanged(int, int)), this, + SLOT(MoveTermListToBottom(int, int))); // Add the preview widget at the bottom of the search terms page - QVBoxLayout* terms_page_layout = static_cast(search_page_->layout()); + QVBoxLayout* terms_page_layout = + static_cast(search_page_->layout()); terms_page_layout->addStretch(); search_page_->preview_ = new SearchPreview(search_page_); search_page_->preview_->set_application(app_); @@ -124,12 +121,13 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { terms_page_layout->addWidget(search_page_->preview_); // Add sort field texts - for (int i=0 ; ifield_value->addItem(field_name); } - connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortOrder())); + connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortOrder())); UpdateSortOrder(); // Set the sort and limit radio buttons back to their defaults - they would @@ -141,18 +139,26 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { sort_ui_->preview->set_application(app_); sort_ui_->preview->set_library(library_); connect(sort_ui_->field, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_limit, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_none, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_value, SIGNAL(valueChanged(QString)), SLOT(UpdateSortPreview())); - connect(sort_ui_->order, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortPreview())); + connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_limit, SIGNAL(toggled(bool)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_none, SIGNAL(toggled(bool)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_value, SIGNAL(valueChanged(QString)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->order, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortPreview())); connect(sort_ui_->random, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); // Configure the page text search_page_->setTitle(tr("Search terms")); - search_page_->setSubTitle(tr("A song will be included in the playlist if it matches these conditions.")); + search_page_->setSubTitle( + tr("A song will be included in the playlist if it matches these " + "conditions.")); sort_page->setTitle(tr("Search options")); - sort_page->setSubTitle(tr("Choose how the playlist is sorted and how many songs it will contain.")); + sort_page->setSubTitle(tr( + "Choose how the playlist is sorted and how many songs it will contain.")); // Add the pages const int first_page = wizard->addPage(search_page_); @@ -163,8 +169,7 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { std::shared_ptr gen = std::dynamic_pointer_cast(g); - if (!gen) - return; + if (!gen) return; Search search = gen->search(); // Search type @@ -174,7 +179,7 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { qDeleteAll(search_page_->terms_); search_page_->terms_.clear(); - foreach (const SearchTerm& term, search.terms_) { + foreach(const SearchTerm & term, search.terms_) { AddSearchTerm(); search_page_->terms_.last()->SetTerm(term); } @@ -184,7 +189,8 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { sort_ui_->random->setChecked(true); } else { sort_ui_->field->setChecked(true); - sort_ui_->order->setCurrentIndex(search.sort_type_ == Search::Sort_FieldAsc ? 0 : 1); + sort_ui_->order->setCurrentIndex( + search.sort_type_ == Search::Sort_FieldAsc ? 0 : 1); sort_ui_->field_value->setCurrentIndex(search.sort_field_); } @@ -219,8 +225,7 @@ void QueryWizardPlugin::UpdateSortOrder() { } void QueryWizardPlugin::AddSearchTerm() { - SearchTermWidget* widget = - new SearchTermWidget(library_, search_page_); + SearchTermWidget* widget = new SearchTermWidget(library_, search_page_); connect(widget, SIGNAL(RemoveClicked()), SLOT(RemoveSearchTerm())); connect(widget, SIGNAL(Changed()), SLOT(UpdateTermPreview())); @@ -231,14 +236,11 @@ void QueryWizardPlugin::AddSearchTerm() { } void QueryWizardPlugin::RemoveSearchTerm() { - SearchTermWidget* widget = - qobject_cast(sender()); - if (!widget) - return; + SearchTermWidget* widget = qobject_cast(sender()); + if (!widget) return; const int index = search_page_->terms_.indexOf(widget); - if (index == -1) - return; + if (index == -1) return; search_page_->terms_.takeAt(index)->deleteLater(); UpdateTermPreview(); @@ -248,8 +250,7 @@ void QueryWizardPlugin::UpdateTermPreview() { Search search = MakeSearch(); emit search_page_->completeChanged(); // When removing last term, update anyway the search - if (!search.is_valid() && !search_page_->terms_.isEmpty()) - return; + if (!search.is_valid() && !search_page_->terms_.isEmpty()) return; // Don't apply limits in the term page search.limit_ = -1; @@ -259,8 +260,7 @@ void QueryWizardPlugin::UpdateTermPreview() { void QueryWizardPlugin::UpdateSortPreview() { Search search = MakeSearch(); - if (!search.is_valid()) - return; + if (!search.is_valid()) return; sort_ui_->preview->Update(search); } @@ -269,13 +269,13 @@ Search QueryWizardPlugin::MakeSearch() const { Search ret; // Search type - ret.search_type_ = Search::SearchType(search_page_->ui_->type->currentIndex()); + ret.search_type_ = + Search::SearchType(search_page_->ui_->type->currentIndex()); // Search terms - foreach (SearchTermWidget* widget, search_page_->terms_) { + foreach(SearchTermWidget * widget, search_page_->terms_) { SearchTerm term = widget->Term(); - if (term.is_valid()) - ret.terms_ << term; + if (term.is_valid()) ret.terms_ << term; } // Sort order @@ -283,8 +283,7 @@ Search QueryWizardPlugin::MakeSearch() const { ret.sort_type_ = Search::Sort_Random; } else { const bool ascending = sort_ui_->order->currentIndex() == 0; - ret.sort_type_ = ascending ? Search::Sort_FieldAsc : - Search::Sort_FieldDesc; + ret.sort_type_ = ascending ? Search::Sort_FieldAsc : Search::Sort_FieldDesc; ret.sort_field_ = SearchTerm::Field(sort_ui_->field_value->currentIndex()); } @@ -305,13 +304,12 @@ void QueryWizardPlugin::SearchTypeChanged() { } void QueryWizardPlugin::MoveTermListToBottom(int min, int max) { - Q_UNUSED(min); - // Only scroll to the bottom if a new term is added - if (previous_scrollarea_max_ < max) - search_page_->ui_->terms_scroll_area->verticalScrollBar()->setValue(max); + Q_UNUSED(min); + // Only scroll to the bottom if a new term is added + if (previous_scrollarea_max_ < max) + search_page_->ui_->terms_scroll_area->verticalScrollBar()->setValue(max); - previous_scrollarea_max_ = max; + previous_scrollarea_max_ = max; } - -} // namespace smart_playlists +} // namespace smart_playlists diff --git a/src/smartplaylists/querywizardplugin.h b/src/smartplaylists/querywizardplugin.h index 8dded7c32..f1bdb216e 100644 --- a/src/smartplaylists/querywizardplugin.h +++ b/src/smartplaylists/querywizardplugin.h @@ -39,7 +39,7 @@ class SearchTermWidget; class QueryWizardPlugin : public WizardPlugin { Q_OBJECT -public: + public: QueryWizardPlugin(Application* app, LibraryBackend* library, QObject* parent); ~QueryWizardPlugin(); @@ -52,7 +52,7 @@ public: void SetGenerator(GeneratorPtr); GeneratorPtr CreateGenerator() const; -private slots: + private slots: void AddSearchTerm(); void RemoveSearchTerm(); @@ -64,7 +64,7 @@ private slots: void MoveTermListToBottom(int min, int max); -private: + private: class SearchPage; class SortPage; @@ -76,6 +76,6 @@ private: int previous_scrollarea_max_; }; -} // namespace smart_playlists +} // namespace smart_playlists -#endif // QUERYWIZARDPLUGIN_H +#endif // QUERYWIZARDPLUGIN_H diff --git a/src/smartplaylists/search.cpp b/src/smartplaylists/search.cpp index a929ad432..c868c7b32 100644 --- a/src/smartplaylists/search.cpp +++ b/src/smartplaylists/search.cpp @@ -23,21 +23,16 @@ namespace smart_playlists { -Search::Search() { - Reset(); -} +Search::Search() { Reset(); } -Search::Search( - SearchType type, TermList terms, SortType sort_type, - SearchTerm::Field sort_field, int limit) - : search_type_(type), - terms_(terms), - sort_type_(sort_type), - sort_field_(sort_field), - limit_(limit), - first_item_(0) -{ -} +Search::Search(SearchType type, TermList terms, SortType sort_type, + SearchTerm::Field sort_field, int limit) + : search_type_(type), + terms_(terms), + sort_type_(sort_type), + sort_field_(sort_field), + limit_(limit), + first_item_(0) {} void Search::Reset() { search_type_ = Type_And; @@ -54,7 +49,7 @@ QString Search::ToSql(const QString& songs_table) const { // Add search terms QStringList where_clauses; QStringList term_where_clauses; - foreach (const SearchTerm& term, terms_) { + foreach(const SearchTerm & term, terms_) { term_where_clauses << term.ToSql(); } @@ -66,7 +61,7 @@ QString Search::ToSql(const QString& songs_table) const { // Restrict the IDs of songs if we're making a dynamic playlist if (!id_not_in_.isEmpty()) { QString numbers; - foreach (int id, id_not_in_) { + foreach(int id, id_not_in_) { numbers += (numbers.isEmpty() ? "" : ",") + QString::number(id); } where_clauses << "(ROWID NOT IN (" + numbers + "))"; @@ -85,8 +80,8 @@ QString Search::ToSql(const QString& songs_table) const { if (sort_type_ == Sort_Random) { sql += " ORDER BY random()"; } else { - sql += " ORDER BY " + SearchTerm::FieldColumnName(sort_field_) - + (sort_type_ == Sort_FieldAsc ? " ASC" : " DESC"); + sql += " ORDER BY " + SearchTerm::FieldColumnName(sort_field_) + + (sort_type_ == Sort_FieldAsc ? " ASC" : " DESC"); } // Add limit @@ -101,22 +96,19 @@ QString Search::ToSql(const QString& songs_table) const { } bool Search::is_valid() const { - if (search_type_ == Type_All) - return true; + if (search_type_ == Type_All) return true; return !terms_.isEmpty(); } -bool Search::operator ==(const Search& other) const { - return search_type_ == other.search_type_ && - terms_ == other.terms_ && - sort_type_ == other.sort_type_ && - sort_field_ == other.sort_field_ && +bool Search::operator==(const Search& other) const { + return search_type_ == other.search_type_ && terms_ == other.terms_ && + sort_type_ == other.sort_type_ && sort_field_ == other.sort_field_ && limit_ == other.limit_; } -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search) { +QDataStream& operator<<(QDataStream& s, const smart_playlists::Search& search) { s << search.terms_; s << quint8(search.sort_type_); s << quint8(search.sort_field_); @@ -125,7 +117,7 @@ QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search) return s; } -QDataStream& operator >>(QDataStream& s, smart_playlists::Search& search) { +QDataStream& operator>>(QDataStream& s, smart_playlists::Search& search) { quint8 sort_type, sort_field, search_type; qint32 limit; diff --git a/src/smartplaylists/search.h b/src/smartplaylists/search.h index cca1662b5..7c99fb5b6 100644 --- a/src/smartplaylists/search.h +++ b/src/smartplaylists/search.h @@ -24,31 +24,22 @@ namespace smart_playlists { class Search { -public: + public: typedef QList TermList; // These values are persisted, so add to the end of the enum only - enum SearchType { - Type_And = 0, - Type_Or, - Type_All, - }; + enum SearchType { Type_And = 0, Type_Or, Type_All, }; // These values are persisted, so add to the end of the enum only - enum SortType { - Sort_Random = 0, - Sort_FieldAsc, - Sort_FieldDesc, - }; + enum SortType { Sort_Random = 0, Sort_FieldAsc, Sort_FieldDesc, }; Search(); Search(SearchType type, TermList terms, SortType sort_type, - SearchTerm::Field sort_field, - int limit = Generator::kDefaultLimit); + SearchTerm::Field sort_field, int limit = Generator::kDefaultLimit); bool is_valid() const; - bool operator ==(const Search& other) const; - bool operator !=(const Search& other) const { return !(*this == other); } + bool operator==(const Search& other) const; + bool operator!=(const Search& other) const { return !(*this == other); } SearchType search_type_; TermList terms_; @@ -64,9 +55,9 @@ public: QString ToSql(const QString& songs_table) const; }; -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search); -QDataStream& operator >>(QDataStream& s, smart_playlists::Search& search); +QDataStream& operator<<(QDataStream& s, const smart_playlists::Search& search); +QDataStream& operator>>(QDataStream& s, smart_playlists::Search& search); -#endif // SMARTPLAYLISTSEARCH_H +#endif // SMARTPLAYLISTSEARCH_H diff --git a/src/smartplaylists/searchpreview.cpp b/src/smartplaylists/searchpreview.cpp index 78e2fc662..c6d195495 100644 --- a/src/smartplaylists/searchpreview.cpp +++ b/src/smartplaylists/searchpreview.cpp @@ -31,14 +31,12 @@ namespace smart_playlists { typedef QFuture Future; typedef QFutureWatcher FutureWatcher; -SearchPreview::SearchPreview(QWidget *parent) - : QWidget(parent), - ui_(new Ui_SmartPlaylistSearchPreview), - model_(nullptr) -{ +SearchPreview::SearchPreview(QWidget* parent) + : QWidget(parent), ui_(new Ui_SmartPlaylistSearchPreview), model_(nullptr) { ui_->setupUi(this); - // Prevent editing songs and saving settings (like header columns and geometry) + // Prevent editing songs and saving settings (like header columns and + // geometry) ui_->tree->setEditTriggers(QAbstractItemView::NoEditTriggers); ui_->tree->SetReadOnlySettings(true); @@ -48,9 +46,7 @@ SearchPreview::SearchPreview(QWidget *parent) ui_->busy_container->hide(); } -SearchPreview::~SearchPreview() { - delete ui_; -} +SearchPreview::~SearchPreview() { delete ui_; } void SearchPreview::set_application(Application* app) { ui_->tree->SetApplication(app); @@ -90,9 +86,7 @@ void SearchPreview::showEvent(QShowEvent* e) { QWidget::showEvent(e); } -PlaylistItemList DoRunSearch(GeneratorPtr gen) { - return gen->Generate(); -} +PlaylistItemList DoRunSearch(GeneratorPtr gen) { return gen->Generate(); } void SearchPreview::RunSearch(const Search& search) { generator_.reset(new QueryGenerator); @@ -112,7 +106,8 @@ void SearchPreview::SearchFinished() { FutureWatcher* watcher = static_cast(sender()); watcher->deleteLater(); - last_search_ = std::dynamic_pointer_cast(generator_)->search(); + last_search_ = + std::dynamic_pointer_cast(generator_)->search(); generator_.reset(); if (pending_search_.is_valid() && pending_search_ != last_search_) { @@ -131,7 +126,8 @@ void SearchPreview::SearchFinished() { if (displayed_items.count() < all_items.count()) { ui_->count_label->setText(tr("%1 songs found (showing %2)") - .arg(all_items.count()).arg(displayed_items.count())); + .arg(all_items.count()) + .arg(displayed_items.count())); } else { ui_->count_label->setText(tr("%1 songs found").arg(all_items.count())); } @@ -140,4 +136,4 @@ void SearchPreview::SearchFinished() { ui_->count_label->show(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/searchpreview.h b/src/smartplaylists/searchpreview.h index 8f58eeecd..6878f16fe 100644 --- a/src/smartplaylists/searchpreview.h +++ b/src/smartplaylists/searchpreview.h @@ -33,8 +33,8 @@ namespace smart_playlists { class SearchPreview : public QWidget { Q_OBJECT -public: - SearchPreview(QWidget *parent = 0); + public: + SearchPreview(QWidget* parent = 0); ~SearchPreview(); void set_application(Application* app); @@ -42,16 +42,16 @@ public: void Update(const Search& search); -protected: + protected: void showEvent(QShowEvent*); -private: + private: void RunSearch(const Search& search); -private slots: + private slots: void SearchFinished(); -private: + private: Ui_SmartPlaylistSearchPreview* ui_; QList fields_; @@ -63,6 +63,6 @@ private: GeneratorPtr generator_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTSEARCHPREVIEW_H +#endif // SMARTPLAYLISTSEARCHPREVIEW_H diff --git a/src/smartplaylists/searchterm.cpp b/src/smartplaylists/searchterm.cpp index ddc6b59fa..30a44c2ec 100644 --- a/src/smartplaylists/searchterm.cpp +++ b/src/smartplaylists/searchterm.cpp @@ -20,19 +20,10 @@ namespace smart_playlists { -SearchTerm::SearchTerm() - : field_(Field_Title), - operator_(Op_Equals) -{ -} +SearchTerm::SearchTerm() : field_(Field_Title), operator_(Op_Equals) {} -SearchTerm::SearchTerm( - Field field, Operator op, const QVariant& value) - : field_(field), - operator_(op), - value_(value) -{ -} +SearchTerm::SearchTerm(Field field, Operator op, const QVariant& value) + : field_(field), operator_(op), value_(value) {} QString SearchTerm::ToSql() const { QString col = FieldColumnName(field_); @@ -42,7 +33,8 @@ QString SearchTerm::ToSql() const { QString second_value; - bool special_date_query = (operator_ == SearchTerm::Op_NumericDate || operator_ == SearchTerm::Op_NumericDateNot || + bool special_date_query = (operator_ == SearchTerm::Op_NumericDate || + operator_ == SearchTerm::Op_NumericDateNot || operator_ == SearchTerm::Op_RelativeDate); // Floating point problems... @@ -69,8 +61,8 @@ QString SearchTerm::ToSql() const { if (date == "weeks") { // Sqlite doesn't know weeks, transform them to days date = "days"; - value = QString::number(value_.toInt()*7); - second_value = QString::number(second_value_.toInt()*7); + value = QString::number(value_.toInt() * 7); + second_value = QString::number(second_value_.toInt() * 7); } } } else if (TypeOf(field_) == Type_Time) { @@ -90,34 +82,34 @@ QString SearchTerm::ToSql() const { case Op_Equals: if (TypeOf(field_) == Type_Text) return col + " LIKE '" + value + "'"; - else if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + else if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " = " + value; else return col + " = '" + value + "'"; case Op_GreaterThan: - if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " > " + value; else return col + " > '" + value + "'"; case Op_LessThan: - if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " < " + value; else return col + " < '" + value + "'"; case Op_NumericDate: - return col + " > " + "DATETIME('now', '-" + value + " " + date +"', 'localtime')"; + return col + " > " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime')"; case Op_NumericDateNot: - return col + " < " + "DATETIME('now', '-" + value + " " + date +"', 'localtime')"; + return col + " < " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime')"; case Op_RelativeDate: // Consider the time range before the first date but after the second one - return "(" + col + " < " + "DATETIME('now', '-" + value + " " + date +"', 'localtime') AND " + - col + " > " + "DATETIME('now', '-" + second_value + " " + date +"', 'localtime'))"; + return "(" + col + " < " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime') AND " + col + " > " + "DATETIME('now', '-" + + second_value + " " + date + "', 'localtime'))"; case Op_NotEquals: if (TypeOf(field_) == Type_Text) { return col + " <> '" + value + "'"; @@ -138,21 +130,25 @@ bool SearchTerm::is_valid() const { } switch (TypeOf(field_)) { - case Type_Text: return !value_.toString().isEmpty(); - case Type_Date: return value_.toInt() != 0; - case Type_Number: return value_.toInt() >= 0; - case Type_Rating: return value_.toFloat() >= 0.0; - case Type_Time: return true; - case Type_Invalid: return false; + case Type_Text: + return !value_.toString().isEmpty(); + case Type_Date: + return value_.toInt() != 0; + case Type_Number: + return value_.toInt() >= 0; + case Type_Rating: + return value_.toFloat() >= 0.0; + case Type_Time: + return true; + case Type_Invalid: + return false; } return false; } -bool SearchTerm::operator ==(const SearchTerm& other) const { - return field_ == other.field_ && - operator_ == other.operator_ && - value_ == other.value_ && - date_ == other.date_ && +bool SearchTerm::operator==(const SearchTerm& other) const { + return field_ == other.field_ && operator_ == other.operator_ && + value_ == other.value_ && date_ == other.date_ && second_value_ == other.second_value_; } @@ -192,37 +188,56 @@ OperatorList SearchTerm::OperatorsForType(Type type) { return OperatorList() << Op_Contains << Op_NotContains << Op_Equals << Op_NotEquals << Op_StartsWith << Op_EndsWith; case Type_Date: - return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan << Op_LessThan - << Op_NumericDate << Op_NumericDateNot << Op_RelativeDate; + return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan + << Op_LessThan << Op_NumericDate + << Op_NumericDateNot << Op_RelativeDate; default: - return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan << Op_LessThan; + return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan + << Op_LessThan; } } QString SearchTerm::OperatorText(Type type, Operator op) { if (type == Type_Date) { switch (op) { - case Op_GreaterThan: return QObject::tr("after"); - case Op_LessThan: return QObject::tr("before"); - case Op_Equals: return QObject::tr("on"); - case Op_NotEquals: return QObject::tr("not on"); - case Op_NumericDate: return QObject::tr("in the last"); - case Op_NumericDateNot: return QObject::tr("not in the last"); - case Op_RelativeDate: return QObject::tr("between"); - default: return QString(); + case Op_GreaterThan: + return QObject::tr("after"); + case Op_LessThan: + return QObject::tr("before"); + case Op_Equals: + return QObject::tr("on"); + case Op_NotEquals: + return QObject::tr("not on"); + case Op_NumericDate: + return QObject::tr("in the last"); + case Op_NumericDateNot: + return QObject::tr("not in the last"); + case Op_RelativeDate: + return QObject::tr("between"); + default: + return QString(); } } switch (op) { - case Op_Contains: return QObject::tr("contains"); - case Op_NotContains: return QObject::tr("does not contain"); - case Op_StartsWith: return QObject::tr("starts with"); - case Op_EndsWith: return QObject::tr("ends with"); - case Op_GreaterThan: return QObject::tr("greater than"); - case Op_LessThan: return QObject::tr("less than"); - case Op_Equals: return QObject::tr("equals"); - case Op_NotEquals: return QObject::tr("not equals"); - default: return QString(); + case Op_Contains: + return QObject::tr("contains"); + case Op_NotContains: + return QObject::tr("does not contain"); + case Op_StartsWith: + return QObject::tr("starts with"); + case Op_EndsWith: + return QObject::tr("ends with"); + case Op_GreaterThan: + return QObject::tr("greater than"); + case Op_LessThan: + return QObject::tr("less than"); + case Op_Equals: + return QObject::tr("equals"); + case Op_NotEquals: + return QObject::tr("not equals"); + default: + return QString(); } return QString(); @@ -230,76 +245,136 @@ QString SearchTerm::OperatorText(Type type, Operator op) { QString SearchTerm::FieldColumnName(Field field) { switch (field) { - case Field_Length: return "length"; - case Field_Track: return "track"; - case Field_Disc: return "disc"; - case Field_Year: return "year"; - case Field_BPM: return "bpm"; - case Field_Bitrate: return "bitrate"; - case Field_Samplerate: return "samplerate"; - case Field_Filesize: return "filesize"; - case Field_PlayCount: return "playcount"; - case Field_SkipCount: return "skipcount"; - case Field_LastPlayed: return "lastplayed"; - case Field_DateCreated: return "ctime"; - case Field_DateModified:return "mtime"; - case Field_Rating: return "rating"; - case Field_Score: return "score"; - case Field_Title: return "title"; - case Field_Artist: return "artist"; - case Field_Album: return "album"; - case Field_AlbumArtist: return "albumartist"; - case Field_Composer: return "composer"; - case Field_Performer: return "performer"; - case Field_Grouping: return "grouping"; - case Field_Genre: return "genre"; - case Field_Comment: return "comment"; - case Field_Filepath: return "filename"; - case FieldCount: Q_ASSERT(0); + case Field_Length: + return "length"; + case Field_Track: + return "track"; + case Field_Disc: + return "disc"; + case Field_Year: + return "year"; + case Field_BPM: + return "bpm"; + case Field_Bitrate: + return "bitrate"; + case Field_Samplerate: + return "samplerate"; + case Field_Filesize: + return "filesize"; + case Field_PlayCount: + return "playcount"; + case Field_SkipCount: + return "skipcount"; + case Field_LastPlayed: + return "lastplayed"; + case Field_DateCreated: + return "ctime"; + case Field_DateModified: + return "mtime"; + case Field_Rating: + return "rating"; + case Field_Score: + return "score"; + case Field_Title: + return "title"; + case Field_Artist: + return "artist"; + case Field_Album: + return "album"; + case Field_AlbumArtist: + return "albumartist"; + case Field_Composer: + return "composer"; + case Field_Performer: + return "performer"; + case Field_Grouping: + return "grouping"; + case Field_Genre: + return "genre"; + case Field_Comment: + return "comment"; + case Field_Filepath: + return "filename"; + case FieldCount: + Q_ASSERT(0); } return QString(); } QString SearchTerm::FieldName(Field field) { switch (field) { - case Field_Length: return Playlist::column_name(Playlist::Column_Length); - case Field_Track: return Playlist::column_name(Playlist::Column_Track); - case Field_Disc: return Playlist::column_name(Playlist::Column_Disc); - case Field_Year: return Playlist::column_name(Playlist::Column_Year); - case Field_BPM: return Playlist::column_name(Playlist::Column_BPM); - case Field_Bitrate: return Playlist::column_name(Playlist::Column_Bitrate); - case Field_Samplerate: return Playlist::column_name(Playlist::Column_Samplerate); - case Field_Filesize: return Playlist::column_name(Playlist::Column_Filesize); - case Field_PlayCount: return Playlist::column_name(Playlist::Column_PlayCount); - case Field_SkipCount: return Playlist::column_name(Playlist::Column_SkipCount); - case Field_LastPlayed: return Playlist::column_name(Playlist::Column_LastPlayed); - case Field_DateCreated: return Playlist::column_name(Playlist::Column_DateCreated); - case Field_DateModified:return Playlist::column_name(Playlist::Column_DateModified); - case Field_Rating: return Playlist::column_name(Playlist::Column_Rating); - case Field_Score: return Playlist::column_name(Playlist::Column_Score); - case Field_Title: return Playlist::column_name(Playlist::Column_Title); - case Field_Artist: return Playlist::column_name(Playlist::Column_Artist); - case Field_Album: return Playlist::column_name(Playlist::Column_Album); - case Field_AlbumArtist: return Playlist::column_name(Playlist::Column_AlbumArtist); - case Field_Composer: return Playlist::column_name(Playlist::Column_Composer); - case Field_Performer: return Playlist::column_name(Playlist::Column_Performer); - case Field_Grouping: return Playlist::column_name(Playlist::Column_Grouping); - case Field_Genre: return Playlist::column_name(Playlist::Column_Genre); - case Field_Comment: return QObject::tr("Comment"); - case Field_Filepath: return Playlist::column_name(Playlist::Column_Filename); - case FieldCount: Q_ASSERT(0); + case Field_Length: + return Playlist::column_name(Playlist::Column_Length); + case Field_Track: + return Playlist::column_name(Playlist::Column_Track); + case Field_Disc: + return Playlist::column_name(Playlist::Column_Disc); + case Field_Year: + return Playlist::column_name(Playlist::Column_Year); + case Field_BPM: + return Playlist::column_name(Playlist::Column_BPM); + case Field_Bitrate: + return Playlist::column_name(Playlist::Column_Bitrate); + case Field_Samplerate: + return Playlist::column_name(Playlist::Column_Samplerate); + case Field_Filesize: + return Playlist::column_name(Playlist::Column_Filesize); + case Field_PlayCount: + return Playlist::column_name(Playlist::Column_PlayCount); + case Field_SkipCount: + return Playlist::column_name(Playlist::Column_SkipCount); + case Field_LastPlayed: + return Playlist::column_name(Playlist::Column_LastPlayed); + case Field_DateCreated: + return Playlist::column_name(Playlist::Column_DateCreated); + case Field_DateModified: + return Playlist::column_name(Playlist::Column_DateModified); + case Field_Rating: + return Playlist::column_name(Playlist::Column_Rating); + case Field_Score: + return Playlist::column_name(Playlist::Column_Score); + case Field_Title: + return Playlist::column_name(Playlist::Column_Title); + case Field_Artist: + return Playlist::column_name(Playlist::Column_Artist); + case Field_Album: + return Playlist::column_name(Playlist::Column_Album); + case Field_AlbumArtist: + return Playlist::column_name(Playlist::Column_AlbumArtist); + case Field_Composer: + return Playlist::column_name(Playlist::Column_Composer); + case Field_Performer: + return Playlist::column_name(Playlist::Column_Performer); + case Field_Grouping: + return Playlist::column_name(Playlist::Column_Grouping); + case Field_Genre: + return Playlist::column_name(Playlist::Column_Genre); + case Field_Comment: + return QObject::tr("Comment"); + case Field_Filepath: + return Playlist::column_name(Playlist::Column_Filename); + case FieldCount: + Q_ASSERT(0); } return QString(); } QString SearchTerm::FieldSortOrderText(Type type, bool ascending) { switch (type) { - case Type_Text: return ascending ? QObject::tr("A-Z") : QObject::tr("Z-A"); - case Type_Date: return ascending ? QObject::tr("oldest first") : QObject::tr("newest first"); - case Type_Time: return ascending ? QObject::tr("shortest first") : QObject::tr("longest first"); + case Type_Text: + return ascending ? QObject::tr("A-Z") : QObject::tr("Z-A"); + case Type_Date: + return ascending ? QObject::tr("oldest first") + : QObject::tr("newest first"); + case Type_Time: + return ascending ? QObject::tr("shortest first") + : QObject::tr("longest first"); case Type_Number: - case Type_Rating: return ascending ? QObject::tr("smallest first") : QObject::tr("biggest first"); - case Type_Invalid: return QString(); + case Type_Rating: + return ascending ? QObject::tr("smallest first") + : QObject::tr("biggest first"); + case Type_Invalid: + return QString(); } return QString(); } @@ -307,18 +382,24 @@ QString SearchTerm::FieldSortOrderText(Type type, bool ascending) { QString SearchTerm::DateName(DateType date, bool forQuery) { // If forQuery is true, untranslated keywords are returned switch (date) { - case Date_Hour: return (forQuery ? "hours" : QObject::tr("Hours")); - case Date_Day: return (forQuery ? "days" : QObject::tr("Days")); - case Date_Week: return (forQuery ? "weeks" : QObject::tr("Weeks")); - case Date_Month: return (forQuery ? "months" : QObject::tr("Months")); - case Date_Year: return (forQuery ? "years" : QObject::tr("Years")); + case Date_Hour: + return (forQuery ? "hours" : QObject::tr("Hours")); + case Date_Day: + return (forQuery ? "days" : QObject::tr("Days")); + case Date_Week: + return (forQuery ? "weeks" : QObject::tr("Weeks")); + case Date_Month: + return (forQuery ? "months" : QObject::tr("Months")); + case Date_Year: + return (forQuery ? "years" : QObject::tr("Years")); } return QString(); } -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term) { +QDataStream& operator<<(QDataStream& s, + const smart_playlists::SearchTerm& term) { s << quint8(term.field_); s << quint8(term.operator_); s << term.value_; @@ -327,7 +408,7 @@ QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term return s; } -QDataStream& operator >>(QDataStream& s, smart_playlists::SearchTerm& term) { +QDataStream& operator>>(QDataStream& s, smart_playlists::SearchTerm& term) { quint8 field, op, date; s >> field >> op >> term.value_ >> term.second_value_ >> date; term.field_ = smart_playlists::SearchTerm::Field(field); diff --git a/src/smartplaylists/searchterm.h b/src/smartplaylists/searchterm.h index f1ba69e4c..aaf8ef2a0 100644 --- a/src/smartplaylists/searchterm.h +++ b/src/smartplaylists/searchterm.h @@ -24,7 +24,7 @@ namespace smart_playlists { class SearchTerm { -public: + public: // These values are persisted, so add to the end of the enum only enum Field { Field_Title = 0, @@ -52,7 +52,6 @@ public: Field_Filepath, Field_Performer, Field_Grouping, - FieldCount }; @@ -89,18 +88,11 @@ public: Type_Time, Type_Number, Type_Rating, - Type_Invalid }; // These values are persisted, so add to the end of the enum only - enum DateType { - Date_Hour = 0, - Date_Day, - Date_Week, - Date_Month, - Date_Year, - }; + enum DateType { Date_Hour = 0, Date_Day, Date_Week, Date_Month, Date_Year, }; SearchTerm(); SearchTerm(Field field, Operator op, const QVariant& value); @@ -109,13 +101,14 @@ public: Operator operator_; QVariant value_; DateType date_; - // For relative dates, we need a second parameter, might be useful somewhere else + // For relative dates, we need a second parameter, might be useful somewhere + // else QVariant second_value_; QString ToSql() const; bool is_valid() const; - bool operator ==(const SearchTerm& other) const; - bool operator !=(const SearchTerm& other) const { return !(*this == other); } + bool operator==(const SearchTerm& other) const; + bool operator!=(const SearchTerm& other) const { return !(*this == other); } static Type TypeOf(Field field); static QList OperatorsForType(Type type); @@ -128,9 +121,10 @@ public: typedef QList OperatorList; -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term); -QDataStream& operator >>(QDataStream& s, smart_playlists::SearchTerm& term); +QDataStream& operator<<(QDataStream& s, + const smart_playlists::SearchTerm& term); +QDataStream& operator>>(QDataStream& s, smart_playlists::SearchTerm& term); -#endif // SMARTPLAYLISTSEARCHTERM_H +#endif // SMARTPLAYLISTSEARCHTERM_H diff --git a/src/smartplaylists/searchtermwidget.cpp b/src/smartplaylists/searchtermwidget.cpp index e17a8bbf4..23949b00c 100644 --- a/src/smartplaylists/searchtermwidget.cpp +++ b/src/smartplaylists/searchtermwidget.cpp @@ -31,12 +31,13 @@ #include // Exported by QtGui -void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); +void qt_blurImage(QPainter* p, QImage& blurImage, qreal radius, bool quality, + bool alphaOnly, int transposed = 0); namespace smart_playlists { class SearchTermWidget::Overlay : public QWidget { -public: + public: Overlay(SearchTermWidget* parent); void Grab(); void SetOpacity(float opacity); @@ -45,11 +46,11 @@ public: static const int kSpacing; static const int kIconSize; -protected: + protected: void paintEvent(QPaintEvent*); void mouseReleaseEvent(QMouseEvent*); -private: + private: SearchTermWidget* parent_; float opacity_; @@ -61,19 +62,18 @@ private: const int SearchTermWidget::Overlay::kSpacing = 6; const int SearchTermWidget::Overlay::kIconSize = 22; - SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SmartPlaylistSearchTermWidget), - library_(library), - overlay_(nullptr), - animation_(new QPropertyAnimation(this, "overlay_opacity", this)), - active_(true), - initialized_(false), - current_field_type_(SearchTerm::Type_Invalid) -{ + : QWidget(parent), + ui_(new Ui_SmartPlaylistSearchTermWidget), + library_(library), + overlay_(nullptr), + animation_(new QPropertyAnimation(this, "overlay_opacity", this)), + active_(true), + initialized_(false), + current_field_type_(SearchTerm::Type_Invalid) { ui_->setupUi(this); - connect(ui_->field, SIGNAL(currentIndexChanged(int)), SLOT(FieldChanged(int))); + connect(ui_->field, SIGNAL(currentIndexChanged(int)), + SLOT(FieldChanged(int))); connect(ui_->op, SIGNAL(currentIndexChanged(int)), SLOT(OpChanged(int))); connect(ui_->remove, SIGNAL(clicked()), SIGNAL(RemoveClicked())); @@ -82,27 +82,33 @@ SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) connect(ui_->value_rating, SIGNAL(RatingChanged(float)), SIGNAL(Changed())); connect(ui_->value_text, SIGNAL(textChanged(QString)), SIGNAL(Changed())); connect(ui_->value_time, SIGNAL(timeChanged(QTime)), SIGNAL(Changed())); - connect(ui_->value_date_numeric, SIGNAL(valueChanged(int)), SIGNAL(Changed())); - connect(ui_->value_date_numeric1, SIGNAL(valueChanged(int)), SLOT(RelativeValueChanged())); - connect(ui_->value_date_numeric2, SIGNAL(valueChanged(int)), SLOT(RelativeValueChanged())); + connect(ui_->value_date_numeric, SIGNAL(valueChanged(int)), + SIGNAL(Changed())); + connect(ui_->value_date_numeric1, SIGNAL(valueChanged(int)), + SLOT(RelativeValueChanged())); + connect(ui_->value_date_numeric2, SIGNAL(valueChanged(int)), + SLOT(RelativeValueChanged())); connect(ui_->date_type, SIGNAL(currentIndexChanged(int)), SIGNAL(Changed())); - connect(ui_->date_type_relative, SIGNAL(currentIndexChanged(int)), SIGNAL(Changed())); + connect(ui_->date_type_relative, SIGNAL(currentIndexChanged(int)), + SIGNAL(Changed())); ui_->value_date->setDate(QDate::currentDate()); // Populate the combo boxes - for (int i=0; ifield->addItem(SearchTerm::FieldName(SearchTerm::Field(i))); ui_->field->setItemData(i, i); } ui_->field->model()->sort(0); // Populate the date type combo box - for (int i=0; i<5; ++i) { - ui_->date_type->addItem(SearchTerm::DateName(SearchTerm::DateType(i), false)); + for (int i = 0; i < 5; ++i) { + ui_->date_type->addItem( + SearchTerm::DateName(SearchTerm::DateType(i), false)); ui_->date_type->setItemData(i, i); - ui_->date_type_relative->addItem(SearchTerm::DateName(SearchTerm::DateType(i), false)); + ui_->date_type_relative->addItem( + SearchTerm::DateName(SearchTerm::DateType(i), false)); ui_->date_type_relative->setItemData(i, i); } @@ -115,25 +121,23 @@ SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) QString stylesheet = QString::fromAscii(stylesheet_file.readAll()); const QColor base(222, 97, 97, 128); stylesheet.replace("%light2", Utilities::ColorToRgba(base.lighter(140))); - stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); - stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); - stylesheet.replace("%base", Utilities::ColorToRgba(base)); + stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); + stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); + stylesheet.replace("%base", Utilities::ColorToRgba(base)); setStyleSheet(stylesheet); } -SearchTermWidget::~SearchTermWidget() { - delete ui_; -} +SearchTermWidget::~SearchTermWidget() { delete ui_; } void SearchTermWidget::FieldChanged(int index) { - SearchTerm::Field field = SearchTerm::Field( - ui_->field->itemData(index).toInt()); + SearchTerm::Field field = + SearchTerm::Field(ui_->field->itemData(index).toInt()); SearchTerm::Type type = SearchTerm::TypeOf(field); // Populate the operator combo box if (type != current_field_type_) { ui_->op->clear(); - foreach (SearchTerm::Operator op, SearchTerm::OperatorsForType(type)) { + foreach(SearchTerm::Operator op, SearchTerm::OperatorsForType(type)) { const int i = ui_->op->count(); ui_->op->addItem(SearchTerm::OperatorText(type, op)); ui_->op->setItemData(i, op); @@ -144,27 +148,39 @@ void SearchTermWidget::FieldChanged(int index) { // Show the correct value editor QWidget* page = nullptr; switch (type) { - case SearchTerm::Type_Time: page = ui_->page_time; break; - case SearchTerm::Type_Number: page = ui_->page_number; break; - case SearchTerm::Type_Date: page = ui_->page_date; break; - case SearchTerm::Type_Rating: page = ui_->page_rating; break; - case SearchTerm::Type_Text: page = ui_->page_text; break; - case SearchTerm::Type_Invalid: page = nullptr; break; + case SearchTerm::Type_Time: + page = ui_->page_time; + break; + case SearchTerm::Type_Number: + page = ui_->page_number; + break; + case SearchTerm::Type_Date: + page = ui_->page_date; + break; + case SearchTerm::Type_Rating: + page = ui_->page_rating; + break; + case SearchTerm::Type_Text: + page = ui_->page_text; + break; + case SearchTerm::Type_Invalid: + page = nullptr; + break; } ui_->value_stack->setCurrentWidget(page); // Maybe set a tag completer switch (field) { - case SearchTerm::Field_Artist: - new TagCompleter(library_, Playlist::Column_Artist, ui_->value_text); - break; + case SearchTerm::Field_Artist: + new TagCompleter(library_, Playlist::Column_Artist, ui_->value_text); + break; - case SearchTerm::Field_Album: - new TagCompleter(library_, Playlist::Column_Album, ui_->value_text); - break; + case SearchTerm::Field_Album: + new TagCompleter(library_, Playlist::Column_Album, ui_->value_text); + break; - default: - ui_->value_text->setCompleter(nullptr); + default: + ui_->value_text->setCompleter(nullptr); } emit Changed(); @@ -172,17 +188,18 @@ void SearchTermWidget::FieldChanged(int index) { void SearchTermWidget::OpChanged(int index) { // We need to change the page only in the following case - if ((ui_->value_stack->currentWidget() == ui_->page_date) || (ui_->value_stack->currentWidget() == ui_->page_date_numeric) || + if ((ui_->value_stack->currentWidget() == ui_->page_date) || + (ui_->value_stack->currentWidget() == ui_->page_date_numeric) || (ui_->value_stack->currentWidget() == ui_->page_date_relative)) { - QWidget* page = nullptr; - if (index == 4 || index == 5) { - page = ui_->page_date_numeric; - } else if (index == 6) { - page = ui_->page_date_relative; - } else { - page = ui_->page_date; - } - ui_->value_stack->setCurrentWidget(page); + QWidget* page = nullptr; + if (index == 4 || index == 5) { + page = ui_->page_date_numeric; + } else if (index == 6) { + page = ui_->page_date_relative; + } else { + page = ui_->page_date; + } + ui_->value_stack->setCurrentWidget(page); } emit Changed(); } @@ -198,8 +215,7 @@ void SearchTermWidget::SetActive(bool active) { } void SearchTermWidget::enterEvent(QEvent*) { - if (!overlay_ || !isEnabled()) - return; + if (!overlay_ || !isEnabled()) return; animation_->stop(); animation_->setEndValue(1.0); @@ -208,8 +224,7 @@ void SearchTermWidget::enterEvent(QEvent*) { } void SearchTermWidget::leaveEvent(QEvent*) { - if (!overlay_) - return; + if (!overlay_) return; animation_->stop(); animation_->setEndValue(0.0); @@ -231,13 +246,10 @@ void SearchTermWidget::showEvent(QShowEvent* e) { } } -void SearchTermWidget::Grab() { - overlay_->Grab(); -} +void SearchTermWidget::Grab() { overlay_->Grab(); } void SearchTermWidget::set_overlay_opacity(float opacity) { - if (overlay_) - overlay_->SetOpacity(opacity); + if (overlay_) overlay_->SetOpacity(opacity); } float SearchTermWidget::overlay_opacity() const { @@ -250,45 +262,44 @@ void SearchTermWidget::SetTerm(const SearchTerm& term) { // The value depends on the data type switch (SearchTerm::TypeOf(term.field_)) { - case SearchTerm::Type_Text: - ui_->value_text->setText(term.value_.toString()); - break; + case SearchTerm::Type_Text: + ui_->value_text->setText(term.value_.toString()); + break; - case SearchTerm::Type_Number: - ui_->value_number->setValue(term.value_.toInt()); - break; + case SearchTerm::Type_Number: + ui_->value_number->setValue(term.value_.toInt()); + break; - case SearchTerm::Type_Date: - if (ui_->value_stack->currentWidget() == ui_->page_date_numeric) { - ui_->value_date_numeric->setValue(term.value_.toInt()); - ui_->date_type->setCurrentIndex(term.date_); - } - else if (ui_->value_stack->currentWidget() == ui_->page_date_relative) { - ui_->value_date_numeric1->setValue(term.value_.toInt()); - ui_->value_date_numeric2->setValue(term.second_value_.toInt()); - ui_->date_type_relative->setCurrentIndex(term.date_); - } - else if (ui_->value_stack->currentWidget() == ui_->page_date) { - ui_->value_date->setDateTime(QDateTime::fromTime_t(term.value_.toInt())); - } - break; + case SearchTerm::Type_Date: + if (ui_->value_stack->currentWidget() == ui_->page_date_numeric) { + ui_->value_date_numeric->setValue(term.value_.toInt()); + ui_->date_type->setCurrentIndex(term.date_); + } else if (ui_->value_stack->currentWidget() == ui_->page_date_relative) { + ui_->value_date_numeric1->setValue(term.value_.toInt()); + ui_->value_date_numeric2->setValue(term.second_value_.toInt()); + ui_->date_type_relative->setCurrentIndex(term.date_); + } else if (ui_->value_stack->currentWidget() == ui_->page_date) { + ui_->value_date->setDateTime( + QDateTime::fromTime_t(term.value_.toInt())); + } + break; - case SearchTerm::Type_Time: - ui_->value_time->setTime(QTime(0,0).addSecs(term.value_.toInt())); - break; + case SearchTerm::Type_Time: + ui_->value_time->setTime(QTime(0, 0).addSecs(term.value_.toInt())); + break; - case SearchTerm::Type_Rating: - ui_->value_rating->set_rating(term.value_.toFloat()); - break; + case SearchTerm::Type_Rating: + ui_->value_rating->set_rating(term.value_.toFloat()); + break; - case SearchTerm::Type_Invalid: - break; + case SearchTerm::Type_Invalid: + break; } } SearchTerm SearchTermWidget::Term() const { const int field = ui_->field->itemData(ui_->field->currentIndex()).toInt(); - const int op = ui_->op->itemData(ui_->op->currentIndex()).toInt(); + const int op = ui_->op->itemData(ui_->op->currentIndex()).toInt(); SearchTerm ret; ret.field_ = SearchTerm::Field(field); @@ -303,7 +314,7 @@ SearchTerm SearchTermWidget::Term() const { } else if (value_page == ui_->page_date) { ret.value_ = ui_->value_date->dateTime().toTime_t(); } else if (value_page == ui_->page_time) { - ret.value_ = QTime(0,0).secsTo(ui_->value_time->time()); + ret.value_ = QTime(0, 0).secsTo(ui_->value_time->time()); } else if (value_page == ui_->page_rating) { ret.value_ = ui_->value_rating->rating(); } else if (value_page == ui_->page_date_numeric) { @@ -326,21 +337,20 @@ void SearchTermWidget::RelativeValueChanged() { } // Explain the user why he can't proceed if (ui_->value_date_numeric1->value() >= ui_->value_date_numeric2->value()) { - QMessageBox::warning(this, tr("Clementine"), - tr("The second value must be greater than the first one!")); + QMessageBox::warning( + this, tr("Clementine"), + tr("The second value must be greater than the first one!")); } // Emit the signal in any case, so the Next button will be disabled emit Changed(); } - SearchTermWidget::Overlay::Overlay(SearchTermWidget* parent) - : QWidget(parent), - parent_(parent), - opacity_(0.0), - text_(tr("Add search term")), - icon_(IconLoader::Load("list-add").pixmap(kIconSize)) -{ + : QWidget(parent), + parent_(parent), + opacity_(0.0), + text_(tr("Add search term")), + icon_(IconLoader::Load("list-add").pixmap(kIconSize)) { raise(); } @@ -395,8 +405,7 @@ void SearchTermWidget::Overlay::paintEvent(QPaintEvent*) { contents_size); const QRect icon(contents.topLeft(), QSize(kIconSize, kIconSize)); const QRect text(icon.right() + kSpacing, icon.top(), - contents.width() - kSpacing - kIconSize, - contents.height()); + contents.width() - kSpacing - kIconSize, contents.height()); // Icon and text p.setPen(palette().color(QPalette::Text)); @@ -408,4 +417,4 @@ void SearchTermWidget::Overlay::mouseReleaseEvent(QMouseEvent*) { emit parent_->Clicked(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/searchtermwidget.h b/src/smartplaylists/searchtermwidget.h index 35d894201..7363b838f 100644 --- a/src/smartplaylists/searchtermwidget.h +++ b/src/smartplaylists/searchtermwidget.h @@ -32,11 +32,10 @@ namespace smart_playlists { class SearchTermWidget : public QWidget { Q_OBJECT - Q_PROPERTY(float overlay_opacity - READ overlay_opacity - WRITE set_overlay_opacity); + Q_PROPERTY(float overlay_opacity READ overlay_opacity WRITE + set_overlay_opacity); -public: + public: SearchTermWidget(LibraryBackend* library, QWidget* parent); ~SearchTermWidget(); @@ -54,19 +53,19 @@ signals: void Changed(); -protected: + protected: void showEvent(QShowEvent*); void enterEvent(QEvent*); void leaveEvent(QEvent*); void resizeEvent(QResizeEvent*); -private slots: + private slots: void FieldChanged(int index); void OpChanged(int index); void RelativeValueChanged(); void Grab(); -private: + private: class Overlay; friend class Overlay; @@ -81,6 +80,6 @@ private: SearchTerm::Type current_field_type_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTSEARCHTERMWIDGET_H +#endif // SMARTPLAYLISTSEARCHTERMWIDGET_H diff --git a/src/smartplaylists/wizard.cpp b/src/smartplaylists/wizard.cpp index 4167d634d..efce81ccc 100644 --- a/src/smartplaylists/wizard.cpp +++ b/src/smartplaylists/wizard.cpp @@ -28,26 +28,22 @@ namespace smart_playlists { class Wizard::TypePage : public QWizardPage { -public: - TypePage(QWidget* parent) - : QWizardPage(parent), next_id_(-1) {} + public: + TypePage(QWidget* parent) : QWizardPage(parent), next_id_(-1) {} int nextId() const { return next_id_; } int next_id_; }; class Wizard::FinishPage : public QWizardPage { -public: + public: FinishPage(QWidget* parent) - : QWizardPage(parent), - ui_(new Ui_SmartPlaylistWizardFinishPage) { + : QWizardPage(parent), ui_(new Ui_SmartPlaylistWizardFinishPage) { ui_->setupUi(this); connect(ui_->name, SIGNAL(textChanged(QString)), SIGNAL(completeChanged())); } - ~FinishPage() { - delete ui_; - } + ~FinishPage() { delete ui_; } int nextId() const { return -1; } bool isComplete() const { return !ui_->name->text().isEmpty(); } @@ -56,14 +52,13 @@ public: }; Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) - : QWizard(parent), - app_(app), - library_(library), - type_page_(new TypePage(this)), - finish_page_(new FinishPage(this)), - type_index_(-1), - type_mapper_(new QSignalMapper(this)) -{ + : QWizard(parent), + app_(app), + library_(library), + type_page_(new TypePage(this)), + finish_page_(new FinishPage(this)), + type_index_(-1), + type_mapper_(new QSignalMapper(this)) { setWindowIcon(QIcon(":/icon.png")); setWindowTitle(tr("Smart playlist")); resize(788, 628); @@ -71,14 +66,17 @@ Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) #ifdef Q_OS_MAC // MacStyle leaves an ugly empty space on the left side of the dialog. setWizardStyle(QWizard::ClassicStyle); -#endif // Q_OS_MAC +#endif // Q_OS_MAC // Type page type_page_->setTitle(tr("Playlist type")); - type_page_->setSubTitle(tr("A smart playlist is a dynamic list of songs that come from your library. There are different types of smart playlist that offer different ways of selecting songs.")); + type_page_->setSubTitle( + tr("A smart playlist is a dynamic list of songs that come from your " + "library. There are different types of smart playlist that offer " + "different ways of selecting songs.")); type_page_->setStyleSheet( - "QRadioButton { font-weight: bold; }" - "QLabel { margin-bottom: 1em; margin-left: 24px; }"); + "QRadioButton { font-weight: bold; }" + "QLabel { margin-bottom: 1em; margin-left: 24px; }"); addPage(type_page_); // Finish page @@ -95,13 +93,11 @@ Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) setStartId(2); } -Wizard::~Wizard() { - qDeleteAll(plugins_); -} +Wizard::~Wizard() { qDeleteAll(plugins_); } void Wizard::SetGenerator(GeneratorPtr gen) { // Find the right type and jump to the start page - for (int i=0 ; itype() == gen->type()) { TypeChanged(i); // TODO: Put this back in when the setStartId is removed from the ctor @@ -145,12 +141,10 @@ void Wizard::TypeChanged(int index) { GeneratorPtr Wizard::CreateGenerator() const { GeneratorPtr ret; - if (type_index_ == -1) - return ret; + if (type_index_ == -1) return ret; ret = plugins_[type_index_]->CreateGenerator(); - if (!ret) - return ret; + if (!ret) return ret; ret->set_name(finish_page_->ui_->name->text()); ret->set_dynamic(finish_page_->ui_->dynamic->isChecked()); @@ -160,9 +154,9 @@ GeneratorPtr Wizard::CreateGenerator() const { void Wizard::initializePage(int id) { if (id == finish_id_) { finish_page_->ui_->dynamic_container->setEnabled( - plugins_[type_index_]->is_dynamic()); + plugins_[type_index_]->is_dynamic()); } QWizard::initializePage(id); } -} // namespace +} // namespace diff --git a/src/smartplaylists/wizard.h b/src/smartplaylists/wizard.h index f8599ce54..0d4f07fff 100644 --- a/src/smartplaylists/wizard.h +++ b/src/smartplaylists/wizard.h @@ -35,26 +35,26 @@ class WizardPlugin; class Wizard : public QWizard { Q_OBJECT -public: + public: Wizard(Application* app, LibraryBackend* library, QWidget* parent); ~Wizard(); void SetGenerator(GeneratorPtr gen); GeneratorPtr CreateGenerator() const; -protected: + protected: void initializePage(int id); -private: + private: class TypePage; class FinishPage; void AddPlugin(WizardPlugin* plugin); -private slots: + private slots: void TypeChanged(int index); -private: + private: Application* app_; LibraryBackend* library_; TypePage* type_page_; @@ -66,6 +66,6 @@ private: QSignalMapper* type_mapper_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTWIZARD_H +#endif // SMARTPLAYLISTWIZARD_H diff --git a/src/smartplaylists/wizardplugin.cpp b/src/smartplaylists/wizardplugin.cpp index 6f4eacdb5..8405e626e 100644 --- a/src/smartplaylists/wizardplugin.cpp +++ b/src/smartplaylists/wizardplugin.cpp @@ -19,16 +19,12 @@ namespace smart_playlists { -WizardPlugin::WizardPlugin(Application* app, LibraryBackend* library, QObject* parent) - : QObject(parent), - app_(app), - library_(library), - start_page_(-1) -{ -} +WizardPlugin::WizardPlugin(Application* app, LibraryBackend* library, + QObject* parent) + : QObject(parent), app_(app), library_(library), start_page_(-1) {} void WizardPlugin::Init(QWizard* wizard, int finish_page_id) { start_page_ = CreatePages(wizard, finish_page_id); } -} // namespace smart_playlists +} // namespace smart_playlists diff --git a/src/smartplaylists/wizardplugin.h b/src/smartplaylists/wizardplugin.h index 2d9cea116..55571cbe4 100644 --- a/src/smartplaylists/wizardplugin.h +++ b/src/smartplaylists/wizardplugin.h @@ -32,7 +32,7 @@ namespace smart_playlists { class WizardPlugin : public QObject { Q_OBJECT -public: + public: WizardPlugin(Application* app, LibraryBackend* library, QObject* parent); virtual QString type() const = 0; @@ -46,16 +46,16 @@ public: void Init(QWizard* wizard, int finish_page_id); -protected: + protected: virtual int CreatePages(QWizard* wizard, int finish_page_id) = 0; Application* app_; LibraryBackend* library_; -private: + private: int start_page_; }; -} // namespace smart_playlists +} // namespace smart_playlists -#endif // WIZARDPLUGIN_H +#endif // WIZARDPLUGIN_H diff --git a/src/songinfo/artistinfoview.cpp b/src/songinfo/artistinfoview.cpp index 816c49c5c..131c81142 100644 --- a/src/songinfo/artistinfoview.cpp +++ b/src/songinfo/artistinfoview.cpp @@ -23,13 +23,11 @@ #include "widgets/prettyimageview.h" #ifdef HAVE_LIBLASTFM - #include "echonestsimilarartists.h" - #include "echonesttags.h" +#include "echonestsimilarartists.h" +#include "echonesttags.h" #endif -ArtistInfoView::ArtistInfoView(QWidget *parent) - : SongInfoBase(parent) -{ +ArtistInfoView::ArtistInfoView(QWidget* parent) : SongInfoBase(parent) { fetcher_->AddProvider(new EchoNestBiographies); fetcher_->AddProvider(new EchoNestImages); fetcher_->AddProvider(new SongkickConcerts); @@ -39,37 +37,33 @@ ArtistInfoView::ArtistInfoView(QWidget *parent) #endif } -ArtistInfoView::~ArtistInfoView() { -} +ArtistInfoView::~ArtistInfoView() {} -bool ArtistInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { - if (new_metadata.artist().isEmpty()) - return false; +bool ArtistInfoView::NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { + if (new_metadata.artist().isEmpty()) return false; return old_metadata.artist() != new_metadata.artist(); } - -void ArtistInfoView::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { - if (id != current_request_id_) - return; - - AddSection (new CollapsibleInfoPane(data, this)); + +void ArtistInfoView::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) { + if (id != current_request_id_) return; + + AddSection(new CollapsibleInfoPane(data, this)); CollapseSections(); } - -void ArtistInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) { - if (id != current_request_id_) - return; + +void ArtistInfoView::ResultReady(int id, + const SongInfoFetcher::Result& result) { + if (id != current_request_id_) return; if (!result.images_.isEmpty()) { // Image view goes at the top PrettyImageView* image_view = new PrettyImageView(network_, this); AddWidget(image_view); - foreach (const QUrl& url, result.images_) { - image_view->AddImage(url); - } + foreach(const QUrl & url, result.images_) { image_view->AddImage(url); } } CollapseSections(); } - diff --git a/src/songinfo/artistinfoview.h b/src/songinfo/artistinfoview.h index 5a597d11f..b25a8788c 100644 --- a/src/songinfo/artistinfoview.h +++ b/src/songinfo/artistinfoview.h @@ -31,17 +31,16 @@ class QVBoxLayout; class ArtistInfoView : public SongInfoBase { Q_OBJECT -public: + public: ArtistInfoView(QWidget* parent = 0); ~ArtistInfoView(); -protected: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const; -protected slots: + protected slots: void ResultReady(int id, const SongInfoFetcher::Result& result); }; -#endif // ARTISTINFOVIEW_H - +#endif // ARTISTINFOVIEW_H diff --git a/src/songinfo/collapsibleinfoheader.cpp b/src/songinfo/collapsibleinfoheader.cpp index 8df53e917..64b182e2f 100644 --- a/src/songinfo/collapsibleinfoheader.cpp +++ b/src/songinfo/collapsibleinfoheader.cpp @@ -27,12 +27,11 @@ const int CollapsibleInfoHeader::kHeight = 20; const int CollapsibleInfoHeader::kIconSize = 16; CollapsibleInfoHeader::CollapsibleInfoHeader(QWidget* parent) - : QWidget(parent), - expanded_(false), - hovering_(false), - animation_(new QPropertyAnimation(this, "opacity", this)), - opacity_(0.0) -{ + : QWidget(parent), + expanded_(false), + hovering_(false), + animation_(new QPropertyAnimation(this, "opacity", this)), + opacity_(0.0) { setMinimumHeight(kHeight); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setCursor(QCursor(Qt::PointingHandCursor)); @@ -86,21 +85,25 @@ void CollapsibleInfoHeader::set_opacity(float opacity) { void CollapsibleInfoHeader::paintEvent(QPaintEvent* e) { QPainter p(this); - QColor active_text_color(palette().color(QPalette::Active, QPalette::HighlightedText)); + QColor active_text_color( + palette().color(QPalette::Active, QPalette::HighlightedText)); QColor inactive_text_color(palette().color(QPalette::Active, QPalette::Text)); QColor text_color; if (expanded_) { text_color = active_text_color; } else { p.setOpacity(0.4 + opacity_ * 0.6); - text_color = QColor( - active_text_color.red() * opacity_ + inactive_text_color.red() * (1.0 - opacity_), - active_text_color.green() * opacity_ + inactive_text_color.green() * (1.0 - opacity_), - active_text_color.blue() * opacity_ + inactive_text_color.blue() * (1.0 - opacity_)); + text_color = QColor(active_text_color.red() * opacity_ + + inactive_text_color.red() * (1.0 - opacity_), + active_text_color.green() * opacity_ + + inactive_text_color.green() * (1.0 - opacity_), + active_text_color.blue() * opacity_ + + inactive_text_color.blue() * (1.0 - opacity_)); } QRect indicator_rect(0, 0, height(), height()); - QRect icon_rect(height() + 2, (kHeight - kIconSize) / 2, kIconSize, kIconSize); + QRect icon_rect(height() + 2, (kHeight - kIconSize) / 2, kIconSize, + kIconSize); QRect text_rect(rect()); text_rect.setLeft(icon_rect.right() + 4); @@ -127,14 +130,13 @@ void CollapsibleInfoHeader::paintEvent(QPaintEvent* e) { opt.initFrom(this); opt.rect = indicator_rect; opt.state |= QStyle::State_Children; - if (expanded_) - opt.state |= QStyle::State_Open; - if (hovering_) - opt.state |= QStyle::State_Active; + if (expanded_) opt.state |= QStyle::State_Open; + if (hovering_) opt.state |= QStyle::State_Active; // Have to use the application's style here because using the widget's style // will trigger QStyleSheetStyle's recursion guard (I don't know why). - QApplication::style()->drawPrimitive(QStyle::PE_IndicatorBranch, &opt, &p, this); + QApplication::style()->drawPrimitive(QStyle::PE_IndicatorBranch, &opt, &p, + this); // Draw the icon p.drawPixmap(icon_rect, icon_.pixmap(kIconSize)); diff --git a/src/songinfo/collapsibleinfoheader.h b/src/songinfo/collapsibleinfoheader.h index 5696a2e76..388197ad8 100644 --- a/src/songinfo/collapsibleinfoheader.h +++ b/src/songinfo/collapsibleinfoheader.h @@ -27,7 +27,7 @@ class CollapsibleInfoHeader : public QWidget { Q_OBJECT Q_PROPERTY(float opacity READ opacity WRITE set_opacity); -public: + public: CollapsibleInfoHeader(QWidget* parent = 0); static const int kHeight; @@ -41,7 +41,7 @@ public: float opacity() const { return opacity_; } void set_opacity(float opacity); -public slots: + public slots: void SetExpanded(bool expanded); void SetTitle(const QString& title); void SetIcon(const QIcon& icon); @@ -51,13 +51,13 @@ signals: void Collapsed(); void ExpandedToggled(bool expanded); -protected: + protected: void enterEvent(QEvent*); void leaveEvent(QEvent*); void paintEvent(QPaintEvent* e); void mouseReleaseEvent(QMouseEvent*); -private: + private: bool expanded_; bool hovering_; QString title_; @@ -67,4 +67,4 @@ private: float opacity_; }; -#endif // COLLAPSIBLEINFOHEADER_H +#endif // COLLAPSIBLEINFOHEADER_H diff --git a/src/songinfo/collapsibleinfopane.cpp b/src/songinfo/collapsibleinfopane.cpp index 3a43af8e0..c76613b76 100644 --- a/src/songinfo/collapsibleinfopane.cpp +++ b/src/songinfo/collapsibleinfopane.cpp @@ -21,10 +21,7 @@ #include CollapsibleInfoPane::CollapsibleInfoPane(const Data& data, QWidget* parent) - : QWidget(parent), - data_(data), - header_(new CollapsibleInfoHeader(this)) -{ + : QWidget(parent), data_(data), header_(new CollapsibleInfoHeader(this)) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(3); @@ -44,20 +41,17 @@ CollapsibleInfoPane::CollapsibleInfoPane(const Data& data, QWidget* parent) connect(header_, SIGNAL(ExpandedToggled(bool)), SIGNAL(Toggled(bool))); } -void CollapsibleInfoPane::Collapse() { - header_->SetExpanded(false); -} +void CollapsibleInfoPane::Collapse() { header_->SetExpanded(false); } -void CollapsibleInfoPane::Expand() { - header_->SetExpanded(true); -} +void CollapsibleInfoPane::Expand() { header_->SetExpanded(true); } void CollapsibleInfoPane::ExpandedToggled(bool expanded) { data_.contents_->setVisible(expanded); } -bool CollapsibleInfoPane::Data::operator <(const CollapsibleInfoPane::Data& other) const { - const int my_score = (TypeCount - type_ ) * 1000 + relevance_; +bool CollapsibleInfoPane::Data::operator<( + const CollapsibleInfoPane::Data& other) const { + const int my_score = (TypeCount - type_) * 1000 + relevance_; const int other_score = (TypeCount - other.type_) * 1000 + other.relevance_; return my_score > other_score; diff --git a/src/songinfo/collapsibleinfopane.h b/src/songinfo/collapsibleinfopane.h index cc884ba9d..36305aafa 100644 --- a/src/songinfo/collapsibleinfopane.h +++ b/src/songinfo/collapsibleinfopane.h @@ -26,11 +26,11 @@ class CollapsibleInfoHeader; class CollapsibleInfoPane : public QWidget { Q_OBJECT -public: + public: struct Data { Data() : type_(Type_Biography), relevance_(0) {} - bool operator <(const Data& other) const; + bool operator<(const Data& other) const; enum Type { Type_PlayCounts, @@ -38,7 +38,6 @@ public: Type_Similar, Type_Biography, Type_Lyrics, - TypeCount }; @@ -56,19 +55,19 @@ public: const Data& data() const { return data_; } -public slots: + public slots: void Expand(); void Collapse(); signals: void Toggled(bool expanded); -private slots: + private slots: void ExpandedToggled(bool expanded); -private: + private: Data data_; CollapsibleInfoHeader* header_; }; -#endif // COLLAPSIBLEINFOPANE_H +#endif // COLLAPSIBLEINFOPANE_H diff --git a/src/songinfo/echonestbiographies.cpp b/src/songinfo/echonestbiographies.cpp index 923fb4bb9..24967e305 100644 --- a/src/songinfo/echonestbiographies.cpp +++ b/src/songinfo/echonestbiographies.cpp @@ -57,26 +57,26 @@ void EchoNestBiographies::FetchInfo(int id, const Song& metadata) { void EchoNestBiographies::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } QSet already_seen; for (const Echonest::Biography& bio : request->artist_->biographies()) { QString canonical_site = bio.site().toLower(); - canonical_site.replace(QRegExp("[^a-z]"),""); + canonical_site.replace(QRegExp("[^a-z]"), ""); - if (already_seen.contains(canonical_site)) - continue; + if (already_seen.contains(canonical_site)) continue; already_seen.insert(canonical_site); CollapsibleInfoPane::Data data; @@ -94,18 +94,19 @@ void EchoNestBiographies::RequestFinished() { // Add a link to the bio webpage at the top if we have one if (!bio.url().isEmpty()) { text += "

" + - tr("Open in your browser") + - "

"; + tr("Open in your browser") + "

"; } text += bio.text(); if (bio.site() == "last.fm") { - // Echonest lost formatting and it seems there is currently no plans on Echonest side for changing this. + // Echonest lost formatting and it seems there is currently no plans on + // Echonest side for changing this. // But with last.fm, we can guess newlines: " " corresponds to a newline // (this seems to be because on last.fm' website, extra blank is inserted // before
tag, and this blank is kept). - // This is tricky, but this make the display nicer for last.fm biographies. - text.replace(" ","

"); + // This is tricky, but this make the display nicer for last.fm + // biographies. + text.replace(" ", "

"); } editor->SetHtml(text); data.contents_ = editor; diff --git a/src/songinfo/echonestbiographies.h b/src/songinfo/echonestbiographies.h index 8e8175fd1..2429bce58 100644 --- a/src/songinfo/echonestbiographies.h +++ b/src/songinfo/echonestbiographies.h @@ -27,15 +27,15 @@ class QNetworkReply; class EchoNestBiographies : public SongInfoProvider { Q_OBJECT -public: + public: EchoNestBiographies(); void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: QMap site_relevance_; QMap site_icons_; @@ -45,4 +45,4 @@ private: QMap requests_; }; -#endif // ECHONESTBIOGRAPHIES_H +#endif // ECHONESTBIOGRAPHIES_H diff --git a/src/songinfo/echonestimages.cpp b/src/songinfo/echonestimages.cpp index b16e9c20c..4cc7ff62e 100644 --- a/src/songinfo/echonestimages.cpp +++ b/src/songinfo/echonestimages.cpp @@ -41,19 +41,20 @@ void EchoNestImages::FetchInfo(int id, const Song& metadata) { void EchoNestImages::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } - foreach (const Echonest::ArtistImage& image, request->artist_->images()) { + foreach(const Echonest::ArtistImage & image, request->artist_->images()) { emit ImageReady(request->id_, image.url()); } diff --git a/src/songinfo/echonestimages.h b/src/songinfo/echonestimages.h index 25585b9bb..d1763a674 100644 --- a/src/songinfo/echonestimages.h +++ b/src/songinfo/echonestimages.h @@ -27,17 +27,17 @@ class QNetworkReply; class EchoNestImages : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: struct Request; typedef std::shared_ptr RequestPtr; QMap requests_; }; -#endif // ECHONESTIMAGES_H +#endif // ECHONESTIMAGES_H diff --git a/src/songinfo/echonestsimilarartists.cpp b/src/songinfo/echonestsimilarartists.cpp index b42c8dd8c..4c394ba21 100644 --- a/src/songinfo/echonestsimilarartists.cpp +++ b/src/songinfo/echonestsimilarartists.cpp @@ -38,8 +38,7 @@ void EchoNestSimilarArtists::FetchInfo(int id, const Song& metadata) { void EchoNestSimilarArtists::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); int id = requests_.take(reply); @@ -47,8 +46,10 @@ void EchoNestSimilarArtists::RequestFinished() { Echonest::Artists artists; try { artists = Echonest::Artist::parseSimilar(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } if (!artists.isEmpty()) { @@ -63,10 +64,9 @@ void EchoNestSimilarArtists::RequestFinished() { widget->SetIcon(QIcon(":/icons/22x22/x-clementine-artist.png")); - foreach (const Echonest::Artist& artist, artists) { + foreach(const Echonest::Artist & artist, artists) { widget->AddTag(artist.name()); - if (widget->count() >= 10) - break; + if (widget->count() >= 10) break; } emit InfoReady(id, data); diff --git a/src/songinfo/echonestsimilarartists.h b/src/songinfo/echonestsimilarartists.h index 22065fc18..f78fa544f 100644 --- a/src/songinfo/echonestsimilarartists.h +++ b/src/songinfo/echonestsimilarartists.h @@ -25,14 +25,14 @@ class QNetworkReply; class EchoNestSimilarArtists : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: QMap requests_; }; -#endif // ECHONESTSIMILARARTISTS_H +#endif // ECHONESTSIMILARARTISTS_H diff --git a/src/songinfo/echonesttags.cpp b/src/songinfo/echonesttags.cpp index 6ed53afe2..7911cecf4 100644 --- a/src/songinfo/echonesttags.cpp +++ b/src/songinfo/echonesttags.cpp @@ -42,16 +42,17 @@ void EchoNestTags::FetchInfo(int id, const Song& metadata) { void EchoNestTags::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } if (!request->artist_->terms().isEmpty()) { @@ -68,8 +69,7 @@ void EchoNestTags::RequestFinished() { for (const Echonest::Term& term : request->artist_->terms()) { widget->AddTag(term.name()); - if (widget->count() >= 10) - break; + if (widget->count() >= 10) break; } emit InfoReady(request->id_, data); @@ -77,4 +77,3 @@ void EchoNestTags::RequestFinished() { emit Finished(request->id_); } - diff --git a/src/songinfo/echonesttags.h b/src/songinfo/echonesttags.h index 96bddd86d..5776f3e00 100644 --- a/src/songinfo/echonesttags.h +++ b/src/songinfo/echonesttags.h @@ -27,17 +27,17 @@ class QNetworkReply; class EchoNestTags : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: struct Request; typedef std::shared_ptr RequestPtr; QMap requests_; }; -#endif // ECHONESTTAGS_H +#endif // ECHONESTTAGS_H diff --git a/src/songinfo/lastfmtrackinfoprovider.cpp b/src/songinfo/lastfmtrackinfoprovider.cpp index e60ab0ea3..99956a9ae 100644 --- a/src/songinfo/lastfmtrackinfoprovider.cpp +++ b/src/songinfo/lastfmtrackinfoprovider.cpp @@ -38,8 +38,7 @@ void LastfmTrackInfoProvider::FetchInfo(int id, const Song& metadata) { void LastfmTrackInfoProvider::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; const int id = requests_.take(reply); @@ -70,8 +69,7 @@ void LastfmTrackInfoProvider::GetPlayCounts(int id, const lastfm::XmlQuery& q) { love = q["track"]["userloved"].text() == "1"; } - if (!listeners && !playcount && myplaycount == -1) - return; // No useful data + if (!listeners && !playcount && myplaycount == -1) return; // No useful data CollapsibleInfoPane::Data data; data.id_ = "lastfm/playcounts"; @@ -85,26 +83,27 @@ void LastfmTrackInfoProvider::GetPlayCounts(int id, const lastfm::XmlQuery& q) { if (myplaycount != -1) { if (love) widget->AddItem(QIcon(":/last.fm/love.png"), tr("You love this track")); - widget->AddItem(QIcon(":/last.fm/icon_user.png"), tr("Your scrobbles: %1").arg(myplaycount)); + widget->AddItem(QIcon(":/last.fm/icon_user.png"), + tr("Your scrobbles: %1").arg(myplaycount)); } if (playcount) - widget->AddItem(IconLoader::Load("media-playback-start"), tr("%L1 total plays").arg(playcount)); + widget->AddItem(IconLoader::Load("media-playback-start"), + tr("%L1 total plays").arg(playcount)); if (listeners) - widget->AddItem(QIcon(":/last.fm/my_neighbours.png"), tr("%L1 other listeners").arg(listeners)); + widget->AddItem(QIcon(":/last.fm/my_neighbours.png"), + tr("%L1 other listeners").arg(listeners)); emit InfoReady(id, data); } void LastfmTrackInfoProvider::GetWiki(int id, const lastfm::XmlQuery& q) { // Parse the response - if (q["track"].children("wiki").isEmpty()) - return; // No wiki element + if (q["track"].children("wiki").isEmpty()) return; // No wiki element const QString content = q["track"]["wiki"]["content"].text(); - if (content.isEmpty()) - return; // No useful data + if (content.isEmpty()) return; // No useful data CollapsibleInfoPane::Data data; data.id_ = "lastfm/songwiki"; @@ -124,7 +123,7 @@ void LastfmTrackInfoProvider::GetTags(int id, const lastfm::XmlQuery& q) { // Parse the response if (q["track"].children("toptags").isEmpty() || q["track"]["toptags"].children("tag").isEmpty()) - return; // No tag elements + return; // No tag elements CollapsibleInfoPane::Data data; data.id_ = "lastfm/songtags"; @@ -137,7 +136,7 @@ void LastfmTrackInfoProvider::GetTags(int id, const lastfm::XmlQuery& q) { widget->SetIcon(data.icon_); - foreach (const lastfm::XmlQuery& e, q["track"]["toptags"].children("tag")) { + foreach(const lastfm::XmlQuery & e, q["track"]["toptags"].children("tag")) { widget->AddTag(e["name"].text()); } diff --git a/src/songinfo/lastfmtrackinfoprovider.h b/src/songinfo/lastfmtrackinfoprovider.h index 51ae416ce..1cd2d6692 100644 --- a/src/songinfo/lastfmtrackinfoprovider.h +++ b/src/songinfo/lastfmtrackinfoprovider.h @@ -21,7 +21,7 @@ #include "songinfoprovider.h" namespace lastfm { - class XmlQuery; +class XmlQuery; } class QNetworkReply; @@ -29,19 +29,19 @@ class QNetworkReply; class LastfmTrackInfoProvider : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: void GetPlayCounts(int id, const lastfm::XmlQuery& q); void GetWiki(int id, const lastfm::XmlQuery& q); void GetTags(int id, const lastfm::XmlQuery& q); -private: + private: QMap requests_; }; -#endif // LASTFMTRACKINFOPROVIDER_H +#endif // LASTFMTRACKINFOPROVIDER_H diff --git a/src/songinfo/songinfobase.cpp b/src/songinfo/songinfobase.cpp index 71a7329f2..8d84618ac 100644 --- a/src/songinfo/songinfobase.cpp +++ b/src/songinfo/songinfobase.cpp @@ -28,16 +28,15 @@ const char* SongInfoBase::kSettingsGroup = "SongInfo"; SongInfoBase::SongInfoBase(QWidget* parent) - : QWidget(parent), - network_(new NetworkAccessManager(this)), - fetcher_(new SongInfoFetcher(this)), - current_request_id_(-1), - scroll_area_(new QScrollArea), - container_(new QVBoxLayout), - section_container_(nullptr), - fader_(new WidgetFadeHelper(this, 1000)), - dirty_(false) -{ + : QWidget(parent), + network_(new NetworkAccessManager(this)), + fetcher_(new SongInfoFetcher(this)), + current_request_id_(-1), + scroll_area_(new QScrollArea), + container_(new QVBoxLayout), + section_container_(nullptr), + fader_(new WidgetFadeHelper(this, 1000)), + dirty_(false) { // Add the top-level scroll area setLayout(new QVBoxLayout); layout()->setContentsMargins(0, 0, 0, 0); @@ -62,10 +61,10 @@ SongInfoBase::SongInfoBase(QWidget* parent) stylesheet.open(QIODevice::ReadOnly); setStyleSheet(QString::fromAscii(stylesheet.readAll())); - connect(fetcher_, SIGNAL(ResultReady(int,SongInfoFetcher::Result)), - SLOT(ResultReady(int,SongInfoFetcher::Result))); - connect(fetcher_, SIGNAL(InfoResultReady(int,CollapsibleInfoPane::Data)), - SLOT(InfoResultReady(int,CollapsibleInfoPane::Data))); + connect(fetcher_, SIGNAL(ResultReady(int, SongInfoFetcher::Result)), + SLOT(ResultReady(int, SongInfoFetcher::Result))); + connect(fetcher_, SIGNAL(InfoResultReady(int, CollapsibleInfoPane::Data)), + SLOT(InfoResultReady(int, CollapsibleInfoPane::Data))); } void SongInfoBase::Clear() { @@ -81,21 +80,22 @@ void SongInfoBase::Clear() { section_container_->setLayout(new QVBoxLayout); section_container_->layout()->setContentsMargins(0, 0, 0, 0); section_container_->layout()->setSpacing(1); - section_container_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); + section_container_->setSizePolicy(QSizePolicy::Expanding, + QSizePolicy::Minimum); container_->insertWidget(0, section_container_); } void SongInfoBase::AddSection(CollapsibleInfoPane* section) { int index = 0; - for ( ; indexdata() < sections_[index]->data()) - break; + for (; index < sections_.count(); ++index) { + if (section->data() < sections_[index]->data()) break; } ConnectWidget(section->data().contents_); sections_.insert(index, section); - qobject_cast(section_container_->layout())->insertWidget(index, section); + qobject_cast(section_container_->layout()) + ->insertWidget(index, section); section->show(); } @@ -116,9 +116,7 @@ void SongInfoBase::SongChanged(const Song& metadata) { } } -void SongInfoBase::SongFinished() { - dirty_ = false; -} +void SongInfoBase::SongFinished() { dirty_ = false; } void SongInfoBase::showEvent(QShowEvent* e) { if (dirty_) { @@ -144,15 +142,15 @@ void SongInfoBase::Update(const Song& metadata) { // Do this after the new pane has been shown otherwise it'll just grab a // black rectangle. - Clear (); + Clear(); QTimer::singleShot(0, fader_, SLOT(StartBlur())); } -void SongInfoBase::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { -} +void SongInfoBase::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) {} void SongInfoBase::ResultReady(int id, const SongInfoFetcher::Result& result) { - foreach (const CollapsibleInfoPane::Data& data, result.info_) { + foreach(const CollapsibleInfoPane::Data & data, result.info_) { delete data.contents_; } } @@ -171,7 +169,7 @@ void SongInfoBase::CollapseSections() { QMap types_; QSet has_user_preference_; - foreach (CollapsibleInfoPane* pane, sections_) { + foreach(CollapsibleInfoPane * pane, sections_) { const CollapsibleInfoPane::Data::Type type = pane->data().type_; types_.insertMulti(type, pane); @@ -184,22 +182,21 @@ void SongInfoBase::CollapseSections() { } } - foreach (CollapsibleInfoPane::Data::Type type, types_.keys()) { + foreach(CollapsibleInfoPane::Data::Type type, types_.keys()) { if (!has_user_preference_.contains(type)) { // Expand the first one types_.values(type).last()->Expand(); } } - foreach (CollapsibleInfoPane* pane, sections_) { + foreach(CollapsibleInfoPane * pane, sections_) { connect(pane, SIGNAL(Toggled(bool)), SLOT(SectionToggled(bool))); } } void SongInfoBase::SectionToggled(bool value) { CollapsibleInfoPane* pane = qobject_cast(sender()); - if (!pane || !sections_.contains(pane)) - return; + if (!pane || !sections_.contains(pane)) return; QSettings s; s.beginGroup(kSettingsGroup); @@ -207,10 +204,9 @@ void SongInfoBase::SectionToggled(bool value) { } void SongInfoBase::ReloadSettings() { - foreach (CollapsibleInfoPane* pane, sections_) { + foreach(CollapsibleInfoPane * pane, sections_) { QWidget* contents = pane->data().contents_; - if (!contents) - continue; + if (!contents) continue; QMetaObject::invokeMethod(contents, "ReloadSettings"); } @@ -224,7 +220,7 @@ void SongInfoBase::ConnectWidget(QWidget* widget) { } if (m->indexOfSignal("DoGlobalSearch(QString)") != -1) { - connect(widget, SIGNAL(DoGlobalSearch(QString)), SIGNAL(DoGlobalSearch(QString))); + connect(widget, SIGNAL(DoGlobalSearch(QString)), + SIGNAL(DoGlobalSearch(QString))); } } - diff --git a/src/songinfo/songinfobase.h b/src/songinfo/songinfobase.h index ab8c8448c..0ff87354b 100644 --- a/src/songinfo/songinfobase.h +++ b/src/songinfo/songinfobase.h @@ -37,12 +37,12 @@ class QVBoxLayout; class SongInfoBase : public QWidget { Q_OBJECT -public: + public: SongInfoBase(QWidget* parent = 0); static const char* kSettingsGroup; -public slots: + public slots: void SongChanged(const Song& metadata); void SongFinished(); virtual void ReloadSettings(); @@ -51,34 +51,37 @@ signals: void ShowSettingsDialog(); void DoGlobalSearch(const QString& query); -protected: + protected: void showEvent(QShowEvent* e); virtual void Update(const Song& metadata); - virtual bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { return true; } + virtual bool NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { + return true; + } void AddWidget(QWidget* widget); void AddSection(CollapsibleInfoPane* section); void Clear(); void CollapseSections(); -protected slots: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected slots: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); virtual void ResultReady(int id, const SongInfoFetcher::Result& result); -protected: + protected: QNetworkAccessManager* network_; SongInfoFetcher* fetcher_; int current_request_id_; -private: + private: void MaybeUpdate(const Song& metadata); void ConnectWidget(QWidget* widget); -private slots: + private slots: void SectionToggled(bool value); -private: + private: QScrollArea* scroll_area_; QVBoxLayout* container_; @@ -94,5 +97,4 @@ private: bool dirty_; }; -#endif // SONGINFOBASE_H - +#endif // SONGINFOBASE_H diff --git a/src/songinfo/songinfofetcher.cpp b/src/songinfo/songinfofetcher.cpp index 1497fa994..f581ea11e 100644 --- a/src/songinfo/songinfofetcher.cpp +++ b/src/songinfo/songinfofetcher.cpp @@ -23,23 +23,23 @@ #include SongInfoFetcher::SongInfoFetcher(QObject* parent) - : QObject(parent), - timeout_timer_mapper_(new QSignalMapper(this)), - timeout_duration_(kDefaultTimeoutDuration), - next_id_(1) -{ + : QObject(parent), + timeout_timer_mapper_(new QSignalMapper(this)), + timeout_duration_(kDefaultTimeoutDuration), + next_id_(1) { connect(timeout_timer_mapper_, SIGNAL(mapped(int)), SLOT(Timeout(int))); } void SongInfoFetcher::AddProvider(SongInfoProvider* provider) { providers_ << provider; - connect(provider, SIGNAL(ImageReady(int,QUrl)), SLOT(ImageReady(int,QUrl))); - connect(provider, SIGNAL(InfoReady(int,CollapsibleInfoPane::Data)), SLOT(InfoReady(int,CollapsibleInfoPane::Data))); + connect(provider, SIGNAL(ImageReady(int, QUrl)), SLOT(ImageReady(int, QUrl))); + connect(provider, SIGNAL(InfoReady(int, CollapsibleInfoPane::Data)), + SLOT(InfoReady(int, CollapsibleInfoPane::Data))); connect(provider, SIGNAL(Finished(int)), SLOT(ProviderFinished(int))); } int SongInfoFetcher::FetchInfo(const Song& metadata) { - const int id = next_id_ ++; + const int id = next_id_++; results_[id] = Result(); timeout_timers_[id] = new QTimer(this); timeout_timers_[id]->setSingleShot(true); @@ -47,9 +47,10 @@ int SongInfoFetcher::FetchInfo(const Song& metadata) { timeout_timers_[id]->start(); timeout_timer_mapper_->setMapping(timeout_timers_[id], id); - connect(timeout_timers_[id], SIGNAL(timeout()), timeout_timer_mapper_, SLOT(map())); + connect(timeout_timers_[id], SIGNAL(timeout()), timeout_timer_mapper_, + SLOT(map())); - foreach (SongInfoProvider* provider, providers_) { + foreach(SongInfoProvider * provider, providers_) { if (provider->is_enabled()) { waiting_for_[id].append(provider); provider->FetchInfo(id, metadata); @@ -59,30 +60,24 @@ int SongInfoFetcher::FetchInfo(const Song& metadata) { } void SongInfoFetcher::ImageReady(int id, const QUrl& url) { - if (!results_.contains(id)) - return; + if (!results_.contains(id)) return; results_[id].images_ << url; } void SongInfoFetcher::InfoReady(int id, const CollapsibleInfoPane::Data& data) { - if (!results_.contains(id)) - return; + if (!results_.contains(id)) return; results_[id].info_ << data; - - if (!waiting_for_.contains(id)) - return; - emit InfoResultReady (id, data); + + if (!waiting_for_.contains(id)) return; + emit InfoResultReady(id, data); } void SongInfoFetcher::ProviderFinished(int id) { - if (!results_.contains(id)) - return; - if (!waiting_for_.contains(id)) - return; + if (!results_.contains(id)) return; + if (!waiting_for_.contains(id)) return; SongInfoProvider* provider = qobject_cast(sender()); - if (!waiting_for_[id].contains(provider)) - return; + if (!waiting_for_[id].contains(provider)) return; waiting_for_[id].removeAll(provider); if (waiting_for_[id].isEmpty()) { @@ -93,16 +88,14 @@ void SongInfoFetcher::ProviderFinished(int id) { } void SongInfoFetcher::Timeout(int id) { - if (!results_.contains(id)) - return; - if (!waiting_for_.contains(id)) - return; + if (!results_.contains(id)) return; + if (!waiting_for_.contains(id)) return; // Emit the results that we have already emit ResultReady(id, results_.take(id)); // Cancel any providers that we're still waiting for - foreach (SongInfoProvider* provider, waiting_for_[id]) { + foreach(SongInfoProvider * provider, waiting_for_[id]) { qLog(Info) << "Request timed out from info provider" << provider->name(); provider->Cancel(id); } @@ -111,4 +104,3 @@ void SongInfoFetcher::Timeout(int id) { // Remove the timer delete timeout_timers_.take(id); } - diff --git a/src/songinfo/songinfofetcher.h b/src/songinfo/songinfofetcher.h index e843a5908..9e0decf3d 100644 --- a/src/songinfo/songinfofetcher.h +++ b/src/songinfo/songinfofetcher.h @@ -32,7 +32,7 @@ class QSignalMapper; class SongInfoFetcher : public QObject { Q_OBJECT -public: + public: SongInfoFetcher(QObject* parent = 0); struct Result { @@ -40,7 +40,7 @@ public: QList info_; }; - static const int kDefaultTimeoutDuration = 25000; // msec + static const int kDefaultTimeoutDuration = 25000; // msec void AddProvider(SongInfoProvider* provider); int FetchInfo(const Song& metadata); @@ -48,16 +48,16 @@ public: QList providers() const { return providers_; } signals: - void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); void ResultReady(int id, const SongInfoFetcher::Result& result); -private slots: + private slots: void ImageReady(int id, const QUrl& url); void InfoReady(int id, const CollapsibleInfoPane::Data& data); void ProviderFinished(int id); void Timeout(int id); -private: + private: QList providers_; QMap results_; @@ -70,5 +70,4 @@ private: int next_id_; }; -#endif // SONGINFOFETCHER_H - +#endif // SONGINFOFETCHER_H diff --git a/src/songinfo/songinfoprovider.cpp b/src/songinfo/songinfoprovider.cpp index 21da0873c..80b830a95 100644 --- a/src/songinfo/songinfoprovider.cpp +++ b/src/songinfo/songinfoprovider.cpp @@ -17,11 +17,6 @@ #include "songinfoprovider.h" -SongInfoProvider::SongInfoProvider() - : enabled_(true) -{ -} +SongInfoProvider::SongInfoProvider() : enabled_(true) {} -QString SongInfoProvider::name() const { - return metaObject()->className(); -} +QString SongInfoProvider::name() const { return metaObject()->className(); } diff --git a/src/songinfo/songinfoprovider.h b/src/songinfo/songinfoprovider.h index 9925d5f67..c241296a0 100644 --- a/src/songinfo/songinfoprovider.h +++ b/src/songinfo/songinfoprovider.h @@ -27,7 +27,7 @@ class SongInfoProvider : public QObject { Q_OBJECT -public: + public: SongInfoProvider(); virtual void FetchInfo(int id, const Song& metadata) = 0; @@ -43,8 +43,8 @@ signals: void InfoReady(int id, const CollapsibleInfoPane::Data& data); void Finished(int id); -private: + private: bool enabled_; }; -#endif // SONGINFOPROVIDER_H +#endif // SONGINFOPROVIDER_H diff --git a/src/songinfo/songinfosettingspage.cpp b/src/songinfo/songinfosettingspage.cpp index 643afa12a..778b34f4d 100644 --- a/src/songinfo/songinfosettingspage.cpp +++ b/src/songinfo/songinfosettingspage.cpp @@ -27,31 +27,29 @@ #include #include - SongInfoSettingsPage::SongInfoSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_SongInfoSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_SongInfoSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("view-media-lyrics")); connect(ui_->up, SIGNAL(clicked()), SLOT(MoveUp())); connect(ui_->down, SIGNAL(clicked()), SLOT(MoveDown())); - connect(ui_->providers, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + connect(ui_->providers, + SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), SLOT(CurrentItemChanged(QListWidgetItem*))); connect(ui_->providers, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(ItemChanged(QListWidgetItem*))); QFile song_info_preview(":/lumberjacksong.txt"); song_info_preview.open(QIODevice::ReadOnly); - ui_->song_info_font_preview->setText(QString::fromUtf8(song_info_preview.readAll())); + ui_->song_info_font_preview->setText( + QString::fromUtf8(song_info_preview.readAll())); - connect(ui_->song_info_font_size, SIGNAL(valueChanged(double)), SLOT(FontSizeChanged(double))); + connect(ui_->song_info_font_size, SIGNAL(valueChanged(double)), + SLOT(FontSizeChanged(double))); } -SongInfoSettingsPage::~SongInfoSettingsPage() { - delete ui_; -} +SongInfoSettingsPage::~SongInfoSettingsPage() { delete ui_; } void SongInfoSettingsPage::Load() { QSettings s; @@ -61,15 +59,18 @@ void SongInfoSettingsPage::Load() { s.value("font_size", SongInfoTextView::kDefaultFontSize).toReal()); s.endGroup(); - QList providers = dialog()->song_info_view()->lyric_providers(); + QList providers = + dialog()->song_info_view()->lyric_providers(); ui_->providers->clear(); - foreach (const UltimateLyricsProvider* provider, providers) { + foreach(const UltimateLyricsProvider * provider, providers) { QListWidgetItem* item = new QListWidgetItem(ui_->providers); item->setText(provider->name()); item->setCheckState(provider->is_enabled() ? Qt::Checked : Qt::Unchecked); - item->setForeground(provider->is_enabled() ? palette().color(QPalette::Active, QPalette::Text) - : palette().color(QPalette::Disabled, QPalette::Text)); + item->setForeground( + provider->is_enabled() + ? palette().color(QPalette::Active, QPalette::Text) + : palette().color(QPalette::Disabled, QPalette::Text)); } } @@ -82,10 +83,9 @@ void SongInfoSettingsPage::Save() { s.beginGroup(SongInfoView::kSettingsGroup); QVariantList search_order; - for (int i=0 ; iproviders->count() ; ++i) { + for (int i = 0; i < ui_->providers->count(); ++i) { const QListWidgetItem* item = ui_->providers->item(i); - if (item->checkState() == Qt::Checked) - search_order << item->text(); + if (item->checkState() == Qt::Checked) search_order << item->text(); } s.setValue("search_order", search_order); s.endGroup(); @@ -102,13 +102,9 @@ void SongInfoSettingsPage::CurrentItemChanged(QListWidgetItem* item) { } } -void SongInfoSettingsPage::MoveUp() { - Move(-1); -} +void SongInfoSettingsPage::MoveUp() { Move(-1); } -void SongInfoSettingsPage::MoveDown() { - Move(+1); -} +void SongInfoSettingsPage::MoveDown() { Move(+1); } void SongInfoSettingsPage::Move(int d) { const int row = ui_->providers->currentRow(); @@ -119,8 +115,9 @@ void SongInfoSettingsPage::Move(int d) { void SongInfoSettingsPage::ItemChanged(QListWidgetItem* item) { const bool checked = item->checkState() == Qt::Checked; - item->setForeground(checked ? palette().color(QPalette::Active, QPalette::Text) - : palette().color(QPalette::Disabled, QPalette::Text)); + item->setForeground( + checked ? palette().color(QPalette::Active, QPalette::Text) + : palette().color(QPalette::Disabled, QPalette::Text)); } void SongInfoSettingsPage::FontSizeChanged(double value) { diff --git a/src/songinfo/songinfosettingspage.h b/src/songinfo/songinfosettingspage.h index e6bbe8fb0..ea6b57d14 100644 --- a/src/songinfo/songinfosettingspage.h +++ b/src/songinfo/songinfosettingspage.h @@ -28,14 +28,14 @@ class QListWidgetItem; class SongInfoSettingsPage : public SettingsPage { Q_OBJECT -public: + public: SongInfoSettingsPage(SettingsDialog* parent); ~SongInfoSettingsPage(); void Load(); void Save(); -private slots: + private slots: void MoveUp(); void MoveDown(); void Move(int d); @@ -45,8 +45,8 @@ private slots: void FontSizeChanged(double value); -private: + private: Ui_SongInfoSettingsPage* ui_; }; -#endif // SONGINFOSETTINGSPAGE_H +#endif // SONGINFOSETTINGSPAGE_H diff --git a/src/songinfo/songinfotextview.cpp b/src/songinfo/songinfotextview.cpp index bd66ef7ea..94b44f31d 100644 --- a/src/songinfo/songinfotextview.cpp +++ b/src/songinfo/songinfotextview.cpp @@ -29,10 +29,7 @@ const qreal SongInfoTextView::kDefaultFontSize = 8.5; const char* SongInfoTextView::kSettingsGroup = "SongInfo"; SongInfoTextView::SongInfoTextView(QWidget* parent) - : QTextBrowser(parent), - last_width_(-1), - recursion_filter_(false) -{ + : QTextBrowser(parent), last_width_(-1), recursion_filter_(false) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -52,14 +49,11 @@ QFont SongInfoTextView::Font() { return font; } -void SongInfoTextView::ReloadSettings() { - document()->setDefaultFont(Font()); -} +void SongInfoTextView::ReloadSettings() { document()->setDefaultFont(Font()); } void SongInfoTextView::resizeEvent(QResizeEvent* e) { const int w = qMax(100, width()); - if (w == last_width_) - return; + if (w == last_width_) return; last_width_ = w; document()->setTextWidth(w); @@ -68,19 +62,16 @@ void SongInfoTextView::resizeEvent(QResizeEvent* e) { QTextBrowser::resizeEvent(e); } -QSize SongInfoTextView::sizeHint() const { - return minimumSize(); -} +QSize SongInfoTextView::sizeHint() const { return minimumSize(); } -void SongInfoTextView::wheelEvent(QWheelEvent* e) { - e->ignore(); -} +void SongInfoTextView::wheelEvent(QWheelEvent* e) { e->ignore(); } void SongInfoTextView::contextMenuEvent(QContextMenuEvent* e) { QMenu* menu = createStandardContextMenu(e->pos()); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(tr("Change font size..."), this, SIGNAL(ShowSettingsDialog())); + menu->addAction(tr("Change font size..."), this, + SIGNAL(ShowSettingsDialog())); menu->popup(e->globalPos()); } @@ -93,7 +84,8 @@ void SongInfoTextView::SetHtml(const QString& html) { copy.replace(QRegExp("([^>])[\\t ]*\\n"), "\\1

"); // Strip any newlines from the end - copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), ""); + copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), + ""); setHtml(copy); } diff --git a/src/songinfo/songinfotextview.h b/src/songinfo/songinfotextview.h index e305bb99a..27f5c6683 100644 --- a/src/songinfo/songinfotextview.h +++ b/src/songinfo/songinfotextview.h @@ -23,7 +23,7 @@ class SongInfoTextView : public QTextBrowser { Q_OBJECT -public: + public: SongInfoTextView(QWidget* parent = 0); static const qreal kDefaultFontSize; @@ -34,22 +34,22 @@ public: QSize sizeHint() const; -public slots: + public slots: void ReloadSettings(); void SetHtml(const QString& html); signals: void ShowSettingsDialog(); -protected: + protected: void resizeEvent(QResizeEvent* e); void wheelEvent(QWheelEvent* e); void contextMenuEvent(QContextMenuEvent* e); QVariant loadResource(int type, const QUrl& name); -private: + private: int last_width_; bool recursion_filter_; }; -#endif // SONGINFOTEXTVIEW_H +#endif // SONGINFOTEXTVIEW_H diff --git a/src/songinfo/songinfoview.cpp b/src/songinfo/songinfoview.cpp index 42790b0db..0541b99bb 100644 --- a/src/songinfo/songinfoview.cpp +++ b/src/songinfo/songinfoview.cpp @@ -22,7 +22,7 @@ #include "ultimatelyricsreader.h" #ifdef HAVE_LIBLASTFM - #include "lastfmtrackinfoprovider.h" +#include "lastfmtrackinfoprovider.h" #endif #include @@ -35,14 +35,13 @@ const char* SongInfoView::kSettingsGroup = "SongInfo"; typedef QList ProviderList; SongInfoView::SongInfoView(QWidget* parent) - : SongInfoBase(parent), - ultimate_reader_(new UltimateLyricsReader(this)) -{ + : SongInfoBase(parent), ultimate_reader_(new UltimateLyricsReader(this)) { // Parse the ultimate lyrics xml file in the background - QFuture future = QtConcurrent::run( - ultimate_reader_.get(), &UltimateLyricsReader::Parse, - QString(":lyrics/ultimate_providers.xml")); - QFutureWatcher* watcher = new QFutureWatcher(this); + QFuture future = + QtConcurrent::run(ultimate_reader_.get(), &UltimateLyricsReader::Parse, + QString(":lyrics/ultimate_providers.xml")); + QFutureWatcher* watcher = + new QFutureWatcher(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(UltimateLyricsParsed())); @@ -51,14 +50,13 @@ SongInfoView::SongInfoView(QWidget* parent) #endif } -SongInfoView::~SongInfoView() { -} +SongInfoView::~SongInfoView() {} void SongInfoView::UltimateLyricsParsed() { QFutureWatcher* watcher = static_cast*>(sender()); - foreach (SongInfoProvider* provider, watcher->result()) { + foreach(SongInfoProvider * provider, watcher->result()) { fetcher_->AddProvider(provider); } @@ -68,7 +66,8 @@ void SongInfoView::UltimateLyricsParsed() { ReloadSettings(); } -bool SongInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { +bool SongInfoView::NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { if (new_metadata.title().isEmpty() || new_metadata.artist().isEmpty()) return false; @@ -76,16 +75,15 @@ bool SongInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadat old_metadata.artist() != new_metadata.artist(); } -void SongInfoView::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { - if (id != current_request_id_) - return; - - AddSection (new CollapsibleInfoPane(data, this)); +void SongInfoView::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) { + if (id != current_request_id_) return; + + AddSection(new CollapsibleInfoPane(data, this)); CollapseSections(); } -void SongInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) { -} +void SongInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) {} void SongInfoView::ReloadSettings() { QSettings s; @@ -115,22 +113,23 @@ void SongInfoView::ReloadSettings() { << "darklyrics.com"; QVariant saved_order = s.value("search_order", default_order); - foreach (const QVariant& name, saved_order.toList()) { + foreach(const QVariant & name, saved_order.toList()) { SongInfoProvider* provider = ProviderByName(name.toString()); - if (provider) - ordered_providers << provider; + if (provider) ordered_providers << provider; } // Enable all the providers in the list and rank them int relevance = 100; - foreach (SongInfoProvider* provider, ordered_providers) { + foreach(SongInfoProvider * provider, ordered_providers) { provider->set_enabled(true); qobject_cast(provider)->set_relevance(relevance--); } - // Any lyric providers we don't have in ordered_providers are considered disabled - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (qobject_cast(provider) && !ordered_providers.contains(provider)) { + // Any lyric providers we don't have in ordered_providers are considered + // disabled + foreach(SongInfoProvider * provider, fetcher_->providers()) { + if (qobject_cast(provider) && + !ordered_providers.contains(provider)) { provider->set_enabled(false); } } @@ -139,33 +138,32 @@ void SongInfoView::ReloadSettings() { } SongInfoProvider* SongInfoView::ProviderByName(const QString& name) const { - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { - if (lyrics->name() == name) - return provider; + foreach(SongInfoProvider * provider, fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { + if (lyrics->name() == name) return provider; } } return nullptr; } namespace { - bool CompareLyricProviders(const UltimateLyricsProvider* a, const UltimateLyricsProvider* b) { - if (a->is_enabled() && !b->is_enabled()) - return true; - if (!a->is_enabled() && b->is_enabled()) - return false; - return a->relevance() > b->relevance(); - } +bool CompareLyricProviders(const UltimateLyricsProvider* a, + const UltimateLyricsProvider* b) { + if (a->is_enabled() && !b->is_enabled()) return true; + if (!a->is_enabled() && b->is_enabled()) return false; + return a->relevance() > b->relevance(); +} } QList SongInfoView::lyric_providers() const { QList ret; - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { + foreach(SongInfoProvider * provider, fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { ret << lyrics; } } qSort(ret.begin(), ret.end(), CompareLyricProviders); return ret; } - diff --git a/src/songinfo/songinfoview.h b/src/songinfo/songinfoview.h index 82b869dfc..da42d80ec 100644 --- a/src/songinfo/songinfoview.h +++ b/src/songinfo/songinfoview.h @@ -28,7 +28,7 @@ class UltimateLyricsReader; class SongInfoView : public SongInfoBase { Q_OBJECT -public: + public: SongInfoView(QWidget* parent = 0); ~SongInfoView(); @@ -36,25 +36,24 @@ public: QList lyric_providers() const; -public slots: + public slots: void ReloadSettings(); -protected: + protected: bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const; -protected slots: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected slots: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); virtual void ResultReady(int id, const SongInfoFetcher::Result& result); -private: + private: SongInfoProvider* ProviderByName(const QString& name) const; -private slots: + private slots: void UltimateLyricsParsed(); -private: + private: std::unique_ptr ultimate_reader_; }; -#endif // SONGINFOVIEW_H - +#endif // SONGINFOVIEW_H diff --git a/src/songinfo/songkickconcerts.cpp b/src/songinfo/songkickconcerts.cpp index 186d7a0e4..feb9ec77d 100644 --- a/src/songinfo/songkickconcerts.cpp +++ b/src/songinfo/songkickconcerts.cpp @@ -38,18 +38,23 @@ const char* SongkickConcerts::kSongkickArtistCalendarUrl = SongkickConcerts::SongkickConcerts() { Geolocator* geolocator = new Geolocator; geolocator->Geolocate(); - connect(geolocator, SIGNAL(Finished(Geolocator::LatLng)), SLOT(GeolocateFinished(Geolocator::LatLng))); - NewClosure(geolocator, SIGNAL(Finished(Geolocator::LatLng)), geolocator, SLOT(deleteLater())); + connect(geolocator, SIGNAL(Finished(Geolocator::LatLng)), + SLOT(GeolocateFinished(Geolocator::LatLng))); + NewClosure(geolocator, SIGNAL(Finished(Geolocator::LatLng)), geolocator, + SLOT(deleteLater())); } void SongkickConcerts::FetchInfo(int id, const Song& metadata) { Echonest::Artist::SearchParams params; - params.push_back(qMakePair(Echonest::Artist::Name, QVariant(metadata.artist()))); - params.push_back(qMakePair(Echonest::Artist::IdSpace, QVariant(kSongkickArtistBucket))); + params.push_back( + qMakePair(Echonest::Artist::Name, QVariant(metadata.artist()))); + params.push_back( + qMakePair(Echonest::Artist::IdSpace, QVariant(kSongkickArtistBucket))); qLog(Debug) << "Params:" << params; QNetworkReply* reply = Echonest::Artist::search(params); qLog(Debug) << reply->request().url(); - NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistSearchFinished(QNetworkReply*, int)), reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ArtistSearchFinished(QNetworkReply*, int)), reply, id); } void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { @@ -65,7 +70,7 @@ void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { const Echonest::Artist& artist = artists[0]; const Echonest::ForeignIds& foreign_ids = artist.foreignIds(); QString songkick_id; - foreach (const Echonest::ForeignId& id, foreign_ids) { + foreach(const Echonest::ForeignId & id, foreign_ids) { if (id.catalog == "songkick") { songkick_id = id.foreign_id; break; @@ -86,7 +91,8 @@ void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { } FetchSongkickCalendar(split[2], id); - } catch (Echonest::ParseError& e) { + } + catch (Echonest::ParseError& e) { qLog(Error) << "Error parsing echonest reply:" << e.errorType() << e.what(); emit Finished(id); } @@ -96,7 +102,8 @@ void SongkickConcerts::FetchSongkickCalendar(const QString& artist_id, int id) { QUrl url(QString(kSongkickArtistCalendarUrl).arg(artist_id)); qLog(Debug) << url; QNetworkReply* reply = network_.get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), this, SLOT(CalendarRequestFinished(QNetworkReply*, int)), reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(CalendarRequestFinished(QNetworkReply*, int)), reply, id); } void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { @@ -123,7 +130,7 @@ void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { QWidget* container = new QWidget; QVBoxLayout* layout = new QVBoxLayout(container); - foreach (const QVariant& v, events) { + foreach(const QVariant & v, events) { QVariantMap event = v.toMap(); QString display_name = event["displayName"].toString(); QString start_date = event["start"].toMap()["date"].toString(); @@ -132,20 +139,17 @@ void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { // Try to get the lat/lng coordinates of the venue. QVariantMap venue = event["venue"].toMap(); - const bool valid_latlng = - venue["lng"].isValid() && venue["lat"].isValid(); + const bool valid_latlng = venue["lng"].isValid() && venue["lat"].isValid(); if (valid_latlng && latlng_.IsValid()) { static const int kFilterDistanceMetres = 250 * 1e3; // 250km - Geolocator::LatLng latlng( - venue["lat"].toString(), venue["lng"].toString()); + Geolocator::LatLng latlng(venue["lat"].toString(), + venue["lng"].toString()); if (latlng_.IsValid() && latlng.IsValid()) { int distance_metres = latlng_.Distance(latlng); if (distance_metres > kFilterDistanceMetres) { - qLog(Debug) << "Filtered concert:" - << display_name - << "as too far away:" - << distance_metres; + qLog(Debug) << "Filtered concert:" << display_name + << "as too far away:" << distance_metres; continue; } } diff --git a/src/songinfo/songkickconcertwidget.cpp b/src/songinfo/songkickconcertwidget.cpp index c18fe70f3..691f9fb02 100644 --- a/src/songinfo/songkickconcertwidget.cpp +++ b/src/songinfo/songkickconcertwidget.cpp @@ -32,12 +32,10 @@ const int SongKickConcertWidget::kStaticMapWidth = 100; const int SongKickConcertWidget::kStaticMapHeight = 100; - SongKickConcertWidget::SongKickConcertWidget(QWidget* parent) - : QWidget(parent), - ui_(new Ui_SongKickConcertWidget), - network_(new NetworkAccessManager(this)) -{ + : QWidget(parent), + ui_(new Ui_SongKickConcertWidget), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); // Hide the map by default @@ -48,9 +46,7 @@ SongKickConcertWidget::SongKickConcertWidget(QWidget* parent) ReloadSettings(); } -SongKickConcertWidget::~SongKickConcertWidget() { - delete ui_; -} +SongKickConcertWidget::~SongKickConcertWidget() { delete ui_; } void SongKickConcertWidget::ReloadSettings() { QFont font(SongInfoTextView::Font()); @@ -61,9 +57,8 @@ void SongKickConcertWidget::ReloadSettings() { void SongKickConcertWidget::Init(const QString& title, const QString& url, const QString& date, const QString& location) { - ui_->title->setText(QString("%2").arg( - Qt::escape(url), - Qt::escape(title))); + ui_->title->setText( + QString("%2").arg(Qt::escape(url), Qt::escape(title))); if (!location.isEmpty()) { ui_->location->setText(location); @@ -107,13 +102,11 @@ void SongKickConcertWidget::SetMap(const QString& lat, const QString& lng, } // Request the static map image - const QUrl url(QString(kStaticMapUrl).arg( - QString::number(kStaticMapWidth), - QString::number(kStaticMapHeight), - lat, lng)); + const QUrl url(QString(kStaticMapUrl).arg(QString::number(kStaticMapWidth), + QString::number(kStaticMapHeight), + lat, lng)); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(MapLoaded(QNetworkReply*)), + NewClosure(reply, SIGNAL(finished()), this, SLOT(MapLoaded(QNetworkReply*)), reply); } diff --git a/src/songinfo/songkickconcertwidget.h b/src/songinfo/songkickconcertwidget.h index faf05b979..fdd2f73ca 100644 --- a/src/songinfo/songkickconcertwidget.h +++ b/src/songinfo/songkickconcertwidget.h @@ -28,33 +28,33 @@ class QNetworkReply; class SongKickConcertWidget : public QWidget { Q_OBJECT - -public: + + public: SongKickConcertWidget(QWidget* parent = 0); ~SongKickConcertWidget(); static const int kStaticMapWidth; static const int kStaticMapHeight; - void Init(const QString& title, const QString& url, - const QString& date, const QString& location); + void Init(const QString& title, const QString& url, const QString& date, + const QString& location); void SetMap(const QString& lat, const QString& lng, const QString& venue_name); // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void ReloadSettings(); -private slots: + private slots: void MapLoaded(QNetworkReply* reply); - -private: + + private: Ui_SongKickConcertWidget* ui_; QNetworkAccessManager* network_; QUrl map_url_; }; -#endif // SONGKICKCONCERTWIDGET_H +#endif // SONGKICKCONCERTWIDGET_H diff --git a/src/songinfo/songplaystats.cpp b/src/songinfo/songplaystats.cpp index 254590354..48a23aff2 100644 --- a/src/songinfo/songplaystats.cpp +++ b/src/songinfo/songplaystats.cpp @@ -25,9 +25,7 @@ const int SongPlayStats::kLineSpacing = 2; const int SongPlayStats::kIconTextSpacing = 6; const int SongPlayStats::kMargin = 4; -SongPlayStats::SongPlayStats(QWidget* parent) - : QWidget(parent) -{ +SongPlayStats::SongPlayStats(QWidget* parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); } @@ -38,21 +36,21 @@ void SongPlayStats::AddItem(const QIcon& icon, const QString& text) { } QSize SongPlayStats::sizeHint() const { - return QSize(100, kMargin * 2 + - items_.count() * kIconSize + - (items_.count() - 1) * kLineSpacing); + return QSize(100, kMargin * 2 + items_.count() * kIconSize + + (items_.count() - 1) * kLineSpacing); } void SongPlayStats::paintEvent(QPaintEvent*) { QPainter p(this); int y = kMargin; - foreach (const Item& item, items_) { - const QRect line(kMargin, y, width() - kMargin*2, kIconSize); + foreach(const Item & item, items_) { + const QRect line(kMargin, y, width() - kMargin * 2, kIconSize); const QRect icon_rect(line.topLeft(), QSize(kIconSize, kIconSize)); - const QRect text_rect(icon_rect.topRight() + QPoint(kIconTextSpacing, 0), - QSize(line.width() - icon_rect.width() - kIconTextSpacing, - line.height())); + const QRect text_rect( + icon_rect.topRight() + QPoint(kIconTextSpacing, 0), + QSize(line.width() - icon_rect.width() - kIconTextSpacing, + line.height())); p.drawPixmap(icon_rect, item.icon_.pixmap(kIconSize)); p.drawText(text_rect, item.text_); diff --git a/src/songinfo/songplaystats.h b/src/songinfo/songplaystats.h index 3283f636b..c57fd6ee9 100644 --- a/src/songinfo/songplaystats.h +++ b/src/songinfo/songplaystats.h @@ -24,7 +24,7 @@ class SongPlayStats : public QWidget { Q_OBJECT -public: + public: SongPlayStats(QWidget* parent = 0); static const int kIconSize; @@ -36,10 +36,10 @@ public: QSize sizeHint() const; -protected: + protected: void paintEvent(QPaintEvent*); -private: + private: struct Item { Item(const QIcon& icon, const QString& text) : icon_(icon), text_(text) {} QIcon icon_; @@ -49,4 +49,4 @@ private: QList items_; }; -#endif // SONGPLAYSTATS_H +#endif // SONGPLAYSTATS_H diff --git a/src/songinfo/tagwidget.cpp b/src/songinfo/tagwidget.cpp index b99c3a209..828306291 100644 --- a/src/songinfo/tagwidget.cpp +++ b/src/songinfo/tagwidget.cpp @@ -34,13 +34,13 @@ const int TagWidgetTag::kIconTextSpacing = 8; const int TagWidgetTag::kHPadding = 6; const int TagWidgetTag::kVPadding = 2; -TagWidgetTag::TagWidgetTag(const QIcon& icon, const QString& text, QWidget* parent) - : QWidget(parent), - text_(text), - icon_(icon), - opacity_(0.0), - animation_(new QPropertyAnimation(this, "background_opacity", this)) -{ +TagWidgetTag::TagWidgetTag(const QIcon& icon, const QString& text, + QWidget* parent) + : QWidget(parent), + text_(text), + icon_(icon), + opacity_(0.0), + animation_(new QPropertyAnimation(this, "background_opacity", this)) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } @@ -77,9 +77,10 @@ void TagWidgetTag::paintEvent(QPaintEvent*) { const QRect tag_rect(rect()); const QRect icon_rect(tag_rect.topLeft() + QPoint(kHPadding, kVPadding), QSize(kIconSize, kIconSize)); - const QRect text_rect(icon_rect.topRight() + QPoint(kIconTextSpacing, 0), - QSize(tag_rect.width() - icon_rect.right() - kIconTextSpacing - kHPadding, - icon_rect.height())); + const QRect text_rect( + icon_rect.topRight() + QPoint(kIconTextSpacing, 0), + QSize(tag_rect.width() - icon_rect.right() - kIconTextSpacing - kHPadding, + icon_rect.height())); // Use the tag's opacity p.setOpacity(0.3 + opacity_ * 0.7); @@ -102,25 +103,17 @@ void TagWidgetTag::paintEvent(QPaintEvent*) { p.drawText(text_rect, text_); } -void TagWidgetTag::mouseReleaseEvent(QMouseEvent*) { - emit Clicked(); -} - -void TagWidgetTag::contextMenuEvent(QContextMenuEvent*) { - emit Clicked(); -} +void TagWidgetTag::mouseReleaseEvent(QMouseEvent*) { emit Clicked(); } +void TagWidgetTag::contextMenuEvent(QContextMenuEvent*) { emit Clicked(); } TagWidget::TagWidget(Type type, QWidget* parent) - : QWidget(parent), - type_(type) -{ + : QWidget(parent), type_(type) { setLayout(new FlowLayout(4, 6, 4)); } void TagWidget::AddTag(const QString& tag) { - if (tag.isEmpty()) - return; + if (tag.isEmpty()) return; TagWidgetTag* widget = new TagWidgetTag(icon_, tag, this); connect(widget, SIGNAL(Clicked()), SLOT(TagClicked())); @@ -131,8 +124,7 @@ void TagWidget::AddTag(const QString& tag) { void TagWidget::TagClicked() { TagWidgetTag* tag = qobject_cast(sender()); - if (!tag) - return; + if (!tag) return; emit DoGlobalSearch(tag->text()); } diff --git a/src/songinfo/tagwidget.h b/src/songinfo/tagwidget.h index 63e1ee85d..81cb4b458 100644 --- a/src/songinfo/tagwidget.h +++ b/src/songinfo/tagwidget.h @@ -29,11 +29,10 @@ class QPropertyAnimation; class TagWidgetTag : public QWidget { Q_OBJECT - Q_PROPERTY(float background_opacity - READ background_opacity - WRITE set_background_opacity); + Q_PROPERTY(float background_opacity READ background_opacity WRITE + set_background_opacity); -public: + public: TagWidgetTag(const QIcon& icon, const QString& text, QWidget* parent); static const int kIconSize; @@ -50,14 +49,14 @@ public: signals: void Clicked(); -protected: + protected: void enterEvent(QEvent*); void leaveEvent(QEvent*); void paintEvent(QPaintEvent*); void mouseReleaseEvent(QMouseEvent*); void contextMenuEvent(QContextMenuEvent*); -private: + private: QString text_; QIcon icon_; float opacity_; @@ -68,11 +67,8 @@ private: class TagWidget : public QWidget { Q_OBJECT -public: - enum Type { - Type_Tags, - Type_Artists, - }; + public: + enum Type { Type_Tags, Type_Artists, }; TagWidget(Type type, QWidget* parent = 0); @@ -85,16 +81,16 @@ signals: void AddToPlaylist(QMimeData* data); void DoGlobalSearch(const QString& query); -private slots: + private slots: void TagClicked(); -private: + private: void PlayLastFm(const QString& url_pattern); -private: + private: Type type_; QIcon icon_; QList tags_; }; -#endif // TAGWIDGET_H +#endif // TAGWIDGET_H diff --git a/src/songinfo/ultimatelyricslyric.cpp b/src/songinfo/ultimatelyricslyric.cpp index 6c226032b..8f8575868 100644 --- a/src/songinfo/ultimatelyricslyric.cpp +++ b/src/songinfo/ultimatelyricslyric.cpp @@ -19,9 +19,8 @@ #include -UltimateLyricsLyric::UltimateLyricsLyric(QObject* parent) : - QTextDocument(parent) { -} +UltimateLyricsLyric::UltimateLyricsLyric(QObject* parent) + : QTextDocument(parent) {} void UltimateLyricsLyric::SetHtml(const QString& html) { QString copy(html.trimmed()); @@ -31,7 +30,8 @@ void UltimateLyricsLyric::SetHtml(const QString& html) { copy.replace(QRegExp("([^>])[\\t ]*\\n"), "\\1

"); // Strip any newlines from the end - copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), ""); + copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), + ""); setHtml(copy); } diff --git a/src/songinfo/ultimatelyricslyric.h b/src/songinfo/ultimatelyricslyric.h index 7e27ad69c..bca5a9d79 100644 --- a/src/songinfo/ultimatelyricslyric.h +++ b/src/songinfo/ultimatelyricslyric.h @@ -24,10 +24,10 @@ class UltimateLyricsLyric : public QTextDocument { Q_OBJECT -public: + public: UltimateLyricsLyric(QObject* parent = 0); void SetHtml(const QString& html); }; -#endif // ULTIMATELYRICSLYRIC_H +#endif // ULTIMATELYRICSLYRIC_H diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp index 98f798b99..0238df0f8 100644 --- a/src/songinfo/ultimatelyricsprovider.cpp +++ b/src/songinfo/ultimatelyricsprovider.cpp @@ -28,18 +28,16 @@ const int UltimateLyricsProvider::kRedirectLimit = 5; - UltimateLyricsProvider::UltimateLyricsProvider() - : network_(new NetworkAccessManager(this)), - relevance_(0), - redirect_count_(0), - url_hop_(false) -{ -} + : network_(new NetworkAccessManager(this)), + relevance_(0), + redirect_count_(0), + url_hop_(false) {} void UltimateLyricsProvider::FetchInfo(int id, const Song& metadata) { // Get the text codec - const QTextCodec* codec = QTextCodec::codecForName(charset_.toAscii().constData()); + const QTextCodec* codec = + QTextCodec::codecForName(charset_.toAscii().constData()); if (!codec) { qLog(Warning) << "Invalid codec" << charset_; emit Finished(id); @@ -78,7 +76,8 @@ void UltimateLyricsProvider::LyricsFetched() { } // Handle redirects - QVariant redirect_target = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect_target = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect_target.isValid()) { if (redirect_count_ >= kRedirectLimit) { url_hop_ = false; @@ -93,19 +92,20 @@ void UltimateLyricsProvider::LyricsFetched() { target.setPath(path); } - redirect_count_ ++; + redirect_count_++; QNetworkReply* reply = network_->get(QNetworkRequest(target)); requests_[reply] = id; connect(reply, SIGNAL(finished()), SLOT(LyricsFetched())); return; } - const QTextCodec* codec = QTextCodec::codecForName(charset_.toAscii().constData()); + const QTextCodec* codec = + QTextCodec::codecForName(charset_.toAscii().constData()); const QString original_content = codec->toUnicode(reply->readAll()); QString lyrics; // Check for invalid indicators - foreach (const QString& indicator, invalid_indicators_) { + foreach(const QString & indicator, invalid_indicators_) { if (original_content.contains(indicator)) { qLog(Debug) << "Found invalid indicator" << indicator; url_hop_ = false; @@ -116,10 +116,10 @@ void UltimateLyricsProvider::LyricsFetched() { if (!url_hop_) { // Apply extract rules - foreach (const Rule& rule, extract_rules_) { + foreach(const Rule & rule, extract_rules_) { // Modify the rule for this request's metadata Rule rule_copy(rule); - for (Rule::iterator it = rule_copy.begin() ; it != rule_copy.end() ; ++it) { + for (Rule::iterator it = rule_copy.begin(); it != rule_copy.end(); ++it) { ReplaceFields(metadata_, &it->first); } @@ -135,7 +135,7 @@ void UltimateLyricsProvider::LyricsFetched() { } // Apply exclude rules - foreach (const Rule& rule, exclude_rules_) { + foreach(const Rule & rule, exclude_rules_) { ApplyExcludeRule(rule, &content); } @@ -171,14 +171,15 @@ void UltimateLyricsProvider::LyricsFetched() { emit Finished(id); } -bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, QString* content) const { - foreach (const RuleItem& item, rule) { +bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, + QString* content) const { + foreach(const RuleItem & item, rule) { if (item.second.isNull()) { if (item.first.startsWith("http://") && item.second.isNull()) { *content = ExtractUrl(*content, rule); return true; } else { - *content = ExtractXmlTag(*content, item.first); + *content = ExtractXmlTag(*content, item.first); } } else { *content = Extract(*content, item.first, item.second); @@ -187,15 +188,16 @@ bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, QString* content return false; } -QString UltimateLyricsProvider::ExtractUrl(const QString& source, const Rule& rule) { +QString UltimateLyricsProvider::ExtractUrl(const QString& source, + const Rule& rule) { QString url; QString id; - foreach(const RuleItem& item, rule) { + foreach(const RuleItem & item, rule) { if (item.first.startsWith("http://") && item.second.isNull()) url = item.first; else - id = Extract(source, item.first,item.second); + id = Extract(source, item.first, item.second); } url.replace("{id}", id); @@ -203,29 +205,30 @@ QString UltimateLyricsProvider::ExtractUrl(const QString& source, const Rule& ru return url; } -QString UltimateLyricsProvider::ExtractXmlTag(const QString& source, const QString& tag) { - QRegExp re("<(\\w+).*>"); // ಠ_ಠ - if (re.indexIn(tag) == -1) - return QString(); +QString UltimateLyricsProvider::ExtractXmlTag(const QString& source, + const QString& tag) { + QRegExp re("<(\\w+).*>"); // ಠ_ಠ + if (re.indexIn(tag) == -1) return QString(); return Extract(source, tag, ""); } -QString UltimateLyricsProvider::Extract(const QString& source, const QString& begin, const QString& end) { +QString UltimateLyricsProvider::Extract(const QString& source, + const QString& begin, + const QString& end) { int begin_idx = source.indexOf(begin); - if (begin_idx == -1) - return QString(); + if (begin_idx == -1) return QString(); begin_idx += begin.length(); int end_idx = source.indexOf(end, begin_idx); - if (end_idx == -1) - return QString(); + if (end_idx == -1) return QString(); return source.mid(begin_idx, end_idx - begin_idx - 1); } -void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, QString* content) const { - foreach (const RuleItem& item, rule) { +void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, + QString* content) const { + foreach(const RuleItem & item, rule) { if (item.second.isNull()) { *content = ExcludeXmlTag(*content, item.first); } else { @@ -234,40 +237,39 @@ void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, QString* content } } -QString UltimateLyricsProvider::ExcludeXmlTag(const QString& source, const QString& tag) { - QRegExp re("<(\\w+).*>"); // ಠ_ಠ - if (re.indexIn(tag) == -1) - return source; +QString UltimateLyricsProvider::ExcludeXmlTag(const QString& source, + const QString& tag) { + QRegExp re("<(\\w+).*>"); // ಠ_ಠ + if (re.indexIn(tag) == -1) return source; return Exclude(source, tag, ""); } -QString UltimateLyricsProvider::Exclude(const QString& source, const QString& begin, const QString& end) { +QString UltimateLyricsProvider::Exclude(const QString& source, + const QString& begin, + const QString& end) { int begin_idx = source.indexOf(begin); - if (begin_idx == -1) - return source; + if (begin_idx == -1) return source; int end_idx = source.indexOf(end, begin_idx + begin.length()); - if (end_idx == -1) - return source; + if (end_idx == -1) return source; - return source.left(begin_idx) + source.right(source.length() - end_idx - end.length()); + return source.left(begin_idx) + + source.right(source.length() - end_idx - end.length()); } QString UltimateLyricsProvider::FirstChar(const QString& text) { - if (text.isEmpty()) - return QString(); + if (text.isEmpty()) return QString(); return text[0].toLower(); } QString UltimateLyricsProvider::TitleCase(const QString& text) { - if (text.length() == 0) - return QString(); + if (text.length() == 0) return QString(); QString ret = text; bool last_was_space = true; - for (QString::iterator it = ret.begin() ; it != ret.end() ; ++it) { + for (QString::iterator it = ret.begin(); it != ret.end(); ++it) { if (last_was_space) { *it = it->toUpper(); last_was_space = false; @@ -275,18 +277,18 @@ QString UltimateLyricsProvider::TitleCase(const QString& text) { last_was_space = true; } } - + return ret; } -void UltimateLyricsProvider::ReplaceField(const QString& tag, const QString& value, +void UltimateLyricsProvider::ReplaceField(const QString& tag, + const QString& value, QString* text) const { - if (!text->contains(tag)) - return; + if (!text->contains(tag)) return; // Apply URL character replacement QString value_copy(value); - foreach (const UrlFormat& format, url_formats_) { + foreach(const UrlFormat & format, url_formats_) { QRegExp re("[" + QRegExp::escape(format.first) + "]"); value_copy.replace(re, format.second); } @@ -294,20 +296,21 @@ void UltimateLyricsProvider::ReplaceField(const QString& tag, const QString& val text->replace(tag, value_copy, Qt::CaseInsensitive); } -void UltimateLyricsProvider::ReplaceFields(const Song& metadata, QString* text) const { - ReplaceField("{artist}", metadata.artist().toLower(), text); - ReplaceField("{artist2}",NoSpace(metadata.artist().toLower()), text); - ReplaceField("{album}", metadata.album().toLower(), text); - ReplaceField("{album2}", NoSpace(metadata.album().toLower()), text); - ReplaceField("{title}", metadata.title().toLower(), text); - ReplaceField("{Artist}", metadata.artist(), text); - ReplaceField("{Album}", metadata.album(), text); - ReplaceField("{ARTIST}", metadata.artist().toUpper(), text); - ReplaceField("{year}", metadata.PrettyYear(), text); - ReplaceField("{Title}", metadata.title(), text); - ReplaceField("{Title2}", TitleCase(metadata.title()), text); - ReplaceField("{a}", FirstChar(metadata.artist()), text); - ReplaceField("{track}", QString::number(metadata.track()), text); +void UltimateLyricsProvider::ReplaceFields(const Song& metadata, + QString* text) const { + ReplaceField("{artist}", metadata.artist().toLower(), text); + ReplaceField("{artist2}", NoSpace(metadata.artist().toLower()), text); + ReplaceField("{album}", metadata.album().toLower(), text); + ReplaceField("{album2}", NoSpace(metadata.album().toLower()), text); + ReplaceField("{title}", metadata.title().toLower(), text); + ReplaceField("{Artist}", metadata.artist(), text); + ReplaceField("{Album}", metadata.album(), text); + ReplaceField("{ARTIST}", metadata.artist().toUpper(), text); + ReplaceField("{year}", metadata.PrettyYear(), text); + ReplaceField("{Title}", metadata.title(), text); + ReplaceField("{Title2}", TitleCase(metadata.title()), text); + ReplaceField("{a}", FirstChar(metadata.artist()), text); + ReplaceField("{track}", QString::number(metadata.track()), text); } QString UltimateLyricsProvider::NoSpace(const QString& text) { @@ -320,7 +323,7 @@ QString UltimateLyricsProvider::NoSpace(const QString& text) { // TODO: handle special characters (e.g. ® á) bool UltimateLyricsProvider::HTMLHasAlphaNumeric(const QString& html) { bool in_tag = false; - foreach (const QChar& c, html) { + foreach(const QChar & c, html) { if (!in_tag and c.isLetterOrNumber()) return true; else if (c == QChar('<')) diff --git a/src/songinfo/ultimatelyricsprovider.h b/src/songinfo/ultimatelyricsprovider.h index 1e047b8f1..96f2ef4db 100644 --- a/src/songinfo/ultimatelyricsprovider.h +++ b/src/songinfo/ultimatelyricsprovider.h @@ -31,7 +31,7 @@ class QNetworkReply; class UltimateLyricsProvider : public SongInfoProvider { Q_OBJECT -public: + public: UltimateLyricsProvider(); static const int kRedirectLimit; @@ -47,38 +47,44 @@ public: void set_relevance(int relevance) { relevance_ = relevance; } void add_url_format(const QString& replace, const QString& with) { - url_formats_ << UrlFormat(replace, with); } + url_formats_ << UrlFormat(replace, with); + } void add_extract_rule(const Rule& rule) { extract_rules_ << rule; } void add_exclude_rule(const Rule& rule) { exclude_rules_ << rule; } - void add_invalid_indicator(const QString& indicator) { invalid_indicators_ << indicator; } + void add_invalid_indicator(const QString& indicator) { + invalid_indicators_ << indicator; + } QString name() const { return name_; } int relevance() const { return relevance_; } void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void LyricsFetched(); -private: + private: bool ApplyExtractRule(const Rule& rule, QString* content) const; void ApplyExcludeRule(const Rule& rule, QString* content) const; static QString ExtractUrl(const QString& source, const Rule& rule); static QString ExtractXmlTag(const QString& source, const QString& tag); - static QString Extract(const QString& source, const QString& begin, const QString& end); + static QString Extract(const QString& source, const QString& begin, + const QString& end); static QString ExcludeXmlTag(const QString& source, const QString& tag); - static QString Exclude(const QString& source, const QString& begin, const QString& end); + static QString Exclude(const QString& source, const QString& begin, + const QString& end); static QString FirstChar(const QString& text); static QString TitleCase(const QString& text); static QString NoSpace(const QString& text); static bool HTMLHasAlphaNumeric(const QString& html); - void ReplaceField(const QString& tag, const QString& value, QString* text) const; + void ReplaceField(const QString& tag, const QString& value, + QString* text) const; void ReplaceFields(const Song& metadata, QString* text) const; -private: + private: NetworkAccessManager* network_; QMap requests_; @@ -98,4 +104,4 @@ private: bool url_hop_; }; -#endif // ULTIMATELYRICSPROVIDER_H +#endif // ULTIMATELYRICSPROVIDER_H diff --git a/src/songinfo/ultimatelyricsreader.cpp b/src/songinfo/ultimatelyricsreader.cpp index 91850adda..c7ca0612b 100644 --- a/src/songinfo/ultimatelyricsreader.cpp +++ b/src/songinfo/ultimatelyricsreader.cpp @@ -24,16 +24,12 @@ #include UltimateLyricsReader::UltimateLyricsReader(QObject* parent) - : QObject(parent), - thread_(qApp->thread()) -{ -} + : QObject(parent), thread_(qApp->thread()) {} -void UltimateLyricsReader::SetThread(QThread *thread) { - thread_ = thread; -} +void UltimateLyricsReader::SetThread(QThread* thread) { thread_ = thread; } -QList UltimateLyricsReader::Parse(const QString& filename) const { +QList UltimateLyricsReader::Parse(const QString& filename) + const { QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { qLog(Warning) << "Error opening" << filename; @@ -43,7 +39,8 @@ QList UltimateLyricsReader::Parse(const QString& filename) co return ParseDevice(&file); } -QList UltimateLyricsReader::ParseDevice(QIODevice* device) const { +QList UltimateLyricsReader::ParseDevice(QIODevice* device) + const { QList ret; QXmlStreamReader reader(device); @@ -62,7 +59,8 @@ QList UltimateLyricsReader::ParseDevice(QIODevice* device) co return ret; } -SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) const { +SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) + const { QXmlStreamAttributes attributes = reader->attributes(); UltimateLyricsProvider* scraper = new UltimateLyricsProvider; @@ -74,8 +72,7 @@ SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { if (reader->name() == "extract") @@ -85,36 +82,39 @@ SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) else if (reader->name() == "invalidIndicator") scraper->add_invalid_indicator(ParseInvalidIndicator(reader)); else if (reader->name() == "urlFormat") { - scraper->add_url_format(reader->attributes().value("replace").toString(), - reader->attributes().value("with").toString()); + scraper->add_url_format( + reader->attributes().value("replace").toString(), + reader->attributes().value("with").toString()); reader->skipCurrentElement(); - } - else + } else reader->skipCurrentElement(); } } return scraper; } -UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule(QXmlStreamReader* reader) const { +UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule( + QXmlStreamReader* reader) const { UltimateLyricsProvider::Rule ret; while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { if (reader->name() == "item") { QXmlStreamAttributes attr = reader->attributes(); if (attr.hasAttribute("tag")) - ret << UltimateLyricsProvider::RuleItem(attr.value("tag").toString(), QString()); + ret << UltimateLyricsProvider::RuleItem(attr.value("tag").toString(), + QString()); else if (attr.hasAttribute("url")) - ret << UltimateLyricsProvider::RuleItem(attr.value("url").toString(), QString()); + ret << UltimateLyricsProvider::RuleItem(attr.value("url").toString(), + QString()); else if (attr.hasAttribute("begin")) - ret << UltimateLyricsProvider::RuleItem(attr.value("begin").toString(), - attr.value("end").toString()); + ret << UltimateLyricsProvider::RuleItem( + attr.value("begin").toString(), + attr.value("end").toString()); } reader->skipCurrentElement(); } @@ -122,9 +122,9 @@ UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule(QXmlStreamReader* r return ret; } -QString UltimateLyricsReader::ParseInvalidIndicator(QXmlStreamReader* reader) const { +QString UltimateLyricsReader::ParseInvalidIndicator(QXmlStreamReader* reader) + const { QString ret = reader->attributes().value("value").toString(); reader->skipCurrentElement(); return ret; } - diff --git a/src/songinfo/ultimatelyricsreader.h b/src/songinfo/ultimatelyricsreader.h index 7cbe99106..2bfb474e7 100644 --- a/src/songinfo/ultimatelyricsreader.h +++ b/src/songinfo/ultimatelyricsreader.h @@ -29,7 +29,7 @@ class QThread; class UltimateLyricsReader : public QObject { Q_OBJECT -public: + public: UltimateLyricsReader(QObject* parent = 0); QList Parse(const QString& filename) const; @@ -37,7 +37,7 @@ public: void SetThread(QThread* thread); -private: + private: SongInfoProvider* ParseProvider(QXmlStreamReader* reader) const; UltimateLyricsProvider::Rule ParseRule(QXmlStreamReader* reader) const; QString ParseInvalidIndicator(QXmlStreamReader* reader) const; @@ -45,4 +45,4 @@ private: QThread* thread_; }; -#endif // ULTIMATELYRICSREADER_H +#endif // ULTIMATELYRICSREADER_H diff --git a/src/transcoder/transcodedialog.cpp b/src/transcoder/transcodedialog.cpp index fc1cb2edd..1836455db 100644 --- a/src/transcoder/transcodedialog.cpp +++ b/src/transcoder/transcodedialog.cpp @@ -31,7 +31,7 @@ // winspool.h defines this :( #ifdef AddJob -# undef AddJob +#undef AddJob #endif const char* TranscodeDialog::kSettingsGroup = "Transcoder"; @@ -43,29 +43,27 @@ static bool ComparePresetsByName(const TranscoderPreset& left, return left.name_ < right.name_; } - -TranscodeDialog::TranscodeDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_TranscodeDialog), - log_ui_(new Ui_TranscodeLogDialog), - log_dialog_(new QDialog(this)), - transcoder_(new Transcoder(this)), - queued_(0), - finished_success_(0), - finished_failed_(0) -{ +TranscodeDialog::TranscodeDialog(QWidget* parent) + : QDialog(parent), + ui_(new Ui_TranscodeDialog), + log_ui_(new Ui_TranscodeLogDialog), + log_dialog_(new QDialog(this)), + transcoder_(new Transcoder(this)), + queued_(0), + finished_success_(0), + finished_failed_(0) { ui_->setupUi(this); ui_->files->header()->setResizeMode(QHeaderView::ResizeToContents); log_ui_->setupUi(log_dialog_); QPushButton* clear_button = log_ui_->buttonBox->addButton(tr("Clear"), QDialogButtonBox::ResetRole); - connect(clear_button, SIGNAL(clicked()),log_ui_->log, SLOT(clear())); + connect(clear_button, SIGNAL(clicked()), log_ui_->log, SLOT(clear())); // Get presets QList presets = Transcoder::GetAllPresets(); qSort(presets.begin(), presets.end(), ComparePresetsByName); - foreach (const TranscoderPreset& preset, presets) { + foreach(const TranscoderPreset & preset, presets) { ui_->format->addItem( QString("%1 (.%2)").arg(preset.name_, preset.extension_), QVariant::fromValue(preset)); @@ -77,7 +75,7 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) last_add_dir_ = s.value("last_add_dir", QDir::homePath()).toString(); QString last_output_format = s.value("last_output_format", "ogg").toString(); - for (int i=0 ; iformat->count() ; ++i) { + for (int i = 0; i < ui_->format->count(); ++i) { if (last_output_format == ui_->format->itemData(i).value().extension_) { ui_->format->setCurrentIndex(i); @@ -86,8 +84,8 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) } // Add a start button - start_button_ = ui_->button_box->addButton( - tr("Start transcoding"), QDialogButtonBox::ActionRole); + start_button_ = ui_->button_box->addButton(tr("Start transcoding"), + QDialogButtonBox::ActionRole); cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); close_button_ = ui_->button_box->button(QDialogButtonBox::Close); @@ -107,8 +105,8 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) connect(ui_->options, SIGNAL(clicked()), SLOT(Options())); connect(ui_->select, SIGNAL(clicked()), SLOT(AddDestination())); - - connect(transcoder_, SIGNAL(JobComplete(QString,bool)), SLOT(JobComplete(QString,bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), + SLOT(JobComplete(QString, bool))); connect(transcoder_, SIGNAL(LogLine(QString)), SLOT(LogLine(QString))); connect(transcoder_, SIGNAL(AllJobsComplete()), SLOT(AllJobsComplete())); } @@ -136,11 +134,11 @@ void TranscodeDialog::Start() { SetWorking(true); QAbstractItemModel* file_model = ui_->files->model(); - TranscoderPreset preset = ui_->format->itemData( - ui_->format->currentIndex()).value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); // Add jobs to the transcoder - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < file_model->rowCount(); ++i) { QString filename = file_model->index(i, 0).data(Qt::UserRole).toString(); QString outfilename = GetOutputFileName(filename, preset); transcoder_->AddJob(filename, preset, outfilename); @@ -171,8 +169,8 @@ void TranscodeDialog::Cancel() { } void TranscodeDialog::JobComplete(const QString& filename, bool success) { - (*(success ? &finished_success_ : &finished_failed_)) ++; - queued_ --; + (*(success ? &finished_success_ : &finished_failed_))++; + queued_--; UpdateStatusText(); UpdateProgress(); @@ -182,7 +180,7 @@ void TranscodeDialog::UpdateProgress() { int progress = (finished_success_ + finished_failed_) * 100; QMap current_jobs = transcoder_->GetProgress(); - foreach (float value, current_jobs.values()) { + foreach(float value, current_jobs.values()) { progress += qBound(0, int(value * 100), 99); } @@ -193,37 +191,32 @@ void TranscodeDialog::UpdateStatusText() { QStringList sections; if (queued_) { - sections << "" + - tr("%n remaining", "", queued_) + ""; + sections << "" + tr("%n remaining", "", queued_) + + ""; } if (finished_success_) { sections << "" + - tr("%n finished", "", finished_success_) + ""; + tr("%n finished", "", finished_success_) + ""; } if (finished_failed_) { sections << "" + - tr("%n failed", "", finished_failed_) + ""; + tr("%n failed", "", finished_failed_) + ""; } ui_->progress_text->setText(sections.join(", ")); } -void TranscodeDialog::AllJobsComplete() { - SetWorking(false); -} +void TranscodeDialog::AllJobsComplete() { SetWorking(false); } void TranscodeDialog::Add() { QStringList filenames = QFileDialog::getOpenFileNames( this, tr("Add files to transcode"), last_add_dir_, - QString("%1 (%2);;%3").arg( - tr("Music"), - FileView::kFileFilter, - tr(MainWindow::kAllFilesFilterSpec))); + QString("%1 (%2);;%3").arg(tr("Music"), FileView::kFileFilter, + tr(MainWindow::kAllFilesFilterSpec))); - if (filenames.isEmpty()) - return; + if (filenames.isEmpty()) return; SetFilenames(filenames); @@ -233,22 +226,20 @@ void TranscodeDialog::Add() { s.setValue("last_add_dir", last_add_dir_); } -void TranscodeDialog::SetFilenames(const QStringList &filenames) { - foreach (const QString& filename, filenames) { +void TranscodeDialog::SetFilenames(const QStringList& filenames) { + foreach(const QString & filename, filenames) { QString name = filename.section('/', -1, -1); QString path = filename.section('/', 0, -2); - QTreeWidgetItem* item = new QTreeWidgetItem( - ui_->files, QStringList() << name << path); + QTreeWidgetItem* item = + new QTreeWidgetItem(ui_->files, QStringList() << name << path); item->setData(0, Qt::UserRole, filename); } } -void TranscodeDialog::Remove() { - qDeleteAll(ui_->files->selectedItems()); -} +void TranscodeDialog::Remove() { qDeleteAll(ui_->files->selectedItems()); } -void TranscodeDialog::LogLine(const QString &message) { +void TranscodeDialog::LogLine(const QString& message) { QString date(QDateTime::currentDateTime().toString(Qt::TextDate)); log_ui_->log->appendPlainText(QString("%1: %2").arg(date, message)); } @@ -262,8 +253,8 @@ void TranscodeDialog::timerEvent(QTimerEvent* e) { } void TranscodeDialog::Options() { - TranscoderPreset preset = ui_->format->itemData( - ui_->format->currentIndex()).value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); TranscoderOptionsDialog dialog(preset.type_, this); if (dialog.is_valid()) { @@ -274,16 +265,16 @@ void TranscodeDialog::Options() { // Adds a folder to the destination box. void TranscodeDialog::AddDestination() { int index = ui_->destination->currentIndex(); - QString initial_dir = (!ui_->destination->itemData(index).isNull() ? - ui_->destination->itemData(index).toString() : - QDir::homePath()); - QString dir = QFileDialog::getExistingDirectory( - this, tr("Add folder"), initial_dir); + QString initial_dir = (!ui_->destination->itemData(index).isNull() + ? ui_->destination->itemData(index).toString() + : QDir::homePath()); + QString dir = + QFileDialog::getExistingDirectory(this, tr("Add folder"), initial_dir); if (!dir.isEmpty()) { // Keep only a finite number of items in the box. while (ui_->destination->count() >= kMaxDestinationItems) { - ui_->destination->removeItem(1); // The oldest folder item. + ui_->destination->removeItem(1); // The oldest folder item. } QIcon icon = IconLoader::Load("folder"); @@ -304,10 +295,10 @@ QString TranscodeDialog::TrimPath(const QString& path) const { return path.section('/', -1, -1, QString::SectionSkipEmpty); } -QString TranscodeDialog::GetOutputFileName(const QString& input, - const TranscoderPreset &preset) const { - QString path = ui_->destination->itemData( - ui_->destination->currentIndex()).toString(); +QString TranscodeDialog::GetOutputFileName( + const QString& input, const TranscoderPreset& preset) const { + QString path = + ui_->destination->itemData(ui_->destination->currentIndex()).toString(); if (path.isEmpty()) { // Keep the original path. return input.section('.', 0, -2) + '.' + preset.extension_; diff --git a/src/transcoder/transcodedialog.h b/src/transcoder/transcodedialog.h index 5be060def..de422cc77 100644 --- a/src/transcoder/transcodedialog.h +++ b/src/transcoder/transcodedialog.h @@ -81,4 +81,4 @@ class TranscodeDialog : public QDialog { int finished_failed_; }; -#endif // TRANSCODEDIALOG_H +#endif // TRANSCODEDIALOG_H diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 3750273b9..3d0be8187 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -33,37 +33,30 @@ using std::shared_ptr; int Transcoder::JobFinishedEvent::sEventType = -1; +TranscoderPreset::TranscoderPreset(Song::FileType type, const QString& name, + const QString& extension, + const QString& codec_mimetype, + const QString& muxer_mimetype) + : type_(type), + name_(name), + extension_(extension), + codec_mimetype_(codec_mimetype), + muxer_mimetype_(muxer_mimetype) {} -TranscoderPreset::TranscoderPreset( - Song::FileType type, - const QString& name, - const QString& extension, - const QString& codec_mimetype, - const QString& muxer_mimetype) - : type_(type), - name_(name), - extension_(extension), - codec_mimetype_(codec_mimetype), - muxer_mimetype_(muxer_mimetype) -{ -} - - -GstElement* Transcoder::CreateElement(const QString &factory_name, - GstElement *bin, - const QString &name) { +GstElement* Transcoder::CreateElement(const QString& factory_name, + GstElement* bin, const QString& name) { GstElement* ret = gst_element_factory_make( factory_name.toAscii().constData(), - name.isNull() ? factory_name.toAscii().constData() : name.toAscii().constData()); + name.isNull() ? factory_name.toAscii().constData() + : name.toAscii().constData()); - if (ret && bin) - gst_bin_add(GST_BIN(bin), ret); + if (ret && bin) gst_bin_add(GST_BIN(bin), ret); if (!ret) { emit LogLine( tr("Could not create the GStreamer element \"%1\" -" " make sure you have all the required GStreamer plugins installed") - .arg(factory_name)); + .arg(factory_name)); } else { SetElementProperties(factory_name, G_OBJECT(ret)); } @@ -73,9 +66,11 @@ GstElement* Transcoder::CreateElement(const QString &factory_name, struct SuitableElement { SuitableElement(const QString& name = QString(), int rank = 0) - : name_(name), rank_(rank) {} + : name_(name), rank_(rank) {} - bool operator <(const SuitableElement& other) const { return rank_ < other.rank_; } + bool operator<(const SuitableElement& other) const { + return rank_ < other.rank_; + } QString name_; int rank_; @@ -84,8 +79,7 @@ struct SuitableElement { GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, const QString& mime_type, GstElement* bin) { - if (mime_type.isEmpty()) - return nullptr; + if (mime_type.isEmpty()) return nullptr; // HACK: Force ffmux_mp4 because it doesn't set any useful src caps if (mime_type == "audio/mp4") { @@ -104,18 +98,18 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, GList* const features = gst_registry_get_feature_list(registry, GST_TYPE_ELEMENT_FACTORY); - for (GList* p = features ; p ; p = g_list_next(p)) { + for (GList* p = features; p; p = g_list_next(p)) { GstElementFactory* factory = GST_ELEMENT_FACTORY(p->data); // Is this the right type of plugin? if (QString(factory->details.klass).contains(element_type)) { const GList* const templates = gst_element_factory_get_static_pad_templates(factory); - for (const GList* p = templates ; p ; p = g_list_next(p)) { + for (const GList* p = templates; p; p = g_list_next(p)) { // Only interested in source pads - GstStaticPadTemplate* pad_template = reinterpret_cast(p->data); - if (pad_template->direction != GST_PAD_SRC) - continue; + GstStaticPadTemplate* pad_template = + reinterpret_cast(p->data); + if (pad_template->direction != GST_PAD_SRC) continue; // Does this pad support the mime type we want? GstCaps* caps = gst_static_pad_template_get_caps(pad_template); @@ -127,7 +121,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, QString name = GST_PLUGIN_FEATURE_NAME(factory); if (name.startsWith("ffmux") || name.startsWith("ffenc")) - rank = -1; // ffmpeg usually sucks + rank = -1; // ffmpeg usually sucks suitable_elements_ << SuitableElement(name, rank); } @@ -140,8 +134,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, gst_plugin_feature_list_free(features); gst_caps_unref(target_caps); - if (suitable_elements_.isEmpty()) - return nullptr; + if (suitable_elements_.isEmpty()) return nullptr; // Sort by rank qSort(suitable_elements_); @@ -151,7 +144,8 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, if (best.name_ == "lamemp3enc") { // Special case: we need to add xingmux and id3v2mux to the pipeline when - // using lamemp3enc because it doesn't write the VBR or ID3v2 headers itself. + // using lamemp3enc because it doesn't write the VBR or ID3v2 headers + // itself. LogLine("Adding xingmux and id3v2mux to the pipeline"); @@ -160,8 +154,8 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, gst_bin_add(GST_BIN(bin), mp3bin); // Create the elements - GstElement* lame = CreateElement("lamemp3enc", mp3bin); - GstElement* xing = CreateElement("xingmux", mp3bin); + GstElement* lame = CreateElement("lamemp3enc", mp3bin); + GstElement* xing = CreateElement("xingmux", mp3bin); GstElement* id3v2 = CreateElement("id3v2mux", mp3bin); if (!lame || !xing || !id3v2) { @@ -186,28 +180,21 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, } } - -Transcoder::JobFinishedEvent::JobFinishedEvent(JobState *state, bool success) - : QEvent(QEvent::Type(sEventType)), - state_(state), - success_(success) -{ -} +Transcoder::JobFinishedEvent::JobFinishedEvent(JobState* state, bool success) + : QEvent(QEvent::Type(sEventType)), state_(state), success_(success) {} void Transcoder::JobState::PostFinished(bool success) { if (success) { - emit parent_->LogLine( - tr("Successfully written %1").arg(QDir::toNativeSeparators(job_.output))); + emit parent_->LogLine(tr("Successfully written %1") + .arg(QDir::toNativeSeparators(job_.output))); } - QCoreApplication::postEvent(parent_, new Transcoder::JobFinishedEvent(this, success)); + QCoreApplication::postEvent(parent_, + new Transcoder::JobFinishedEvent(this, success)); } - Transcoder::Transcoder(QObject* parent) - : QObject(parent), - max_threads_(QThread::idealThreadCount()) -{ + : QObject(parent), max_threads_(QThread::idealThreadCount()) { if (JobFinishedEvent::sEventType == -1) JobFinishedEvent::sEventType = QEvent::registerEventType(); @@ -216,7 +203,7 @@ Transcoder::Transcoder(QObject* parent) s.beginGroup("Transcoder/lamemp3enc"); if (s.value("target").isNull()) { - s.setValue("target", 1); // 1 == bitrate + s.setValue("target", 1); // 1 == bitrate } if (s.value("cbr").isNull()) { s.setValue("cbr", true); @@ -240,23 +227,30 @@ QList Transcoder::GetAllPresets() { TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { switch (type) { case Song::Type_Flac: - return TranscoderPreset(type, tr("Flac"), "flac", "audio/x-flac"); + return TranscoderPreset(type, tr("Flac"), "flac", "audio/x-flac"); case Song::Type_Mp4: - return TranscoderPreset(type, tr("M4A AAC"), "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); + return TranscoderPreset(type, tr("M4A AAC"), "mp4", + "audio/mpeg, mpegversion=(int)4", "audio/mp4"); case Song::Type_Mpeg: - return TranscoderPreset(type, tr("MP3"), "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); + return TranscoderPreset(type, tr("MP3"), "mp3", + "audio/mpeg, mpegversion=(int)1, layer=(int)3"); case Song::Type_OggVorbis: - return TranscoderPreset(type, tr("Ogg Vorbis"), "ogg", "audio/x-vorbis", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Vorbis"), "ogg", "audio/x-vorbis", + "application/ogg"); case Song::Type_OggFlac: - return TranscoderPreset(type, tr("Ogg Flac"), "ogg", "audio/x-flac", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Flac"), "ogg", "audio/x-flac", + "application/ogg"); case Song::Type_OggSpeex: - return TranscoderPreset(type, tr("Ogg Speex"), "spx", "audio/x-speex", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Speex"), "spx", "audio/x-speex", + "application/ogg"); case Song::Type_OggOpus: - return TranscoderPreset(type, tr("Ogg Opus"), "opus", "audio/x-opus", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Opus"), "opus", "audio/x-opus", + "application/ogg"); case Song::Type_Asf: - return TranscoderPreset(type, tr("Windows Media audio"), "wma", "audio/x-wma", "video/x-ms-asf"); + return TranscoderPreset(type, tr("Windows Media audio"), "wma", + "audio/x-wma", "video/x-ms-asf"); case Song::Type_Wav: - return TranscoderPreset(type, tr("Wav"), "wav", QString(), "audio/x-wav"); + return TranscoderPreset(type, tr("Wav"), "wav", QString(), "audio/x-wav"); default: qLog(Warning) << "Unsupported format in PresetForFileType:" << type; return TranscoderPreset(); @@ -264,24 +258,21 @@ TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { } Song::FileType Transcoder::PickBestFormat(QList supported) { - if (supported.isEmpty()) - return Song::Type_Unknown; + if (supported.isEmpty()) return Song::Type_Unknown; QList best_formats; best_formats << Song::Type_Mpeg; best_formats << Song::Type_OggVorbis; best_formats << Song::Type_Asf; - foreach (Song::FileType type, best_formats) { - if (supported.isEmpty() || supported.contains(type)) - return type; + foreach(Song::FileType type, best_formats) { + if (supported.isEmpty() || supported.contains(type)) return type; } return supported[0]; } -void Transcoder::AddJob(const QString& input, - const TranscoderPreset& preset, +void Transcoder::AddJob(const QString& input, const TranscoderPreset& preset, const QString& output) { Job job; job.input = input; @@ -296,8 +287,10 @@ void Transcoder::AddJob(const QString& input, // Never overwrite existing files if (QFile::exists(job.output)) { - for (int i=0 ; ; ++i) { - QString new_filename = QString("%1.%2.%3").arg(job.output.section('.',0,-2)).arg(i).arg(preset.extension_); + for (int i = 0;; ++i) { + QString new_filename = + QString("%1.%2.%3").arg(job.output.section('.', 0, -2)).arg(i).arg( + preset.extension_); if (!QFile::exists(new_filename)) { job.output = new_filename; break; @@ -310,18 +303,17 @@ void Transcoder::AddJob(const QString& input, void Transcoder::Start() { emit LogLine(tr("Transcoding %1 files using %2 threads") - .arg(queued_jobs_.count()).arg(max_threads())); + .arg(queued_jobs_.count()) + .arg(max_threads())); forever { StartJobStatus status = MaybeStartNextJob(); - if (status == AllThreadsBusy || status == NoMoreJobs) - break; + if (status == AllThreadsBusy || status == NoMoreJobs) break; } } Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { - if (current_jobs_.count() >= max_threads()) - return AllThreadsBusy; + if (current_jobs_.count() >= max_threads()) return AllThreadsBusy; if (queued_jobs_.isEmpty()) { if (current_jobs_.isEmpty()) { emit AllJobsComplete(); @@ -332,7 +324,7 @@ Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { Job job = queued_jobs_.takeFirst(); if (StartJob(job)) { - emit(JobOutputName(job.output)); + emit(JobOutputName(job.output)); return StartedSuccessfully; } @@ -340,10 +332,11 @@ Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { return FailedToStart; } -void Transcoder::NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data) { +void Transcoder::NewPadCallback(GstElement*, GstPad* pad, gboolean, + gpointer data) { JobState* state = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - state->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(state->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Debug) << "audiopad is already linked, unlinking old pad"; @@ -369,7 +362,8 @@ gboolean Transcoder::BusCallback(GstBus*, GstMessage* msg, gpointer data) { return GST_BUS_DROP; } -GstBusSyncReply Transcoder::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply Transcoder::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { JobState* state = reinterpret_cast(data); switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_EOS: @@ -397,11 +391,11 @@ void Transcoder::JobState::ReportError(GstMessage* msg) { g_error_free(error); free(debugs); - emit parent_->LogLine( - tr("Error processing %1: %2").arg(QDir::toNativeSeparators(job_.input), message)); + emit parent_->LogLine(tr("Error processing %1: %2").arg( + QDir::toNativeSeparators(job_.input), message)); } -bool Transcoder::StartJob(const Job &job) { +bool Transcoder::StartJob(const Job& job) { shared_ptr state(new JobState(job, this)); emit LogLine(tr("Starting %1").arg(QDir::toNativeSeparators(job.input))); @@ -413,26 +407,27 @@ bool Transcoder::StartJob(const Job &job) { if (!state->pipeline_) return false; // Create all the elements - GstElement* src = CreateElement("filesrc", state->pipeline_); - GstElement* decode = CreateElement("decodebin2", state->pipeline_); - GstElement* convert = CreateElement("audioconvert", state->pipeline_); + GstElement* src = CreateElement("filesrc", state->pipeline_); + GstElement* decode = CreateElement("decodebin2", state->pipeline_); + GstElement* convert = CreateElement("audioconvert", state->pipeline_); GstElement* resample = CreateElement("audioresample", state->pipeline_); - GstElement* codec = CreateElementForMimeType("Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); - GstElement* muxer = CreateElementForMimeType("Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); - GstElement* sink = CreateElement("filesink", state->pipeline_); + GstElement* codec = CreateElementForMimeType( + "Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); + GstElement* muxer = CreateElementForMimeType( + "Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); + GstElement* sink = CreateElement("filesink", state->pipeline_); - if (!src || !decode || !convert || !sink) - return false; + if (!src || !decode || !convert || !sink) return false; if (!codec && !job.preset.codec_mimetype_.isEmpty()) { - LogLine(tr("Couldn't find an encoder for %1, check you have the correct GStreamer plugins installed" - ).arg(job.preset.codec_mimetype_)); + LogLine(tr("Couldn't find an encoder for %1, check you have the correct " + "GStreamer plugins installed").arg(job.preset.codec_mimetype_)); return false; } if (!muxer && !job.preset.muxer_mimetype_.isEmpty()) { - LogLine(tr("Couldn't find a muxer for %1, check you have the correct GStreamer plugins installed" - ).arg(job.preset.muxer_mimetype_)); + LogLine(tr("Couldn't find a muxer for %1, check you have the correct " + "GStreamer plugins installed").arg(job.preset.muxer_mimetype_)); return false; } @@ -453,8 +448,11 @@ bool Transcoder::StartJob(const Job &job) { state->convert_element_ = convert; CHECKED_GCONNECT(decode, "new-decoded-pad", &NewPadCallback, state.get()); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), BusCallbackSync, state.get()); - state->bus_callback_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), BusCallback, state.get()); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), + BusCallbackSync, state.get()); + state->bus_callback_id_ = + gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), + BusCallback, state.get()); // Start the pipeline gst_element_set_state(state->pipeline_, GST_STATE_PLAYING); @@ -481,8 +479,7 @@ bool Transcoder::event(QEvent* e) { // Find this job in the list JobStateList::iterator it = current_jobs_.begin(); while (it != current_jobs_.end()) { - if (it->get() == finished_event->state_) - break; + if (it->get() == finished_event->state_) break; ++it; } if (it == current_jobs_.end()) { @@ -495,8 +492,9 @@ bool Transcoder::event(QEvent* e) { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE( - finished_event->state_->pipeline_)), nullptr, nullptr); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(finished_event->state_->pipeline_)), + nullptr, nullptr); g_source_remove(finished_event->state_->bus_callback_id_); // Remove it from the list - this will also destroy the GStreamer pipeline @@ -525,14 +523,16 @@ void Transcoder::Cancel() { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down - gst_bus_set_sync_handler(gst_pipeline_get_bus( - GST_PIPELINE(state->pipeline_)), nullptr, nullptr); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), nullptr, nullptr); g_source_remove(state->bus_callback_id_); // Stop the pipeline - if (gst_element_set_state(state->pipeline_, GST_STATE_NULL) == GST_STATE_CHANGE_ASYNC) { + if (gst_element_set_state(state->pipeline_, GST_STATE_NULL) == + GST_STATE_CHANGE_ASYNC) { // Wait for it to finish stopping... - gst_element_get_state(state->pipeline_, nullptr, nullptr, GST_CLOCK_TIME_NONE); + gst_element_get_state(state->pipeline_, nullptr, nullptr, + GST_CLOCK_TIME_NONE); } // Remove the job, this destroys the GStreamer pipeline too @@ -544,8 +544,7 @@ QMap Transcoder::GetProgress() const { QMap ret; for (const auto& state : current_jobs_) { - if (!state->pipeline_) - continue; + if (!state->pipeline_) continue; gint64 position = 0; gint64 duration = 0; @@ -566,23 +565,31 @@ void Transcoder::SetElementProperties(const QString& name, GObject* object) { guint properties_count = 0; GParamSpec** properties = g_object_class_list_properties( - G_OBJECT_GET_CLASS(object), &properties_count); + G_OBJECT_GET_CLASS(object), &properties_count); - for (int i=0 ; iname); - if (value.isNull()) - continue; + if (value.isNull()) continue; - LogLine(QString("Setting %1 property: %2 = %3").arg(name, property->name, value.toString())); + LogLine(QString("Setting %1 property: %2 = %3") + .arg(name, property->name, value.toString())); switch (property->value_type) { - case G_TYPE_DOUBLE: g_object_set(object, property->name, value.toDouble(), nullptr); break; - case G_TYPE_FLOAT: g_object_set(object, property->name, value.toFloat(), nullptr); break; - case G_TYPE_BOOLEAN: g_object_set(object, property->name, value.toInt(), nullptr); break; + case G_TYPE_DOUBLE: + g_object_set(object, property->name, value.toDouble(), nullptr); + break; + case G_TYPE_FLOAT: + g_object_set(object, property->name, value.toFloat(), nullptr); + break; + case G_TYPE_BOOLEAN: + g_object_set(object, property->name, value.toInt(), nullptr); + break; case G_TYPE_INT: - default: g_object_set(object, property->name, value.toInt(), nullptr); break; + default: + g_object_set(object, property->name, value.toInt(), nullptr); + break; } } diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index ab3e3efcf..ad9367833 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -29,13 +29,10 @@ #include "core/song.h" - struct TranscoderPreset { TranscoderPreset() : type_(Song::Type_Unknown) {} - TranscoderPreset(Song::FileType type, - const QString& name, - const QString& extension, - const QString& codec_mimetype, + TranscoderPreset(Song::FileType type, const QString& name, + const QString& extension, const QString& codec_mimetype, const QString& muxer_mimetype_ = QString()); Song::FileType type_; @@ -46,7 +43,6 @@ struct TranscoderPreset { }; Q_DECLARE_METATYPE(TranscoderPreset); - class Transcoder : public QObject { Q_OBJECT @@ -70,7 +66,7 @@ class Transcoder : public QObject { void Start(); void Cancel(); - signals: +signals: void JobComplete(const QString& filename, bool success); void LogLine(const QString& message); void AllJobsComplete(); @@ -91,8 +87,11 @@ class Transcoder : public QObject { // job's thread. struct JobState { JobState(const Job& job, Transcoder* parent) - : job_(job), parent_(parent), pipeline_(NULL), convert_element_(NULL), - bus_callback_id_(0) {} + : job_(job), + parent_(parent), + pipeline_(NULL), + convert_element_(NULL), + bus_callback_id_(0) {} ~JobState(); void PostFinished(bool success); @@ -135,7 +134,8 @@ class Transcoder : public QObject { static void NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); private: typedef QList > JobStateList; @@ -145,4 +145,4 @@ class Transcoder : public QObject { JobStateList current_jobs_; }; -#endif // TRANSCODER_H +#endif // TRANSCODER_H diff --git a/src/transcoder/transcoderoptionsaac.cpp b/src/transcoder/transcoderoptionsaac.cpp index 0f5751396..1cec6b263 100644 --- a/src/transcoder/transcoderoptionsaac.cpp +++ b/src/transcoder/transcoderoptionsaac.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsAAC::kSettingsGroup = "Transcoder/faac"; TranscoderOptionsAAC::TranscoderOptionsAAC(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsAAC) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsAAC) { ui_->setupUi(this); } -TranscoderOptionsAAC::~TranscoderOptionsAAC() { - delete ui_; -} +TranscoderOptionsAAC::~TranscoderOptionsAAC() { delete ui_; } void TranscoderOptionsAAC::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsaac.h b/src/transcoder/transcoderoptionsaac.h index 6710904bd..24b01d8b1 100644 --- a/src/transcoder/transcoderoptionsaac.h +++ b/src/transcoder/transcoderoptionsaac.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsAAC; class TranscoderOptionsAAC : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsAAC(QWidget* parent = 0); ~TranscoderOptionsAAC(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsAAC* ui_; }; -#endif // TRANSCODEROPTIONSAAC_H +#endif // TRANSCODEROPTIONSAAC_H diff --git a/src/transcoder/transcoderoptionsdialog.cpp b/src/transcoder/transcoderoptionsdialog.cpp index 8f9143a70..1fdb73a54 100644 --- a/src/transcoder/transcoderoptionsdialog.cpp +++ b/src/transcoder/transcoderoptionsdialog.cpp @@ -25,22 +25,34 @@ #include "transcoderoptionswma.h" #include "ui_transcoderoptionsdialog.h" -TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget* parent) - : QDialog(parent), - ui_(new Ui_TranscoderOptionsDialog), - options_(nullptr) -{ +TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, + QWidget* parent) + : QDialog(parent), ui_(new Ui_TranscoderOptionsDialog), options_(nullptr) { ui_->setupUi(this); switch (type) { case Song::Type_Flac: - case Song::Type_OggFlac: options_ = new TranscoderOptionsFlac(this); break; - case Song::Type_Mp4: options_ = new TranscoderOptionsAAC(this); break; - case Song::Type_Mpeg: options_ = new TranscoderOptionsMP3(this); break; - case Song::Type_OggVorbis: options_ = new TranscoderOptionsVorbis(this); break; - case Song::Type_OggOpus: options_ = new TranscoderOptionsOpus(this); break; - case Song::Type_OggSpeex: options_ = new TranscoderOptionsSpeex(this); break; - case Song::Type_Asf: options_ = new TranscoderOptionsWma(this); break; + case Song::Type_OggFlac: + options_ = new TranscoderOptionsFlac(this); + break; + case Song::Type_Mp4: + options_ = new TranscoderOptionsAAC(this); + break; + case Song::Type_Mpeg: + options_ = new TranscoderOptionsMP3(this); + break; + case Song::Type_OggVorbis: + options_ = new TranscoderOptionsVorbis(this); + break; + case Song::Type_OggOpus: + options_ = new TranscoderOptionsOpus(this); + break; + case Song::Type_OggSpeex: + options_ = new TranscoderOptionsSpeex(this); + break; + case Song::Type_Asf: + options_ = new TranscoderOptionsWma(this); + break; default: break; } @@ -53,9 +65,7 @@ TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget* p } } -TranscoderOptionsDialog::~TranscoderOptionsDialog() { - delete ui_; -} +TranscoderOptionsDialog::~TranscoderOptionsDialog() { delete ui_; } void TranscoderOptionsDialog::showEvent(QShowEvent* e) { if (options_) { @@ -69,4 +79,3 @@ void TranscoderOptionsDialog::accept() { } QDialog::accept(); } - diff --git a/src/transcoder/transcoderoptionsdialog.h b/src/transcoder/transcoderoptionsdialog.h index 4f033f378..93377d30c 100644 --- a/src/transcoder/transcoderoptionsdialog.h +++ b/src/transcoder/transcoderoptionsdialog.h @@ -28,7 +28,7 @@ class Ui_TranscoderOptionsDialog; class TranscoderOptionsDialog : public QDialog { Q_OBJECT -public: + public: TranscoderOptionsDialog(Song::FileType type, QWidget* parent = 0); ~TranscoderOptionsDialog(); @@ -36,12 +36,12 @@ public: void accept(); -protected: + protected: void showEvent(QShowEvent* e); -private: + private: Ui_TranscoderOptionsDialog* ui_; TranscoderOptionsInterface* options_; }; -#endif // TRANSCODEROPTIONSDIALOG_H +#endif // TRANSCODEROPTIONSDIALOG_H diff --git a/src/transcoder/transcoderoptionsflac.cpp b/src/transcoder/transcoderoptionsflac.cpp index ee73175ed..dc29471a9 100644 --- a/src/transcoder/transcoderoptionsflac.cpp +++ b/src/transcoder/transcoderoptionsflac.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsFlac::kSettingsGroup = "Transcoder/flacenc"; TranscoderOptionsFlac::TranscoderOptionsFlac(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsFlac) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsFlac) { ui_->setupUi(this); } -TranscoderOptionsFlac::~TranscoderOptionsFlac() { - delete ui_; -} +TranscoderOptionsFlac::~TranscoderOptionsFlac() { delete ui_; } void TranscoderOptionsFlac::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsflac.h b/src/transcoder/transcoderoptionsflac.h index ae410327b..db390a70f 100644 --- a/src/transcoder/transcoderoptionsflac.h +++ b/src/transcoder/transcoderoptionsflac.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsFlac; class TranscoderOptionsFlac : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsFlac(QWidget* parent = 0); ~TranscoderOptionsFlac(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsFlac* ui_; }; -#endif // TRANSCODEROPTIONSFLAC_H +#endif // TRANSCODEROPTIONSFLAC_H diff --git a/src/transcoder/transcoderoptionsinterface.h b/src/transcoder/transcoderoptionsinterface.h index 11d6740fc..db528e750 100644 --- a/src/transcoder/transcoderoptionsinterface.h +++ b/src/transcoder/transcoderoptionsinterface.h @@ -21,7 +21,7 @@ #include class TranscoderOptionsInterface : public QWidget { -public: + public: TranscoderOptionsInterface(QWidget* parent) : QWidget(parent) {} virtual ~TranscoderOptionsInterface() {} @@ -29,4 +29,4 @@ public: virtual void Save() = 0; }; -#endif // TRANSCODEROPTIONSINTERFACE_H +#endif // TRANSCODEROPTIONSINTERFACE_H diff --git a/src/transcoder/transcoderoptionsmp3.cpp b/src/transcoder/transcoderoptionsmp3.cpp index 827405598..07a44202b 100644 --- a/src/transcoder/transcoderoptionsmp3.cpp +++ b/src/transcoder/transcoderoptionsmp3.cpp @@ -23,22 +23,21 @@ const char* TranscoderOptionsMP3::kSettingsGroup = "Transcoder/lamemp3enc"; TranscoderOptionsMP3::TranscoderOptionsMP3(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsMP3) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsMP3) { ui_->setupUi(this); - connect(ui_->quality_slider, SIGNAL(valueChanged(int)), SLOT(QualitySliderChanged(int))); - connect(ui_->quality_spinbox, SIGNAL(valueChanged(double)), SLOT(QualitySpinboxChanged(double))); + connect(ui_->quality_slider, SIGNAL(valueChanged(int)), + SLOT(QualitySliderChanged(int))); + connect(ui_->quality_spinbox, SIGNAL(valueChanged(double)), + SLOT(QualitySpinboxChanged(double))); } -TranscoderOptionsMP3::~TranscoderOptionsMP3() { - delete ui_; -} +TranscoderOptionsMP3::~TranscoderOptionsMP3() { delete ui_; } void TranscoderOptionsMP3::Load() { QSettings s; - s.beginGroup(kSettingsGroup);; + s.beginGroup(kSettingsGroup); + ; if (s.value("target", 1).toInt() == 0) { ui_->target_quality->setChecked(true); @@ -49,7 +48,8 @@ void TranscoderOptionsMP3::Load() { ui_->quality_spinbox->setValue(s.value("quality", 4.0).toFloat()); ui_->bitrate_slider->setValue(s.value("bitrate", 128).toInt()); ui_->cbr->setChecked(s.value("cbr", true).toBool()); - ui_->encoding_engine_quality->setCurrentIndex(s.value("encoding-engine-quality", 1).toInt()); + ui_->encoding_engine_quality->setCurrentIndex( + s.value("encoding-engine-quality", 1).toInt()); ui_->mono->setChecked(s.value("mono", false).toBool()); } @@ -61,7 +61,8 @@ void TranscoderOptionsMP3::Save() { s.setValue("quality", ui_->quality_spinbox->value()); s.setValue("bitrate", ui_->bitrate_slider->value()); s.setValue("cbr", ui_->cbr->isChecked()); - s.setValue("encoding-engine-quality", ui_->encoding_engine_quality->currentIndex()); + s.setValue("encoding-engine-quality", + ui_->encoding_engine_quality->currentIndex()); s.setValue("mono", ui_->mono->isChecked()); } diff --git a/src/transcoder/transcoderoptionsmp3.h b/src/transcoder/transcoderoptionsmp3.h index 161643e48..776cc7b21 100644 --- a/src/transcoder/transcoderoptionsmp3.h +++ b/src/transcoder/transcoderoptionsmp3.h @@ -25,21 +25,21 @@ class Ui_TranscoderOptionsMP3; class TranscoderOptionsMP3 : public TranscoderOptionsInterface { Q_OBJECT -public: + public: TranscoderOptionsMP3(QWidget* parent = 0); ~TranscoderOptionsMP3(); void Load(); void Save(); -private slots: + private slots: void QualitySliderChanged(int value); void QualitySpinboxChanged(double value); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsMP3* ui_; }; -#endif // TRANSCODEROPTIONSMP3_H +#endif // TRANSCODEROPTIONSMP3_H diff --git a/src/transcoder/transcoderoptionsopus.cpp b/src/transcoder/transcoderoptionsopus.cpp index d055eabe5..013cae7fc 100644 --- a/src/transcoder/transcoderoptionsopus.cpp +++ b/src/transcoder/transcoderoptionsopus.cpp @@ -21,20 +21,16 @@ #include // TODO: Add more options than only bitrate as soon as gst doesn't crash -// anymore while using the cbr parmameter (like cbr=false) +// anymore while using the cbr parmameter (like cbr=false) const char* TranscoderOptionsOpus::kSettingsGroup = "Transcoder/opusenc"; TranscoderOptionsOpus::TranscoderOptionsOpus(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsOpus) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsOpus) { ui_->setupUi(this); } -TranscoderOptionsOpus::~TranscoderOptionsOpus() { - delete ui_; -} +TranscoderOptionsOpus::~TranscoderOptionsOpus() { delete ui_; } void TranscoderOptionsOpus::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsopus.h b/src/transcoder/transcoderoptionsopus.h index ee2dd0507..a4e1d557f 100644 --- a/src/transcoder/transcoderoptionsopus.h +++ b/src/transcoder/transcoderoptionsopus.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsOpus; class TranscoderOptionsOpus : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsOpus(QWidget* parent = 0); ~TranscoderOptionsOpus(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsOpus* ui_; }; -#endif // TRANSCODEROPTIONSOPUS_H +#endif // TRANSCODEROPTIONSOPUS_H diff --git a/src/transcoder/transcoderoptionsspeex.cpp b/src/transcoder/transcoderoptionsspeex.cpp index 02dd0ab49..dd39af280 100644 --- a/src/transcoder/transcoderoptionsspeex.cpp +++ b/src/transcoder/transcoderoptionsspeex.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsSpeex::kSettingsGroup = "Transcoder/speexenc"; TranscoderOptionsSpeex::TranscoderOptionsSpeex(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsSpeex) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsSpeex) { ui_->setupUi(this); } -TranscoderOptionsSpeex::~TranscoderOptionsSpeex() { - delete ui_; -} +TranscoderOptionsSpeex::~TranscoderOptionsSpeex() { delete ui_; } void TranscoderOptionsSpeex::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsspeex.h b/src/transcoder/transcoderoptionsspeex.h index 40662cbe4..2fe512e6d 100644 --- a/src/transcoder/transcoderoptionsspeex.h +++ b/src/transcoder/transcoderoptionsspeex.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsSpeex; class TranscoderOptionsSpeex : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsSpeex(QWidget* parent = 0); ~TranscoderOptionsSpeex(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsSpeex* ui_; }; -#endif // TRANSCODEROPTIONSSPEEX_H +#endif // TRANSCODEROPTIONSSPEEX_H diff --git a/src/transcoder/transcoderoptionsvorbis.cpp b/src/transcoder/transcoderoptionsvorbis.cpp index 3914ea711..450bbfd2d 100644 --- a/src/transcoder/transcoderoptionsvorbis.cpp +++ b/src/transcoder/transcoderoptionsvorbis.cpp @@ -23,21 +23,17 @@ const char* TranscoderOptionsVorbis::kSettingsGroup = "Transcoder/vorbisenc"; TranscoderOptionsVorbis::TranscoderOptionsVorbis(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsVorbis) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsVorbis) { ui_->setupUi(this); } -TranscoderOptionsVorbis::~TranscoderOptionsVorbis() { - delete ui_; -} +TranscoderOptionsVorbis::~TranscoderOptionsVorbis() { delete ui_; } void TranscoderOptionsVorbis::Load() { QSettings s; s.beginGroup(kSettingsGroup); -#define GET_BITRATE(variable, property) \ +#define GET_BITRATE(variable, property) \ int variable = s.value(property, -1).toInt(); \ variable = variable == -1 ? 0 : variable / 1000 @@ -58,7 +54,7 @@ void TranscoderOptionsVorbis::Save() { s.beginGroup(kSettingsGroup); #define GET_BITRATE(variable, ui_slider) \ - int variable = ui_slider->value(); \ + int variable = ui_slider->value(); \ variable = variable == 0 ? -1 : variable * 1000 GET_BITRATE(bitrate, ui_->bitrate_slider); diff --git a/src/transcoder/transcoderoptionsvorbis.h b/src/transcoder/transcoderoptionsvorbis.h index 62c14d288..05de8f1c5 100644 --- a/src/transcoder/transcoderoptionsvorbis.h +++ b/src/transcoder/transcoderoptionsvorbis.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsVorbis; class TranscoderOptionsVorbis : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsVorbis(QWidget* parent = 0); ~TranscoderOptionsVorbis(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsVorbis* ui_; }; -#endif // TRANSCODEROPTIONSVORBIS_H +#endif // TRANSCODEROPTIONSVORBIS_H diff --git a/src/transcoder/transcoderoptionswma.cpp b/src/transcoder/transcoderoptionswma.cpp index 3b24c51a6..db9944953 100644 --- a/src/transcoder/transcoderoptionswma.cpp +++ b/src/transcoder/transcoderoptionswma.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsWma::kSettingsGroup = "Transcoder/ffenc_wmav2"; TranscoderOptionsWma::TranscoderOptionsWma(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsWma) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsWma) { ui_->setupUi(this); } -TranscoderOptionsWma::~TranscoderOptionsWma() { - delete ui_; -} +TranscoderOptionsWma::~TranscoderOptionsWma() { delete ui_; } void TranscoderOptionsWma::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionswma.h b/src/transcoder/transcoderoptionswma.h index 8ae4c19fb..b1d4cfbec 100644 --- a/src/transcoder/transcoderoptionswma.h +++ b/src/transcoder/transcoderoptionswma.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsWma; class TranscoderOptionsWma : public TranscoderOptionsInterface { -public: + public: TranscoderOptionsWma(QWidget* parent = 0); ~TranscoderOptionsWma(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsWma* ui_; }; -#endif // TRANSCODEROPTIONSWMA_H +#endif // TRANSCODEROPTIONSWMA_H diff --git a/src/transcoder/transcodersettingspage.cpp b/src/transcoder/transcodersettingspage.cpp index 3dd5b597d..5460e60f8 100644 --- a/src/transcoder/transcodersettingspage.cpp +++ b/src/transcoder/transcodersettingspage.cpp @@ -20,16 +20,12 @@ #include "ui/iconloader.h" TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_TranscoderSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_TranscoderSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("tools-wizard")); } -TranscoderSettingsPage::~TranscoderSettingsPage() { - delete ui_; -} +TranscoderSettingsPage::~TranscoderSettingsPage() { delete ui_; } void TranscoderSettingsPage::Load() { ui_->transcoding_aac->Load(); diff --git a/src/transcoder/transcodersettingspage.h b/src/transcoder/transcodersettingspage.h index 10d0bfb29..fc2b8b068 100644 --- a/src/transcoder/transcodersettingspage.h +++ b/src/transcoder/transcodersettingspage.h @@ -25,15 +25,15 @@ class Ui_TranscoderSettingsPage; class TranscoderSettingsPage : public SettingsPage { Q_OBJECT -public: + public: TranscoderSettingsPage(SettingsDialog* dialog); ~TranscoderSettingsPage(); void Load(); void Save(); -private: + private: Ui_TranscoderSettingsPage* ui_; }; -#endif // TRANSCODERSETTINGSPAGE_H +#endif // TRANSCODERSETTINGSPAGE_H diff --git a/src/ui/about.cpp b/src/ui/about.cpp index 53e42bd89..4ae16b376 100644 --- a/src/ui/about.cpp +++ b/src/ui/about.cpp @@ -24,14 +24,13 @@ const char* About::kUrl = "http://www.clementine-player.org/"; -About::About(QWidget *parent) - : QDialog(parent) -{ +About::About(QWidget* parent) : QDialog(parent) { ui_.setupUi(this); setWindowTitle(tr("About %1").arg(QCoreApplication::applicationName())); ui_.title->setText(QCoreApplication::applicationName()); - ui_.version->setText(tr("Version %1").arg(QCoreApplication::applicationVersion())); + ui_.version->setText( + tr("Version %1").arg(QCoreApplication::applicationVersion())); QFont title_font; title_font.setBold(true); @@ -44,7 +43,8 @@ About::About(QWidget *parent) << Person("Arnaud Bienner", "arnaud.bienner@gmail.com"); thanks_to_ << Person("Mark Kretschmann", "kretschmann@kde.org") << Person("Max Howell", "max.howell@methylblue.com") - << Person(QString::fromUtf8("Bartłomiej Burdukiewicz"), "dev.strikeu@gmail.com") + << Person(QString::fromUtf8("Bartłomiej Burdukiewicz"), + "dev.strikeu@gmail.com") << Person("Jakub Stachowski", "qbast@go2.pl") << Person("Paul Cifarelli", "paul@cifarelli.net") << Person("Felipe Rivera", "liebremx@users.sourceforge.net") @@ -57,32 +57,41 @@ About::About(QWidget *parent) ui_.content->setHtml(MakeHtml()); - ui_.buttonBox->button(QDialogButtonBox::Close)->setShortcut(QKeySequence::Close); + ui_.buttonBox->button(QDialogButtonBox::Close) + ->setShortcut(QKeySequence::Close); } QString About::MakeHtml() const { - QString ret = QString("

%2

" - "

%3:").arg(kUrl, kUrl, tr("Authors")); + QString ret = QString( + "

%2

" + "

%3:").arg(kUrl, kUrl, tr("Authors")); - foreach (const Person& person, authors_) - ret += "
" + MakeHtml(person); + foreach(const Person & person, authors_) + ret += "
" + MakeHtml(person); ret += QString("

%3:").arg(tr("Thanks to")); - foreach (const Person& person, thanks_to_) - ret += "
" + MakeHtml(person); - ret += QString("
" + tr("All the translators") + " <" - "https://www.transifex.net/projects/p/clementine>"); + foreach(const Person & person, thanks_to_) + ret += "
" + MakeHtml(person); + ret += QString( + "
" + tr("All the translators") + + " <" + "https://www.transifex.net/projects/p/clementine>"); ret += QString("
%1

").arg(tr("...and all the Amarok contributors")); ret += QString("

%1").arg(tr("And:")); ret += QString("
Rainy Mood"); - ret += QString("
Scott Smitelli"); - ret += QString("
Allie Brosh

"); + ret += QString( + "
Scott " + "Smitelli"); + ret += QString( + "
Allie " + "Brosh

"); - ret += "

This product uses Music by Spotify but is not endorsed, certified " - "or otherwise approved in any way by Spotify. Spotify is the registered " - "trade mark of the Spotify Group.

"; + ret += + "

This product uses Music by Spotify but is not endorsed, certified " + "or otherwise approved in any way by Spotify. Spotify is the registered " + "trade mark of the Spotify Group.

"; return ret; } diff --git a/src/ui/about.h b/src/ui/about.h index 285f2c509..1a9730815 100644 --- a/src/ui/about.h +++ b/src/ui/about.h @@ -30,9 +30,10 @@ class About : public QDialog { static const char* kUrl; struct Person { - Person(const QString& n, const QString& e = QString()) : name(n), email(e) {} + Person(const QString& n, const QString& e = QString()) + : name(n), email(e) {} - bool operator <(const Person& other) const { return name < other.name; } + bool operator<(const Person& other) const { return name < other.name; } QString name; QString email; @@ -49,4 +50,4 @@ class About : public QDialog { QList thanks_to_; }; -#endif // ABOUT_H +#endif // ABOUT_H diff --git a/src/ui/addstreamdialog.cpp b/src/ui/addstreamdialog.cpp index 17abca7d5..cdf90cbc5 100644 --- a/src/ui/addstreamdialog.cpp +++ b/src/ui/addstreamdialog.cpp @@ -27,11 +27,8 @@ const char* AddStreamDialog::kSettingsGroup = "AddStreamDialog"; -AddStreamDialog::AddStreamDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_AddStreamDialog), - saved_radio_(nullptr) -{ +AddStreamDialog::AddStreamDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_AddStreamDialog), saved_radio_(nullptr) { ui_->setupUi(this); connect(ui_->url, SIGNAL(textChanged(QString)), SLOT(TextChanged(QString))); @@ -45,30 +42,23 @@ AddStreamDialog::AddStreamDialog(QWidget *parent) ui_->name->setText(s.value("name").toString()); } -AddStreamDialog::~AddStreamDialog() { - delete ui_; -} +AddStreamDialog::~AddStreamDialog() { delete ui_; } -QUrl AddStreamDialog::url() const { - return QUrl(ui_->url->text()); -} +QUrl AddStreamDialog::url() const { return QUrl(ui_->url->text()); } -QString AddStreamDialog::name() const { - return ui_->name->text(); -} +QString AddStreamDialog::name() const { return ui_->name->text(); } -void AddStreamDialog::set_name(const QString &name) { +void AddStreamDialog::set_name(const QString& name) { ui_->name->setText(name); } -void AddStreamDialog::set_url(const QUrl &url) { +void AddStreamDialog::set_url(const QUrl& url) { ui_->url->setText(url.toString()); } void AddStreamDialog::set_save_visible(bool visible) { ui_->save->setVisible(visible); - if (!visible) - ui_->name_container->setEnabled(true); + if (!visible) ui_->name_container->setEnabled(true); } void AddStreamDialog::accept() { @@ -86,18 +76,17 @@ void AddStreamDialog::accept() { QDialog::accept(); } -void AddStreamDialog::TextChanged(const QString &text) { +void AddStreamDialog::TextChanged(const QString& text) { // Decide whether the URL is valid QUrl url(text); - bool valid = url.isValid() && - !url.scheme().isEmpty() && - !url.toString().isEmpty(); + bool valid = + url.isValid() && !url.scheme().isEmpty() && !url.toString().isEmpty(); ui_->button_box->button(QDialogButtonBox::Ok)->setEnabled(valid); } -void AddStreamDialog::showEvent(QShowEvent *) { +void AddStreamDialog::showEvent(QShowEvent*) { ui_->url->setFocus(); ui_->url->selectAll(); } diff --git a/src/ui/addstreamdialog.h b/src/ui/addstreamdialog.h index 82a21637e..b0c1220f4 100644 --- a/src/ui/addstreamdialog.h +++ b/src/ui/addstreamdialog.h @@ -28,13 +28,15 @@ class AddStreamDialog : public QDialog { Q_OBJECT public: - AddStreamDialog(QWidget *parent = 0); + AddStreamDialog(QWidget* parent = 0); ~AddStreamDialog(); void set_url(const QUrl& url); void set_name(const QString& name); void set_save_visible(bool visible); - void set_add_on_accept(SavedRadio* saved_radio) { saved_radio_ = saved_radio; } + void set_add_on_accept(SavedRadio* saved_radio) { + saved_radio_ = saved_radio; + } QUrl url() const; QString name() const; @@ -42,7 +44,7 @@ class AddStreamDialog : public QDialog { void accept(); protected: - void showEvent(QShowEvent *); + void showEvent(QShowEvent*); private slots: void TextChanged(const QString& text); @@ -55,4 +57,4 @@ class AddStreamDialog : public QDialog { SavedRadio* saved_radio_; }; -#endif // ADDSTREAMDIALOG_H +#endif // ADDSTREAMDIALOG_H diff --git a/src/ui/albumcoverchoicecontroller.cpp b/src/ui/albumcoverchoicecontroller.cpp index a4a66270b..eddfb07dd 100644 --- a/src/ui/albumcoverchoicecontroller.cpp +++ b/src/ui/albumcoverchoicecontroller.cpp @@ -39,31 +39,37 @@ #include #include -const char* AlbumCoverChoiceController::kLoadImageFileFilter = - QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"); +const char* AlbumCoverChoiceController::kLoadImageFileFilter = QT_TR_NOOP( + "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"); const char* AlbumCoverChoiceController::kSaveImageFileFilter = - QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)"); + QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)"); const char* AlbumCoverChoiceController::kAllFilesFilter = - QT_TR_NOOP("All files (*)"); + QT_TR_NOOP("All files (*)"); QSet* AlbumCoverChoiceController::sImageExtensions = nullptr; AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget* parent) - : QWidget(parent), - app_(nullptr), - cover_searcher_(nullptr), - cover_fetcher_(nullptr), - save_file_dialog_(nullptr), - cover_from_url_dialog_(nullptr) -{ - cover_from_file_ = new QAction(IconLoader::Load("document-open"), tr("Load cover from disk..."), this); - cover_to_file_ = new QAction(IconLoader::Load("document-save"), tr("Save cover to disk..."), this); - cover_from_url_ = new QAction(IconLoader::Load("download"), tr("Load cover from URL..."), this); - search_for_cover_ = new QAction(IconLoader::Load("find"), tr("Search for album covers..."), this); - unset_cover_ = new QAction(IconLoader::Load("list-remove"), tr("Unset cover"), this); - show_cover_ = new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this); + : QWidget(parent), + app_(nullptr), + cover_searcher_(nullptr), + cover_fetcher_(nullptr), + save_file_dialog_(nullptr), + cover_from_url_dialog_(nullptr) { + cover_from_file_ = new QAction(IconLoader::Load("document-open"), + tr("Load cover from disk..."), this); + cover_to_file_ = new QAction(IconLoader::Load("document-save"), + tr("Save cover to disk..."), this); + cover_from_url_ = new QAction(IconLoader::Load("download"), + tr("Load cover from URL..."), this); + search_for_cover_ = new QAction(IconLoader::Load("find"), + tr("Search for album covers..."), this); + unset_cover_ = + new QAction(IconLoader::Load("list-remove"), tr("Unset cover"), this); + show_cover_ = + new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this); - search_cover_auto_ = new QAction(IconLoader::Load("find"), tr("Search automatically"), this); + search_cover_auto_ = + new QAction(IconLoader::Load("find"), tr("Search automatically"), this); search_cover_auto_->setCheckable(true); search_cover_auto_->setChecked(false); @@ -71,9 +77,7 @@ AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget* parent) separator_->setSeparator(true); } -AlbumCoverChoiceController::~AlbumCoverChoiceController() -{ -} +AlbumCoverChoiceController::~AlbumCoverChoiceController() {} void AlbumCoverChoiceController::SetApplication(Application* app) { app_ = app; @@ -82,29 +86,30 @@ void AlbumCoverChoiceController::SetApplication(Application* app) { cover_searcher_ = new AlbumCoverSearcher(QIcon(":/nocover.png"), app, this); cover_searcher_->Init(cover_fetcher_); - connect(cover_fetcher_, SIGNAL(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics)), - this, SLOT(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics))); + connect(cover_fetcher_, + SIGNAL(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics)), + this, + SLOT(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics))); } QList AlbumCoverChoiceController::GetAllActions() { - return QList() << cover_from_file_ << cover_to_file_ - << separator_ + return QList() << cover_from_file_ << cover_to_file_ << separator_ << cover_from_url_ << search_for_cover_ << unset_cover_ << show_cover_; } QString AlbumCoverChoiceController::LoadCoverFromFile(Song* song) { QString cover = QFileDialog::getOpenFileName( - this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), + this, tr("Load cover from disk"), + GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + ";;" + tr(kAllFilesFilter)); - if (cover.isNull()) - return QString(); + if (cover.isNull()) return QString(); // Can we load the image? QImage image(cover); - if(!image.isNull()) { + if (!image.isNull()) { SaveCover(song, cover); return cover; } else { @@ -112,53 +117,54 @@ QString AlbumCoverChoiceController::LoadCoverFromFile(Song* song) { } } -void AlbumCoverChoiceController::SaveCoverToFile(const Song& song, const QImage& image) { - QString initial_file_name = "/" + (song.album().isEmpty() - ? tr("Unknown") - : song.album()) + ".jpg"; +void AlbumCoverChoiceController::SaveCoverToFile(const Song& song, + const QImage& image) { + QString initial_file_name = + "/" + (song.album().isEmpty() ? tr("Unknown") : song.album()) + ".jpg"; QString save_filename = QFileDialog::getSaveFileName( - this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), + this, tr("Save album cover"), + GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + ";;" + tr(kAllFilesFilter)); - if(save_filename.isNull()) - return; + if (save_filename.isNull()) return; QString extension = save_filename.right(4); if (!extension.startsWith('.') || - !QImageWriter::supportedImageFormats().contains(extension.right(3).toUtf8())) { + !QImageWriter::supportedImageFormats().contains( + extension.right(3).toUtf8())) { save_filename.append(".jpg"); } image.save(save_filename); } -QString AlbumCoverChoiceController::GetInitialPathForFileDialog(const Song& song, - const QString& filename) { +QString AlbumCoverChoiceController::GetInitialPathForFileDialog( + const Song& song, const QString& filename) { // art automatic is first to show user which cover the album may be // using now; the song is using it if there's no manual path but we // cannot use manual path here because it can contain cached paths if (!song.art_automatic().isEmpty() && !song.has_embedded_cover()) { return song.art_automatic(); - // if no automatic art, start in the song's folder + // if no automatic art, start in the song's folder } else if (!song.url().isEmpty() && song.url().toLocalFile().contains('/')) { return song.url().toLocalFile().section('/', 0, -2) + filename; - // fallback - start in home + // fallback - start in home } else { return QDir::home().absolutePath() + filename; } } QString AlbumCoverChoiceController::LoadCoverFromURL(Song* song) { - if(!cover_from_url_dialog_) { + if (!cover_from_url_dialog_) { cover_from_url_dialog_ = new CoverFromURLDialog(this); } QImage image = cover_from_url_dialog_->Exec(); - if(!image.isNull()) { + if (!image.isNull()) { QString cover = SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover); @@ -172,7 +178,7 @@ QString AlbumCoverChoiceController::SearchForCover(Song* song) { // Get something sensible to stick in the search box QImage image = cover_searcher_->Exec(song->artist(), song->album()); - if(!image.isNull()) { + if (!image.isNull()) { QString cover = SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover); @@ -195,11 +201,9 @@ void AlbumCoverChoiceController::ShowCover(const Song& song) { // Use Artist - Album as the window title QString title_text(song.albumartist()); - if (title_text.isEmpty()) - title_text = song.artist(); + if (title_text.isEmpty()) title_text = song.artist(); - if (!song.album().isEmpty()) - title_text += " - " + song.album(); + if (!song.album().isEmpty()) title_text += " - " + song.album(); dialog->setWindowTitle(title_text); @@ -216,9 +220,8 @@ void AlbumCoverChoiceController::SearchCoverAutomatically(const Song& song) { cover_fetching_tasks_[id] = song; } -void AlbumCoverChoiceController::AlbumCoverFetched(quint64 id, - const QImage& image, - const CoverSearchStatistics& statistics) { +void AlbumCoverChoiceController::AlbumCoverFetched( + quint64 id, const QImage& image, const CoverSearchStatistics& statistics) { Song song; if (cover_fetching_tasks_.contains(id)) { song = cover_fetching_tasks_.take(id); @@ -232,10 +235,11 @@ void AlbumCoverChoiceController::AlbumCoverFetched(quint64 id, emit AutomaticCoverSearchDone(); } -void AlbumCoverChoiceController::SaveCover(Song* song, const QString &cover) { - if(song->is_valid() && song->id() != -1) { +void AlbumCoverChoiceController::SaveCover(Song* song, const QString& cover) { + if (song->is_valid() && song->id() != -1) { song->set_art_manual(cover); - app_->library_backend()->UpdateManualAlbumArtAsync(song->artist(), song->album(), cover); + app_->library_backend()->UpdateManualAlbumArtAsync(song->artist(), + song->album(), cover); if (song->url() == app_->current_art_loader()->last_song().url()) { app_->current_art_loader()->LoadArt(*song); @@ -243,8 +247,9 @@ void AlbumCoverChoiceController::SaveCover(Song* song, const QString &cover) { } } -QString AlbumCoverChoiceController::SaveCoverInCache( - const QString& artist, const QString& album, const QImage& image) { +QString AlbumCoverChoiceController::SaveCoverInCache(const QString& artist, + const QString& album, + const QImage& image) { // Hash the artist and album into a filename for the image QString filename(Utilities::Sha1CoverHash(artist, album).toHex() + ".jpg"); @@ -263,18 +268,25 @@ QString AlbumCoverChoiceController::SaveCoverInCache( bool AlbumCoverChoiceController::IsKnownImageExtension(const QString& suffix) { if (!sImageExtensions) { sImageExtensions = new QSet(); - (*sImageExtensions) << "png" << "jpg" << "jpeg" << "bmp" << "gif" << "xpm" - << "pbm" << "pgm" << "ppm" << "xbm"; + (*sImageExtensions) << "png" + << "jpg" + << "jpeg" + << "bmp" + << "gif" + << "xpm" + << "pbm" + << "pgm" + << "ppm" + << "xbm"; } return sImageExtensions->contains(suffix); } bool AlbumCoverChoiceController::CanAcceptDrag(const QDragEnterEvent* e) { - foreach (const QUrl& url, e->mimeData()->urls()) { + foreach(const QUrl & url, e->mimeData()->urls()) { const QString suffix = QFileInfo(url.toLocalFile()).suffix().toLower(); - if (IsKnownImageExtension(suffix)) - return true; + if (IsKnownImageExtension(suffix)) return true; } if (e->mimeData()->hasImage()) { return true; @@ -283,7 +295,7 @@ bool AlbumCoverChoiceController::CanAcceptDrag(const QDragEnterEvent* e) { } QString AlbumCoverChoiceController::SaveCover(Song* song, const QDropEvent* e) { - foreach (const QUrl& url, e->mimeData()->urls()) { + foreach(const QUrl & url, e->mimeData()->urls()) { const QString filename = url.toLocalFile(); const QString suffix = QFileInfo(filename).suffix().toLower(); @@ -296,7 +308,8 @@ QString AlbumCoverChoiceController::SaveCover(Song* song, const QDropEvent* e) { if (e->mimeData()->hasImage()) { QImage image = qvariant_cast(e->mimeData()->imageData()); if (!image.isNull()) { - QString cover_path = SaveCoverInCache(song->artist(), song->album(), image); + QString cover_path = + SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover_path); return cover_path; } diff --git a/src/ui/albumcoverchoicecontroller.h b/src/ui/albumcoverchoicecontroller.h index b7e574fe7..e1561b48f 100644 --- a/src/ui/albumcoverchoicecontroller.h +++ b/src/ui/albumcoverchoicecontroller.h @@ -67,11 +67,13 @@ class AlbumCoverChoiceController : public QWidget { // All of the methods below require a currently selected song as an // input parameter. Also - LoadCoverFromFile, LoadCoverFromURL, - // SearchForCover, UnsetCover and SaveCover all update manual path + // SearchForCover, UnsetCover and SaveCover all update manual path // of the given song in library to the new cover. - // Lets the user choose a cover from disk. If no cover will be chosen or the chosen - // cover will not be a proper image, this returns an empty string. Otherwise, the + // Lets the user choose a cover from disk. If no cover will be chosen or the + // chosen + // cover will not be a proper image, this returns an empty string. Otherwise, + // the // path to the chosen cover will be returned. QString LoadCoverFromFile(Song* song); @@ -79,7 +81,8 @@ class AlbumCoverChoiceController : public QWidget { // is supposed to be the cover of the given song's album. void SaveCoverToFile(const Song& song, const QImage& image); - // Downloads the cover from an URL given by user. This returns the downloaded image + // Downloads the cover from an URL given by user. This returns the downloaded + // image // or null image if something went wrong for example when user cancelled the // dialog. QString LoadCoverFromURL(Song* song); @@ -103,20 +106,21 @@ class AlbumCoverChoiceController : public QWidget { // Saves the cover that the user picked through a drag and drop operation. QString SaveCover(Song* song, const QDropEvent* e); - // Saves the given image in cache as a cover for 'artist' - 'album'. + // Saves the given image in cache as a cover for 'artist' - 'album'. // The method returns path of the cached image. - QString SaveCoverInCache(const QString& artist, const QString& album, const QImage& image); + QString SaveCoverInCache(const QString& artist, const QString& album, + const QImage& image); static bool CanAcceptDrag(const QDragEnterEvent* e); signals: void AutomaticCoverSearchDone(); -private slots: + private slots: void AlbumCoverFetched(quint64 id, const QImage& image, const CoverSearchStatistics& statistics); -private: + private: QString GetInitialPathForFileDialog(const Song& song, const QString& filename); @@ -142,4 +146,4 @@ private: QMap cover_fetching_tasks_; }; -#endif // ALBUMCOVERCHOICECONTROLLER_H +#endif // ALBUMCOVERCHOICECONTROLLER_H diff --git a/src/ui/albumcoverexport.cpp b/src/ui/albumcoverexport.cpp index 08f286283..bd73e3219 100644 --- a/src/ui/albumcoverexport.cpp +++ b/src/ui/albumcoverexport.cpp @@ -23,17 +23,14 @@ const char* AlbumCoverExport::kSettingsGroup = "AlbumCoverExport"; AlbumCoverExport::AlbumCoverExport(QWidget* parent) - : QDialog(parent), - ui_(new Ui_AlbumCoverExport) -{ + : QDialog(parent), ui_(new Ui_AlbumCoverExport) { ui_->setupUi(this); - connect(ui_->forceSize, SIGNAL(stateChanged(int)), SLOT(ForceSizeToggled(int))); + connect(ui_->forceSize, SIGNAL(stateChanged(int)), + SLOT(ForceSizeToggled(int))); } -AlbumCoverExport::~AlbumCoverExport() { - delete ui_; -} +AlbumCoverExport::~AlbumCoverExport() { delete ui_; } AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { QSettings s; @@ -41,13 +38,17 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { // restore last accepted settings ui_->fileName->setText(s.value("fileName", "cover").toString()); - ui_->doNotOverwrite->setChecked(s.value("overwrite", OverwriteMode_None).toInt() == OverwriteMode_None); - ui_->overwriteAll->setChecked(s.value("overwrite", OverwriteMode_All).toInt() == OverwriteMode_All); - ui_->overwriteSmaller->setChecked(s.value("overwrite", OverwriteMode_Smaller).toInt() == OverwriteMode_Smaller); + ui_->doNotOverwrite->setChecked( + s.value("overwrite", OverwriteMode_None).toInt() == OverwriteMode_None); + ui_->overwriteAll->setChecked( + s.value("overwrite", OverwriteMode_All).toInt() == OverwriteMode_All); + ui_->overwriteSmaller->setChecked(s.value("overwrite", OverwriteMode_Smaller) + .toInt() == OverwriteMode_Smaller); ui_->forceSize->setChecked(s.value("forceSize", false).toBool()); ui_->width->setText(s.value("width", "").toString()); ui_->height->setText(s.value("height", "").toString()); - ui_->export_downloaded->setChecked(s.value("export_downloaded", true).toBool()); + ui_->export_downloaded->setChecked( + s.value("export_downloaded", true).toBool()); ui_->export_embedded->setChecked(s.value("export_embedded", false).toBool()); ForceSizeToggled(ui_->forceSize->checkState()); @@ -55,16 +56,16 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { DialogResult result = DialogResult(); result.cancelled_ = (exec() == QDialog::Rejected); - if(!result.cancelled_) { + if (!result.cancelled_) { QString fileName = ui_->fileName->text(); if (fileName.isEmpty()) { fileName = "cover"; } - OverwriteMode overwrite = ui_->doNotOverwrite->isChecked() - ? OverwriteMode_None - : (ui_->overwriteAll->isChecked() - ? OverwriteMode_All - : OverwriteMode_Smaller); + OverwriteMode overwrite = + ui_->doNotOverwrite->isChecked() + ? OverwriteMode_None + : (ui_->overwriteAll->isChecked() ? OverwriteMode_All + : OverwriteMode_Smaller); bool forceSize = ui_->forceSize->isChecked(); QString width = ui_->width->text(); QString height = ui_->height->text(); diff --git a/src/ui/albumcoverexport.h b/src/ui/albumcoverexport.h index fc099e075..d5531a7bb 100644 --- a/src/ui/albumcoverexport.h +++ b/src/ui/albumcoverexport.h @@ -68,4 +68,4 @@ class AlbumCoverExport : public QDialog { static const char* kSettingsGroup; }; -#endif // ALBUMCOVEREXPORT_H +#endif // ALBUMCOVEREXPORT_H diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index 0e56e2341..ddef4cfb0 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -57,22 +57,22 @@ AlbumCoverManager::AlbumCoverManager(Application* app, LibraryBackend* library_backend, QWidget* parent, QNetworkAccessManager* network) - : QMainWindow(parent), - ui_(new Ui_CoverManager), - app_(app), - album_cover_choice_controller_(new AlbumCoverChoiceController(this)), - cover_fetcher_(new AlbumCoverFetcher(app_->cover_providers(), this, network)), - cover_searcher_(nullptr), - cover_export_(nullptr), - cover_exporter_(new AlbumCoverExporter(this)), - artist_icon_(IconLoader::Load("x-clementine-artist")), - all_artists_icon_(IconLoader::Load("x-clementine-album")), - context_menu_(new QMenu(this)), - progress_bar_(new QProgressBar(this)), - abort_progress_(new QPushButton(this)), - jobs_(0), - library_backend_(library_backend) -{ + : QMainWindow(parent), + ui_(new Ui_CoverManager), + app_(app), + album_cover_choice_controller_(new AlbumCoverChoiceController(this)), + cover_fetcher_( + new AlbumCoverFetcher(app_->cover_providers(), this, network)), + cover_searcher_(nullptr), + cover_export_(nullptr), + cover_exporter_(new AlbumCoverExporter(this)), + artist_icon_(IconLoader::Load("x-clementine-artist")), + all_artists_icon_(IconLoader::Load("x-clementine-album")), + context_menu_(new QMenu(this)), + progress_bar_(new QProgressBar(this)), + abort_progress_(new QPushButton(this)), + jobs_(0), + library_backend_(library_backend) { ui_->setupUi(this); ui_->albums->set_cover_manager(this); @@ -81,19 +81,22 @@ AlbumCoverManager::AlbumCoverManager(Application* app, ui_->export_covers->setIcon(IconLoader::Load("document-save")); ui_->view->setIcon(IconLoader::Load("view-choose")); ui_->fetch->setIcon(IconLoader::Load("download")); - ui_->action_add_to_playlist->setIcon(IconLoader::Load("media-playback-start")); + ui_->action_add_to_playlist->setIcon( + IconLoader::Load("media-playback-start")); ui_->action_load->setIcon(IconLoader::Load("media-playback-start")); album_cover_choice_controller_->SetApplication(app_); // Get a square version of nocover.png QImage nocover(":/nocover.png"); - nocover = nocover.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation); + nocover = + nocover.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation); QImage square_nocover(120, 120, QImage::Format_ARGB32); square_nocover.fill(0); QPainter p(&square_nocover); p.setOpacity(0.4); - p.drawImage((120 - nocover.width()) / 2, (120 - nocover.height()) / 2, nocover); + p.drawImage((120 - nocover.width()) / 2, (120 - nocover.height()) / 2, + nocover); p.end(); no_cover_icon_ = QPixmap::fromImage(square_nocover); @@ -123,9 +126,7 @@ AlbumCoverManager::~AlbumCoverManager() { delete ui_; } -LibraryBackend* AlbumCoverManager::backend() const { - return library_backend_; -} +LibraryBackend* AlbumCoverManager::backend() const { return library_backend_; } void AlbumCoverManager::Init() { // View menu @@ -172,19 +173,24 @@ void AlbumCoverManager::Init() { ui_->albums->installEventFilter(this); // Connections - connect(ui_->artists, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + connect(ui_->artists, + SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), SLOT(ArtistChanged(QListWidgetItem*))); connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(UpdateFilter())); connect(filter_group, SIGNAL(triggered(QAction*)), SLOT(UpdateFilter())); connect(ui_->view, SIGNAL(clicked()), ui_->view, SLOT(showMenu())); connect(ui_->fetch, SIGNAL(clicked()), SLOT(FetchAlbumCovers())); connect(ui_->export_covers, SIGNAL(clicked()), SLOT(ExportCovers())); - connect(cover_fetcher_, SIGNAL(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics)), - SLOT(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics))); + connect(cover_fetcher_, + SIGNAL(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics)), + SLOT(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics))); connect(ui_->action_fetch, SIGNAL(triggered()), SLOT(FetchSingleCover())); - connect(ui_->albums, SIGNAL(doubleClicked(QModelIndex)), SLOT(AlbumDoubleClicked(QModelIndex))); - connect(ui_->action_add_to_playlist, SIGNAL(triggered()), SLOT(AddSelectedToPlaylist())); - connect(ui_->action_load, SIGNAL(triggered()), SLOT(LoadSelectedToPlaylist())); + connect(ui_->albums, SIGNAL(doubleClicked(QModelIndex)), + SLOT(AlbumDoubleClicked(QModelIndex))); + connect(ui_->action_add_to_playlist, SIGNAL(triggered()), + SLOT(AddSelectedToPlaylist())); + connect(ui_->action_load, SIGNAL(triggered()), + SLOT(LoadSelectedToPlaylist())); // Restore settings QSettings s; @@ -196,18 +202,15 @@ void AlbumCoverManager::Init() { ui_->splitter->setSizes(QList() << 200 << width() - 200); } - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(CoverImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(CoverImageLoaded(quint64, QImage))); cover_searcher_->Init(cover_fetcher_); new ForceScrollPerPixel(ui_->albums, this); } -void AlbumCoverManager::showEvent(QShowEvent *) { - Reset(); -} +void AlbumCoverManager::showEvent(QShowEvent*) { Reset(); } void AlbumCoverManager::closeEvent(QCloseEvent* e) { if (!cover_fetching_tasks_.isEmpty()) { @@ -236,7 +239,7 @@ void AlbumCoverManager::closeEvent(QCloseEvent* e) { void AlbumCoverManager::CancelRequests() { app_->album_cover_loader()->CancelTasks( - QSet::fromList(cover_loading_tasks_.keys())); + QSet::fromList(cover_loading_tasks_.keys())); cover_loading_tasks_.clear(); cover_exporter_->Cancel(); @@ -262,15 +265,16 @@ void AlbumCoverManager::Reset() { EnableCoversButtons(); ui_->artists->clear(); - new QListWidgetItem(all_artists_icon_, tr("All artists"), ui_->artists, All_Artists); - new QListWidgetItem(artist_icon_, tr("Various artists"), ui_->artists, Various_Artists); + new QListWidgetItem(all_artists_icon_, tr("All artists"), ui_->artists, + All_Artists); + new QListWidgetItem(artist_icon_, tr("Various artists"), ui_->artists, + Various_Artists); QStringList artists(library_backend_->GetAllArtistsWithAlbums()); qStableSort(artists.begin(), artists.end(), CompareNocase); - foreach (const QString& artist, artists) { - if (artist.isEmpty()) - continue; + foreach(const QString & artist, artists) { + if (artist.isEmpty()) continue; new QListWidgetItem(artist_icon_, artist, ui_->artists, Specific_Artist); } @@ -287,12 +291,10 @@ void AlbumCoverManager::DisableCoversButtons() { } void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { - if (!current) - return; + if (!current) return; QString artist; - if (current->type() == Specific_Artist) - artist = current->text(); + if (current->type() == Specific_Artist) artist = current->text(); ui_->albums->clear(); context_menu_items_.clear(); @@ -302,33 +304,41 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { // selected in the artist list. LibraryBackend::AlbumList albums; switch (current->type()) { - case Various_Artists: albums = library_backend_->GetCompilationAlbums(); break; - case Specific_Artist: albums = library_backend_->GetAlbumsByArtist(current->text()); break; + case Various_Artists: + albums = library_backend_->GetCompilationAlbums(); + break; + case Specific_Artist: + albums = library_backend_->GetAlbumsByArtist(current->text()); + break; case All_Artists: - default: albums = library_backend_->GetAllAlbums(); break; + default: + albums = library_backend_->GetAllAlbums(); + break; } // Sort by album name. The list is already sorted by sqlite but it was done // case sensitively. qStableSort(albums.begin(), albums.end(), CompareAlbumNameNocase); - foreach (const LibraryBackend::Album& info, albums) { + foreach(const LibraryBackend::Album & info, albums) { // Don't show songs without an album, obviously - if (info.album_name.isEmpty()) - continue; + if (info.album_name.isEmpty()) continue; - QListWidgetItem* item = new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums); + QListWidgetItem* item = + new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums); item->setData(Role_ArtistName, info.artist); item->setData(Role_AlbumName, info.album_name); item->setData(Role_FirstUrl, info.first_url); - item->setData(Qt::TextAlignmentRole, QVariant(Qt::AlignTop | Qt::AlignHCenter)); - item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled); + item->setData(Qt::TextAlignmentRole, + QVariant(Qt::AlignTop | Qt::AlignHCenter)); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | + Qt::ItemIsDragEnabled); item->setToolTip(info.artist + " - " + info.album_name); if (!info.art_automatic.isEmpty() || !info.art_manual.isEmpty()) { quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, - info.art_automatic, info.art_manual, info.first_url.toLocalFile()); + cover_loader_options_, info.art_automatic, info.art_manual, + info.first_url.toLocalFile()); item->setData(Role_PathAutomatic, info.art_automatic); item->setData(Role_PathManual, info.art_manual); cover_loading_tasks_[id] = item; @@ -338,14 +348,12 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { UpdateFilter(); } -void AlbumCoverManager::CoverImageLoaded(quint64 id, const QImage &image) { - if (!cover_loading_tasks_.contains(id)) - return; +void AlbumCoverManager::CoverImageLoaded(quint64 id, const QImage& image) { + if (!cover_loading_tasks_.contains(id)) return; QListWidgetItem* item = cover_loading_tasks_.take(id); - if (image.isNull()) - return; + if (image.isNull()) return; item->setIcon(QPixmap::fromImage(image)); UpdateFilter(); @@ -383,8 +391,9 @@ void AlbumCoverManager::UpdateFilter() { ui_->without_cover->setText(QString::number(without_cover)); } -bool AlbumCoverManager::ShouldHide( - const QListWidgetItem& item, const QString& filter, HideCovers hide) const { +bool AlbumCoverManager::ShouldHide(const QListWidgetItem& item, + const QString& filter, + HideCovers hide) const { bool has_cover = item.icon().cacheKey() != no_cover_icon_.cacheKey(); if (hide == Hide_WithCovers && has_cover) { return true; @@ -397,9 +406,10 @@ bool AlbumCoverManager::ShouldHide( } QStringList query = filter.split(' '); - foreach (const QString& s, query) { - if (!item.text().contains(s, Qt::CaseInsensitive) - && !item.data(Role_ArtistName).toString().contains(s, Qt::CaseInsensitive)) { + foreach(const QString & s, query) { + if (!item.text().contains(s, Qt::CaseInsensitive) && + !item.data(Role_ArtistName).toString().contains(s, + Qt::CaseInsensitive)) { return true; } } @@ -408,21 +418,19 @@ bool AlbumCoverManager::ShouldHide( } void AlbumCoverManager::FetchAlbumCovers() { - for (int i=0 ; ialbums->count() ; ++i) { + for (int i = 0; i < ui_->albums->count(); ++i) { QListWidgetItem* item = ui_->albums->item(i); - if (item->isHidden()) - continue; - if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) - continue; + if (item->isHidden()) continue; + if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) continue; - quint64 id = cover_fetcher_->FetchAlbumCover( - item->data(Role_ArtistName).toString(), item->data(Role_AlbumName).toString()); + quint64 id = + cover_fetcher_->FetchAlbumCover(item->data(Role_ArtistName).toString(), + item->data(Role_AlbumName).toString()); cover_fetching_tasks_[id] = item; - jobs_ ++; + jobs_++; } - if (!cover_fetching_tasks_.isEmpty()) - ui_->fetch->setEnabled(false); + if (!cover_fetching_tasks_.isEmpty()) ui_->fetch->setEnabled(false); progress_bar_->setMaximum(jobs_); progress_bar_->show(); @@ -431,10 +439,9 @@ void AlbumCoverManager::FetchAlbumCovers() { UpdateStatusText(); } -void AlbumCoverManager::AlbumCoverFetched(quint64 id, const QImage& image, - const CoverSearchStatistics& statistics) { - if (!cover_fetching_tasks_.contains(id)) - return; +void AlbumCoverManager::AlbumCoverFetched( + quint64 id, const QImage& image, const CoverSearchStatistics& statistics) { + if (!cover_fetching_tasks_.contains(id)) return; QListWidgetItem* item = cover_fetching_tasks_.take(id); if (!image.isNull()) { @@ -451,13 +458,13 @@ void AlbumCoverManager::AlbumCoverFetched(quint64 id, const QImage& image, void AlbumCoverManager::UpdateStatusText() { QString message = tr("Got %1 covers out of %2 (%3 failed)") - .arg(fetch_statistics_.chosen_images_) - .arg(jobs_) - .arg(fetch_statistics_.missing_images_); + .arg(fetch_statistics_.chosen_images_) + .arg(jobs_) + .arg(fetch_statistics_.missing_images_); if (fetch_statistics_.bytes_transferred_) { - message += ", " + tr("%1 transferred") - .arg(Utilities::PrettySize(fetch_statistics_.bytes_transferred_)); + message += ", " + tr("%1 transferred").arg(Utilities::PrettySize( + fetch_statistics_.bytes_transferred_)); } statusBar()->showMessage(message); @@ -477,24 +484,28 @@ void AlbumCoverManager::UpdateStatusText() { } } -bool AlbumCoverManager::eventFilter(QObject *obj, QEvent *event) { +bool AlbumCoverManager::eventFilter(QObject* obj, QEvent* event) { if (obj == ui_->albums && event->type() == QEvent::ContextMenu) { context_menu_items_ = ui_->albums->selectedItems(); - if (context_menu_items_.isEmpty()) - return false; + if (context_menu_items_.isEmpty()) return false; bool some_with_covers = false; - foreach (QListWidgetItem* item, context_menu_items_) { + foreach(QListWidgetItem * item, context_menu_items_) { if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) some_with_covers = true; } - album_cover_choice_controller_->cover_from_file_action()->setEnabled(context_menu_items_.size() == 1); - album_cover_choice_controller_->cover_from_url_action()->setEnabled(context_menu_items_.size() == 1); - album_cover_choice_controller_->show_cover_action()->setEnabled(some_with_covers && context_menu_items_.size() == 1); - album_cover_choice_controller_->unset_cover_action()->setEnabled(some_with_covers); - album_cover_choice_controller_->search_for_cover_action()->setEnabled(app_->cover_providers()->HasAnyProviders()); + album_cover_choice_controller_->cover_from_file_action()->setEnabled( + context_menu_items_.size() == 1); + album_cover_choice_controller_->cover_from_url_action()->setEnabled( + context_menu_items_.size() == 1); + album_cover_choice_controller_->show_cover_action()->setEnabled( + some_with_covers && context_menu_items_.size() == 1); + album_cover_choice_controller_->unset_cover_action()->setEnabled( + some_with_covers); + album_cover_choice_controller_->search_for_cover_action()->setEnabled( + app_->cover_providers()->HasAnyProviders()); QContextMenuEvent* e = static_cast(event); context_menu_->popup(e->globalPos()); @@ -504,15 +515,13 @@ bool AlbumCoverManager::eventFilter(QObject *obj, QEvent *event) { } Song AlbumCoverManager::GetSingleSelectionAsSong() { - return context_menu_items_.size() != 1 - ? Song() - : ItemAsSong(context_menu_items_[0]); + return context_menu_items_.size() != 1 ? Song() + : ItemAsSong(context_menu_items_[0]); } Song AlbumCoverManager::GetFirstSelectedAsSong() { - return context_menu_items_.isEmpty() - ? Song() - : ItemAsSong(context_menu_items_[0]); + return context_menu_items_.isEmpty() ? Song() + : ItemAsSong(context_menu_items_[0]); } Song AlbumCoverManager::ItemAsSong(QListWidgetItem* item) { @@ -541,18 +550,18 @@ Song AlbumCoverManager::ItemAsSong(QListWidgetItem* item) { void AlbumCoverManager::ShowCover() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; album_cover_choice_controller_->ShowCover(song); } void AlbumCoverManager::FetchSingleCover() { - foreach (QListWidgetItem* item, context_menu_items_) { - quint64 id = cover_fetcher_->FetchAlbumCover( - item->data(Role_ArtistName).toString(), item->data(Role_AlbumName).toString()); + foreach(QListWidgetItem * item, context_menu_items_) { + quint64 id = + cover_fetcher_->FetchAlbumCover(item->data(Role_ArtistName).toString(), + item->data(Role_AlbumName).toString()); cover_fetching_tasks_[id] = item; - jobs_ ++; + jobs_++; } progress_bar_->setMaximum(jobs_); @@ -561,18 +570,17 @@ void AlbumCoverManager::FetchSingleCover() { UpdateStatusText(); } - -void AlbumCoverManager::UpdateCoverInList(QListWidgetItem* item, const QString& cover) { - quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, QString(), cover); +void AlbumCoverManager::UpdateCoverInList(QListWidgetItem* item, + const QString& cover) { + quint64 id = app_->album_cover_loader()->LoadImageAsync(cover_loader_options_, + QString(), cover); item->setData(Role_PathManual, cover); cover_loading_tasks_[id] = item; } void AlbumCoverManager::LoadCoverFromFile() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; @@ -585,18 +593,18 @@ void AlbumCoverManager::LoadCoverFromFile() { void AlbumCoverManager::SaveCoverToFile() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QImage image; // load the image from disk - if(song.has_manually_unset_cover()) { + if (song.has_manually_unset_cover()) { image = QImage(":/nocover.png"); } else { - if(!song.art_manual().isEmpty() && QFile::exists(song.art_manual())) { + if (!song.art_manual().isEmpty() && QFile::exists(song.art_manual())) { image = QImage(song.art_manual()); - } else if(!song.art_automatic().isEmpty() && QFile::exists(song.art_automatic())) { + } else if (!song.art_automatic().isEmpty() && + QFile::exists(song.art_automatic())) { image = QImage(song.art_automatic()); } else { image = QImage(":/nocover.png"); @@ -608,8 +616,7 @@ void AlbumCoverManager::SaveCoverToFile() { void AlbumCoverManager::LoadCoverFromURL() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; @@ -622,19 +629,17 @@ void AlbumCoverManager::LoadCoverFromURL() { void AlbumCoverManager::SearchForCover() { Song song = GetFirstSelectedAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; QString cover = album_cover_choice_controller_->SearchForCover(&song); - if (cover.isEmpty()) - return; + if (cover.isEmpty()) return; // force the found cover on all of the selected items - foreach (QListWidgetItem* current, context_menu_items_) { + foreach(QListWidgetItem * current, context_menu_items_) { // don't save the first one twice - if(current != item) { + if (current != item) { Song current_song = ItemAsSong(current); album_cover_choice_controller_->SaveCover(¤t_song, cover); } @@ -645,20 +650,19 @@ void AlbumCoverManager::SearchForCover() { void AlbumCoverManager::UnsetCover() { Song song = GetFirstSelectedAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; QString cover = album_cover_choice_controller_->UnsetCover(&song); // force the 'none' cover on all of the selected items - foreach (QListWidgetItem* current, context_menu_items_) { + foreach(QListWidgetItem * current, context_menu_items_) { current->setIcon(no_cover_icon_); current->setData(Role_PathManual, cover); // don't save the first one twice - if(current != item) { + if (current != item) { Song current_song = ItemAsSong(current); album_cover_choice_controller_->SaveCover(¤t_song, cover); } @@ -675,11 +679,9 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex& index) const { QString artist = index.data(Role_ArtistName).toString(); q.AddCompilationRequirement(artist.isEmpty()); - if (!artist.isEmpty()) - q.AddWhere("artist", artist); + if (!artist.isEmpty()) q.AddWhere("artist", artist); - if (!library_backend_->ExecQuery(&q)) - return ret; + if (!library_backend_->ExecQuery(&q)) return ret; while (q.Next()) { Song song; @@ -689,18 +691,17 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex& index) const { return ret; } -SongList AlbumCoverManager::GetSongsInAlbums(const QModelIndexList& indexes) const { +SongList AlbumCoverManager::GetSongsInAlbums(const QModelIndexList& indexes) + const { SongList ret; - foreach (const QModelIndex& index, indexes) { - ret << GetSongsInAlbum(index); - } + foreach(const QModelIndex & index, indexes) { ret << GetSongsInAlbum(index); } return ret; } -SongMimeData* AlbumCoverManager::GetMimeDataForAlbums(const QModelIndexList& indexes) const { +SongMimeData* AlbumCoverManager::GetMimeDataForAlbums( + const QModelIndexList& indexes) const { SongList songs = GetSongsInAlbums(indexes); - if (songs.isEmpty()) - return nullptr; + if (songs.isEmpty()) return nullptr; SongMimeData* data = new SongMimeData; data->backend = library_backend_; @@ -708,7 +709,7 @@ SongMimeData* AlbumCoverManager::GetMimeDataForAlbums(const QModelIndexList& ind return data; } -void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex &index) { +void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex& index) { SongMimeData* data = GetMimeDataForAlbums(QModelIndexList() << index); if (data) { data->from_doubleclick_ = true; @@ -717,29 +718,33 @@ void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex &index) { } void AlbumCoverManager::AddSelectedToPlaylist() { - emit AddToPlaylist(GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes())); + emit AddToPlaylist( + GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes())); } void AlbumCoverManager::LoadSelectedToPlaylist() { - SongMimeData* data = GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes()); + SongMimeData* data = + GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes()); if (data) { data->clear_first_ = true; emit AddToPlaylist(data); } } -void AlbumCoverManager::SaveAndSetCover(QListWidgetItem *item, const QImage &image) { +void AlbumCoverManager::SaveAndSetCover(QListWidgetItem* item, + const QImage& image) { const QString artist = item->data(Role_ArtistName).toString(); const QString album = item->data(Role_AlbumName).toString(); - QString path = album_cover_choice_controller_->SaveCoverInCache(artist, album, image); + QString path = + album_cover_choice_controller_->SaveCoverInCache(artist, album, image); // Save the image in the database library_backend_->UpdateManualAlbumArtAsync(artist, album, path); // Update the icon in our list - quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, QString(), path); + quint64 id = app_->album_cover_loader()->LoadImageAsync(cover_loader_options_, + QString(), path); item->setData(Role_PathManual, path); cover_loading_tasks_[id] = item; } @@ -747,7 +752,7 @@ void AlbumCoverManager::SaveAndSetCover(QListWidgetItem *item, const QImage &ima void AlbumCoverManager::ExportCovers() { AlbumCoverExport::DialogResult result = cover_export_->Exec(); - if(result.cancelled_) { + if (result.cancelled_) { return; } @@ -755,11 +760,12 @@ void AlbumCoverManager::ExportCovers() { cover_exporter_->SetDialogResult(result); - for (int i=0 ; ialbums->count() ; ++i) { + for (int i = 0; i < ui_->albums->count(); ++i) { QListWidgetItem* item = ui_->albums->item(i); // skip hidden and coverless albums - if (item->isHidden() || item->icon().cacheKey() == no_cover_icon_.cacheKey()) { + if (item->isHidden() || + item->icon().cacheKey() == no_cover_icon_.cacheKey()) { continue; } @@ -784,13 +790,13 @@ void AlbumCoverManager::UpdateExportStatus(int exported, int skipped, int max) { progress_bar_->setValue(exported); QString message = tr("Exported %1 covers out of %2 (%3 skipped)") - .arg(exported) - .arg(max) - .arg(skipped); + .arg(exported) + .arg(max) + .arg(skipped); statusBar()->showMessage(message); // end of the current process - if(exported + skipped >= max) { + if (exported + skipped >= max) { QTimer::singleShot(2000, statusBar(), SLOT(clearMessage())); progress_bar_->hide(); diff --git a/src/ui/albumcovermanager.h b/src/ui/albumcovermanager.h index 30d1287dc..5efa126f6 100644 --- a/src/ui/albumcovermanager.h +++ b/src/ui/albumcovermanager.h @@ -47,10 +47,8 @@ class QProgressBar; class AlbumCoverManager : public QMainWindow { Q_OBJECT public: - AlbumCoverManager(Application* app, - LibraryBackend* library_backend, - QWidget* parent = 0, - QNetworkAccessManager* network = 0); + AlbumCoverManager(Application* app, LibraryBackend* library_backend, + QWidget* parent = 0, QNetworkAccessManager* network = 0); ~AlbumCoverManager(); static const char* kSettingsGroup; @@ -68,15 +66,15 @@ class AlbumCoverManager : public QMainWindow { SongList GetSongsInAlbums(const QModelIndexList& indexes) const; SongMimeData* GetMimeDataForAlbums(const QModelIndexList& indexes) const; - signals: +signals: void AddToPlaylist(QMimeData* data); protected: - void showEvent(QShowEvent *); - void closeEvent(QCloseEvent *); + void showEvent(QShowEvent*); + void closeEvent(QCloseEvent*); // For the album view context menu events - bool eventFilter(QObject *obj, QEvent *event); + bool eventFilter(QObject* obj, QEvent* event); private slots: void ArtistChanged(QListWidgetItem* current); @@ -107,11 +105,7 @@ class AlbumCoverManager : public QMainWindow { void UpdateExportStatus(int exported, int bad, int count); private: - enum ArtistItemType { - All_Artists, - Various_Artists, - Specific_Artist, - }; + enum ArtistItemType { All_Artists, Various_Artists, Specific_Artist, }; enum Role { Role_ArtistName = Qt::UserRole + 1, @@ -121,15 +115,12 @@ class AlbumCoverManager : public QMainWindow { Role_FirstUrl, }; - enum HideCovers { - Hide_None, - Hide_WithCovers, - Hide_WithoutCovers, - }; + enum HideCovers { Hide_None, Hide_WithCovers, Hide_WithoutCovers, }; - QString InitialPathForOpenCoverDialog(const QString& path_automatic, const QString& first_file_name) const; + QString InitialPathForOpenCoverDialog(const QString& path_automatic, + const QString& first_file_name) const; - // Returns the selected element in form of a Song ready to be used + // Returns the selected element in form of a Song ready to be used // by AlbumCoverChoiceController or invalid song if there's nothing // or multiple elements selected. Song GetSingleSelectionAsSong(); @@ -141,7 +132,8 @@ class AlbumCoverManager : public QMainWindow { Song ItemAsSong(QListWidgetItem* item); void UpdateStatusText(); - bool ShouldHide(const QListWidgetItem& item, const QString& filter, HideCovers hide) const; + bool ShouldHide(const QListWidgetItem& item, const QString& filter, + HideCovers hide) const; void SaveAndSetCover(QListWidgetItem* item, const QImage& image); private: @@ -184,4 +176,4 @@ class AlbumCoverManager : public QMainWindow { FRIEND_TEST(AlbumCoverManagerTest, HidesItemsWithFilter); }; -#endif // ALBUMCOVERMANAGER_H +#endif // ALBUMCOVERMANAGER_H diff --git a/src/ui/albumcovermanagerlist.cpp b/src/ui/albumcovermanagerlist.cpp index bc3b9120f..7a7f83b86 100644 --- a/src/ui/albumcovermanagerlist.cpp +++ b/src/ui/albumcovermanagerlist.cpp @@ -26,27 +26,22 @@ #include "library/librarybackend.h" #include "playlist/songmimedata.h" -AlbumCoverManagerList::AlbumCoverManagerList(QWidget *parent) - : QListWidget(parent), - manager_(nullptr) -{ -} +AlbumCoverManagerList::AlbumCoverManagerList(QWidget* parent) + : QListWidget(parent), manager_(nullptr) {} -QMimeData* AlbumCoverManagerList::mimeData(const QList items) const { +QMimeData* AlbumCoverManagerList::mimeData(const QList items) + const { // Get songs SongList songs; - foreach (QListWidgetItem* item, items) { + foreach(QListWidgetItem * item, items) { songs << manager_->GetSongsInAlbum(indexFromItem(item)); } - if (songs.isEmpty()) - return nullptr; + if (songs.isEmpty()) return nullptr; // Get URLs from the songs QList urls; - foreach (const Song& song, songs) { - urls << song.url(); - } + foreach(const Song & song, songs) { urls << song.url(); } // Get the QAbstractItemModel data so the picture works std::unique_ptr orig_data(QListWidget::mimeData(items)); @@ -55,7 +50,8 @@ QMimeData* AlbumCoverManagerList::mimeData(const QList items) mime_data->backend = manager_->backend(); mime_data->songs = songs; mime_data->setUrls(urls); - mime_data->setData(orig_data->formats()[0], orig_data->data(orig_data->formats()[0])); + mime_data->setData(orig_data->formats()[0], + orig_data->data(orig_data->formats()[0])); return mime_data; } diff --git a/src/ui/albumcovermanagerlist.h b/src/ui/albumcovermanagerlist.h index 174af171b..41078e129 100644 --- a/src/ui/albumcovermanagerlist.h +++ b/src/ui/albumcovermanagerlist.h @@ -24,17 +24,17 @@ class AlbumCoverManager; class AlbumCoverManagerList : public QListWidget { Q_OBJECT -public: - AlbumCoverManagerList(QWidget *parent = 0); + public: + AlbumCoverManagerList(QWidget* parent = 0); void set_cover_manager(AlbumCoverManager* manager) { manager_ = manager; } -protected: + protected: QMimeData* mimeData(const QList items) const; - void dropEvent(QDropEvent *event); + void dropEvent(QDropEvent* event); -private: + private: AlbumCoverManager* manager_; }; -#endif // ALBUMCOVERMANAGERLIST_H +#endif // ALBUMCOVERMANAGERLIST_H diff --git a/src/ui/albumcoversearcher.cpp b/src/ui/albumcoversearcher.cpp index ef6204a3b..8421af66d 100644 --- a/src/ui/albumcoversearcher.cpp +++ b/src/ui/albumcoversearcher.cpp @@ -38,11 +38,8 @@ const qreal SizeOverlayDelegate::kFontPointSize = 7.5; const int SizeOverlayDelegate::kBorderAlpha = 200; const int SizeOverlayDelegate::kBackgroundAlpha = 175; - SizeOverlayDelegate::SizeOverlayDelegate(QObject* parent) - : QStyledItemDelegate(parent) -{ -} + : QStyledItemDelegate(parent) {} void SizeOverlayDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, @@ -64,17 +61,16 @@ void SizeOverlayDelegate::paint(QPainter* painter, const int text_width = metrics.width(text); - const QRect icon_rect( - option.rect.left(), option.rect.top(), - option.rect.width(), option.rect.width()); + const QRect icon_rect(option.rect.left(), option.rect.top(), + option.rect.width(), option.rect.width()); const QRect background_rect( - icon_rect.right() - kMargin - text_width - kPaddingX*2, - icon_rect.bottom() - kMargin - metrics.height() - kPaddingY*2, - text_width + kPaddingX*2, metrics.height() + kPaddingY*2); - const QRect text_rect( - background_rect.left() + kPaddingX, background_rect.top() + kPaddingY, - text_width, metrics.height()); + icon_rect.right() - kMargin - text_width - kPaddingX * 2, + icon_rect.bottom() - kMargin - metrics.height() - kPaddingY * 2, + text_width + kPaddingX * 2, metrics.height() + kPaddingY * 2); + const QRect text_rect(background_rect.left() + kPaddingX, + background_rect.top() + kPaddingY, text_width, + metrics.height()); painter->save(); painter->setRenderHint(QPainter::Antialiasing); @@ -88,17 +84,15 @@ void SizeOverlayDelegate::paint(QPainter* painter, painter->restore(); } - AlbumCoverSearcher::AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, QWidget* parent) - : QDialog(parent), - ui_(new Ui_AlbumCoverSearcher), - app_(app), - model_(new QStandardItemModel(this)), - no_cover_icon_(no_cover_icon), - fetcher_(nullptr), - id_(0) -{ + : QDialog(parent), + ui_(new Ui_AlbumCoverSearcher), + app_(app), + model_(new QStandardItemModel(this)), + no_cover_icon_(no_cover_icon), + fetcher_(nullptr), + id_(0) { setWindowModality(Qt::WindowModal); ui_->setupUi(this); ui_->busy->hide(); @@ -111,27 +105,27 @@ AlbumCoverSearcher::AlbumCoverSearcher(const QIcon& no_cover_icon, options_.scale_output_image_ = false; options_.pad_output_image_ = false; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(ImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(ImageLoaded(quint64, QImage))); connect(ui_->search, SIGNAL(clicked()), SLOT(Search())); - connect(ui_->covers, SIGNAL(doubleClicked(QModelIndex)), SLOT(CoverDoubleClicked(QModelIndex))); + connect(ui_->covers, SIGNAL(doubleClicked(QModelIndex)), + SLOT(CoverDoubleClicked(QModelIndex))); new ForceScrollPerPixel(ui_->covers, this); - ui_->buttonBox->button(QDialogButtonBox::Cancel)->setShortcut(QKeySequence::Close); + ui_->buttonBox->button(QDialogButtonBox::Cancel) + ->setShortcut(QKeySequence::Close); } -AlbumCoverSearcher::~AlbumCoverSearcher() { - delete ui_; -} +AlbumCoverSearcher::~AlbumCoverSearcher() { delete ui_; } void AlbumCoverSearcher::Init(AlbumCoverFetcher* fetcher) { fetcher_ = fetcher; - connect(fetcher_, SIGNAL(SearchFinished(quint64,CoverSearchResults,CoverSearchStatistics)), - SLOT(SearchFinished(quint64,CoverSearchResults))); + connect(fetcher_, SIGNAL(SearchFinished(quint64, CoverSearchResults, + CoverSearchStatistics)), + SLOT(SearchFinished(quint64, CoverSearchResults))); } QImage AlbumCoverSearcher::Exec(const QString& artist, const QString& album) { @@ -139,20 +133,18 @@ QImage AlbumCoverSearcher::Exec(const QString& artist, const QString& album) { ui_->album->setText(album); ui_->artist->setFocus(); - if(!artist.isEmpty() || !album.isEmpty()) { + if (!artist.isEmpty() || !album.isEmpty()) { Search(); } - if (exec() == QDialog::Rejected) - return QImage(); + if (exec() == QDialog::Rejected) return QImage(); QModelIndex selected = ui_->covers->currentIndex(); if (!selected.isValid() || !selected.data(Role_ImageFetchFinished).toBool()) return QImage(); QIcon icon = selected.data(Qt::DecorationRole).value(); - if (icon.cacheKey() == no_cover_icon_.cacheKey()) - return QImage(); + if (icon.cacheKey() == no_cover_icon_.cacheKey()) return QImage(); return icon.pixmap(icon.availableSizes()[0]).toImage(); } @@ -179,9 +171,9 @@ void AlbumCoverSearcher::Search() { } } -void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& results) { - if (id != id_) - return; +void AlbumCoverSearcher::SearchFinished(quint64 id, + const CoverSearchResults& results) { + if (id != id_) return; ui_->search->setEnabled(true); ui_->artist->setEnabled(true); @@ -190,12 +182,11 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re ui_->search->setText(tr("Search")); id_ = 0; - foreach (const CoverSearchResult& result, results) { - if (result.image_url.isEmpty()) - continue; + foreach(const CoverSearchResult & result, results) { + if (result.image_url.isEmpty()) continue; quint64 id = app_->album_cover_loader()->LoadImageAsync( - options_, result.image_url.toString(), QString()); + options_, result.image_url.toString(), QString()); QStandardItem* item = new QStandardItem; item->setIcon(no_cover_icon_); @@ -203,7 +194,8 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re item->setData(result.image_url, Role_ImageURL); item->setData(id, Role_ImageRequestId); item->setData(false, Role_ImageFetchFinished); - item->setData(QVariant(Qt::AlignTop | Qt::AlignHCenter), Qt::TextAlignmentRole); + item->setData(QVariant(Qt::AlignTop | Qt::AlignHCenter), + Qt::TextAlignmentRole); item->setData(result.provider, GroupedIconView::Role_Group); model_->appendRow(item); @@ -211,17 +203,14 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re cover_loading_tasks_[id] = item; } - if (cover_loading_tasks_.isEmpty()) - ui_->busy->hide(); + if (cover_loading_tasks_.isEmpty()) ui_->busy->hide(); } void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { - if (!cover_loading_tasks_.contains(id)) - return; + if (!cover_loading_tasks_.contains(id)) return; QStandardItem* item = cover_loading_tasks_.take(id); - if (cover_loading_tasks_.isEmpty()) - ui_->busy->hide(); + if (cover_loading_tasks_.isEmpty()) ui_->busy->hide(); if (image.isNull()) { model_->removeRow(item->row()); @@ -231,11 +220,11 @@ void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { QIcon icon(QPixmap::fromImage(image)); // Create a pixmap that's padded and exactly the right size for the icon. - QImage scaled_image(image.scaled(ui_->covers->iconSize(), - Qt::KeepAspectRatio, + QImage scaled_image(image.scaled(ui_->covers->iconSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - QImage padded_image(ui_->covers->iconSize(), QImage::Format_ARGB32_Premultiplied); + QImage padded_image(ui_->covers->iconSize(), + QImage::Format_ARGB32_Premultiplied); padded_image.fill(0); QPainter p(&padded_image); @@ -253,8 +242,7 @@ void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { } void AlbumCoverSearcher::keyPressEvent(QKeyEvent* e) { - if (e->key() == Qt::Key_Enter || - e->key() == Qt::Key_Return) { + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { e->ignore(); return; } @@ -262,7 +250,6 @@ void AlbumCoverSearcher::keyPressEvent(QKeyEvent* e) { QDialog::keyPressEvent(e); } -void AlbumCoverSearcher::CoverDoubleClicked(const QModelIndex &index) { - if (index.isValid()) - accept(); +void AlbumCoverSearcher::CoverDoubleClicked(const QModelIndex& index) { + if (index.isValid()) accept(); } diff --git a/src/ui/albumcoversearcher.h b/src/ui/albumcoversearcher.h index f028cce40..b460639f4 100644 --- a/src/ui/albumcoversearcher.h +++ b/src/ui/albumcoversearcher.h @@ -34,7 +34,7 @@ class QStandardItem; class QStandardItemModel; class SizeOverlayDelegate : public QStyledItemDelegate { -public: + public: static const int kMargin; static const int kPaddingX; static const int kPaddingY; @@ -49,20 +49,20 @@ public: const QModelIndex& index) const; }; - // This is a dialog that lets the user search for album covers class AlbumCoverSearcher : public QDialog { Q_OBJECT -public: - AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, QWidget* parent); + public: + AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, + QWidget* parent); ~AlbumCoverSearcher(); enum Role { Role_ImageURL = Qt::UserRole + 1, Role_ImageRequestId, Role_ImageFetchFinished, - Role_ImageDimensions, // width * height + Role_ImageDimensions, // width * height Role_ImageSize, }; @@ -70,17 +70,17 @@ public: QImage Exec(const QString& artist, const QString& album); -protected: - void keyPressEvent(QKeyEvent *); + protected: + void keyPressEvent(QKeyEvent*); -private slots: + private slots: void Search(); void SearchFinished(quint64 id, const CoverSearchResults& results); void ImageLoaded(quint64 id, const QImage& image); void CoverDoubleClicked(const QModelIndex& index); -private: + private: Ui_AlbumCoverSearcher* ui_; Application* app_; @@ -94,4 +94,4 @@ private: QMap cover_loading_tasks_; }; -#endif // ALBUMCOVERSEARCHER_H +#endif // ALBUMCOVERSEARCHER_H diff --git a/src/ui/appearancesettingspage.cpp b/src/ui/appearancesettingspage.cpp index 866a843e8..77c79a380 100644 --- a/src/ui/appearancesettingspage.cpp +++ b/src/ui/appearancesettingspage.cpp @@ -35,51 +35,54 @@ #include "ui/albumcoverchoicecontroller.h" #ifdef HAVE_MOODBAR -# include "moodbar/moodbarrenderer.h" +#include "moodbar/moodbarrenderer.h" #endif const int AppearanceSettingsPage::kMoodbarPreviewWidth = 150; const int AppearanceSettingsPage::kMoodbarPreviewHeight = 18; AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_AppearanceSettingsPage), - original_use_a_custom_color_set_(false), - playlist_view_background_image_type_(PlaylistView::Default), - initialised_moodbar_previews_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_AppearanceSettingsPage), + original_use_a_custom_color_set_(false), + playlist_view_background_image_type_(PlaylistView::Default), + initialised_moodbar_previews_(false) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("view-media-visualization")); - connect(ui_->blur_slider, SIGNAL(valueChanged(int)), SLOT(BlurLevelChanged(int))); - connect(ui_->opacity_slider, SIGNAL(valueChanged(int)), SLOT(OpacityLevelChanged(int))); + connect(ui_->blur_slider, SIGNAL(valueChanged(int)), + SLOT(BlurLevelChanged(int))); + connect(ui_->opacity_slider, SIGNAL(valueChanged(int)), + SLOT(OpacityLevelChanged(int))); Load(); - connect(ui_->select_foreground_color, SIGNAL(pressed()), SLOT(SelectForegroundColor())); - connect(ui_->select_background_color, SIGNAL(pressed()), SLOT(SelectBackgroundColor())); - connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), SLOT(UseCustomColorSetOptionChanged(bool))); + connect(ui_->select_foreground_color, SIGNAL(pressed()), + SLOT(SelectForegroundColor())); + connect(ui_->select_background_color, SIGNAL(pressed()), + SLOT(SelectBackgroundColor())); + connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), + SLOT(UseCustomColorSetOptionChanged(bool))); - connect(ui_->select_background_image_filename_button, SIGNAL(pressed()), SLOT(SelectBackgroundImage())); + connect(ui_->select_background_image_filename_button, SIGNAL(pressed()), + SLOT(SelectBackgroundImage())); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->background_image_filename, SLOT(setEnabled(bool))); + ui_->background_image_filename, SLOT(setEnabled(bool))); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->select_background_image_filename_button, SLOT(setEnabled(bool))); + ui_->select_background_image_filename_button, SLOT(setEnabled(bool))); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->blur_slider, SLOT(setEnabled(bool))); + ui_->blur_slider, SLOT(setEnabled(bool))); connect(ui_->use_album_cover_background, SIGNAL(toggled(bool)), - ui_->blur_slider, SLOT(setEnabled(bool))); + ui_->blur_slider, SLOT(setEnabled(bool))); connect(ui_->use_default_background, SIGNAL(toggled(bool)), - SLOT(DisableBlurAndOpacitySliders(bool))); + SLOT(DisableBlurAndOpacitySliders(bool))); connect(ui_->use_no_background, SIGNAL(toggled(bool)), - SLOT(DisableBlurAndOpacitySliders(bool))); + SLOT(DisableBlurAndOpacitySliders(bool))); } -AppearanceSettingsPage::~AppearanceSettingsPage() { - delete ui_; -} +AppearanceSettingsPage::~AppearanceSettingsPage() { delete ui_; } void AppearanceSettingsPage::Load() { QSettings s; @@ -89,14 +92,17 @@ void AppearanceSettingsPage::Load() { // Keep in mind originals colors, in case the user clicks on Cancel, to be // able to restore colors - original_use_a_custom_color_set_ = s.value(Appearance::kUseCustomColorSet, false).toBool(); + original_use_a_custom_color_set_ = + s.value(Appearance::kUseCustomColorSet, false).toBool(); - original_foreground_color_ = s.value(Appearance::kForegroundColor, - p.color(QPalette::WindowText)).value(); - current_foreground_color_ = original_foreground_color_; - original_background_color_ = s.value(Appearance::kBackgroundColor, - p.color(QPalette::Window)).value(); - current_background_color_ = original_background_color_; + original_foreground_color_ = + s.value(Appearance::kForegroundColor, p.color(QPalette::WindowText)) + .value(); + current_foreground_color_ = original_foreground_color_; + original_background_color_ = + s.value(Appearance::kBackgroundColor, p.color(QPalette::Window)) + .value(); + current_background_color_ = original_background_color_; InitColorSelectorsColors(); s.endGroup(); @@ -106,7 +112,7 @@ void AppearanceSettingsPage::Load() { playlist_view_background_image_type_ = static_cast( s.value(PlaylistView::kSettingBackgroundImageType).toInt()); - playlist_view_background_image_filename_ = + playlist_view_background_image_filename_ = s.value(PlaylistView::kSettingBackgroundImageFilename).toString(); ui_->use_system_color_set->setChecked(!original_use_a_custom_color_set_); @@ -128,7 +134,8 @@ void AppearanceSettingsPage::Load() { ui_->use_default_background->setChecked(true); DisableBlurAndOpacitySliders(true); } - ui_->background_image_filename->setText(playlist_view_background_image_filename_); + ui_->background_image_filename->setText( + playlist_view_background_image_filename_); ui_->blur_slider->setValue( s.value("blur_radius", PlaylistView::kDefaultBlurRadius).toInt()); ui_->opacity_slider->setValue( @@ -141,7 +148,8 @@ void AppearanceSettingsPage::Load() { ui_->moodbar_show->setChecked(s.value("show", true).toBool()); ui_->moodbar_style->setCurrentIndex(s.value("style", 0).toInt()); ui_->moodbar_calculate->setChecked(!s.value("calculate", true).toBool()); - ui_->moodbar_save->setChecked(s.value("save_alongside_originals", false).toBool()); + ui_->moodbar_save->setChecked( + s.value("save_alongside_originals", false).toBool()); s.endGroup(); InitMoodbarPreviews(); @@ -162,7 +170,8 @@ void AppearanceSettingsPage::Save() { // Playlist settings s.beginGroup(Playlist::kSettingsGroup); - playlist_view_background_image_filename_ = ui_->background_image_filename->text(); + playlist_view_background_image_filename_ = + ui_->background_image_filename->text(); if (ui_->use_no_background->isChecked()) { playlist_view_background_image_type_ = PlaylistView::None; } else if (ui_->use_album_cover_background->isChecked()) { @@ -172,7 +181,7 @@ void AppearanceSettingsPage::Save() { } else if (ui_->use_custom_background_image->isChecked()) { playlist_view_background_image_type_ = PlaylistView::Custom; s.setValue(PlaylistView::kSettingBackgroundImageFilename, - playlist_view_background_image_filename_); + playlist_view_background_image_filename_); } s.setValue(PlaylistView::kSettingBackgroundImageType, playlist_view_background_image_type_); @@ -200,8 +209,7 @@ void AppearanceSettingsPage::Cancel() { void AppearanceSettingsPage::SelectForegroundColor() { QColor color_selected = QColorDialog::getColor(current_foreground_color_); - if (!color_selected.isValid()) - return; + if (!color_selected.isValid()) return; current_foreground_color_ = color_selected; dialog()->appearance()->ChangeForegroundColor(color_selected); @@ -211,8 +219,7 @@ void AppearanceSettingsPage::SelectForegroundColor() { void AppearanceSettingsPage::SelectBackgroundColor() { QColor color_selected = QColorDialog::getColor(current_background_color_); - if (!color_selected.isValid()) - return; + if (!color_selected.isValid()) return; current_background_color_ = color_selected; dialog()->appearance()->ChangeBackgroundColor(color_selected); @@ -230,28 +237,32 @@ void AppearanceSettingsPage::UseCustomColorSetOptionChanged(bool checked) { } void AppearanceSettingsPage::InitColorSelectorsColors() { - UpdateColorSelectorColor(ui_->select_foreground_color, current_foreground_color_); - UpdateColorSelectorColor(ui_->select_background_color, current_background_color_); + UpdateColorSelectorColor(ui_->select_foreground_color, + current_foreground_color_); + UpdateColorSelectorColor(ui_->select_background_color, + current_background_color_); } -void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget* color_selector, const QColor& color) { - QString css = QString("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255)") - .arg(color.red()) - .arg(color.green()) - .arg(color.blue()); +void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget* color_selector, + const QColor& color) { + QString css = + QString("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255)") + .arg(color.red()) + .arg(color.green()) + .arg(color.blue()); color_selector->setStyleSheet(css); } void AppearanceSettingsPage::SelectBackgroundImage() { - QString selected_filename = - QFileDialog::getOpenFileName(this, tr("Select background image"), + QString selected_filename = QFileDialog::getOpenFileName( + this, tr("Select background image"), playlist_view_background_image_filename_, tr(AlbumCoverChoiceController::kLoadImageFileFilter) + ";;" + - tr(AlbumCoverChoiceController::kAllFilesFilter)); - if (selected_filename.isEmpty()) - return; + tr(AlbumCoverChoiceController::kAllFilesFilter)); + if (selected_filename.isEmpty()) return; playlist_view_background_image_filename_ = selected_filename; - ui_->background_image_filename->setText(playlist_view_background_image_filename_); + ui_->background_image_filename->setText( + playlist_view_background_image_filename_); } void AppearanceSettingsPage::BlurLevelChanged(int value) { @@ -264,8 +275,7 @@ void AppearanceSettingsPage::OpacityLevelChanged(int percent) { void AppearanceSettingsPage::InitMoodbarPreviews() { #ifdef HAVE_MOODBAR - if (initialised_moodbar_previews_) - return; + if (initialised_moodbar_previews_) return; initialised_moodbar_previews_ = true; const QSize preview_size(kMoodbarPreviewWidth, kMoodbarPreviewHeight); @@ -280,7 +290,7 @@ void AppearanceSettingsPage::InitMoodbarPreviews() { QByteArray data(file.readAll()); // Render and set each preview - for (int i=0 ; i #include -BackgroundStreamsSettingsPage::BackgroundStreamsSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_BackgroundStreamsSettingsPage) -{ +BackgroundStreamsSettingsPage::BackgroundStreamsSettingsPage( + SettingsDialog* dialog) + : SettingsPage(dialog), ui_(new Ui_BackgroundStreamsSettingsPage) { ui_->setupUi(this); setWindowIcon(QIcon(":/icons/32x32/weather-showers-scattered.png")); - foreach (const QString& name, dialog->background_streams()->streams()) { + foreach(const QString & name, dialog->background_streams()->streams()) { AddStream(name); } } -BackgroundStreamsSettingsPage::~BackgroundStreamsSettingsPage() { - delete ui_; -} +BackgroundStreamsSettingsPage::~BackgroundStreamsSettingsPage() { delete ui_; } -void BackgroundStreamsSettingsPage::Load() { -} +void BackgroundStreamsSettingsPage::Load() {} void BackgroundStreamsSettingsPage::Save() { dialog()->background_streams()->SaveStreams(); diff --git a/src/ui/backgroundstreamssettingspage.h b/src/ui/backgroundstreamssettingspage.h index a21970170..239d1273f 100644 --- a/src/ui/backgroundstreamssettingspage.h +++ b/src/ui/backgroundstreamssettingspage.h @@ -25,22 +25,22 @@ class Ui_BackgroundStreamsSettingsPage; class BackgroundStreamsSettingsPage : public SettingsPage { Q_OBJECT -public: + public: BackgroundStreamsSettingsPage(SettingsDialog* dialog); ~BackgroundStreamsSettingsPage(); void Load(); void Save(); -private slots: + private slots: void EnableStream(bool enabled); void StreamVolumeChanged(int value); -private: + private: void AddStream(const QString& name); -private: + private: Ui_BackgroundStreamsSettingsPage* ui_; }; -#endif // BACKGROUNDSTREAMSSETTINGSPAGE_H +#endif // BACKGROUNDSTREAMSSETTINGSPAGE_H diff --git a/src/ui/behavioursettingspage.cpp b/src/ui/behavioursettingspage.cpp index adcc89801..d19be32b8 100644 --- a/src/ui/behavioursettingspage.cpp +++ b/src/ui/behavioursettingspage.cpp @@ -30,12 +30,11 @@ bool LocaleAwareCompare(const QString& a, const QString& b) { } // namespace BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_BehaviourSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_BehaviourSettingsPage) { ui_->setupUi(this); - connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), SLOT(ShowTrayIconToggled(bool))); + connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), + SLOT(ShowTrayIconToggled(bool))); ui_->doubleclick_addmode->setItemData(0, MainWindow::AddBehaviour_Append); ui_->doubleclick_addmode->setItemData(1, MainWindow::AddBehaviour_Load); @@ -43,7 +42,8 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) ui_->doubleclick_addmode->setItemData(3, MainWindow::AddBehaviour_Enqueue); ui_->doubleclick_playmode->setItemData(0, MainWindow::PlayBehaviour_Never); - ui_->doubleclick_playmode->setItemData(1, MainWindow::PlayBehaviour_IfStopped); + ui_->doubleclick_playmode->setItemData(1, + MainWindow::PlayBehaviour_IfStopped); ui_->doubleclick_playmode->setItemData(2, MainWindow::PlayBehaviour_Always); ui_->menu_playmode->setItemData(0, MainWindow::PlayBehaviour_Never); @@ -55,10 +55,9 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) QDir dir(":/translations/"); QStringList codes(dir.entryList(QStringList() << "*.qm")); QRegExp lang_re("^clementine_(.*).qm$"); - foreach (const QString& filename, codes) { + foreach(const QString & filename, codes) { // The regex captures the "ru" from "clementine_ru.qm" - if (!lang_re.exactMatch(filename)) - continue; + if (!lang_re.exactMatch(filename)) continue; QString code = lang_re.cap(1); QString language_name = QLocale::languageToString(QLocale(code).language()); @@ -86,32 +85,39 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) #endif } -BehaviourSettingsPage::~BehaviourSettingsPage() { - delete ui_; -} +BehaviourSettingsPage::~BehaviourSettingsPage() { delete ui_; } void BehaviourSettingsPage::Load() { QSettings s; s.beginGroup(MainWindow::kSettingsGroup); ui_->b_show_tray_icon_->setChecked(s.value("showtray", true).toBool()); - ui_->b_keep_running_->setChecked(s.value("keeprunning", - ui_->b_show_tray_icon_->isChecked()).toBool()); + ui_->b_keep_running_->setChecked( + s.value("keeprunning", ui_->b_show_tray_icon_->isChecked()).toBool()); ui_->doubleclick_addmode->setCurrentIndex(ui_->doubleclick_addmode->findData( s.value("doubleclick_addmode", MainWindow::AddBehaviour_Append).toInt())); - ui_->doubleclick_playmode->setCurrentIndex(ui_->doubleclick_playmode->findData( - s.value("doubleclick_playmode", MainWindow::PlayBehaviour_IfStopped).toInt())); + ui_->doubleclick_playmode->setCurrentIndex( + ui_->doubleclick_playmode->findData( + s.value("doubleclick_playmode", MainWindow::PlayBehaviour_IfStopped) + .toInt())); ui_->menu_playmode->setCurrentIndex(ui_->menu_playmode->findData( s.value("menu_playmode", MainWindow::PlayBehaviour_IfStopped).toInt())); MainWindow::StartupBehaviour behaviour = MainWindow::StartupBehaviour( s.value("startupbehaviour", MainWindow::Startup_Remember).toInt()); switch (behaviour) { - case MainWindow::Startup_AlwaysHide: ui_->b_always_hide_->setChecked(true); break; - case MainWindow::Startup_AlwaysShow: ui_->b_always_show_->setChecked(true); break; - case MainWindow::Startup_Remember: ui_->b_remember_->setChecked(true); break; + case MainWindow::Startup_AlwaysHide: + ui_->b_always_hide_->setChecked(true); + break; + case MainWindow::Startup_AlwaysShow: + ui_->b_always_show_->setChecked(true); + break; + case MainWindow::Startup_Remember: + ui_->b_remember_->setChecked(true); + break; } - ui_->resume_after_start_->setChecked(s.value("resume_playback_after_start", false).toBool()); + ui_->resume_after_start_->setChecked( + s.value("resume_playback_after_start", false).toBool()); s.endGroup(); s.beginGroup("General"); @@ -123,11 +129,13 @@ void BehaviourSettingsPage::Load() { s.endGroup(); s.beginGroup(Playlist::kSettingsGroup); - ui_->b_grey_out_deleted_->setChecked(s.value("greyoutdeleted", false).toBool()); + ui_->b_grey_out_deleted_->setChecked( + s.value("greyoutdeleted", false).toBool()); s.endGroup(); s.beginGroup(PlaylistTabBar::kSettingsGroup); - ui_->b_warn_close_playlist_->setChecked(s.value("warn_close_playlist", true).toBool()); + ui_->b_warn_close_playlist_->setChecked( + s.value("warn_close_playlist", true).toBool()); s.endGroup(); } @@ -135,16 +143,22 @@ void BehaviourSettingsPage::Save() { QSettings s; MainWindow::StartupBehaviour behaviour = MainWindow::Startup_Remember; - if (ui_->b_always_hide_->isChecked()) behaviour = MainWindow::Startup_AlwaysHide; - if (ui_->b_always_show_->isChecked()) behaviour = MainWindow::Startup_AlwaysShow; - if (ui_->b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember; + if (ui_->b_always_hide_->isChecked()) + behaviour = MainWindow::Startup_AlwaysHide; + if (ui_->b_always_show_->isChecked()) + behaviour = MainWindow::Startup_AlwaysShow; + if (ui_->b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember; MainWindow::AddBehaviour doubleclick_addmode = MainWindow::AddBehaviour( - ui_->doubleclick_addmode->itemData(ui_->doubleclick_addmode->currentIndex()).toInt()); + ui_->doubleclick_addmode->itemData( + ui_->doubleclick_addmode->currentIndex()) + .toInt()); MainWindow::PlayBehaviour doubleclick_playmode = MainWindow::PlayBehaviour( - ui_->doubleclick_playmode->itemData(ui_->doubleclick_playmode->currentIndex()).toInt()); + ui_->doubleclick_playmode->itemData( + ui_->doubleclick_playmode->currentIndex()) + .toInt()); MainWindow::PlayBehaviour menu_playmode = MainWindow::PlayBehaviour( - ui_->menu_playmode->itemData(ui_->menu_playmode->currentIndex()).toInt()); + ui_->menu_playmode->itemData(ui_->menu_playmode->currentIndex()).toInt()); s.beginGroup(MainWindow::kSettingsGroup); s.setValue("showtray", ui_->b_show_tray_icon_->isChecked()); @@ -153,12 +167,14 @@ void BehaviourSettingsPage::Save() { s.setValue("doubleclick_addmode", doubleclick_addmode); s.setValue("doubleclick_playmode", doubleclick_playmode); s.setValue("menu_playmode", menu_playmode); - s.setValue("resume_playback_after_start", ui_->resume_after_start_->isChecked()); + s.setValue("resume_playback_after_start", + ui_->resume_after_start_->isChecked()); s.endGroup(); s.beginGroup("General"); - s.setValue("language", language_map_.contains(ui_->language->currentText()) ? - language_map_[ui_->language->currentText()] : QString()); + s.setValue("language", language_map_.contains(ui_->language->currentText()) + ? language_map_[ui_->language->currentText()] + : QString()); s.endGroup(); s.beginGroup(Playlist::kSettingsGroup); diff --git a/src/ui/behavioursettingspage.h b/src/ui/behavioursettingspage.h index fc546f246..9f73c0f77 100644 --- a/src/ui/behavioursettingspage.h +++ b/src/ui/behavioursettingspage.h @@ -27,20 +27,20 @@ class Ui_BehaviourSettingsPage; class BehaviourSettingsPage : public SettingsPage { Q_OBJECT -public: + public: BehaviourSettingsPage(SettingsDialog* dialog); ~BehaviourSettingsPage(); void Load(); void Save(); -private slots: + private slots: void ShowTrayIconToggled(bool on); -private: + private: Ui_BehaviourSettingsPage* ui_; QMap language_map_; }; -#endif // BEHAVIOURSETTINGSPAGE_H +#endif // BEHAVIOURSETTINGSPAGE_H diff --git a/src/ui/console.cpp b/src/ui/console.cpp index fa1f5edb3..681279809 100644 --- a/src/ui/console.cpp +++ b/src/ui/console.cpp @@ -10,8 +10,7 @@ #include "core/database.h" Console::Console(Application* app, QWidget* parent) - : QDialog(parent), - app_(app) { + : QDialog(parent), app_(app) { ui_.setupUi(this); connect(ui_.run, SIGNAL(clicked()), SLOT(RunQuery())); diff --git a/src/ui/coverfromurldialog.cpp b/src/ui/coverfromurldialog.cpp index a96508121..8813a0efe 100644 --- a/src/ui/coverfromurldialog.cpp +++ b/src/ui/coverfromurldialog.cpp @@ -28,21 +28,19 @@ #include CoverFromURLDialog::CoverFromURLDialog(QWidget* parent) - : QDialog(parent), - ui_(new Ui_CoverFromURLDialog), - network_(new NetworkAccessManager(this)) -{ + : QDialog(parent), + ui_(new Ui_CoverFromURLDialog), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); ui_->busy->hide(); } -CoverFromURLDialog::~CoverFromURLDialog() { - delete ui_; -} +CoverFromURLDialog::~CoverFromURLDialog() { delete ui_; } QImage CoverFromURLDialog::Exec() { // reset state - ui_->url->setText("");; + ui_->url->setText(""); + ; last_image_ = QImage(); QClipboard* clipboard = QApplication::clipboard(); @@ -55,7 +53,8 @@ QImage CoverFromURLDialog::Exec() { void CoverFromURLDialog::accept() { ui_->busy->show(); - QNetworkRequest network_request = QNetworkRequest(QUrl::fromUserInput(ui_->url->text())); + QNetworkRequest network_request = + QNetworkRequest(QUrl::fromUserInput(ui_->url->text())); QNetworkReply* reply = network_->get(network_request); connect(reply, SIGNAL(finished()), SLOT(LoadCoverFromURLFinished())); @@ -68,17 +67,19 @@ void CoverFromURLDialog::LoadCoverFromURLFinished() { reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - QMessageBox::information(this, tr("Fetching cover error"), tr("The site you requested does not exist!")); + QMessageBox::information(this, tr("Fetching cover error"), + tr("The site you requested does not exist!")); return; } QImage image; image.loadFromData(reply->readAll()); - if(!image.isNull()) { + if (!image.isNull()) { last_image_ = image; QDialog::accept(); } else { - QMessageBox::information(this, tr("Fetching cover error"), tr("The site you requested is not an image!")); + QMessageBox::information(this, tr("Fetching cover error"), + tr("The site you requested is not an image!")); } } diff --git a/src/ui/coverfromurldialog.h b/src/ui/coverfromurldialog.h index b725eaba1..c3eb065bd 100644 --- a/src/ui/coverfromurldialog.h +++ b/src/ui/coverfromurldialog.h @@ -48,4 +48,4 @@ class CoverFromURLDialog : public QDialog { QImage last_image_; }; -#endif // COVERFROMURLDIALOG_H +#endif // COVERFROMURLDIALOG_H diff --git a/src/ui/dbusscreensaver.cpp b/src/ui/dbusscreensaver.cpp index 021dc1e0d..21fa3a9de 100644 --- a/src/ui/dbusscreensaver.cpp +++ b/src/ui/dbusscreensaver.cpp @@ -23,22 +23,21 @@ DBusScreensaver::DBusScreensaver(const QString& service, const QString& path, const QString& interface) - : service_(service), - path_(path), - interface_(interface) -{ -} + : service_(service), path_(path), interface_(interface) {} void DBusScreensaver::Inhibit() { - QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver"); + QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", + "org.gnome.ScreenSaver"); QDBusReply reply = - gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), QObject::tr("Visualizations")); + gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), + QObject::tr("Visualizations")); if (reply.isValid()) { cookie_ = reply.value(); } } void DBusScreensaver::Uninhibit() { - QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver"); + QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", + "org.gnome.ScreenSaver"); gnome_screensaver.call("UnInhibit", cookie_); } diff --git a/src/ui/dbusscreensaver.h b/src/ui/dbusscreensaver.h index 4d939cf42..4cae2a16c 100644 --- a/src/ui/dbusscreensaver.h +++ b/src/ui/dbusscreensaver.h @@ -30,7 +30,7 @@ class DBusScreensaver : public Screensaver { void Inhibit(); void Uninhibit(); -private: + private: QString service_; QString path_; QString interface_; diff --git a/src/ui/edittagdialog.cpp b/src/ui/edittagdialog.cpp index f44fa7cc9..acbfb5c6b 100644 --- a/src/ui/edittagdialog.cpp +++ b/src/ui/edittagdialog.cpp @@ -45,32 +45,33 @@ #include -const char* EditTagDialog::kHintText = QT_TR_NOOP("(different across multiple songs)"); +const char* EditTagDialog::kHintText = + QT_TR_NOOP("(different across multiple songs)"); const char* EditTagDialog::kSettingsGroup = "EditTagDialog"; EditTagDialog::EditTagDialog(Application* app, QWidget* parent) - : QDialog(parent), - ui_(new Ui_EditTagDialog), - app_(app), - album_cover_choice_controller_(new AlbumCoverChoiceController(this)), - loading_(false), - ignore_edits_(false), - tag_fetcher_(new TagFetcher(this)), - cover_art_id_(0), - cover_art_is_set_(false), - results_dialog_(new TrackSelectionDialog(this)) -{ + : QDialog(parent), + ui_(new Ui_EditTagDialog), + app_(app), + album_cover_choice_controller_(new AlbumCoverChoiceController(this)), + loading_(false), + ignore_edits_(false), + tag_fetcher_(new TagFetcher(this)), + cover_art_id_(0), + cover_art_is_set_(false), + results_dialog_(new TrackSelectionDialog(this)) { cover_options_.default_output_image_ = AlbumCoverLoader::ScaleAndPad(cover_options_, QImage(":nocover.png")); - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage,QImage)), - SLOT(ArtLoaded(quint64,QImage,QImage))); + connect(app_->album_cover_loader(), + SIGNAL(ImageLoaded(quint64, QImage, QImage)), + SLOT(ArtLoaded(quint64, QImage, QImage))); connect(tag_fetcher_, SIGNAL(ResultAvailable(Song, SongList)), results_dialog_, SLOT(FetchTagFinished(Song, SongList)), Qt::QueuedConnection); - connect(tag_fetcher_, SIGNAL(Progress(Song,QString)), - results_dialog_, SLOT(FetchTagProgress(Song,QString))); + connect(tag_fetcher_, SIGNAL(Progress(Song, QString)), results_dialog_, + SLOT(FetchTagProgress(Song, QString))); connect(results_dialog_, SIGNAL(SongChosen(Song, Song)), SLOT(FetchTagSongChosen(Song, Song))); connect(results_dialog_, SIGNAL(finished(int)), tag_fetcher_, SLOT(Cancel())); @@ -83,7 +84,7 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) // An editable field is one that has a label as a buddy. The label is // important because it gets turned bold when the field is changed. - foreach (QLabel* label, findChildren()) { + foreach(QLabel * label, findChildren()) { QWidget* widget = label->buddy(); if (widget) { // Store information about the field @@ -109,25 +110,25 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) const bool light = palette().color(QPalette::Base).value() > 128; const QColor color = palette().color(QPalette::Dark); QPalette summary_label_palette(palette()); - summary_label_palette.setColor(QPalette::WindowText, - light ? color.darker(150) : color.lighter(125)); + summary_label_palette.setColor( + QPalette::WindowText, light ? color.darker(150) : color.lighter(125)); - foreach (QLabel* label, ui_->summary_tab->findChildren()) { + foreach(QLabel * label, ui_->summary_tab->findChildren()) { if (label->property("field_label").toBool()) { label->setPalette(summary_label_palette); } } // Pretend the summary text is just a label - ui_->summary->setMaximumHeight(ui_->art->height() - ui_->summary_art_button->height() - 4); + ui_->summary->setMaximumHeight(ui_->art->height() - + ui_->summary_art_button->height() - 4); connect(ui_->song_list->selectionModel(), - SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(SelectionChanged())); connect(ui_->button_box, SIGNAL(clicked(QAbstractButton*)), - SLOT(ButtonClicked(QAbstractButton*))); - connect(ui_->rating, SIGNAL(RatingChanged(float)), - SLOT(SongRated(float))); + SLOT(ButtonClicked(QAbstractButton*))); + connect(ui_->rating, SIGNAL(RatingChanged(float)), SLOT(SongRated(float))); connect(ui_->playcount_reset, SIGNAL(clicked()), SLOT(ResetPlayCounts())); connect(ui_->fetch_tag, SIGNAL(clicked()), SLOT(FetchTag())); @@ -157,7 +158,8 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) ui_->art->setAcceptDrops(true); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); + previous_button_ = + new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); next_button_ = new QPushButton(IconLoader::Load("go-next"), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); @@ -168,36 +170,41 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) // Set some shortcuts for the buttons new QShortcut(QKeySequence::Back, previous_button_, SLOT(click())); new QShortcut(QKeySequence::Forward, next_button_, SLOT(click())); - new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, SLOT(click())); + new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, + SLOT(click())); new QShortcut(QKeySequence::MoveToNextPage, next_button_, SLOT(click())); // Show the shortcuts as tooltips previous_button_->setToolTip(QString("%1 (%2 / %3)").arg( previous_button_->text(), QKeySequence(QKeySequence::Back).toString(QKeySequence::NativeText), - QKeySequence(QKeySequence::MoveToPreviousPage).toString(QKeySequence::NativeText))); + QKeySequence(QKeySequence::MoveToPreviousPage) + .toString(QKeySequence::NativeText))); next_button_->setToolTip(QString("%1 (%2 / %3)").arg( next_button_->text(), QKeySequence(QKeySequence::Forward).toString(QKeySequence::NativeText), - QKeySequence(QKeySequence::MoveToNextPage).toString(QKeySequence::NativeText))); + QKeySequence(QKeySequence::MoveToNextPage) + .toString(QKeySequence::NativeText))); - new TagCompleter(app_->library_backend(), Playlist::Column_Artist, ui_->artist); + new TagCompleter(app_->library_backend(), Playlist::Column_Artist, + ui_->artist); new TagCompleter(app_->library_backend(), Playlist::Column_Album, ui_->album); - new TagCompleter(app_->library_backend(), Playlist::Column_AlbumArtist, ui_->albumartist); + new TagCompleter(app_->library_backend(), Playlist::Column_AlbumArtist, + ui_->albumartist); new TagCompleter(app_->library_backend(), Playlist::Column_Genre, ui_->genre); - new TagCompleter(app_->library_backend(), Playlist::Column_Composer, ui_->composer); - new TagCompleter(app_->library_backend(), Playlist::Column_Performer, ui_->performer); - new TagCompleter(app_->library_backend(), Playlist::Column_Grouping, ui_->grouping); + new TagCompleter(app_->library_backend(), Playlist::Column_Composer, + ui_->composer); + new TagCompleter(app_->library_backend(), Playlist::Column_Performer, + ui_->performer); + new TagCompleter(app_->library_backend(), Playlist::Column_Grouping, + ui_->grouping); } -EditTagDialog::~EditTagDialog() { - delete ui_; -} +EditTagDialog::~EditTagDialog() { delete ui_; } bool EditTagDialog::SetLoading(const QString& message) { const bool loading = !message.isEmpty(); - if (loading == loading_) - return false; + if (loading == loading_) return false; loading_ = loading; ui_->button_box->setEnabled(!loading); @@ -209,14 +216,16 @@ bool EditTagDialog::SetLoading(const QString& message) { return true; } -QList EditTagDialog::LoadData(const SongList& songs) const { +QList EditTagDialog::LoadData(const SongList& songs) + const { QList ret; - foreach (const Song& song, songs) { + foreach(const Song & song, songs) { if (song.IsEditable()) { // Try reloading the tags from file Song copy(song); - TagReaderClient::Instance()->ReadFileBlocking(copy.url().toLocalFile(), ©); + TagReaderClient::Instance()->ReadFileBlocking(copy.url().toLocalFile(), + ©); if (copy.is_valid()) { copy.MergeUserSetData(song); @@ -230,28 +239,28 @@ QList EditTagDialog::LoadData(const SongList& songs) const void EditTagDialog::SetSongs(const SongList& s, const PlaylistItemList& items) { // Show the loading indicator - if (!SetLoading(tr("Loading tracks") + "...")) - return; + if (!SetLoading(tr("Loading tracks") + "...")) return; data_.clear(); playlist_items_ = items; ui_->song_list->clear(); // Reload tags in the background - QFuture > future = QtConcurrent::run(this, &EditTagDialog::LoadData, s); - QFutureWatcher >* watcher = new QFutureWatcher >(this); + QFuture > future = + QtConcurrent::run(this, &EditTagDialog::LoadData, s); + QFutureWatcher >* watcher = + new QFutureWatcher >(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(SetSongsFinished())); } void EditTagDialog::SetSongsFinished() { - QFutureWatcher >* watcher = dynamic_cast >*>(sender()); - if (!watcher) - return; + QFutureWatcher >* watcher = + dynamic_cast >*>(sender()); + if (!watcher) return; watcher->deleteLater(); - if (!SetLoading(QString())) - return; + if (!SetLoading(QString())) return; data_ = watcher->result(); if (data_.count() == 0) { @@ -268,7 +277,7 @@ void EditTagDialog::SetSongsFinished() { } // Add the filenames to the list - foreach (const Data& data, data_) { + foreach(const Data & data, data_) { ui_->song_list->addItem(data.current_.basefilename()); } @@ -287,55 +296,57 @@ void EditTagDialog::SetSongListVisibility(bool visible) { } QVariant EditTagDialog::Data::value(const Song& song, const QString& id) { - if (id == "title") return song.title(); - if (id == "artist") return song.artist(); - if (id == "album") return song.album(); + if (id == "title") return song.title(); + if (id == "artist") return song.artist(); + if (id == "album") return song.album(); if (id == "albumartist") return song.albumartist(); - if (id == "composer") return song.composer(); - if (id == "performer") return song.performer(); - if (id == "grouping") return song.grouping(); - if (id == "genre") return song.genre(); - if (id == "comment") return song.comment(); - if (id == "track") return song.track(); - if (id == "disc") return song.disc(); - if (id == "year") return song.year(); + if (id == "composer") return song.composer(); + if (id == "performer") return song.performer(); + if (id == "grouping") return song.grouping(); + if (id == "genre") return song.genre(); + if (id == "comment") return song.comment(); + if (id == "track") return song.track(); + if (id == "disc") return song.disc(); + if (id == "year") return song.year(); qLog(Warning) << "Unknown ID" << id; return QVariant(); } void EditTagDialog::Data::set_value(const QString& id, const QVariant& value) { - if (id == "title") current_.set_title(value.toString()); - if (id == "artist") current_.set_artist(value.toString()); - if (id == "album") current_.set_album(value.toString()); + if (id == "title") current_.set_title(value.toString()); + if (id == "artist") current_.set_artist(value.toString()); + if (id == "album") current_.set_album(value.toString()); if (id == "albumartist") current_.set_albumartist(value.toString()); - if (id == "composer") current_.set_composer(value.toString()); - if (id == "performer") current_.set_performer(value.toString()); - if (id == "grouping") current_.set_grouping(value.toString()); - if (id == "genre") current_.set_genre(value.toString()); - if (id == "comment") current_.set_comment(value.toString()); - if (id == "track") current_.set_track(value.toInt()); - if (id == "disc") current_.set_disc(value.toInt()); - if (id == "year") current_.set_year(value.toInt()); + if (id == "composer") current_.set_composer(value.toString()); + if (id == "performer") current_.set_performer(value.toString()); + if (id == "grouping") current_.set_grouping(value.toString()); + if (id == "genre") current_.set_genre(value.toString()); + if (id == "comment") current_.set_comment(value.toString()); + if (id == "track") current_.set_track(value.toInt()); + if (id == "disc") current_.set_disc(value.toInt()); + if (id == "year") current_.set_year(value.toInt()); } -bool EditTagDialog::DoesValueVary(const QModelIndexList& sel, const QString& id) const { +bool EditTagDialog::DoesValueVary(const QModelIndexList& sel, + const QString& id) const { QVariant value = data_[sel.first().row()].current_value(id); - for (int i=1 ; isetFont(new_font); } -void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexList& sel) { +void EditTagDialog::UpdateFieldValue(const FieldData& field, + const QModelIndexList& sel) { // Get the value from the field QVariant value; if (ExtendedEditor* editor = dynamic_cast(field.editor_)) { @@ -368,7 +380,7 @@ void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexLi } // Set it in each selected song - foreach (const QModelIndex& i, sel) { + foreach(const QModelIndex & i, sel) { data_[i.row()].set_value(field.id_, value); } @@ -381,9 +393,10 @@ void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexLi field.editor_->setFont(new_font); } -void EditTagDialog::ResetFieldValue(const FieldData& field, const QModelIndexList& sel) { +void EditTagDialog::ResetFieldValue(const FieldData& field, + const QModelIndexList& sel) { // Reset each selected song - foreach (const QModelIndex& i, sel) { + foreach(const QModelIndex & i, sel) { Data& data = data_[i.row()]; data.set_value(field.id_, data.original_value(field.id_)); } @@ -393,20 +406,19 @@ void EditTagDialog::ResetFieldValue(const FieldData& field, const QModelIndexLis } void EditTagDialog::SelectionChanged() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; // Set the editable fields ignore_edits_ = true; - foreach (const FieldData& field, fields_) { - InitFieldValue(field, sel); - } + foreach(const FieldData & field, fields_) { InitFieldValue(field, sel); } ignore_edits_ = false; // If we're editing multiple songs then we have to disable certain tabs const bool multiple = sel.count() > 1; - ui_->tab_widget->setTabEnabled(ui_->tab_widget->indexOf(ui_->summary_tab), !multiple); + ui_->tab_widget->setTabEnabled(ui_->tab_widget->indexOf(ui_->summary_tab), + !multiple); if (!multiple) { const Song& song = data_[sel.first().row()].original_; @@ -415,12 +427,13 @@ void EditTagDialog::SelectionChanged() { } } -static void SetText(QLabel* label, int value, const QString& suffix, const QString& def = QString()) { +static void SetText(QLabel* label, int value, const QString& suffix, + const QString& def = QString()) { label->setText(value <= 0 ? def : (QString::number(value) + " " + suffix)); } static void SetDate(QLabel* label, uint time) { - if (time == std::numeric_limits::max()) { // -1 + if (time == std::numeric_limits::max()) { // -1 label->setText(QObject::tr("Unknown")); } else { label->setText(QDateTime::fromTime_t(time).toString( @@ -429,9 +442,11 @@ static void SetDate(QLabel* label, uint time) { } void EditTagDialog::UpdateSummaryTab(const Song& song) { - cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options_, song); + cover_art_id_ = + app_->album_cover_loader()->LoadImageAsync(cover_options_, song); - QString summary = "" + Qt::escape(song.PrettyTitleWithArtist()) + "
"; + QString summary = + "" + Qt::escape(song.PrettyTitleWithArtist()) + "
"; bool art_is_set = true; if (song.has_manually_unset_cover()) { @@ -442,7 +457,8 @@ void EditTagDialog::UpdateSummaryTab(const Song& song) { } else if (song.has_embedded_cover()) { summary += Qt::escape(tr("Cover art from embedded image")); } else if (!song.art_automatic().isEmpty()) { - summary += Qt::escape(tr("Cover art loaded automatically from %1").arg(song.art_automatic())); + summary += Qt::escape( + tr("Cover art loaded automatically from %1").arg(song.art_automatic())); } else { summary += Qt::escape(tr("Cover art not set")); art_is_set = false; @@ -475,7 +491,7 @@ void EditTagDialog::UpdateSummaryTab(const Song& song) { ui_->filename->setText(song.url().toString()); album_cover_choice_controller_->search_for_cover_action()->setEnabled( - app_->cover_providers()->HasAnyProviders()); + app_->cover_providers()->HasAnyProviders()); } void EditTagDialog::UpdateStatisticsTab(const Song& song) { @@ -484,12 +500,15 @@ void EditTagDialog::UpdateStatisticsTab(const Song& song) { ui_->score->setText(QString::number(qMax(0, song.score()))); ui_->rating->set_rating(song.rating()); - ui_->lastplayed->setText(song.lastplayed() <= 0 ? tr("Never") : - QDateTime::fromTime_t(song.lastplayed()).toString( - QLocale::system().dateTimeFormat(QLocale::LongFormat))); + ui_->lastplayed->setText( + song.lastplayed() <= 0 + ? tr("Never") + : QDateTime::fromTime_t(song.lastplayed()).toString( + QLocale::system().dateTimeFormat(QLocale::LongFormat))); } -void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, const QImage& original) { +void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, + const QImage& original) { if (id == cover_art_id_) { ui_->art->setPixmap(QPixmap::fromImage(scaled)); original_ = original; @@ -497,17 +516,16 @@ void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, const QImage& or } void EditTagDialog::FieldValueEdited() { - if (ignore_edits_) - return; + if (ignore_edits_) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; QWidget* w = qobject_cast(sender()); // Find the field - foreach (const FieldData& field, fields_) { + foreach(const FieldData & field, fields_) { if (field.editor_ == w) { UpdateFieldValue(field, sel); return; @@ -516,14 +534,14 @@ void EditTagDialog::FieldValueEdited() { } void EditTagDialog::ResetField() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; QWidget* w = qobject_cast(sender()); // Find the field - foreach (const FieldData& field, fields_) { + foreach(const FieldData & field, fields_) { if (field.editor_ == w) { ignore_edits_ = true; ResetFieldValue(field, sel); @@ -534,65 +552,61 @@ void EditTagDialog::ResetField() { } Song* EditTagDialog::GetFirstSelected() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return nullptr; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return nullptr; return &data_[sel.first().row()].original_; } void EditTagDialog::LoadCoverFromFile() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->LoadCoverFromFile(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::SaveCoverToFile() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; album_cover_choice_controller_->SaveCoverToFile(*song, original_); } void EditTagDialog::LoadCoverFromURL() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->LoadCoverFromURL(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::SearchForCover() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->SearchForCover(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::UnsetCover() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->UnsetCover(song); UpdateCoverOf(*song, sel, cover); @@ -600,29 +614,29 @@ void EditTagDialog::UnsetCover() { void EditTagDialog::ShowCover() { Song* song = GetFirstSelected(); - if(!song) { + if (!song) { return; } album_cover_choice_controller_->ShowCover(*song); } -void EditTagDialog::UpdateCoverOf(const Song& selected, const QModelIndexList& sel, +void EditTagDialog::UpdateCoverOf(const Song& selected, + const QModelIndexList& sel, const QString& cover) { - if (!selected.is_valid() || selected.id() == -1) - return; + if (!selected.is_valid() || selected.id() == -1) return; UpdateSummaryTab(selected); // Now check if we have any other songs cached that share that artist and // album (and would therefore be changed as well) - for (int i=0 ; iartist() && - selected.album() == other_song->album()) { + selected.album() == other_song->album()) { other_song->set_art_manual(cover); } } @@ -642,7 +656,8 @@ void EditTagDialog::PreviousSong() { return; } - int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % ui_->song_list->count(); + int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % + ui_->song_list->count(); ui_->song_list->setCurrentRow(row); } @@ -653,25 +668,25 @@ void EditTagDialog::ButtonClicked(QAbstractButton* button) { } void EditTagDialog::SaveData(const QList& data) { - for (int i=0 ; iSaveFileBlocking( - ref.current_.url().toLocalFile(), ref.current_)) { - emit Error(tr("An error occurred writing metadata to '%1'").arg(ref.current_.url().toLocalFile())); + ref.current_.url().toLocalFile(), ref.current_)) { + emit Error(tr("An error occurred writing metadata to '%1'") + .arg(ref.current_.url().toLocalFile())); } } } void EditTagDialog::accept() { // Show the loading indicator - if (!SetLoading(tr("Saving tracks") + "...")) - return; + if (!SetLoading(tr("Saving tracks") + "...")) return; // Save tags in the background - QFuture future = QtConcurrent::run(this, &EditTagDialog::SaveData, data_); + QFuture future = + QtConcurrent::run(this, &EditTagDialog::SaveData, data_); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(AcceptFinished())); @@ -679,12 +694,10 @@ void EditTagDialog::accept() { void EditTagDialog::AcceptFinished() { QFutureWatcher* watcher = dynamic_cast*>(sender()); - if (!watcher) - return; + if (!watcher) return; watcher->deleteLater(); - if (!SetLoading(QString())) - return; + if (!SetLoading(QString())) return; QDialog::accept(); } @@ -706,10 +719,12 @@ bool EditTagDialog::eventFilter(QObject* o, QEvent* e) { case QEvent::Drop: { const QDropEvent* event = static_cast(e); - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); Song* song = GetFirstSelected(); - const QString cover = album_cover_choice_controller_->SaveCover(song, event); + const QString cover = + album_cover_choice_controller_->SaveCover(song, event); if (!cover.isEmpty()) { UpdateCoverOf(*song, sel, cover); } @@ -746,28 +761,27 @@ void EditTagDialog::hideEvent(QHideEvent* e) { } void EditTagDialog::SongRated(float rating) { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; Song* song = &data_[sel.first().row()].original_; - if (!song->is_valid() || song->id() == -1) - return; + if (!song->is_valid() || song->id() == -1) return; song->set_rating(rating); app_->library_backend()->UpdateSongRatingAsync(song->id(), rating); } void EditTagDialog::ResetPlayCounts() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; Song* song = &data_[sel.first().row()].original_; - if (!song->is_valid() || song->id() == -1) - return; + if (!song->is_valid() || song->id() == -1) return; - if (QMessageBox::question(this, tr("Reset play counts"), - tr("Are you sure you want to reset this song's statistics?"), - QMessageBox::Reset, QMessageBox::Cancel) != QMessageBox::Reset) { + if (QMessageBox::question( + this, tr("Reset play counts"), + tr("Are you sure you want to reset this song's statistics?"), + QMessageBox::Reset, QMessageBox::Cancel) != QMessageBox::Reset) { return; } @@ -780,11 +794,12 @@ void EditTagDialog::ResetPlayCounts() { } void EditTagDialog::FetchTag() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); SongList songs; - foreach (const QModelIndex& index, sel) { + foreach(const QModelIndex & index, sel) { Song song = data_[index.row()].original_; if (!song.is_valid()) { continue; @@ -793,8 +808,7 @@ void EditTagDialog::FetchTag() { songs << song; } - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; results_dialog_->Init(songs); tag_fetcher_->StartFetch(songs); @@ -802,14 +816,14 @@ void EditTagDialog::FetchTag() { results_dialog_->show(); } -void EditTagDialog::FetchTagSongChosen(const Song& original_song, const Song& new_metadata) { +void EditTagDialog::FetchTagSongChosen(const Song& original_song, + const Song& new_metadata) { const QString filename = original_song.url().toLocalFile(); // Find the song with this filename - for (int i=0 ; ioriginal_.url().toLocalFile() != filename) - continue; + if (data->original_.url().toLocalFile() != filename) continue; // Is it currently being displayed in the UI? if (ui_->song_list->currentRow() == i) { @@ -830,4 +844,3 @@ void EditTagDialog::FetchTagSongChosen(const Song& original_song, const Song& ne break; } } - diff --git a/src/ui/edittagdialog.h b/src/ui/edittagdialog.h index 885f3bfb8..8c18e6f5d 100644 --- a/src/ui/edittagdialog.h +++ b/src/ui/edittagdialog.h @@ -42,14 +42,15 @@ class QPushButton; class EditTagDialog : public QDialog { Q_OBJECT -public: + public: EditTagDialog(Application* app, QWidget* parent = 0); ~EditTagDialog(); static const char* kHintText; static const char* kSettingsGroup; - void SetSongs(const SongList& songs, const PlaylistItemList& items = PlaylistItemList()); + void SetSongs(const SongList& songs, + const PlaylistItemList& items = PlaylistItemList()); PlaylistItemList playlist_items() const { return playlist_items_; } @@ -58,12 +59,12 @@ public: signals: void Error(const QString& message); -protected: + protected: bool eventFilter(QObject* o, QEvent* e); void showEvent(QShowEvent*); void hideEvent(QHideEvent*); -private slots: + private slots: void SetSongsFinished(); void AcceptFinished(); @@ -88,13 +89,17 @@ private slots: void PreviousSong(); void NextSong(); -private: + private: struct Data { Data(const Song& song = Song()) : original_(song), current_(song) {} static QVariant value(const Song& song, const QString& id); - QVariant original_value(const QString& id) const { return value(original_, id); } - QVariant current_value(const QString& id) const { return value(current_, id); } + QVariant original_value(const QString& id) const { + return value(original_, id); + } + QVariant current_value(const QString& id) const { + return value(current_, id); + } void set_value(const QString& id, const QVariant& value); @@ -105,7 +110,7 @@ private: struct FieldData { FieldData(QLabel* label = NULL, QWidget* editor = NULL, const QString& id = QString()) - : label_(label), editor_(editor), id_(id) {} + : label_(label), editor_(editor), id_(id) {} QLabel* label_; QWidget* editor_; @@ -133,7 +138,7 @@ private: QList LoadData(const SongList& songs) const; void SaveData(const QList& data); -private: + private: Ui_EditTagDialog* ui_; Application* app_; @@ -164,4 +169,4 @@ private: TrackSelectionDialog* results_dialog_; }; -#endif // EDITTAGDIALOG_H +#endif // EDITTAGDIALOG_H diff --git a/src/ui/equalizer.cpp b/src/ui/equalizer.cpp index 16b8680d3..511630ff2 100644 --- a/src/ui/equalizer.cpp +++ b/src/ui/equalizer.cpp @@ -28,16 +28,13 @@ #include "widgets/equalizerslider.h" // We probably don't need to translate these, right? -const char* Equalizer::kGainText[] = { - "60", "170", "310", "600", "1k", "3k", "6k", "12k", "14k", "16k"}; +const char* Equalizer::kGainText[] = {"60", "170", "310", "600", "1k", + "3k", "6k", "12k", "14k", "16k"}; const char* Equalizer::kSettingsGroup = "Equalizer"; -Equalizer::Equalizer(QWidget *parent) - : QDialog(parent), - ui_(new Ui_Equalizer), - loading_(false) -{ +Equalizer::Equalizer(QWidget* parent) + : QDialog(parent), ui_(new Ui_Equalizer), loading_(false) { ui_->setupUi(this); // Icons @@ -51,27 +48,27 @@ Equalizer::Equalizer(QWidget *parent) line->setFrameShadow(QFrame::Sunken); ui_->slider_container->layout()->addWidget(line); - for (int i=0 ; ienable, SIGNAL(toggled(bool)), SIGNAL(EnabledChanged(bool))); - connect(ui_->enable, SIGNAL(toggled(bool)), ui_->slider_container, SLOT(setEnabled(bool))); + connect(ui_->enable, SIGNAL(toggled(bool)), ui_->slider_container, + SLOT(setEnabled(bool))); connect(ui_->enable, SIGNAL(toggled(bool)), SLOT(Save())); - connect(ui_->preset, SIGNAL(currentIndexChanged(int)), SLOT(PresetChanged(int))); + connect(ui_->preset, SIGNAL(currentIndexChanged(int)), + SLOT(PresetChanged(int))); connect(ui_->preset_save, SIGNAL(clicked()), SLOT(SavePreset())); connect(ui_->preset_del, SIGNAL(clicked()), SLOT(DelPreset())); - connect(ui_->balance_slider, SIGNAL(valueChanged(int)), SLOT(StereoSliderChanged(int))); + connect(ui_->balance_slider, SIGNAL(valueChanged(int)), + SLOT(StereoSliderChanged(int))); QShortcut* close = new QShortcut(QKeySequence::Close, this); connect(close, SIGNAL(activated()), SLOT(close())); } -Equalizer::~Equalizer() { - delete ui_; -} +Equalizer::~Equalizer() { delete ui_; } void Equalizer::ReloadSettings() { QSettings s; @@ -82,22 +79,21 @@ void Equalizer::ReloadSettings() { // Load presets int count = s.beginReadArray("presets"); - for (int i=0 ; i()); } s.endArray(); - if (count == 0) - LoadDefaultPresets(); + if (count == 0) LoadDefaultPresets(); // Selected preset QString selected_preset = s.value("selected_preset", "Custom").toString(); - QString selected_preset_display_name = QString(tr(qPrintable(selected_preset))); + QString selected_preset_display_name = + QString(tr(qPrintable(selected_preset))); int selected_index = ui_->preset->findText(selected_preset_display_name); - if (selected_index != -1) - ui_->preset->setCurrentIndex(selected_index); + if (selected_index != -1) ui_->preset->setCurrentIndex(selected_index); // Enabled? ui_->enable->setChecked(s.value("enabled", false).toBool()); @@ -111,38 +107,59 @@ void Equalizer::ReloadSettings() { } void Equalizer::LoadDefaultPresets() { - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Custom"), Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Classical"), Params(0, 0, 0, 0, 0, 0, -40, -40, -40, -50)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Club"), Params(0, 0, 20, 30, 30, 30, 20, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dance"), Params(50, 35, 10, 0, 0, -30, -40, -40, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Custom"), + Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Classical"), + Params(0, 0, 0, 0, 0, 0, -40, -40, -40, -50)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Club"), + Params(0, 0, 20, 30, 30, 30, 20, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dance"), + Params(50, 35, 10, 0, 0, -30, -40, -40, 0, 0)); // Dubstep equalizer created by Devyn Collier Johnson - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dubstep"), Params(0, 36, 85, 58, 30, 0, 36, 60, 96, 62, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass"), Params(70, 70, 70, 40, 20, -45, -50, -55, -55, -55)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Treble"), Params(-50, -50, -50, -25, 15, 55, 80, 80, 80, 85)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass + Treble"), Params(35, 30, 0, -40, -25, 10, 45, 55, 60, 60)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Laptop/Headphones"), Params(25, 50, 25, -20, 0, -30, -40, -40, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Large Hall"), Params(50, 50, 30, 30, 0, -25, -25, -25, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Live"), Params(-25, 0, 20, 25, 30, 30, 20, 15, 15, 10)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Party"), Params(35, 35, 0, 0, 0, 0, 0, 0, 35, 35)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Pop"), Params(-10, 25, 35, 40, 25, -5, -15, -15, -10, -10)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dubstep"), + Params(0, 36, 85, 58, 30, 0, 36, 60, 96, 62, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass"), + Params(70, 70, 70, 40, 20, -45, -50, -55, -55, -55)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Treble"), + Params(-50, -50, -50, -25, 15, 55, 80, 80, 80, 85)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass + Treble"), + Params(35, 30, 0, -40, -25, 10, 45, 55, 60, 60)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Laptop/Headphones"), + Params(25, 50, 25, -20, 0, -30, -40, -40, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Large Hall"), + Params(50, 50, 30, 30, 0, -25, -25, -25, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Live"), + Params(-25, 0, 20, 25, 30, 30, 20, 15, 15, 10)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Party"), + Params(35, 35, 0, 0, 0, 0, 0, 0, 35, 35)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Pop"), + Params(-10, 25, 35, 40, 25, -5, -15, -15, -10, -10)); // Psychedelic equalizer created by Devyn Collier Johnson - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Psychedelic"), Params(100, 100, 0, 40, 0, 67, 79, 0, 30, -100, 37)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Reggae"), Params(0, 0, -5, -30, 0, -35, -35, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Rock"), Params(40, 25, -30, -40, -20, 20, 45, 55, 55, 55)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft"), Params(25, 10, -5, -15, -5, 20, 45, 50, 55, 60)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Ska"), Params(-15, -25, -25, -5, 20, 30, 45, 50, 55, 50)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft Rock"), Params(20, 20, 10, -5, -25, -30, -20, -5, 15, 45)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Techno"), Params(40, 30, 0, -30, -25, 0, 40, 50, 50, 45)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Zero"), Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Psychedelic"), + Params(100, 100, 0, 40, 0, 67, 79, 0, 30, -100, 37)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Reggae"), + Params(0, 0, -5, -30, 0, -35, -35, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Rock"), + Params(40, 25, -30, -40, -20, 20, 45, 55, 55, 55)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft"), + Params(25, 10, -5, -15, -5, 20, 45, 50, 55, 60)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Ska"), + Params(-15, -25, -25, -5, 20, 30, 45, 50, 55, 50)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft Rock"), + Params(20, 20, 10, -5, -25, -30, -20, -5, 15, 45)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Techno"), + Params(40, 30, 0, -30, -25, 0, 40, 50, 50, 45)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Zero"), + Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); } void Equalizer::AddPreset(const QString& name, const Params& params) { QString name_displayed = tr(qPrintable(name)); presets_[name] = params; if (ui_->preset->findText(name_displayed) == -1) { - ui_->preset->addItem(name_displayed, // name to display (translated) - QVariant(name) // original name - ); + ui_->preset->addItem(name_displayed, // name to display (translated) + QVariant(name) // original name + ); } } @@ -162,8 +179,7 @@ void Equalizer::PresetChanged(const QString& name) { loading_ = true; preamp_->set_value(p.preamp); - for (int i=0 ; iset_value(p.gain[i]); + for (int i = 0; i < kBands; ++i) gain_[i]->set_value(p.gain[i]); loading_ = false; ParametersChanged(); @@ -179,11 +195,11 @@ void Equalizer::SavePreset() { } QString Equalizer::SaveCurrentPreset() { - QString name = QInputDialog::getText(this, tr("Save preset"), tr("Name"), - QLineEdit::Normal, - tr(qPrintable(last_preset_)));; - if (name.isEmpty()) - return QString(); + QString name = + QInputDialog::getText(this, tr("Save preset"), tr("Name"), + QLineEdit::Normal, tr(qPrintable(last_preset_))); + ; + if (name.isEmpty()) return QString(); AddPreset(name, current_params()); Save(); @@ -193,23 +209,22 @@ QString Equalizer::SaveCurrentPreset() { void Equalizer::DelPreset() { QString name = ui_->preset->itemData(ui_->preset->currentIndex()).toString(); QString name_displayed = ui_->preset->currentText(); - if (!presets_.contains(name) || name.isEmpty()) - return; + if (!presets_.contains(name) || name.isEmpty()) return; int ret = QMessageBox::question( this, tr("Delete preset"), - tr("Are you sure you want to delete the \"%1\" preset?").arg(name_displayed), + tr("Are you sure you want to delete the \"%1\" preset?") + .arg(name_displayed), QMessageBox::Yes, QMessageBox::No); - if (ret == QMessageBox::No) - return; + if (ret == QMessageBox::No) return; presets_.remove(name); ui_->preset->removeItem(ui_->preset->currentIndex()); Save(); } -EqualizerSlider* Equalizer::AddSlider(const QString &label) { +EqualizerSlider* Equalizer::AddSlider(const QString& label) { EqualizerSlider* ret = new EqualizerSlider(label, ui_->slider_container); ui_->slider_container->layout()->addWidget(ret); connect(ret, SIGNAL(ValueChanged(int)), SLOT(ParametersChanged())); @@ -217,17 +232,13 @@ EqualizerSlider* Equalizer::AddSlider(const QString &label) { return ret; } -bool Equalizer::is_enabled() const { - return ui_->enable->isChecked(); -} +bool Equalizer::is_enabled() const { return ui_->enable->isChecked(); } -int Equalizer::preamp_value() const { - return preamp_->value(); -} +int Equalizer::preamp_value() const { return preamp_->value(); } QList Equalizer::gain_values() const { QList ret; - for (int i=0 ; ivalue(); } return ret; @@ -243,13 +254,11 @@ Equalizer::Params Equalizer::current_params() const { } float Equalizer::stereo_balance() const { - return qBound( - -1.0f, ui_->balance_slider->value() / 100.0f, 1.0f); + return qBound(-1.0f, ui_->balance_slider->value() / 100.0f, 1.0f); } void Equalizer::ParametersChanged() { - if (loading_) - return; + if (loading_) return; emit ParametersChanged(preamp_value(), gain_values()); } @@ -260,8 +269,8 @@ void Equalizer::Save() { // Presets s.beginWriteArray("presets", presets_.count()); - int i=0; - foreach (const QString& name, presets_.keys()) { + int i = 0; + foreach(const QString & name, presets_.keys()) { s.setArrayIndex(i++); s.setValue("name", name); s.setValue("params", QVariant::fromValue(presets_[name])); @@ -270,7 +279,7 @@ void Equalizer::Save() { // Selected preset s.setValue("selected_preset", - ui_->preset->itemData(ui_->preset->currentIndex()).toString()); + ui_->preset->itemData(ui_->preset->currentIndex()).toString()); // Enabled? s.setValue("enabled", ui_->enable->isChecked()); @@ -280,41 +289,42 @@ void Equalizer::Save() { void Equalizer::closeEvent(QCloseEvent* e) { QString name = ui_->preset->currentText(); - if (!presets_.contains(name)) - return; + if (!presets_.contains(name)) return; - if (presets_[name] == current_params()) - return; + if (presets_[name] == current_params()) return; SavePreset(); } - -Equalizer::Params::Params() - : preamp(0) -{ - for (int i=0 ; i>(QDataStream& s, Equalizer::Params& p) { +QDataStream& operator>>(QDataStream& s, Equalizer::Params& p) { s >> p.preamp; - for (int i=0 ; i> p.gain[i]; + for (int i = 0; i < Equalizer::kBands; ++i) s >> p.gain[i]; return s; } diff --git a/src/ui/equalizer.h b/src/ui/equalizer.h index 6e3eb0d9e..30b20f280 100644 --- a/src/ui/equalizer.h +++ b/src/ui/equalizer.h @@ -29,7 +29,7 @@ class Equalizer : public QDialog { Q_OBJECT public: - Equalizer(QWidget *parent = 0); + Equalizer(QWidget* parent = 0); ~Equalizer(); static const int kBands = 10; @@ -41,8 +41,8 @@ class Equalizer : public QDialog { Params(int g0, int g1, int g2, int g3, int g4, int g5, int g6, int g7, int g8, int g9, int pre = 0); - bool operator ==(const Params& other) const; - bool operator !=(const Params& other) const; + bool operator==(const Params& other) const; + bool operator!=(const Params& other) const; int preamp; int gain[kBands]; @@ -54,13 +54,13 @@ class Equalizer : public QDialog { Params current_params() const; float stereo_balance() const; - signals: +signals: void EnabledChanged(bool enabled); void ParametersChanged(int preamp, const QList& band_gains); void StereoBalanceChanged(float balance); protected: - void closeEvent(QCloseEvent *); + void closeEvent(QCloseEvent*); private slots: void ParametersChanged(); @@ -91,7 +91,7 @@ class Equalizer : public QDialog { }; Q_DECLARE_METATYPE(Equalizer::Params); -QDataStream &operator<<(QDataStream& s, const Equalizer::Params& p); -QDataStream &operator>>(QDataStream& s, Equalizer::Params& p); +QDataStream& operator<<(QDataStream& s, const Equalizer::Params& p); +QDataStream& operator>>(QDataStream& s, Equalizer::Params& p); -#endif // EQUALIZER_H +#endif // EQUALIZER_H diff --git a/src/ui/flowlayout.cpp b/src/ui/flowlayout.cpp index dc4bb0cc9..d75d9fdcb 100644 --- a/src/ui/flowlayout.cpp +++ b/src/ui/flowlayout.cpp @@ -42,172 +42,143 @@ #include "flowlayout.h" //! [1] -FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing) - : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing) -{ - setContentsMargins(margin, margin, margin, margin); +FlowLayout::FlowLayout(QWidget* parent, int margin, int hSpacing, int vSpacing) + : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing) { + setContentsMargins(margin, margin, margin, margin); } FlowLayout::FlowLayout(int margin, int hSpacing, int vSpacing) - : m_hSpace(hSpacing), m_vSpace(vSpacing) -{ - setContentsMargins(margin, margin, margin, margin); + : m_hSpace(hSpacing), m_vSpace(vSpacing) { + setContentsMargins(margin, margin, margin, margin); } //! [1] //! [2] -FlowLayout::~FlowLayout() -{ - QLayoutItem *item; - while ((item = takeAt(0))) - delete item; +FlowLayout::~FlowLayout() { + QLayoutItem* item; + while ((item = takeAt(0))) delete item; } //! [2] //! [3] -void FlowLayout::addItem(QLayoutItem *item) -{ - itemList.append(item); -} +void FlowLayout::addItem(QLayoutItem* item) { itemList.append(item); } //! [3] //! [4] -int FlowLayout::horizontalSpacing() const -{ - if (m_hSpace >= 0) { - return m_hSpace; - } else { - return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); - } +int FlowLayout::horizontalSpacing() const { + if (m_hSpace >= 0) { + return m_hSpace; + } else { + return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); + } } -int FlowLayout::verticalSpacing() const -{ - if (m_vSpace >= 0) { - return m_vSpace; - } else { - return smartSpacing(QStyle::PM_LayoutVerticalSpacing); - } +int FlowLayout::verticalSpacing() const { + if (m_vSpace >= 0) { + return m_vSpace; + } else { + return smartSpacing(QStyle::PM_LayoutVerticalSpacing); + } } //! [4] //! [5] -int FlowLayout::count() const -{ - return itemList.size(); +int FlowLayout::count() const { return itemList.size(); } + +QLayoutItem* FlowLayout::itemAt(int index) const { + return itemList.value(index); } -QLayoutItem *FlowLayout::itemAt(int index) const -{ - return itemList.value(index); -} - -QLayoutItem *FlowLayout::takeAt(int index) -{ - if (index >= 0 && index < itemList.size()) - return itemList.takeAt(index); - else - return 0; +QLayoutItem* FlowLayout::takeAt(int index) { + if (index >= 0 && index < itemList.size()) + return itemList.takeAt(index); + else + return 0; } //! [5] //! [6] -Qt::Orientations FlowLayout::expandingDirections() const -{ - return 0; -} +Qt::Orientations FlowLayout::expandingDirections() const { return 0; } //! [6] //! [7] -bool FlowLayout::hasHeightForWidth() const -{ - return true; -} +bool FlowLayout::hasHeightForWidth() const { return true; } -int FlowLayout::heightForWidth(int width) const -{ - int height = doLayout(QRect(0, 0, width, 0), true); - return height; +int FlowLayout::heightForWidth(int width) const { + int height = doLayout(QRect(0, 0, width, 0), true); + return height; } //! [7] //! [8] -void FlowLayout::setGeometry(const QRect &rect) -{ - QLayout::setGeometry(rect); - doLayout(rect, false); +void FlowLayout::setGeometry(const QRect& rect) { + QLayout::setGeometry(rect); + doLayout(rect, false); } -QSize FlowLayout::sizeHint() const -{ - return minimumSize(); -} +QSize FlowLayout::sizeHint() const { return minimumSize(); } -QSize FlowLayout::minimumSize() const -{ - QSize size; - QLayoutItem *item; - foreach (item, itemList) - size = size.expandedTo(item->minimumSize()); +QSize FlowLayout::minimumSize() const { + QSize size; + QLayoutItem* item; + foreach(item, itemList) + size = size.expandedTo(item->minimumSize()); - size += QSize(2*margin(), 2*margin()); - return size; + size += QSize(2 * margin(), 2 * margin()); + return size; } //! [8] //! [9] -int FlowLayout::doLayout(const QRect &rect, bool testOnly) const -{ - int left, top, right, bottom; - getContentsMargins(&left, &top, &right, &bottom); - QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); - int x = effectiveRect.x(); - int y = effectiveRect.y(); - int lineHeight = 0; -//! [9] +int FlowLayout::doLayout(const QRect& rect, bool testOnly) const { + int left, top, right, bottom; + getContentsMargins(&left, &top, &right, &bottom); + QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); + int x = effectiveRect.x(); + int y = effectiveRect.y(); + int lineHeight = 0; + //! [9] -//! [10] - QLayoutItem *item; - foreach (item, itemList) { - QWidget *wid = item->widget(); - int spaceX = horizontalSpacing(); - if (spaceX == -1) - spaceX = wid->style()->layoutSpacing( - QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal); - int spaceY = verticalSpacing(); - if (spaceY == -1) - spaceY = wid->style()->layoutSpacing( - QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical); -//! [10] -//! [11] - int nextX = x + item->sizeHint().width() + spaceX; - if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) { - x = effectiveRect.x(); - y = y + lineHeight + spaceY; - nextX = x + item->sizeHint().width() + spaceX; - lineHeight = 0; - } - - if (!testOnly) - item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); - - x = nextX; - lineHeight = qMax(lineHeight, item->sizeHint().height()); + //! [10] + QLayoutItem* item; + foreach(item, itemList) { + QWidget* wid = item->widget(); + int spaceX = horizontalSpacing(); + if (spaceX == -1) + spaceX = wid->style()->layoutSpacing( + QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal); + int spaceY = verticalSpacing(); + if (spaceY == -1) + spaceY = wid->style()->layoutSpacing( + QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical); + //! [10] + //! [11] + int nextX = x + item->sizeHint().width() + spaceX; + if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) { + x = effectiveRect.x(); + y = y + lineHeight + spaceY; + nextX = x + item->sizeHint().width() + spaceX; + lineHeight = 0; } - return y + lineHeight - rect.y() + bottom; + + if (!testOnly) item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); + + x = nextX; + lineHeight = qMax(lineHeight, item->sizeHint().height()); + } + return y + lineHeight - rect.y() + bottom; } //! [11] //! [12] -int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const -{ - QObject *parent = this->parent(); - if (!parent) { - return -1; - } else if (parent->isWidgetType()) { - QWidget *pw = static_cast(parent); - return pw->style()->pixelMetric(pm, 0, pw); - } else { - return static_cast(parent)->spacing(); - } +int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const { + QObject* parent = this->parent(); + if (!parent) { + return -1; + } else if (parent->isWidgetType()) { + QWidget* pw = static_cast(parent); + return pw->style()->pixelMetric(pm, 0, pw); + } else { + return static_cast(parent)->spacing(); + } } //! [12] diff --git a/src/ui/flowlayout.h b/src/ui/flowlayout.h index b7a5848b2..a7ac39925 100644 --- a/src/ui/flowlayout.h +++ b/src/ui/flowlayout.h @@ -46,33 +46,33 @@ #include #include //! [0] -class FlowLayout : public QLayout -{ -public: - FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1); - FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1); - ~FlowLayout(); +class FlowLayout : public QLayout { + public: + FlowLayout(QWidget* parent, int margin = -1, int hSpacing = -1, + int vSpacing = -1); + FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1); + ~FlowLayout(); - void addItem(QLayoutItem *item); - int horizontalSpacing() const; - int verticalSpacing() const; - Qt::Orientations expandingDirections() const; - bool hasHeightForWidth() const; - int heightForWidth(int) const; - int count() const; - QLayoutItem *itemAt(int index) const; - QSize minimumSize() const; - void setGeometry(const QRect &rect); - QSize sizeHint() const; - QLayoutItem *takeAt(int index); + void addItem(QLayoutItem* item); + int horizontalSpacing() const; + int verticalSpacing() const; + Qt::Orientations expandingDirections() const; + bool hasHeightForWidth() const; + int heightForWidth(int) const; + int count() const; + QLayoutItem* itemAt(int index) const; + QSize minimumSize() const; + void setGeometry(const QRect& rect); + QSize sizeHint() const; + QLayoutItem* takeAt(int index); -private: - int doLayout(const QRect &rect, bool testOnly) const; - int smartSpacing(QStyle::PixelMetric pm) const; + private: + int doLayout(const QRect& rect, bool testOnly) const; + int smartSpacing(QStyle::PixelMetric pm) const; - QList itemList; - int m_hSpace; - int m_vSpace; + QList itemList; + int m_hSpace; + int m_vSpace; }; //! [0] diff --git a/src/ui/globalshortcutgrabber.cpp b/src/ui/globalshortcutgrabber.cpp index 8cba96390..b7dbe5ecf 100644 --- a/src/ui/globalshortcutgrabber.cpp +++ b/src/ui/globalshortcutgrabber.cpp @@ -21,28 +21,23 @@ #include #include -GlobalShortcutGrabber::GlobalShortcutGrabber(QWidget *parent) - : QDialog(parent), - ui_(new Ui::GlobalShortcutGrabber) -{ +GlobalShortcutGrabber::GlobalShortcutGrabber(QWidget* parent) + : QDialog(parent), ui_(new Ui::GlobalShortcutGrabber) { ui_->setupUi(this); modifier_keys_ << Qt::Key_Shift << Qt::Key_Control << Qt::Key_Meta << Qt::Key_Alt << Qt::Key_AltGr; } -GlobalShortcutGrabber::~GlobalShortcutGrabber() { - delete ui_; -} +GlobalShortcutGrabber::~GlobalShortcutGrabber() { delete ui_; } -QKeySequence GlobalShortcutGrabber::GetKey(const QString &name) { +QKeySequence GlobalShortcutGrabber::GetKey(const QString& name) { ui_->label->setText(tr("Press a key combination to use for %1...").arg(name)); ui_->combo->clear(); ret_ = QKeySequence(); - if (exec() == QDialog::Rejected) - return QKeySequence(); + if (exec() == QDialog::Rejected) return QKeySequence(); return ret_; } @@ -81,8 +76,7 @@ bool GlobalShortcutGrabber::event(QEvent* e) { UpdateText(); - if (!modifier_keys_.contains(ke->key())) - accept(); + if (!modifier_keys_.contains(ke->key())) accept(); return true; } return QDialog::event(e); @@ -91,5 +85,3 @@ bool GlobalShortcutGrabber::event(QEvent* e) { void GlobalShortcutGrabber::UpdateText() { ui_->combo->setText("" + ret_.toString(QKeySequence::NativeText) + ""); } - - diff --git a/src/ui/globalshortcutgrabber.h b/src/ui/globalshortcutgrabber.h index 6f088860c..74319b7f5 100644 --- a/src/ui/globalshortcutgrabber.h +++ b/src/ui/globalshortcutgrabber.h @@ -39,9 +39,9 @@ class GlobalShortcutGrabber : public QDialog { QKeySequence GetKey(const QString& name); protected: - bool event(QEvent *); - void showEvent(QShowEvent *); - void hideEvent(QHideEvent *); + bool event(QEvent*); + void showEvent(QShowEvent*); + void hideEvent(QHideEvent*); void grabKeyboard(); void releaseKeyboard(); @@ -59,4 +59,4 @@ class GlobalShortcutGrabber : public QDialog { MacMonitorWrapper* wrapper_; }; -#endif // GLOBALSHORTCUTGRABBER_H +#endif // GLOBALSHORTCUTGRABBER_H diff --git a/src/ui/globalshortcutssettingspage.cpp b/src/ui/globalshortcutssettingspage.cpp index 45e63ed57..e422f1e2c 100644 --- a/src/ui/globalshortcutssettingspage.cpp +++ b/src/ui/globalshortcutssettingspage.cpp @@ -33,11 +33,10 @@ #include GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_GlobalShortcutsSettingsPage), - initialised_(false), - grabber_(new GlobalShortcutGrabber) -{ + : SettingsPage(dialog), + ui_(new Ui_GlobalShortcutsSettingsPage), + initialised_(false), + grabber_(new GlobalShortcutGrabber) { ui_->setupUi(this); ui_->shortcut_options->setEnabled(false); ui_->list->header()->setResizeMode(QHeaderView::ResizeToContents); @@ -45,17 +44,18 @@ GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog* dialog) settings_.beginGroup(GlobalShortcuts::kSettingsGroup); - connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ItemClicked(QTreeWidgetItem*))); + connect(ui_->list, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + SLOT(ItemClicked(QTreeWidgetItem*))); connect(ui_->radio_none, SIGNAL(clicked()), SLOT(NoneClicked())); connect(ui_->radio_default, SIGNAL(clicked()), SLOT(DefaultClicked())); connect(ui_->radio_custom, SIGNAL(clicked()), SLOT(ChangeClicked())); connect(ui_->change, SIGNAL(clicked()), SLOT(ChangeClicked())); - connect(ui_->gnome_open, SIGNAL(clicked()), SLOT(OpenGnomeKeybindingProperties())); + connect(ui_->gnome_open, SIGNAL(clicked()), + SLOT(OpenGnomeKeybindingProperties())); } -GlobalShortcutsSettingsPage::~GlobalShortcutsSettingsPage() { - delete ui_; -} +GlobalShortcutsSettingsPage::~GlobalShortcutsSettingsPage() { delete ui_; } bool GlobalShortcutsSettingsPage::IsEnabled() const { #ifdef Q_OS_MAC @@ -74,19 +74,22 @@ void GlobalShortcutsSettingsPage::Load() { if (!initialised_) { initialised_ = true; - connect(ui_->mac_open, SIGNAL(clicked()), manager, SLOT(ShowMacAccessibilityDialog())); + connect(ui_->mac_open, SIGNAL(clicked()), manager, + SLOT(ShowMacAccessibilityDialog())); if (!manager->IsGsdAvailable()) { ui_->gnome_container->hide(); } - foreach (const GlobalShortcuts::Shortcut& s, manager->shortcuts().values()) { + foreach(const GlobalShortcuts::Shortcut & s, + manager->shortcuts().values()) { Shortcut shortcut; shortcut.s = s; shortcut.key = s.action->shortcut(); - shortcut.item = new QTreeWidgetItem(ui_->list, - QStringList() << s.action->text() - << s.action->shortcut().toString(QKeySequence::NativeText)); + shortcut.item = new QTreeWidgetItem( + ui_->list, QStringList() << s.action->text() + << s.action->shortcut().toString( + QKeySequence::NativeText)); shortcut.item->setData(0, Qt::UserRole, s.id); shortcuts_[s.id] = shortcut; } @@ -95,7 +98,7 @@ void GlobalShortcutsSettingsPage::Load() { ItemClicked(ui_->list->topLevelItem(0)); } - foreach (const Shortcut& s, shortcuts_.values()) { + foreach(const Shortcut & s, shortcuts_.values()) { SetShortcut(s.s.id, s.s.action->shortcut()); } @@ -107,7 +110,8 @@ void GlobalShortcutsSettingsPage::Load() { ui_->mac_container->setVisible(!manager->IsMacAccessibilityEnabled()); } -void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, const QKeySequence& key) { +void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, + const QKeySequence& key) { Shortcut& shortcut = shortcuts_[id]; shortcut.key = key; @@ -115,7 +119,7 @@ void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, const QKeySeque } void GlobalShortcutsSettingsPage::Save() { - foreach (const Shortcut& s, shortcuts_.values()) { + foreach(const Shortcut & s, shortcuts_.values()) { s.s.action->setShortcut(s.key); s.s.shortcut->setKey(s.key); settings_.setValue(s.s.id, s.key.toString()); @@ -132,7 +136,8 @@ void GlobalShortcutsSettingsPage::ItemClicked(QTreeWidgetItem* item) { // Enable options ui_->shortcut_options->setEnabled(true); - ui_->shortcut_options->setTitle(tr("Shortcut for %1").arg(shortcut.s.action->text())); + ui_->shortcut_options->setTitle( + tr("Shortcut for %1").arg(shortcut.s.action->text())); if (shortcut.key == shortcut.s.default_key) ui_->radio_default->setChecked(true); @@ -156,13 +161,11 @@ void GlobalShortcutsSettingsPage::ChangeClicked() { QKeySequence key = grabber_->GetKey(shortcuts_[current_id_].s.action->text()); manager->Register(); - if (key.isEmpty()) - return; + if (key.isEmpty()) return; // Check if this key sequence is used by any other actions - foreach (const QString& id, shortcuts_.keys()) { - if (shortcuts_[id].key == key) - SetShortcut(id, QKeySequence()); + foreach(const QString & id, shortcuts_.keys()) { + if (shortcuts_[id].key == key) SetShortcut(id, QKeySequence()); } ui_->radio_custom->setChecked(true); @@ -171,11 +174,11 @@ void GlobalShortcutsSettingsPage::ChangeClicked() { void GlobalShortcutsSettingsPage::OpenGnomeKeybindingProperties() { if (!QProcess::startDetached("gnome-keybinding-properties")) { - if (!QProcess::startDetached("gnome-control-center", - QStringList() << "keyboard")) { + if (!QProcess::startDetached("gnome-control-center", QStringList() + << "keyboard")) { QMessageBox::warning(this, "Error", - tr("The \"%1\" command could not be started.") - .arg("gnome-keybinding-properties")); + tr("The \"%1\" command could not be started.") + .arg("gnome-keybinding-properties")); } } } diff --git a/src/ui/globalshortcutssettingspage.h b/src/ui/globalshortcutssettingspage.h index 593b14a5c..1a23c5d30 100644 --- a/src/ui/globalshortcutssettingspage.h +++ b/src/ui/globalshortcutssettingspage.h @@ -32,9 +32,9 @@ class Ui_GlobalShortcutsSettingsPage; class GlobalShortcutGrabber; class GlobalShortcutsSettingsPage : public SettingsPage { - Q_OBJECT + Q_OBJECT -public: + public: GlobalShortcutsSettingsPage(SettingsDialog* dialog); ~GlobalShortcutsSettingsPage(); @@ -43,7 +43,7 @@ public: void Load(); void Save(); -private slots: + private slots: void ItemClicked(QTreeWidgetItem*); void NoneClicked(); void DefaultClicked(); @@ -51,7 +51,7 @@ private slots: void OpenGnomeKeybindingProperties(); -private: + private: struct Shortcut { GlobalShortcuts::Shortcut s; QKeySequence key; @@ -60,7 +60,7 @@ private: void SetShortcut(const QString& id, const QKeySequence& key); -private: + private: Ui_GlobalShortcutsSettingsPage* ui_; bool initialised_; @@ -72,4 +72,4 @@ private: QString current_id_; }; -#endif // GLOBALSHORTCUTSSETTINGSPAGE_H +#endif // GLOBALSHORTCUTSSETTINGSPAGE_H diff --git a/src/ui/iconloader.cpp b/src/ui/iconloader.cpp index a114af07a..cf05ca22a 100644 --- a/src/ui/iconloader.cpp +++ b/src/ui/iconloader.cpp @@ -28,29 +28,25 @@ void IconLoader::Init() { sizes_ << 22 << 32 << 48; } -QIcon IconLoader::Load(const QString &name) { +QIcon IconLoader::Load(const QString& name) { QIcon ret; - if (name.isEmpty()) - return ret; + if (name.isEmpty()) return ret; #if QT_VERSION >= 0x040600 // Try to load it from the theme initially ret = QIcon::fromTheme(name); - if (!ret.isNull()) - return ret; + if (!ret.isNull()) return ret; #endif // Otherwise use our fallback theme const QString path(":/icons/%1x%2/%3.png"); - foreach (int size, sizes_) { + foreach(int size, sizes_) { QString filename(path.arg(size).arg(size).arg(name)); - if (QFile::exists(filename)) - ret.addFile(filename, QSize(size, size)); + if (QFile::exists(filename)) ret.addFile(filename, QSize(size, size)); } - if (ret.isNull()) - qLog(Warning) << "Couldn't load icon" << name; + if (ret.isNull()) qLog(Warning) << "Couldn't load icon" << name; return ret; } diff --git a/src/ui/iconloader.h b/src/ui/iconloader.h index f81f7a483..01b499a59 100644 --- a/src/ui/iconloader.h +++ b/src/ui/iconloader.h @@ -21,14 +21,14 @@ #include class IconLoader { -public: + public: static void Init(); static QIcon Load(const QString& name); -private: + private: IconLoader() {} static QList sizes_; }; -#endif // ICONLOADER_H +#endif // ICONLOADER_H diff --git a/src/ui/macscreensaver.cpp b/src/ui/macscreensaver.cpp index 41337df77..67b8fd7f6 100644 --- a/src/ui/macscreensaver.cpp +++ b/src/ui/macscreensaver.cpp @@ -24,22 +24,16 @@ // kIOPMAssertionTypePreventUserIdleDisplaySleep from Lion. #define kLionDisplayAssertion CFSTR("PreventUserIdleDisplaySleep") -MacScreensaver::MacScreensaver() - : assertion_id_(0) { -} +MacScreensaver::MacScreensaver() : assertion_id_(0) {} void MacScreensaver::Inhibit() { CFStringRef assertion_type = (Utilities::GetMacVersion() >= 7) - ? kLionDisplayAssertion - : kIOPMAssertionTypeNoDisplaySleep; + ? kLionDisplayAssertion + : kIOPMAssertionTypeNoDisplaySleep; IOPMAssertionCreateWithName( - assertion_type, - kIOPMAssertionLevelOn, - CFSTR("Showing full-screen Clementine visualisations"), - &assertion_id_); + assertion_type, kIOPMAssertionLevelOn, + CFSTR("Showing full-screen Clementine visualisations"), &assertion_id_); } -void MacScreensaver::Uninhibit() { - IOPMAssertionRelease(assertion_id_); -} +void MacScreensaver::Uninhibit() { IOPMAssertionRelease(assertion_id_); } diff --git a/src/ui/macsystemtrayicon.h b/src/ui/macsystemtrayicon.h index 1cfa5f6ab..3b9741c31 100644 --- a/src/ui/macsystemtrayicon.h +++ b/src/ui/macsystemtrayicon.h @@ -27,7 +27,7 @@ class MacSystemTrayIconPrivate; class MacSystemTrayIcon : public SystemTrayIcon { Q_OBJECT -public: + public: MacSystemTrayIcon(QObject* parent = 0); ~MacSystemTrayIcon(); @@ -38,21 +38,21 @@ public: void SetNowPlaying(const Song& song, const QString& image_path); void ClearNowPlaying(); -private: + private: void SetupMenuItem(QAction* action); -private slots: + private slots: void ActionChanged(); -protected: + protected: // SystemTrayIcon void UpdateIcon(); -private: + private: QPixmap orange_icon_; QPixmap grey_icon_; std::unique_ptr p_; Q_DISABLE_COPY(MacSystemTrayIcon); }; -#endif // MACSYSTEMTRAYICON_H +#endif // MACSYSTEMTRAYICON_H diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 7445db88e..a244133be 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -38,12 +38,11 @@ #include #ifdef Q_OS_WIN32 -# include +#include #endif #include - #include "core/appearance.h" #include "core/application.h" #include "core/backgroundstreams.h" @@ -129,24 +128,24 @@ #include "widgets/trackslider.h" #ifdef Q_OS_DARWIN -# include "ui/macsystemtrayicon.h" +#include "ui/macsystemtrayicon.h" #endif #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif #ifdef HAVE_WIIMOTEDEV -# include "wiimotedev/shortcuts.h" +#include "wiimotedev/shortcuts.h" #endif #ifdef ENABLE_VISUALISATIONS -# include "visualisations/visualisationcontainer.h" +#include "visualisations/visualisationcontainer.h" #endif #ifdef HAVE_MOODBAR -# include "moodbar/moodbarcontroller.h" -# include "moodbar/moodbarproxystyle.h" +#include "moodbar/moodbarcontroller.h" +#include "moodbar/moodbarproxystyle.h" #endif #ifdef Q_OS_DARWIN @@ -155,44 +154,40 @@ void qt_mac_set_dock_menu(QMenu*); #endif const char* MainWindow::kSettingsGroup = "MainWindow"; -const char* MainWindow::kAllFilesFilterSpec = - QT_TR_NOOP("All Files (*)"); +const char* MainWindow::kAllFilesFilterSpec = QT_TR_NOOP("All Files (*)"); -MainWindow::MainWindow(Application* app, - SystemTrayIcon* tray_icon, - OSD* osd, +MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd, QWidget* parent) - : QMainWindow(parent), - ui_(new Ui_MainWindow), - thumbbar_(new Windows7ThumbBar(this)), - app_(app), - tray_icon_(tray_icon), - osd_(osd), - global_shortcuts_(new GlobalShortcuts(this)), - remote_(nullptr), - global_search_view_(new GlobalSearchView(app_, this)), - library_view_(new LibraryViewContainer(this)), - file_view_(new FileView(this)), - playlist_list_(new PlaylistListContainer(this)), - internet_view_(new InternetViewContainer(this)), - device_view_container_(new DeviceViewContainer(this)), - device_view_(device_view_container_->view()), - song_info_view_(new SongInfoView(this)), - artist_info_view_(new ArtistInfoView(this)), - equalizer_(new Equalizer), - organise_dialog_(new OrganiseDialog(app_->task_manager())), - playlist_menu_(new QMenu(this)), - playlist_add_to_another_(nullptr), - playlistitem_actions_separator_(nullptr), - library_sort_model_(new QSortFilterProxyModel(this)), - track_position_timer_(new QTimer(this)), - was_maximized_(false), - saved_playback_position_(0), - saved_playback_state_(Engine::Empty), - doubleclick_addmode_(AddBehaviour_Append), - doubleclick_playmode_(PlayBehaviour_IfStopped), - menu_playmode_(PlayBehaviour_IfStopped) -{ + : QMainWindow(parent), + ui_(new Ui_MainWindow), + thumbbar_(new Windows7ThumbBar(this)), + app_(app), + tray_icon_(tray_icon), + osd_(osd), + global_shortcuts_(new GlobalShortcuts(this)), + remote_(nullptr), + global_search_view_(new GlobalSearchView(app_, this)), + library_view_(new LibraryViewContainer(this)), + file_view_(new FileView(this)), + playlist_list_(new PlaylistListContainer(this)), + internet_view_(new InternetViewContainer(this)), + device_view_container_(new DeviceViewContainer(this)), + device_view_(device_view_container_->view()), + song_info_view_(new SongInfoView(this)), + artist_info_view_(new ArtistInfoView(this)), + equalizer_(new Equalizer), + organise_dialog_(new OrganiseDialog(app_->task_manager())), + playlist_menu_(new QMenu(this)), + playlist_add_to_another_(nullptr), + playlistitem_actions_separator_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + track_position_timer_(new QTimer(this)), + was_maximized_(false), + saved_playback_position_(0), + saved_playback_state_(Engine::Empty), + doubleclick_addmode_(AddBehaviour_Append), + doubleclick_playmode_(PlayBehaviour_IfStopped), + menu_playmode_(PlayBehaviour_IfStopped) { qLog(Debug) << "Starting"; connect(app, SIGNAL(ErrorAdded(QString)), SLOT(ShowErrorDialog(QString))); @@ -223,18 +218,27 @@ MainWindow::MainWindow(Application* app, app_->global_search()->ReloadSettings(); global_search_view_->ReloadSettings(); - connect(global_search_view_, SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(global_search_view_, SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Add tabs to the fancy tab widget - ui_->tabs->AddTab(global_search_view_, IconLoader::Load("search"), tr("Search")); - ui_->tabs->AddTab(library_view_, IconLoader::Load("folder-sound"), tr("Library")); + ui_->tabs->AddTab(global_search_view_, IconLoader::Load("search"), + tr("Search")); + ui_->tabs->AddTab(library_view_, IconLoader::Load("folder-sound"), + tr("Library")); ui_->tabs->AddTab(file_view_, IconLoader::Load("document-open"), tr("Files")); - ui_->tabs->AddTab(playlist_list_, IconLoader::Load("view-media-playlist"), tr("Playlists")); - ui_->tabs->AddTab(internet_view_, IconLoader::Load("applications-internet"), tr("Internet")); - ui_->tabs->AddTab(device_view_container_, IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Devices")); + ui_->tabs->AddTab(playlist_list_, IconLoader::Load("view-media-playlist"), + tr("Playlists")); + ui_->tabs->AddTab(internet_view_, IconLoader::Load("applications-internet"), + tr("Internet")); + ui_->tabs->AddTab(device_view_container_, + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Devices")); ui_->tabs->AddSpacer(); - ui_->tabs->AddTab(song_info_view_, IconLoader::Load("view-media-lyrics"), tr("Song info")); - ui_->tabs->AddTab(artist_info_view_, IconLoader::Load("x-clementine-artist"), tr("Artist info")); + ui_->tabs->AddTab(song_info_view_, IconLoader::Load("view-media-lyrics"), + tr("Song info")); + ui_->tabs->AddTab(artist_info_view_, IconLoader::Load("x-clementine-artist"), + tr("Artist info")); // Add the now playing widget to the fancy tab widget ui_->tabs->AddBottomWidget(ui_->now_playing); @@ -242,7 +246,8 @@ MainWindow::MainWindow(Application* app, ui_->tabs->SetBackgroundPixmap(QPixmap(":/sidebar_background.png")); track_position_timer_->setInterval(1000); - connect(track_position_timer_, SIGNAL(timeout()), SLOT(UpdateTrackPosition())); + connect(track_position_timer_, SIGNAL(timeout()), + SLOT(UpdateTrackPosition())); // Start initialising the player qLog(Debug) << "Initialising player"; @@ -258,7 +263,8 @@ MainWindow::MainWindow(Application* app, library_sort_model_->setSortLocaleAware(true); library_sort_model_->sort(0); - connect(ui_->playlist, SIGNAL(ViewSelectionModelChanged()), SLOT(PlaylistViewSelectionModelChanged())); + connect(ui_->playlist, SIGNAL(ViewSelectionModelChanged()), + SLOT(PlaylistViewSelectionModelChanged())); ui_->playlist->SetManager(app_->playlist_manager()); ui_->playlist->view()->SetApplication(app_); @@ -268,12 +274,14 @@ MainWindow::MainWindow(Application* app, device_view_->SetApplication(app_); playlist_list_->SetApplication(app_); - organise_dialog_->SetDestinationModel(app_->library()->model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library()->model()->directory_model()); // Icons qLog(Debug) << "Creating UI"; ui_->action_about->setIcon(IconLoader::Load("help-about")); - ui_->action_about_qt->setIcon(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png")); + ui_->action_about_qt->setIcon( + QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png")); ui_->action_add_file->setIcon(IconLoader::Load("document-open")); ui_->action_add_folder->setIcon(IconLoader::Load("document-open-folder")); ui_->action_add_stream->setIcon(IconLoader::Load("document-open-remote")); @@ -294,7 +302,8 @@ MainWindow::MainWindow(Application* app, ui_->action_shuffle->setIcon(IconLoader::Load("x-clementine-shuffle")); ui_->action_shuffle_mode->setIcon(IconLoader::Load("media-playlist-shuffle")); ui_->action_stop->setIcon(IconLoader::Load("media-playback-stop")); - ui_->action_stop_after_this_track->setIcon(IconLoader::Load("media-playback-stop")); + ui_->action_stop_after_this_track->setIcon( + IconLoader::Load("media-playback-stop")); ui_->action_new_playlist->setIcon(IconLoader::Load("document-new")); ui_->action_load_playlist->setIcon(IconLoader::Load("document-open")); ui_->action_save_playlist->setIcon(IconLoader::Load("document-save")); @@ -302,71 +311,100 @@ MainWindow::MainWindow(Application* app, ui_->action_rain->setIcon(IconLoader::Load("weather-showers-scattered")); // File view connections - connect(file_view_, SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(file_view_, SIGNAL(PathChanged(QString)), SLOT(FilePathChanged(QString))); - connect(file_view_, SIGNAL(CopyToLibrary(QList)), SLOT(CopyFilesToLibrary(QList))); - connect(file_view_, SIGNAL(MoveToLibrary(QList)), SLOT(MoveFilesToLibrary(QList))); - connect(file_view_, SIGNAL(EditTags(QList)), SLOT(EditFileTags(QList))); - connect(file_view_, SIGNAL(CopyToDevice(QList)), SLOT(CopyFilesToDevice(QList))); + connect(file_view_, SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(file_view_, SIGNAL(PathChanged(QString)), + SLOT(FilePathChanged(QString))); + connect(file_view_, SIGNAL(CopyToLibrary(QList)), + SLOT(CopyFilesToLibrary(QList))); + connect(file_view_, SIGNAL(MoveToLibrary(QList)), + SLOT(MoveFilesToLibrary(QList))); + connect(file_view_, SIGNAL(EditTags(QList)), + SLOT(EditFileTags(QList))); + connect(file_view_, SIGNAL(CopyToDevice(QList)), + SLOT(CopyFilesToDevice(QList))); file_view_->SetTaskManager(app_->task_manager()); // Action connections - connect(ui_->action_next_track, SIGNAL(triggered()), app_->player(), SLOT(Next())); - connect(ui_->action_previous_track, SIGNAL(triggered()), app_->player(), SLOT(Previous())); - connect(ui_->action_play_pause, SIGNAL(triggered()), app_->player(), SLOT(PlayPause())); + connect(ui_->action_next_track, SIGNAL(triggered()), app_->player(), + SLOT(Next())); + connect(ui_->action_previous_track, SIGNAL(triggered()), app_->player(), + SLOT(Previous())); + connect(ui_->action_play_pause, SIGNAL(triggered()), app_->player(), + SLOT(PlayPause())); connect(ui_->action_stop, SIGNAL(triggered()), app_->player(), SLOT(Stop())); connect(ui_->action_quit, SIGNAL(triggered()), SLOT(Exit())); - connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), SLOT(StopAfterCurrent())); + connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), + SLOT(StopAfterCurrent())); connect(ui_->action_mute, SIGNAL(triggered()), app_->player(), SLOT(Mute())); #ifdef HAVE_LIBLASTFM - connect(ui_->action_ban, SIGNAL(triggered()), InternetModel::Service(), SLOT(Ban())); + connect(ui_->action_ban, SIGNAL(triggered()), + InternetModel::Service(), SLOT(Ban())); connect(ui_->action_love, SIGNAL(triggered()), SLOT(Love())); - connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), InternetModel::Service(), SLOT(ToggleScrobbling())); + connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), + InternetModel::Service(), SLOT(ToggleScrobbling())); #endif - connect(ui_->action_clear_playlist, SIGNAL(triggered()), app_->playlist_manager(), SLOT(ClearCurrent())); - connect(ui_->action_remove_duplicates, SIGNAL(triggered()), app_->playlist_manager(), SLOT(RemoveDuplicatesCurrent())); - connect(ui_->action_remove_from_playlist, SIGNAL(triggered()), SLOT(PlaylistRemoveCurrent())); + connect(ui_->action_clear_playlist, SIGNAL(triggered()), + app_->playlist_manager(), SLOT(ClearCurrent())); + connect(ui_->action_remove_duplicates, SIGNAL(triggered()), + app_->playlist_manager(), SLOT(RemoveDuplicatesCurrent())); + connect(ui_->action_remove_from_playlist, SIGNAL(triggered()), + SLOT(PlaylistRemoveCurrent())); connect(ui_->action_edit_track, SIGNAL(triggered()), SLOT(EditTracks())); - connect(ui_->action_renumber_tracks, SIGNAL(triggered()), SLOT(RenumberTracks())); - connect(ui_->action_selection_set_value, SIGNAL(triggered()), SLOT(SelectionSetValue())); + connect(ui_->action_renumber_tracks, SIGNAL(triggered()), + SLOT(RenumberTracks())); + connect(ui_->action_selection_set_value, SIGNAL(triggered()), + SLOT(SelectionSetValue())); connect(ui_->action_edit_value, SIGNAL(triggered()), SLOT(EditValue())); - connect(ui_->action_auto_complete_tags, SIGNAL(triggered()), SLOT(AutoCompleteTags())); - connect(ui_->action_configure, SIGNAL(triggered()), SLOT(OpenSettingsDialog())); + connect(ui_->action_auto_complete_tags, SIGNAL(triggered()), + SLOT(AutoCompleteTags())); + connect(ui_->action_configure, SIGNAL(triggered()), + SLOT(OpenSettingsDialog())); connect(ui_->action_about, SIGNAL(triggered()), SLOT(ShowAboutDialog())); connect(ui_->action_about_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - connect(ui_->action_shuffle, SIGNAL(triggered()), app_->playlist_manager(), SLOT(ShuffleCurrent())); + connect(ui_->action_shuffle, SIGNAL(triggered()), app_->playlist_manager(), + SLOT(ShuffleCurrent())); connect(ui_->action_open_media, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_open_cd, SIGNAL(triggered()), SLOT(AddCDTracks())); - #ifdef HAVE_AUDIOCD - connect(ui_->action_rip_audio_cd, SIGNAL(triggered()), SLOT(OpenRipCD())); - #else - ui_->action_rip_audio_cd->setVisible(false); - #endif +#ifdef HAVE_AUDIOCD + connect(ui_->action_rip_audio_cd, SIGNAL(triggered()), SLOT(OpenRipCD())); +#else + ui_->action_rip_audio_cd->setVisible(false); +#endif connect(ui_->action_add_file, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder())); connect(ui_->action_add_stream, SIGNAL(triggered()), SLOT(AddStream())); connect(ui_->action_add_podcast, SIGNAL(triggered()), SLOT(AddPodcast())); - connect(ui_->action_cover_manager, SIGNAL(triggered()), SLOT(ShowCoverManager())); - connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show())); - connect(ui_->action_transcode, SIGNAL(triggered()), SLOT(ShowTranscodeDialog())); - connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack())); - connect(ui_->action_update_library, SIGNAL(triggered()), app_->library(), SLOT(IncrementalScan())); - connect(ui_->action_full_library_scan, SIGNAL(triggered()), app_->library(), SLOT(FullScan())); - connect(ui_->action_queue_manager, SIGNAL(triggered()), SLOT(ShowQueueManager())); - connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), SLOT(AddFilesToTranscoder())); + connect(ui_->action_cover_manager, SIGNAL(triggered()), + SLOT(ShowCoverManager())); + connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), + SLOT(show())); + connect(ui_->action_transcode, SIGNAL(triggered()), + SLOT(ShowTranscodeDialog())); + connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), + SLOT(JumpToCurrentlyPlayingTrack())); + connect(ui_->action_update_library, SIGNAL(triggered()), app_->library(), + SLOT(IncrementalScan())); + connect(ui_->action_full_library_scan, SIGNAL(triggered()), app_->library(), + SLOT(FullScan())); + connect(ui_->action_queue_manager, SIGNAL(triggered()), + SLOT(ShowQueueManager())); + connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), + SLOT(AddFilesToTranscoder())); background_streams_->AddAction("Rain", ui_->action_rain); background_streams_->AddAction("Hypnotoad", ui_->action_hypnotoad); background_streams_->AddAction("Make it so!", ui_->action_enterprise); // Playlist view actions - ui_->action_next_playlist->setShortcuts(QList() - << QKeySequence::fromString("Ctrl+Tab") - << QKeySequence::fromString("Ctrl+PgDown")); - ui_->action_previous_playlist->setShortcuts(QList() - << QKeySequence::fromString("Ctrl+Shift+Tab") - << QKeySequence::fromString("Ctrl+PgUp")); - // Actions for switching tabs will be global to the entire window, so adding them here + ui_->action_next_playlist->setShortcuts( + QList() << QKeySequence::fromString("Ctrl+Tab") + << QKeySequence::fromString("Ctrl+PgDown")); + ui_->action_previous_playlist->setShortcuts( + QList() << QKeySequence::fromString("Ctrl+Shift+Tab") + << QKeySequence::fromString("Ctrl+PgUp")); + // Actions for switching tabs will be global to the entire window, so adding + // them here addAction(ui_->action_next_playlist); addAction(ui_->action_previous_playlist); @@ -379,15 +417,15 @@ MainWindow::MainWindow(Application* app, ui_->ban_button->setDefaultAction(ui_->action_ban); ui_->scrobbling_button->setDefaultAction(ui_->action_toggle_scrobbling); ui_->clear_playlist_button->setDefaultAction(ui_->action_clear_playlist); - ui_->playlist->SetActions(ui_->action_new_playlist, - ui_->action_load_playlist, - ui_->action_save_playlist, - ui_->action_next_playlist, /* These two actions aren't associated */ - ui_->action_previous_playlist /* to a button but to the main window */ ); - + ui_->playlist->SetActions( + ui_->action_new_playlist, ui_->action_load_playlist, + ui_->action_save_playlist, + ui_->action_next_playlist, /* These two actions aren't associated */ + ui_->action_previous_playlist /* to a button but to the main window */); #ifdef ENABLE_VISUALISATIONS - connect(ui_->action_visualisations, SIGNAL(triggered()), SLOT(ShowVisualisations())); + connect(ui_->action_visualisations, SIGNAL(triggered()), + SLOT(ShowVisualisations())); #else ui_->action_visualisations->setEnabled(false); #endif @@ -403,74 +441,111 @@ MainWindow::MainWindow(Application* app, ui_->stop_button->setMenu(stop_menu); // Player connections - connect(ui_->volume, SIGNAL(valueChanged(int)), app_->player(), SLOT(SetVolume(int))); + connect(ui_->volume, SIGNAL(valueChanged(int)), app_->player(), + SLOT(SetVolume(int))); - connect(app_->player(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->player(), SIGNAL(SongChangeRequestProcessed(QUrl,bool)), app_->playlist_manager(), SLOT(SongChangeRequestProcessed(QUrl,bool))); + connect(app_->player(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->player(), SIGNAL(SongChangeRequestProcessed(QUrl, bool)), + app_->playlist_manager(), + SLOT(SongChangeRequestProcessed(QUrl, bool))); connect(app_->player(), SIGNAL(Paused()), SLOT(MediaPaused())); connect(app_->player(), SIGNAL(Playing()), SLOT(MediaPlaying())); connect(app_->player(), SIGNAL(Stopped()), SLOT(MediaStopped())); connect(app_->player(), SIGNAL(Seeked(qlonglong)), SLOT(Seeked(qlonglong))); - connect(app_->player(), SIGNAL(TrackSkipped(PlaylistItemPtr)), SLOT(TrackSkipped(PlaylistItemPtr))); + connect(app_->player(), SIGNAL(TrackSkipped(PlaylistItemPtr)), + SLOT(TrackSkipped(PlaylistItemPtr))); connect(app_->player(), SIGNAL(VolumeChanged(int)), SLOT(VolumeChanged(int))); - connect(app_->player(), SIGNAL(Paused()), ui_->playlist, SLOT(ActivePaused())); - connect(app_->player(), SIGNAL(Playing()), ui_->playlist, SLOT(ActivePlaying())); - connect(app_->player(), SIGNAL(Stopped()), ui_->playlist, SLOT(ActiveStopped())); + connect(app_->player(), SIGNAL(Paused()), ui_->playlist, + SLOT(ActivePaused())); + connect(app_->player(), SIGNAL(Playing()), ui_->playlist, + SLOT(ActivePlaying())); + connect(app_->player(), SIGNAL(Stopped()), ui_->playlist, + SLOT(ActiveStopped())); connect(app_->player(), SIGNAL(Paused()), osd_, SLOT(Paused())); connect(app_->player(), SIGNAL(Stopped()), osd_, SLOT(Stopped())); - connect(app_->player(), SIGNAL(PlaylistFinished()), osd_, SLOT(PlaylistFinished())); - connect(app_->player(), SIGNAL(VolumeChanged(int)), osd_, SLOT(VolumeChanged(int))); - connect(app_->player(), SIGNAL(VolumeChanged(int)), ui_->volume, SLOT(setValue(int))); - connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), SLOT(ForceShowOSD(Song, bool))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(SongChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), app_->player(), SLOT(CurrentMetadataChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(EditingFinished(QModelIndex)), SLOT(PlaylistEditFinished(QModelIndex))); - connect(app_->playlist_manager(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->playlist_manager(), SIGNAL(SummaryTextChanged(QString)), ui_->playlist_summary, SLOT(setText(QString))); - connect(app_->playlist_manager(), SIGNAL(PlayRequested(QModelIndex)), SLOT(PlayIndex(QModelIndex))); + connect(app_->player(), SIGNAL(PlaylistFinished()), osd_, + SLOT(PlaylistFinished())); + connect(app_->player(), SIGNAL(VolumeChanged(int)), osd_, + SLOT(VolumeChanged(int))); + connect(app_->player(), SIGNAL(VolumeChanged(int)), ui_->volume, + SLOT(setValue(int))); + connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), + SLOT(ForceShowOSD(Song, bool))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(SongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + app_->player(), SLOT(CurrentMetadataChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(EditingFinished(QModelIndex)), + SLOT(PlaylistEditFinished(QModelIndex))); + connect(app_->playlist_manager(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->playlist_manager(), SIGNAL(SummaryTextChanged(QString)), + ui_->playlist_summary, SLOT(setText(QString))); + connect(app_->playlist_manager(), SIGNAL(PlayRequested(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(PlayItem(QModelIndex)), SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); - connect(ui_->playlist->view(), SIGNAL(RightClicked(QPoint,QModelIndex)), SLOT(PlaylistRightClick(QPoint,QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(SeekTrack(int)), ui_->track_slider, SLOT(Seek(int))); - connect(ui_->playlist->view(), SIGNAL(BackgroundPropertyChanged()), SLOT(RefreshStyleSheet())); + connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(PlayItem(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(PlayPause()), app_->player(), + SLOT(PlayPause())); + connect(ui_->playlist->view(), SIGNAL(RightClicked(QPoint, QModelIndex)), + SLOT(PlaylistRightClick(QPoint, QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(SeekTrack(int)), ui_->track_slider, + SLOT(Seek(int))); + connect(ui_->playlist->view(), SIGNAL(BackgroundPropertyChanged()), + SLOT(RefreshStyleSheet())); - connect(ui_->track_slider, SIGNAL(ValueChanged(int)), app_->player(), SLOT(SeekTo(int))); + connect(ui_->track_slider, SIGNAL(ValueChanged(int)), app_->player(), + SLOT(SeekTo(int))); // Library connections - connect(library_view_->view(), SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(library_view_->view(), SIGNAL(ShowConfigDialog()), SLOT(ShowLibraryConfig())); - connect(app_->library_model(), SIGNAL(TotalSongCountUpdated(int)), library_view_->view(), SLOT(TotalSongCountUpdated(int))); - connect(app_->library_model(), SIGNAL(modelAboutToBeReset()), library_view_->view(), SLOT(SaveFocus())); - connect(app_->library_model(), SIGNAL(modelReset()), library_view_->view(), SLOT(RestoreFocus())); + connect(library_view_->view(), SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(library_view_->view(), SIGNAL(ShowConfigDialog()), + SLOT(ShowLibraryConfig())); + connect(app_->library_model(), SIGNAL(TotalSongCountUpdated(int)), + library_view_->view(), SLOT(TotalSongCountUpdated(int))); + connect(app_->library_model(), SIGNAL(modelAboutToBeReset()), + library_view_->view(), SLOT(SaveFocus())); + connect(app_->library_model(), SIGNAL(modelReset()), library_view_->view(), + SLOT(RestoreFocus())); - connect(app_->task_manager(), SIGNAL(PauseLibraryWatchers()), app_->library(), SLOT(PauseWatcher())); - connect(app_->task_manager(), SIGNAL(ResumeLibraryWatchers()), app_->library(), SLOT(ResumeWatcher())); + connect(app_->task_manager(), SIGNAL(PauseLibraryWatchers()), app_->library(), + SLOT(PauseWatcher())); + connect(app_->task_manager(), SIGNAL(ResumeLibraryWatchers()), + app_->library(), SLOT(ResumeWatcher())); // Devices connections - connect(device_view_, SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(device_view_, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Library filter widget QActionGroup* library_view_group = new QActionGroup(this); library_show_all_ = library_view_group->addAction(tr("Show all songs")); - library_show_duplicates_ = library_view_group->addAction(tr("Show only duplicates")); - library_show_untagged_ = library_view_group->addAction(tr("Show only untagged")); + library_show_duplicates_ = + library_view_group->addAction(tr("Show only duplicates")); + library_show_untagged_ = + library_view_group->addAction(tr("Show only untagged")); library_show_all_->setCheckable(true); library_show_duplicates_->setCheckable(true); library_show_untagged_->setCheckable(true); library_show_all_->setChecked(true); - connect(library_view_group, SIGNAL(triggered(QAction*)), SLOT(ChangeLibraryQueryMode(QAction*))); + connect(library_view_group, SIGNAL(triggered(QAction*)), + SLOT(ChangeLibraryQueryMode(QAction*))); QAction* library_config_action = new QAction( IconLoader::Load("configure"), tr("Configure library..."), this); - connect(library_config_action, SIGNAL(triggered()), SLOT(ShowLibraryConfig())); + connect(library_config_action, SIGNAL(triggered()), + SLOT(ShowLibraryConfig())); library_view_->filter()->SetSettingsGroup(kSettingsGroup); library_view_->filter()->SetLibraryModel(app_->library()->model()); @@ -484,9 +559,12 @@ MainWindow::MainWindow(Application* app, library_view_->filter()->AddMenuAction(library_config_action); // Playlist menu - playlist_play_pause_ = playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay())); + playlist_play_pause_ = + playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay())); playlist_menu_->addAction(ui_->action_stop); - playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load("media-playback-stop"), tr("Stop after this track"), this, SLOT(PlaylistStopAfter())); + playlist_stop_after_ = playlist_menu_->addAction( + IconLoader::Load("media-playback-stop"), tr("Stop after this track"), + this, SLOT(PlaylistStopAfter())); playlist_queue_ = playlist_menu_->addAction("", this, SLOT(PlaylistQueue())); playlist_queue_->setShortcut(QKeySequence("Ctrl+D")); ui_->playlist->addAction(playlist_queue_); @@ -500,13 +578,27 @@ MainWindow::MainWindow(Application* app, playlist_menu_->addAction(ui_->action_auto_complete_tags); playlist_menu_->addAction(ui_->action_add_files_to_transcoder); playlist_menu_->addSeparator(); - playlist_copy_to_library_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(PlaylistCopyToLibrary())); - playlist_move_to_library_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to library..."), this, SLOT(PlaylistMoveToLibrary())); - playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToLibrary())); - playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); - playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, SLOT(PlaylistDelete())); - playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser())); - playlist_show_in_library_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in library..."), this, SLOT(ShowInLibrary())); + playlist_copy_to_library_ = playlist_menu_->addAction( + IconLoader::Load("edit-copy"), tr("Copy to library..."), this, + SLOT(PlaylistCopyToLibrary())); + playlist_move_to_library_ = playlist_menu_->addAction( + IconLoader::Load("go-jump"), tr("Move to library..."), this, + SLOT(PlaylistMoveToLibrary())); + playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), + tr("Organise files..."), this, + SLOT(PlaylistMoveToLibrary())); + playlist_copy_to_device_ = playlist_menu_->addAction( + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); + playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), + tr("Delete from disk..."), this, + SLOT(PlaylistDelete())); + playlist_open_in_browser_ = playlist_menu_->addAction( + IconLoader::Load("document-open-folder"), tr("Show in file browser..."), + this, SLOT(PlaylistOpenInBrowser())); + playlist_show_in_library_ = playlist_menu_->addAction( + IconLoader::Load("edit-find"), tr("Show in library..."), this, + SLOT(ShowInLibrary())); playlist_menu_->addSeparator(); playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_clear_playlist); @@ -521,12 +613,14 @@ MainWindow::MainWindow(Application* app, // their shortcut keys don't work addActions(playlist_menu_->actions()); - connect(ui_->playlist, SIGNAL(UndoRedoActionsChanged(QAction*,QAction*)), - SLOT(PlaylistUndoRedoChanged(QAction*,QAction*))); + connect(ui_->playlist, SIGNAL(UndoRedoActionsChanged(QAction*, QAction*)), + SLOT(PlaylistUndoRedoChanged(QAction*, QAction*))); - playlist_copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - playlist_copy_to_device_, SLOT(setDisabled(bool))); + playlist_copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), playlist_copy_to_device_, + SLOT(setDisabled(bool))); // Global search shortcut QAction* global_search_action = new QAction(this); @@ -538,57 +632,65 @@ MainWindow::MainWindow(Application* app, SLOT(FocusGlobalSearchField())); // Internet connections - connect(app_->internet_model(), SIGNAL(StreamError(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->internet_model(), SIGNAL(StreamMetadataFound(QUrl,Song)), app_->playlist_manager(), SLOT(SetActiveStreamMetadata(QUrl,Song))); - connect(app_->internet_model(), SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(app_->internet_model(), SIGNAL(ScrollToIndex(QModelIndex)), SLOT(ScrollToInternetIndex(QModelIndex))); + connect(app_->internet_model(), SIGNAL(StreamError(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->internet_model(), SIGNAL(StreamMetadataFound(QUrl, Song)), + app_->playlist_manager(), SLOT(SetActiveStreamMetadata(QUrl, Song))); + connect(app_->internet_model(), SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(app_->internet_model(), SIGNAL(ScrollToIndex(QModelIndex)), + SLOT(ScrollToInternetIndex(QModelIndex))); #ifdef HAVE_LIBLASTFM LastFMService* lastfm_service = InternetModel::Service(); - connect(lastfm_service, SIGNAL(ButtonVisibilityChanged(bool)), SLOT(LastFMButtonVisibilityChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobbleButtonVisibilityChanged(bool)), SLOT(ScrobbleButtonVisibilityChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobblingEnabledChanged(bool)), SLOT(ScrobblingEnabledChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobbledRadioStream()), SLOT(ScrobbledRadioStream())); + connect(lastfm_service, SIGNAL(ButtonVisibilityChanged(bool)), + SLOT(LastFMButtonVisibilityChanged(bool))); + connect(lastfm_service, SIGNAL(ScrobbleButtonVisibilityChanged(bool)), + SLOT(ScrobbleButtonVisibilityChanged(bool))); + connect(lastfm_service, SIGNAL(ScrobblingEnabledChanged(bool)), + SLOT(ScrobblingEnabledChanged(bool))); + connect(lastfm_service, SIGNAL(ScrobbledRadioStream()), + SLOT(ScrobbledRadioStream())); #endif - connect(app_->internet_model()->Service(), SIGNAL(DownloadFinished(QStringList)), osd_, SLOT(MagnatuneDownloadFinished(QStringList))); - connect(internet_view_->tree(), SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(app_->internet_model()->Service(), + SIGNAL(DownloadFinished(QStringList)), osd_, + SLOT(MagnatuneDownloadFinished(QStringList))); + connect(internet_view_->tree(), SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Connections to the saved streams service - connect(InternetModel::Service(), SIGNAL(ShowAddStreamDialog()), SLOT(AddStream())); + connect(InternetModel::Service(), SIGNAL(ShowAddStreamDialog()), + SLOT(AddStream())); #ifdef Q_OS_DARWIN mac::SetApplicationHandler(this); #endif // Tray icon - tray_icon_->SetupMenu(ui_->action_previous_track, - ui_->action_play_pause, - ui_->action_stop, - ui_->action_stop_after_this_track, - ui_->action_next_track, - ui_->action_mute, - ui_->action_love, - ui_->action_ban, - ui_->action_quit); + tray_icon_->SetupMenu(ui_->action_previous_track, ui_->action_play_pause, + ui_->action_stop, ui_->action_stop_after_this_track, + ui_->action_next_track, ui_->action_mute, + ui_->action_love, ui_->action_ban, ui_->action_quit); connect(tray_icon_, SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); - connect(tray_icon_, SIGNAL(SeekForward()), app_->player(), SLOT(SeekForward())); - connect(tray_icon_, SIGNAL(SeekBackward()), app_->player(), SLOT(SeekBackward())); + connect(tray_icon_, SIGNAL(SeekForward()), app_->player(), + SLOT(SeekForward())); + connect(tray_icon_, SIGNAL(SeekBackward()), app_->player(), + SLOT(SeekBackward())); connect(tray_icon_, SIGNAL(NextTrack()), app_->player(), SLOT(Next())); - connect(tray_icon_, SIGNAL(PreviousTrack()), app_->player(), SLOT(Previous())); + connect(tray_icon_, SIGNAL(PreviousTrack()), app_->player(), + SLOT(Previous())); connect(tray_icon_, SIGNAL(ShowHide()), SLOT(ToggleShowHide())); connect(tray_icon_, SIGNAL(ChangeVolume(int)), SLOT(VolumeWheelEvent(int))); // Windows 7 thumbbar buttons thumbbar_->SetActions(QList() - << ui_->action_previous_track - << ui_->action_play_pause - << ui_->action_stop - << ui_->action_next_track - << nullptr // spacer - << ui_->action_love - << ui_->action_ban); + << ui_->action_previous_track << ui_->action_play_pause + << ui_->action_stop << ui_->action_next_track + << nullptr // spacer + << ui_->action_love << ui_->action_ban); #if (defined(Q_OS_DARWIN) && defined(HAVE_SPARKLE)) || defined(Q_OS_WIN32) // Add check for updates item to application menu. - QAction* check_updates = ui_->menu_tools->addAction(tr("Check for updates...")); + QAction* check_updates = + ui_->menu_tools->addAction(tr("Check for updates...")); check_updates->setMenuRole(QAction::ApplicationSpecificRole); connect(check_updates, SIGNAL(triggered(bool)), SLOT(CheckForUpdates())); #endif @@ -605,27 +707,41 @@ MainWindow::MainWindow(Application* app, // Global shortcuts connect(global_shortcuts_, SIGNAL(Play()), app_->player(), SLOT(Play())); connect(global_shortcuts_, SIGNAL(Pause()), app_->player(), SLOT(Pause())); - connect(global_shortcuts_, SIGNAL(PlayPause()), ui_->action_play_pause, SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(PlayPause()), ui_->action_play_pause, + SLOT(trigger())); connect(global_shortcuts_, SIGNAL(Stop()), ui_->action_stop, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(StopAfter()), ui_->action_stop_after_this_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(Next()), ui_->action_next_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(Previous()), ui_->action_previous_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(IncVolume()), app_->player(), SLOT(VolumeUp())); - connect(global_shortcuts_, SIGNAL(DecVolume()), app_->player(), SLOT(VolumeDown())); + connect(global_shortcuts_, SIGNAL(StopAfter()), + ui_->action_stop_after_this_track, SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(Next()), ui_->action_next_track, + SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(Previous()), ui_->action_previous_track, + SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(IncVolume()), app_->player(), + SLOT(VolumeUp())); + connect(global_shortcuts_, SIGNAL(DecVolume()), app_->player(), + SLOT(VolumeDown())); connect(global_shortcuts_, SIGNAL(Mute()), app_->player(), SLOT(Mute())); - connect(global_shortcuts_, SIGNAL(SeekForward()), app_->player(), SLOT(SeekForward())); - connect(global_shortcuts_, SIGNAL(SeekBackward()), app_->player(), SLOT(SeekBackward())); + connect(global_shortcuts_, SIGNAL(SeekForward()), app_->player(), + SLOT(SeekForward())); + connect(global_shortcuts_, SIGNAL(SeekBackward()), app_->player(), + SLOT(SeekBackward())); connect(global_shortcuts_, SIGNAL(ShowHide()), SLOT(ToggleShowHide())); - connect(global_shortcuts_, SIGNAL(ShowOSD()), app_->player(), SLOT(ShowOSD())); - connect(global_shortcuts_, SIGNAL(TogglePrettyOSD()), app_->player(), SLOT(TogglePrettyOSD())); + connect(global_shortcuts_, SIGNAL(ShowOSD()), app_->player(), + SLOT(ShowOSD())); + connect(global_shortcuts_, SIGNAL(TogglePrettyOSD()), app_->player(), + SLOT(TogglePrettyOSD())); #ifdef HAVE_LIBLASTFM - connect(global_shortcuts_, SIGNAL(ToggleScrobbling()), app_->internet_model()->InternetModel::Service(), SLOT(ToggleScrobbling())); + connect(global_shortcuts_, SIGNAL(ToggleScrobbling()), + app_->internet_model()->InternetModel::Service(), + SLOT(ToggleScrobbling())); #endif - connect(global_shortcuts_, SIGNAL(RateCurrentSong(int)), app_->playlist_manager(), SLOT(RateCurrentSong(int))); + connect(global_shortcuts_, SIGNAL(RateCurrentSong(int)), + app_->playlist_manager(), SLOT(RateCurrentSong(int))); // Fancy tabs - connect(ui_->tabs, SIGNAL(ModeChanged(FancyTabWidget::Mode)), SLOT(SaveGeometry())); + connect(ui_->tabs, SIGNAL(ModeChanged(FancyTabWidget::Mode)), + SLOT(SaveGeometry())); connect(ui_->tabs, SIGNAL(CurrentChanged(int)), SLOT(SaveGeometry())); // Lyrics @@ -639,26 +755,30 @@ MainWindow::MainWindow(Application* app, // Equalizer qLog(Debug) << "Creating equalizer"; - connect(equalizer_.get(), SIGNAL(ParametersChanged(int,QList)), - app_->player()->engine(), SLOT(SetEqualizerParameters(int,QList))); + connect(equalizer_.get(), SIGNAL(ParametersChanged(int, QList)), + app_->player()->engine(), + SLOT(SetEqualizerParameters(int, QList))); connect(equalizer_.get(), SIGNAL(EnabledChanged(bool)), app_->player()->engine(), SLOT(SetEqualizerEnabled(bool))); connect(equalizer_.get(), SIGNAL(StereoBalanceChanged(float)), app_->player()->engine(), SLOT(SetStereoBalance(float))); app_->player()->engine()->SetEqualizerEnabled(equalizer_->is_enabled()); - app_->player()->engine()->SetEqualizerParameters( - equalizer_->preamp_value(), equalizer_->gain_values()); + app_->player()->engine()->SetEqualizerParameters(equalizer_->preamp_value(), + equalizer_->gain_values()); app_->player()->engine()->SetStereoBalance(equalizer_->stereo_balance()); // Statusbar widgets - ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]")); + ui_->playlist_summary->setMinimumWidth( + QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]")); ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page); - connect(ui_->multi_loading_indicator, SIGNAL(TaskCountChange(int)), SLOT(TaskCountChanged(int))); + connect(ui_->multi_loading_indicator, SIGNAL(TaskCountChange(int)), + SLOT(TaskCountChanged(int))); ui_->track_slider->SetApplication(app); #ifdef HAVE_MOODBAR // Moodbar connections - connect(app_->moodbar_controller(), SIGNAL(CurrentMoodbarDataChanged(QByteArray)), + connect(app_->moodbar_controller(), + SIGNAL(CurrentMoodbarDataChanged(QByteArray)), ui_->track_slider->moodbar_style(), SLOT(SetMoodbarData(QByteArray))); #endif @@ -669,42 +789,62 @@ MainWindow::MainWindow(Application* app, connect(app_->player(), SIGNAL(Stopped()), ui_->now_playing, SLOT(Stopped())); connect(ui_->now_playing, SIGNAL(ShowAboveStatusBarChanged(bool)), SLOT(NowPlayingWidgetPositionChanged(bool))); - connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(AllHail(bool))); - connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(EnableKittens(bool))); - connect(ui_->action_kittens, SIGNAL(toggled(bool)), app_->network_remote(), SLOT(EnableKittens(bool))); + connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, + SLOT(AllHail(bool))); + connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, + SLOT(EnableKittens(bool))); + connect(ui_->action_kittens, SIGNAL(toggled(bool)), app_->network_remote(), + SLOT(EnableKittens(bool))); // Hide the console - //connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole())); + // connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole())); NowPlayingWidgetPositionChanged(ui_->now_playing->show_above_status_bar()); // Load theme // This is tricky: we need to save the default/system palette now, before - // loading user preferred theme (which will overide it), to be able to restore it later + // loading user preferred theme (which will overide it), to be able to restore + // it later const_cast(Appearance::kDefaultPalette) = QApplication::palette(); app_->appearance()->LoadUserTheme(); StyleSheetLoader* css_loader = new StyleSheetLoader(this); css_loader->SetStyleSheet(this, ":mainwindow.css"); // Load playlists - app_->playlist_manager()->Init(app_->library_backend(), app_->playlist_backend(), + app_->playlist_manager()->Init(app_->library_backend(), + app_->playlist_backend(), ui_->playlist_sequence, ui_->playlist); // This connection must be done after the playlists have been initialized. - connect(this, SIGNAL(StopAfterToggled(bool)), - osd_, SLOT(StopAfterToggle(bool))); + connect(this, SIGNAL(StopAfterToggled(bool)), osd_, + SLOT(StopAfterToggle(bool))); - // We need to connect these global shortcuts here after the playlist have been initialized - connect(global_shortcuts_, SIGNAL(CycleShuffleMode()), app_->playlist_manager()->sequence(), SLOT(CycleShuffleMode())); - connect(global_shortcuts_, SIGNAL(CycleRepeatMode()), app_->playlist_manager()->sequence(), SLOT(CycleRepeatMode())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), osd_, SLOT(RepeatModeChanged(PlaylistSequence::RepeatMode))); - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), osd_, SLOT(ShuffleModeChanged(PlaylistSequence::ShuffleMode))); + // We need to connect these global shortcuts here after the playlist have been + // initialized + connect(global_shortcuts_, SIGNAL(CycleShuffleMode()), + app_->playlist_manager()->sequence(), SLOT(CycleShuffleMode())); + connect(global_shortcuts_, SIGNAL(CycleRepeatMode()), + app_->playlist_manager()->sequence(), SLOT(CycleRepeatMode())); + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), osd_, + SLOT(RepeatModeChanged(PlaylistSequence::RepeatMode))); + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), osd_, + SLOT(ShuffleModeChanged(PlaylistSequence::ShuffleMode))); #ifdef HAVE_LIBLASTFM - connect(InternetModel::Service(), SIGNAL(ScrobbleSubmitted()), SLOT(ScrobbleSubmitted())); - connect(InternetModel::Service(), SIGNAL(ScrobbleError(int)), SLOT(ScrobbleError(int))); + connect(InternetModel::Service(), SIGNAL(ScrobbleSubmitted()), + SLOT(ScrobbleSubmitted())); + connect(InternetModel::Service(), SIGNAL(ScrobbleError(int)), + SLOT(ScrobbleError(int))); - LastFMButtonVisibilityChanged(app_->internet_model()->InternetModel::Service()->AreButtonsVisible()); - ScrobbleButtonVisibilityChanged(app_->internet_model()->InternetModel::Service()->IsScrobbleButtonVisible()); - ScrobblingEnabledChanged(app_->internet_model()->InternetModel::Service()->IsScrobblingEnabled()); + LastFMButtonVisibilityChanged(app_->internet_model() + ->InternetModel::Service() + ->AreButtonsVisible()); + ScrobbleButtonVisibilityChanged(app_->internet_model() + ->InternetModel::Service() + ->IsScrobbleButtonVisible()); + ScrobblingEnabledChanged(app_->internet_model() + ->InternetModel::Service() + ->IsScrobblingEnabled()); #else LastFMButtonVisibilityChanged(false); ScrobbleButtonVisibilityChanged(false); @@ -715,14 +855,17 @@ MainWindow::MainWindow(Application* app, settings_.beginGroup(kSettingsGroup); restoreGeometry(settings_.value("geometry").toByteArray()); - if (!ui_->splitter->restoreState(settings_.value("splitter_state").toByteArray())) { + if (!ui_->splitter->restoreState( + settings_.value("splitter_state").toByteArray())) { ui_->splitter->setSizes(QList() << 300 << width() - 300); } - ui_->tabs->SetCurrentIndex(settings_.value("current_tab", 1 /* Library tab */ ).toInt()); + ui_->tabs->SetCurrentIndex( + settings_.value("current_tab", 1 /* Library tab */).toInt()); FancyTabWidget::Mode default_mode = FancyTabWidget::Mode_LargeSidebar; - ui_->tabs->SetMode(FancyTabWidget::Mode(settings_.value( - "tab_mode", default_mode).toInt())); - file_view_->SetPath(settings_.value("file_path", QDir::homePath()).toString()); + ui_->tabs->SetMode( + FancyTabWidget::Mode(settings_.value("tab_mode", default_mode).toInt())); + file_view_->SetPath( + settings_.value("file_path", QDir::homePath()).toString()); ReloadSettings(); @@ -733,17 +876,24 @@ MainWindow::MainWindow(Application* app, ui_->playlist->view()->ReloadSettings(); #ifndef Q_OS_DARWIN - StartupBehaviour behaviour = - StartupBehaviour(settings_.value("startupbehaviour", Startup_Remember).toInt()); + StartupBehaviour behaviour = StartupBehaviour( + settings_.value("startupbehaviour", Startup_Remember).toInt()); bool hidden = settings_.value("hidden", false).toBool(); switch (behaviour) { - case Startup_AlwaysHide: hide(); break; - case Startup_AlwaysShow: show(); break; - case Startup_Remember: setVisible(!hidden); break; + case Startup_AlwaysHide: + hide(); + break; + case Startup_AlwaysShow: + show(); + break; + case Startup_Remember: + setVisible(!hidden); + break; } - // Force the window to show in case somehow the config has tray and window set to hide + // Force the window to show in case somehow the config has tray and window set + // to hide if (hidden && !tray_icon_->IsVisible()) { settings_.setValue("hidden", false); show(); @@ -758,10 +908,11 @@ MainWindow::MainWindow(Application* app, connect(close_window_shortcut, SIGNAL(activated()), SLOT(SetHiddenInTray())); #ifdef HAVE_WIIMOTEDEV -// http://code.google.com/p/clementine-player/issues/detail?id=670 -// Switched position, mayby something is not ready ? + // http://code.google.com/p/clementine-player/issues/detail?id=670 + // Switched position, mayby something is not ready ? - wiimotedev_shortcuts_.reset(new WiimotedevShortcuts(osd_, this, app_->player())); + wiimotedev_shortcuts_.reset( + new WiimotedevShortcuts(osd_, this, app_->player())); #endif CheckFullRescanRevisions(); @@ -781,20 +932,18 @@ void MainWindow::ReloadSettings() { bool show_tray = settings_.value("showtray", true).toBool(); tray_icon_->SetVisible(show_tray); - if (!show_tray && !isVisible()) - show(); + if (!show_tray && !isVisible()) show(); #endif QSettings s; s.beginGroup(kSettingsGroup); - doubleclick_addmode_ = AddBehaviour( - s.value("doubleclick_addmode", AddBehaviour_Append).toInt()); + doubleclick_addmode_ = + AddBehaviour(s.value("doubleclick_addmode", AddBehaviour_Append).toInt()); doubleclick_playmode_ = PlayBehaviour( s.value("doubleclick_playmode", PlayBehaviour_IfStopped).toInt()); - menu_playmode_ = PlayBehaviour( - s.value("menu_playmode", PlayBehaviour_IfStopped).toInt()); - + menu_playmode_ = + PlayBehaviour(s.value("menu_playmode", PlayBehaviour_IfStopped).toInt()); } void MainWindow::ReloadAllSettings() { @@ -816,9 +965,7 @@ void MainWindow::ReloadAllSettings() { #endif } -void MainWindow::RefreshStyleSheet() { - setStyleSheet(styleSheet()); -} +void MainWindow::RefreshStyleSheet() { setStyleSheet(styleSheet()); } void MainWindow::MediaStopped() { setWindowTitle(QCoreApplication::applicationName()); @@ -859,14 +1006,17 @@ void MainWindow::MediaPlaying() { ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-pause")); ui_->action_play_pause->setText(tr("Pause")); - bool enable_play_pause = !(app_->player()->GetCurrentItem()->options() & PlaylistItem::PauseDisabled); + bool enable_play_pause = !(app_->player()->GetCurrentItem()->options() & + PlaylistItem::PauseDisabled); ui_->action_play_pause->setEnabled(enable_play_pause); - bool can_seek = !(app_->player()->GetCurrentItem()->options() & PlaylistItem::SeekDisabled); + bool can_seek = !(app_->player()->GetCurrentItem()->options() & + PlaylistItem::SeekDisabled); ui_->track_slider->SetCanSeek(can_seek); #ifdef HAVE_LIBLASTFM - bool is_lastfm = (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls); + bool is_lastfm = (app_->player()->GetCurrentItem()->options() & + PlaylistItem::LastFMControls); LastFMService* lastfm = InternetModel::Service(); bool enable_ban = lastfm->IsScrobblingEnabled() && is_lastfm; bool enable_love = lastfm->IsScrobblingEnabled(); @@ -896,7 +1046,8 @@ void MainWindow::SongChanged(const Song& song) { #ifdef HAVE_LIBLASTFM if (ui_->action_toggle_scrobbling->isVisible()) - SetToggleScrobblingIcon(InternetModel::Service()->IsScrobblingEnabled()); + SetToggleScrobblingIcon( + InternetModel::Service()->IsScrobblingEnabled()); #endif } @@ -904,8 +1055,10 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) { // If it was a library item then we have to increment its skipped count in // the database. if (item && item->IsLocalLibraryItem() && item->Metadata().id() != -1 && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Scrobbled && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Queued) { + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Scrobbled && + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Queued) { Song song = item->Metadata(); const qint64 position = app_->player()->engine()->position_nanosec(); const qint64 length = app_->player()->engine()->length_nanosec(); @@ -914,8 +1067,9 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) { const qint64 seconds_left = (length - position) / kNsecPerSec; const qint64 seconds_total = length / kNsecPerSec; - if (((0.05 * seconds_total > 60 && percentage < 0.98) || percentage < 0.95) && - seconds_left > 5) { // Never count the skip if under 5 seconds left + if (((0.05 * seconds_total > 60 && percentage < 0.98) || + percentage < 0.95) && + seconds_left > 5) { // Never count the skip if under 5 seconds left app_->library_backend()->IncrementSkipCountAsync(song.id(), percentage); } } @@ -928,14 +1082,16 @@ void MainWindow::ScrobblingEnabledChanged(bool value) { if (!app_->player()->GetState() == Engine::Idle) { return; - } - else { - //invalidate current song, we will scrobble the next one - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_New) - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Seeked); + } else { + // invalidate current song, we will scrobble the next one + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_New) + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Seeked); } - bool is_lastfm = (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls); + bool is_lastfm = (app_->player()->GetCurrentItem()->options() & + PlaylistItem::LastFMControls); ui_->action_ban->setEnabled(value && is_lastfm); tray_icon_->LastFMButtonBanStateChanged(value && is_lastfm); ui_->action_love->setEnabled(value); @@ -954,22 +1110,23 @@ void MainWindow::ScrobbleButtonVisibilityChanged(bool value) { ui_->action_toggle_scrobbling->setVisible(value); ui_->scrobbling_button->setVisible(value); - //when you reshow the buttons + // when you reshow the buttons if (value) { - //check if the song was scrobbled - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_Scrobbled) { + // check if the song was scrobbled + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_Scrobbled) { ui_->action_toggle_scrobbling->setIcon(QIcon(":/last.fm/as.png")); } else { #ifdef HAVE_LIBLASTFM - SetToggleScrobblingIcon(app_->internet_model()->InternetModel::Service()->IsScrobblingEnabled()); + SetToggleScrobblingIcon(app_->internet_model() + ->InternetModel::Service() + ->IsScrobblingEnabled()); #endif } } } -void MainWindow::resizeEvent(QResizeEvent*) { - SaveGeometry(); -} +void MainWindow::resizeEvent(QResizeEvent*) { SaveGeometry(); } void MainWindow::SaveGeometry() { settings_.setValue("geometry", saveGeometry()); @@ -983,8 +1140,10 @@ void MainWindow::SavePlaybackStatus() { settings.beginGroup(MainWindow::kSettingsGroup); settings.setValue("playback_state", app_->player()->GetState()); if (app_->player()->GetState() == Engine::Playing || - app_->player()->GetState() == Engine::Paused) { - settings.setValue("playback_position", app_->player()->engine()->position_nanosec() / kNsecPerSec); + app_->player()->GetState() == Engine::Paused) { + settings.setValue( + "playback_position", + app_->player()->engine()->position_nanosec() / kNsecPerSec); } else { settings.setValue("playback_position", 0); } @@ -993,13 +1152,13 @@ void MainWindow::SavePlaybackStatus() { void MainWindow::LoadPlaybackStatus() { QSettings settings; settings.beginGroup(MainWindow::kSettingsGroup); - bool resume_playback = settings.value("resume_playback_after_start", false).toBool(); - saved_playback_state_ = static_cast - (settings.value("playback_state", Engine::Empty).toInt()); + bool resume_playback = + settings.value("resume_playback_after_start", false).toBool(); + saved_playback_state_ = static_cast( + settings.value("playback_state", Engine::Empty).toInt()); saved_playback_position_ = settings.value("playback_position", 0).toDouble(); - if (!resume_playback || - saved_playback_state_ == Engine::Empty || - saved_playback_state_ == Engine::Idle) { + if (!resume_playback || saved_playback_state_ == Engine::Empty || + saved_playback_state_ == Engine::Idle) { return; } @@ -1018,14 +1177,14 @@ void MainWindow::ResumePlayback() { } void MainWindow::PlayIndex(const QModelIndex& index) { - if (!index.isValid()) - return; + if (!index.isValid()) return; int row = index.row(); if (index.model() == app_->playlist_manager()->current()->proxy()) { // The index was in the proxy model (might've been filtered), so we need // to get the actual row in the source model. - row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); } app_->playlist_manager()->SetActiveToCurrent(); @@ -1048,8 +1207,7 @@ void MainWindow::ToggleShowHide() { hide(); setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); SetHiddenInTray(false); - } else if (!isVisible()) - { + } else if (!isVisible()) { show(); activateWindow(); } else { @@ -1060,8 +1218,10 @@ void MainWindow::ToggleShowHide() { } void MainWindow::StopAfterCurrent() { - app_->playlist_manager()->active()->StopAfter(app_->playlist_manager()->active()->current_row()); - emit StopAfterToggled(app_->playlist_manager()->active()->stop_after_current()); + app_->playlist_manager()->active()->StopAfter( + app_->playlist_manager()->active()->current_row()); + emit StopAfterToggled( + app_->playlist_manager()->active()->stop_after_current()); } void MainWindow::closeEvent(QCloseEvent* event) { @@ -1100,12 +1260,13 @@ void MainWindow::FilePathChanged(const QString& path) { void MainWindow::Seeked(qlonglong microseconds) { const int position = microseconds / kUsecPerSec; - const int length = app_->player()->GetCurrentItem()->Metadata().length_nanosec() / kNsecPerSec; + const int length = + app_->player()->GetCurrentItem()->Metadata().length_nanosec() / + kNsecPerSec; tray_icon_->SetProgress(double(position) / length * 100); - //if we seeked, scrobbling is canceled, update the icon - if (ui_->action_toggle_scrobbling->isVisible()) - SetToggleScrobblingIcon(true); + // if we seeked, scrobbling is canceled, update the icon + if (ui_->action_toggle_scrobbling->isVisible()) SetToggleScrobblingIcon(true); } void MainWindow::UpdateTrackPosition() { @@ -1134,17 +1295,18 @@ void MainWindow::UpdateTrackPosition() { // Time to scrobble? if (position >= scrobble_point) { if (playlist->get_lastfm_status() == Playlist::LastFM_New) { - #ifdef HAVE_LIBLASTFM - if (lastfm_service->IsScrobblingEnabled() && lastfm_service->IsAuthenticated()) { - qLog(Info) << "Scrobbling at" << scrobble_point; - lastfm_service->Scrobble(); - } - #endif +#ifdef HAVE_LIBLASTFM + if (lastfm_service->IsScrobblingEnabled() && + lastfm_service->IsAuthenticated()) { + qLog(Info) << "Scrobbling at" << scrobble_point; + lastfm_service->Scrobble(); + } +#endif } // Update the play count for the song if it's from the library - if (!playlist->have_incremented_playcount() && - item->IsLocalLibraryItem() && item->Metadata().id() != -1 && + if (!playlist->have_incremented_playcount() && item->IsLocalLibraryItem() && + item->Metadata().id() != -1 && playlist->get_lastfm_status() != Playlist::LastFM_Seeked) { app_->library_backend()->IncrementPlayCountAsync(item->Metadata().id()); playlist->set_have_incremented_playcount(); @@ -1157,15 +1319,16 @@ void MainWindow::UpdateTrackPosition() { // Update the tray icon every 10 seconds if (position % 10 == 0) { qLog(Debug) << "position" << position << "scrobble point" << scrobble_point - << "status" << playlist->get_lastfm_status(); + << "status" << playlist->get_lastfm_status(); tray_icon_->SetProgress(double(position) / length * 100); - //if we're waiting for the scrobble point, update the icon +// if we're waiting for the scrobble point, update the icon #ifdef HAVE_LIBLASTFM if (position < scrobble_point && playlist->get_lastfm_status() == Playlist::LastFM_New && last_fm_enabled) { - ui_->action_toggle_scrobbling->setIcon(CreateOverlayedIcon(position, scrobble_point)); + ui_->action_toggle_scrobbling->setIcon( + CreateOverlayedIcon(position, scrobble_point)); } #endif } @@ -1184,48 +1347,49 @@ void MainWindow::Love() { } #endif -void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, MimeData* data) const { +void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, + MimeData* data) const { switch (b) { - case AddBehaviour_Append: - data->clear_first_ = false; - data->enqueue_now_ = false; - break; + case AddBehaviour_Append: + data->clear_first_ = false; + data->enqueue_now_ = false; + break; - case AddBehaviour_Enqueue: - data->clear_first_ = false; - data->enqueue_now_ = true; - break; + case AddBehaviour_Enqueue: + data->clear_first_ = false; + data->enqueue_now_ = true; + break; - case AddBehaviour_Load: - data->clear_first_ = true; - data->enqueue_now_ = false; - break; + case AddBehaviour_Load: + data->clear_first_ = true; + data->enqueue_now_ = false; + break; - case AddBehaviour_OpenInNew: - data->open_in_new_playlist_ = true; - break; + case AddBehaviour_OpenInNew: + data->open_in_new_playlist_ = true; + break; } } -void MainWindow::ApplyPlayBehaviour(MainWindow::PlayBehaviour b, MimeData* data) const { +void MainWindow::ApplyPlayBehaviour(MainWindow::PlayBehaviour b, + MimeData* data) const { switch (b) { - case PlayBehaviour_Always: - data->play_now_ = true; - break; + case PlayBehaviour_Always: + data->play_now_ = true; + break; - case PlayBehaviour_Never: - data->play_now_ = false; - break; + case PlayBehaviour_Never: + data->play_now_ = false; + break; - case PlayBehaviour_IfStopped: - data->play_now_ = !(app_->player()->GetState() == Engine::Playing); - break; + case PlayBehaviour_IfStopped: + data->play_now_ = !(app_->player()->GetState() == Engine::Playing); + break; } } void MainWindow::AddToPlaylist(QMimeData* data) { - if (!data) - return; + if (!data) return; if (MimeData* mime_data = qobject_cast(data)) { // Should we replace the flags with the user's preference? @@ -1239,12 +1403,13 @@ void MainWindow::AddToPlaylist(QMimeData* data) { } // Should we create a new playlist for the songs? - if(mime_data->open_in_new_playlist_) { + if (mime_data->open_in_new_playlist_) { app_->playlist_manager()->New(mime_data->get_name_for_new_playlist()); } } - app_->playlist_manager()->current()->dropMimeData(data, Qt::CopyAction, -1, 0, QModelIndex()); + app_->playlist_manager()->current()->dropMimeData(data, Qt::CopyAction, -1, 0, + QModelIndex()); delete data; } @@ -1252,44 +1417,48 @@ void MainWindow::AddToPlaylist(QAction* action) { int destination = action->data().toInt(); PlaylistItemList items; - //get the selected playlist items - foreach (const QModelIndex& index, ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + // get the selected playlist items + foreach(const QModelIndex & index, + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); items << app_->playlist_manager()->current()->item_at(row); } SongList songs; - foreach(PlaylistItemPtr item, items) { - songs << item->Metadata(); - } + foreach(PlaylistItemPtr item, items) { songs << item->Metadata(); } - //we're creating a new playlist + // we're creating a new playlist if (destination == -1) { - //save the current playlist to reactivate it + // save the current playlist to reactivate it int current_id = app_->playlist_manager()->current_id(); - //get the name from selection - app_->playlist_manager()->New(app_->playlist_manager()->GetNameForNewPlaylist(songs)); + // get the name from selection + app_->playlist_manager()->New( + app_->playlist_manager()->GetNameForNewPlaylist(songs)); if (app_->playlist_manager()->current()->id() != current_id) { - //I'm sure the new playlist was created and is selected, so I can just insert items + // I'm sure the new playlist was created and is selected, so I can just + // insert items app_->playlist_manager()->current()->InsertItems(items); - //set back the current playlist + // set back the current playlist app_->playlist_manager()->SetCurrentPlaylist(current_id); } - } - else { - //we're inserting in a existing playlist + } else { + // we're inserting in a existing playlist app_->playlist_manager()->playlist(destination)->InsertItems(items); } } -void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& index) { - QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); +void MainWindow::PlaylistRightClick(const QPoint& global_pos, + const QModelIndex& index) { + QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); playlist_menu_index_ = source_index; // Is this song currently playing? - if (app_->playlist_manager()->current()->current_row() == source_index.row() && app_->player()->GetState() == Engine::Playing) { + if (app_->playlist_manager()->current()->current_row() == + source_index.row() && + app_->player()->GetState() == Engine::Playing) { playlist_play_pause_->setText(tr("Pause")); playlist_play_pause_->setIcon(IconLoader::Load("media-playback-pause")); } else { @@ -1300,8 +1469,13 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& // Are we allowed to pause? if (index.isValid()) { playlist_play_pause_->setEnabled( - app_->playlist_manager()->current()->current_row() != source_index.row() || - ! (app_->playlist_manager()->current()->item_at(source_index.row())->options() & PlaylistItem::PauseDisabled)); + app_->playlist_manager()->current()->current_row() != + source_index.row() || + !(app_->playlist_manager() + ->current() + ->item_at(source_index.row()) + ->options() & + PlaylistItem::PauseDisabled)); } else { playlist_play_pause_->setEnabled(false); } @@ -1309,31 +1483,32 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_stop_after_->setEnabled(index.isValid()); // Are any of the selected songs editable or queued? - QModelIndexList selection = ui_->playlist->view()->selectionModel()->selection().indexes(); + QModelIndexList selection = + ui_->playlist->view()->selectionModel()->selection().indexes(); bool cue_selected = false; int editable = 0; int streams = 0; int in_queue = 0; int not_in_queue = 0; - foreach (const QModelIndex& index, selection) { - if (index.column() != 0) - continue; + foreach(const QModelIndex & index, selection) { + if (index.column() != 0) continue; - PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(index.row()); - if(item->Metadata().has_cue()) { + PlaylistItemPtr item = + app_->playlist_manager()->current()->item_at(index.row()); + if (item->Metadata().has_cue()) { cue_selected = true; } else if (item->Metadata().IsEditable()) { editable++; } - if(item->Metadata().is_stream()) { + if (item->Metadata().is_stream()) { streams++; } if (index.data(Playlist::Role_QueuePosition).toInt() == -1) - not_in_queue ++; + not_in_queue++; else - in_queue ++; + in_queue++; } int all = not_in_queue + in_queue; @@ -1346,8 +1521,7 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& ui_->action_auto_complete_tags->setVisible(editable); // the rest of the read / write actions work only when there are no CUEs // involved - if(cue_selected) - editable = 0; + if (cue_selected) editable = 0; // no 'show in browser' action if only streams are selected playlist_open_in_browser_->setVisible(streams != all); @@ -1386,25 +1560,26 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& ui_->action_edit_value->setVisible(false); } else { Playlist::Column column = (Playlist::Column)index.column(); - bool column_is_editable = Playlist::column_is_editable(column) - && editable; + bool column_is_editable = Playlist::column_is_editable(column) && editable; ui_->action_selection_set_value->setVisible( ui_->action_selection_set_value->isVisible() && column_is_editable); - ui_->action_edit_value->setVisible( - ui_->action_edit_value->isVisible() && column_is_editable); + ui_->action_edit_value->setVisible(ui_->action_edit_value->isVisible() && + column_is_editable); QString column_name = Playlist::column_name(column); - QString column_value = app_->playlist_manager()->current()->data(source_index).toString(); + QString column_value = + app_->playlist_manager()->current()->data(source_index).toString(); if (column_value.length() > 25) column_value = column_value.left(25) + "..."; - ui_->action_selection_set_value->setText(tr("Set %1 to \"%2\"...") - .arg(column_name.toLower()).arg(column_value)); + ui_->action_selection_set_value->setText( + tr("Set %1 to \"%2\"...").arg(column_name.toLower()).arg(column_value)); ui_->action_edit_value->setText(tr("Edit tag \"%1\"...").arg(column_name)); // Is it a library item? - PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(source_index.row()); + PlaylistItemPtr item = + app_->playlist_manager()->current()->item_at(source_index.row()); if (item->IsLocalLibraryItem() && item->Metadata().id() != -1) { playlist_organise_->setVisible(editable); playlist_show_in_library_->setVisible(editable); @@ -1417,29 +1592,32 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_copy_to_device_->setVisible(editable); // Remove old item actions, if any. - foreach(QAction* action, playlistitem_actions_) { + foreach(QAction * action, playlistitem_actions_) { playlist_menu_->removeAction(action); } // Get the new item actions, and add them playlistitem_actions_ = item->actions(); - playlistitem_actions_separator_->setVisible(!playlistitem_actions_.isEmpty()); - playlist_menu_->insertActions(playlistitem_actions_separator_, playlistitem_actions_); + playlistitem_actions_separator_->setVisible( + !playlistitem_actions_.isEmpty()); + playlist_menu_->insertActions(playlistitem_actions_separator_, + playlistitem_actions_); } - //if it isn't the first time we right click, we need to remove the menu previously created + // if it isn't the first time we right click, we need to remove the menu + // previously created if (playlist_add_to_another_ != nullptr) { playlist_menu_->removeAction(playlist_add_to_another_); delete playlist_add_to_another_; } - //create the playlist submenu + // create the playlist submenu QMenu* add_to_another_menu = new QMenu(tr("Add to another playlist"), this); add_to_another_menu->setIcon(IconLoader::Load("list-add")); PlaylistBackend::Playlist playlist; - foreach (playlist, app_->playlist_backend()->GetAllOpenPlaylists()) { - //don't add the current playlist + foreach(playlist, app_->playlist_backend()->GetAllOpenPlaylists()) { + // don't add the current playlist if (playlist.id != app_->playlist_manager()->current()->id()) { QAction* existing_playlist = new QAction(this); existing_playlist->setText(playlist.name); @@ -1449,21 +1627,23 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& } add_to_another_menu->addSeparator(); - //add to a new playlist + // add to a new playlist QAction* new_playlist = new QAction(this); new_playlist->setText(tr("New playlist")); - new_playlist->setData(-1); //fake id + new_playlist->setData(-1); // fake id add_to_another_menu->addAction(new_playlist); - playlist_add_to_another_ = playlist_menu_->insertMenu(ui_->action_remove_from_playlist, - add_to_another_menu); + playlist_add_to_another_ = playlist_menu_->insertMenu( + ui_->action_remove_from_playlist, add_to_another_menu); - connect(add_to_another_menu, SIGNAL(triggered(QAction*)), SLOT(AddToPlaylist(QAction*))); + connect(add_to_another_menu, SIGNAL(triggered(QAction*)), + SLOT(AddToPlaylist(QAction*))); playlist_menu_->popup(global_pos); } void MainWindow::PlaylistPlay() { - if (app_->playlist_manager()->current()->current_row() == playlist_menu_index_.row()) { + if (app_->playlist_manager()->current()->current_row() == + playlist_menu_index_.row()) { app_->player()->PlayPause(); } else { PlayIndex(playlist_menu_index_); @@ -1478,11 +1658,11 @@ void MainWindow::EditTracks() { SongList songs; PlaylistItemList items; - foreach (const QModelIndex& index, - ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + foreach(const QModelIndex & index, + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); PlaylistItemPtr item(app_->playlist_manager()->current()->item_at(row)); Song song = item->Metadata(); @@ -1498,7 +1678,7 @@ void MainWindow::EditTracks() { } void MainWindow::EditTagDialogAccepted() { - foreach (PlaylistItemPtr item, edit_tag_dialog_->playlist_items()) { + foreach(PlaylistItemPtr item, edit_tag_dialog_->playlist_items()) { item->Reload(); } @@ -1518,17 +1698,19 @@ void MainWindow::RenumberTracks() { // if first selected song has a track number set, start from that offset if (!indexes.isEmpty()) { - const Song first_song = app_->playlist_manager()->current()->item_at(indexes[0].row())->Metadata(); + const Song first_song = app_->playlist_manager() + ->current() + ->item_at(indexes[0].row()) + ->Metadata(); - if (first_song.track() > 0) - track = first_song.track(); + if (first_song.track() > 0) track = first_song.track(); } - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + foreach(const QModelIndex & index, indexes) { + if (index.column() != 0) continue; - const QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); + const QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); int row = source_index.row(); Song song = app_->playlist_manager()->current()->item_at(row)->Metadata(); @@ -1538,8 +1720,8 @@ void MainWindow::RenumberTracks() { TagReaderReply* reply = TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(source_index)); } track++; @@ -1549,22 +1731,24 @@ void MainWindow::RenumberTracks() { void MainWindow::SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index) { if (reply->is_successful() && index.isValid()) { - app_->playlist_manager()->current()->ReloadItems(QList() << index.row()); + app_->playlist_manager()->current()->ReloadItems(QList() + << index.row()); } reply->deleteLater(); } void MainWindow::SelectionSetValue() { Playlist::Column column = (Playlist::Column)playlist_menu_index_.column(); - QVariant column_value = app_->playlist_manager()->current()->data(playlist_menu_index_); + QVariant column_value = + app_->playlist_manager()->current()->data(playlist_menu_index_); QModelIndexList indexes = ui_->playlist->view()->selectionModel()->selection().indexes(); - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + foreach(const QModelIndex & index, indexes) { + if (index.column() != 0) continue; - const QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); + const QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); int row = source_index.row(); Song song = app_->playlist_manager()->current()->item_at(row)->Metadata(); @@ -1572,8 +1756,8 @@ void MainWindow::SelectionSetValue() { TagReaderReply* reply = TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(source_index)); } } @@ -1581,18 +1765,15 @@ void MainWindow::SelectionSetValue() { void MainWindow::EditValue() { QModelIndex current = ui_->playlist->view()->currentIndex(); - if (!current.isValid()) - return; + if (!current.isValid()) return; // Edit the last column that was right-clicked on. If nothing's ever been // right clicked then look for the first editable column. int column = playlist_menu_index_.column(); if (column == -1) { - for (int i=0 ; iplaylist->view()->model()->columnCount() ; ++i) { - if (ui_->playlist->view()->isColumnHidden(i)) - continue; - if (!Playlist::column_is_editable(Playlist::Column(i))) - continue; + for (int i = 0; i < ui_->playlist->view()->model()->columnCount(); ++i) { + if (ui_->playlist->view()->isColumnHidden(i)) continue; + if (!Playlist::column_is_editable(Playlist::Column(i))) continue; column = i; break; } @@ -1603,27 +1784,25 @@ void MainWindow::EditValue() { void MainWindow::AddFile() { // Last used directory - QString directory = settings_.value("add_media_path", QDir::currentPath()).toString(); + QString directory = + settings_.value("add_media_path", QDir::currentPath()).toString(); PlaylistParser parser(app_->library_backend()); // Show dialog QStringList file_names = QFileDialog::getOpenFileNames( this, tr("Add file"), directory, - QString("%1 (%2);;%3;;%4").arg( - tr("Music"), - FileView::kFileFilter, - parser.filters(), - tr(kAllFilesFilterSpec))); - if (file_names.isEmpty()) - return; + QString("%1 (%2);;%3;;%4").arg(tr("Music"), FileView::kFileFilter, + parser.filters(), + tr(kAllFilesFilterSpec))); + if (file_names.isEmpty()) return; // Save last used directory settings_.setValue("add_media_path", file_names[0]); // Convert to URLs QList urls; - foreach (const QString& path, file_names) { + foreach(const QString & path, file_names) { urls << QUrl::fromLocalFile(QFileInfo(path).canonicalFilePath()); } @@ -1634,26 +1813,29 @@ void MainWindow::AddFile() { void MainWindow::AddFolder() { // Last used directory - QString directory = settings_.value("add_folder_path", QDir::currentPath()).toString(); + QString directory = + settings_.value("add_folder_path", QDir::currentPath()).toString(); // Show dialog - directory = QFileDialog::getExistingDirectory(this, tr("Add folder"), directory); - if (directory.isEmpty()) - return; + directory = + QFileDialog::getExistingDirectory(this, tr("Add folder"), directory); + if (directory.isEmpty()) return; // Save last used directory settings_.setValue("add_folder_path", directory); // Add media MimeData* data = new MimeData; - data->setUrls(QList() << QUrl::fromLocalFile(QFileInfo(directory).canonicalFilePath())); + data->setUrls(QList() << QUrl::fromLocalFile( + QFileInfo(directory).canonicalFilePath())); AddToPlaylist(data); } void MainWindow::AddStream() { if (!add_stream_dialog_) { add_stream_dialog_.reset(new AddStreamDialog); - connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted())); + connect(add_stream_dialog_.get(), SIGNAL(accepted()), + SLOT(AddStreamAccepted())); add_stream_dialog_->set_add_on_accept(InternetModel::Service()); } @@ -1667,22 +1849,21 @@ void MainWindow::AddStreamAccepted() { AddToPlaylist(data); } - void MainWindow::OpenRipCD() { - #ifdef HAVE_AUDIOCD - if (!rip_cd_) { - rip_cd_.reset(new RipCD); - } - if(rip_cd_->CDIOIsValid()) { - rip_cd_->show(); - } else { - QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive")); - cdio_fail.exec(); - } - #endif +#ifdef HAVE_AUDIOCD + if (!rip_cd_) { + rip_cd_.reset(new RipCD); + } + if (rip_cd_->CDIOIsValid()) { + rip_cd_->show(); + } else { + QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), + tr("Failed reading CD drive")); + cdio_fail.exec(); + } +#endif } - void MainWindow::AddCDTracks() { MimeData* data = new MimeData; // We are putting empty data, but we specify cdda mimetype to indicate that @@ -1694,19 +1875,28 @@ void MainWindow::AddCDTracks() { void MainWindow::ShowInLibrary() { // Show the first valid selected track artist/album in LibraryView - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - if (app_->playlist_manager()->current()->item_at(index.row())->IsLocalLibraryItem()) { - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + foreach(const QModelIndex & proxy_index, proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + if (app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->IsLocalLibraryItem()) { + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); break; } } QString search; if (!songs.isEmpty()) { - search = "artist:" + songs.first().artist() + " album:" + songs.first().album(); + search = + "artist:" + songs.first().artist() + " album:" + songs.first().album(); } library_view_->filter()->ShowInLibrary(search); } @@ -1716,11 +1906,11 @@ void MainWindow::PlaylistRemoveCurrent() { } void MainWindow::PlaylistEditFinished(const QModelIndex& index) { - if (index == playlist_menu_index_) - SelectionSetValue(); + if (index == playlist_menu_index_) SelectionSetValue(); } -void MainWindow::CommandlineOptionsReceived(const QByteArray& serialized_options) { +void MainWindow::CommandlineOptionsReceived( + const QByteArray& serialized_options) { if (serialized_options == "wake up!") { // Old versions of Clementine sent this - just ignore it return; @@ -1732,12 +1922,11 @@ void MainWindow::CommandlineOptionsReceived(const QByteArray& serialized_options if (options.is_empty()) { show(); activateWindow(); - } - else + } else CommandlineOptionsReceived(options); } -void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) { +void MainWindow::CommandlineOptionsReceived(const CommandlineOptions& options) { switch (options.player_action()) { case CommandlineOptions::Player_Play: app_->player()->Play(); @@ -1769,7 +1958,7 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) { case CommandlineOptions::UrlList_Load: app_->playlist_manager()->ClearCurrent(); - // fallthrough + // fallthrough case CommandlineOptions::UrlList_Append: { MimeData* data = new MimeData; data->setUrls(options.urls()); @@ -1782,21 +1971,22 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) { app_->player()->SetVolume(options.set_volume()); if (options.volume_modifier() != 0) - app_->player()->SetVolume(app_->player()->GetVolume() + options.volume_modifier()); + app_->player()->SetVolume(app_->player()->GetVolume() + + options.volume_modifier()); if (options.seek_to() != -1) app_->player()->SeekTo(options.seek_to()); else if (options.seek_by() != 0) - app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / kNsecPerSec + options.seek_by()); + app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / + kNsecPerSec + + options.seek_by()); if (options.play_track_at() != -1) app_->player()->PlayAt(options.play_track_at(), Engine::Manual, true); - if (options.show_osd()) - app_->player()->ShowOSD(); + if (options.show_osd()) app_->player()->ShowOSD(); - if (options.toggle_pretty_osd()) - app_->player()->TogglePrettyOSD(); + if (options.toggle_pretty_osd()) app_->player()->TogglePrettyOSD(); } void MainWindow::ForceShowOSD(const Song& song, const bool toggle) { @@ -1806,13 +1996,10 @@ void MainWindow::ForceShowOSD(const Song& song, const bool toggle) { osd_->ReshowCurrentSong(); } -void MainWindow::Activate() { - show(); -} +void MainWindow::Activate() { show(); } bool MainWindow::LoadUrl(const QString& url) { - if (!QFile::exists(url)) - return false; + if (!QFile::exists(url)) return false; MimeData* data = new MimeData; data->setUrls(QList() << QUrl::fromLocalFile(url)); @@ -1827,7 +2014,7 @@ void MainWindow::CheckForUpdates() { #endif } -void MainWindow::PlaylistUndoRedoChanged(QAction *undo, QAction *redo) { +void MainWindow::PlaylistUndoRedoChanged(QAction* undo, QAction* redo) { playlist_menu_->insertAction(playlist_undoredo_, undo); playlist_menu_->insertAction(playlist_undoredo_, redo); } @@ -1839,11 +2026,11 @@ void MainWindow::AddFilesToTranscoder() { QStringList filenames; - foreach (const QModelIndex& index, - ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + foreach(const QModelIndex & index, + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); PlaylistItemPtr item(app_->playlist_manager()->current()->item_at(row)); Song song = item->Metadata(); filenames << song.url().toLocalFile(); @@ -1879,26 +2066,30 @@ void MainWindow::NowPlayingWidgetPositionChanged(bool above_status_bar) { } void MainWindow::CopyFilesToLibrary(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetUrls(urls); organise_dialog_->SetCopy(true); organise_dialog_->show(); } void MainWindow::MoveFilesToLibrary(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetUrls(urls); organise_dialog_->SetCopy(false); organise_dialog_->show(); } void MainWindow::CopyFilesToDevice(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); if (organise_dialog_->SetUrls(urls)) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } @@ -1907,7 +2098,7 @@ void MainWindow::EditFileTags(const QList& urls) { EnsureEditTagDialogCreated(); SongList songs; - foreach (const QUrl& url, urls) { + foreach(const QUrl & url, urls) { Song song; song.set_url(url); song.set_valid(true); @@ -1919,25 +2110,27 @@ void MainWindow::EditFileTags(const QList& urls) { edit_tag_dialog_->show(); } -void MainWindow::PlaylistCopyToLibrary() { - PlaylistOrganiseSelected(true); -} +void MainWindow::PlaylistCopyToLibrary() { PlaylistOrganiseSelected(true); } -void MainWindow::PlaylistMoveToLibrary() { - PlaylistOrganiseSelected(false); -} +void MainWindow::PlaylistMoveToLibrary() { PlaylistOrganiseSelected(false); } void MainWindow::PlaylistOrganiseSelected(bool copy) { - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + foreach(const QModelIndex & proxy_index, proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); } - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetSongs(songs); organise_dialog_->SetCopy(copy); organise_dialog_->show(); @@ -1947,42 +2140,53 @@ void MainWindow::PlaylistDelete() { // Note: copied from LibraryView::Delete if (QMessageBox::warning(this, tr("Delete files"), - tr("These files will be permanently deleted from disk, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be permanently deleted from " + "disk, are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; std::shared_ptr storage(new FilesystemMusicStorage("/")); // Get selected songs SongList selected_songs; - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - selected_songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); + foreach(const QModelIndex & proxy_index, proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + selected_songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); } ui_->playlist->view()->RemoveSelected(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(selected_songs); } void MainWindow::PlaylistOpenInBrowser() { QList urls; - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); - foreach (const QModelIndex& proxy_index, proxy_indexes) { - const QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - urls << QUrl(index.sibling(index.row(), Playlist::Column_Filename).data().toString()); + foreach(const QModelIndex & proxy_index, proxy_indexes) { + const QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + urls << QUrl(index.sibling(index.row(), Playlist::Column_Filename) + .data() + .toString()); } Utilities::OpenInFileBrowser(urls); } void MainWindow::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); @@ -1991,36 +2195,44 @@ void MainWindow::DeleteFinished(const SongList& songs_with_errors) { void MainWindow::PlaylistQueue() { QModelIndexList indexes; - foreach (const QModelIndex& proxy_index, - ui_->playlist->view()->selectionModel()->selectedRows()) { - indexes << app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + foreach(const QModelIndex & proxy_index, + ui_->playlist->view()->selectionModel()->selectedRows()) { + indexes << app_->playlist_manager()->current()->proxy()->mapToSource( + proxy_index); } app_->playlist_manager()->current()->queue()->ToggleTracks(indexes); } void MainWindow::PlaylistCopyToDevice() { - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + foreach(const QModelIndex & proxy_index, proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } void MainWindow::ChangeLibraryQueryMode(QAction* action) { - if(action == library_show_duplicates_) { + if (action == library_show_duplicates_) { library_view_->filter()->SetQueryMode(QueryOptions::QueryMode_Duplicates); } else if (action == library_show_untagged_) { library_view_->filter()->SetQueryMode(QueryOptions::QueryMode_Untagged); @@ -2035,30 +2247,34 @@ void MainWindow::ShowCoverManager() { cover_manager_->Init(); // Cover manager connections - connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); } cover_manager_->show(); } void MainWindow::EnsureSettingsDialogCreated() { - if (settings_dialog_) - return; + if (settings_dialog_) return; settings_dialog_.reset(new SettingsDialog(app_, background_streams_)); settings_dialog_->SetGlobalShortcutManager(global_shortcuts_); settings_dialog_->SetSongInfoView(song_info_view_); // Settings - connect(settings_dialog_.get(), SIGNAL(accepted()), SLOT(ReloadAllSettings())); + connect(settings_dialog_.get(), SIGNAL(accepted()), + SLOT(ReloadAllSettings())); #ifdef HAVE_WIIMOTEDEV - connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), wiimotedev_shortcuts_.get(), SLOT(SetWiimotedevInterfaceActived(bool))); + connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), + wiimotedev_shortcuts_.get(), + SLOT(SetWiimotedevInterfaceActived(bool))); #endif // Allows custom notification preview - connect(settings_dialog_.get(), SIGNAL(NotificationPreview(OSD::Behaviour,QString,QString)), - SLOT(HandleNotificationPreview(OSD::Behaviour,QString,QString))); + connect(settings_dialog_.get(), + SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)), + SLOT(HandleNotificationPreview(OSD::Behaviour, QString, QString))); } void MainWindow::OpenSettingsDialog() { @@ -2072,12 +2288,13 @@ void MainWindow::OpenSettingsDialogAtPage(SettingsDialog::Page page) { } void MainWindow::EnsureEditTagDialogCreated() { - if (edit_tag_dialog_) - return; + if (edit_tag_dialog_) return; edit_tag_dialog_.reset(new EditTagDialog(app_)); - connect(edit_tag_dialog_.get(), SIGNAL(accepted()), SLOT(EditTagDialogAccepted())); - connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); + connect(edit_tag_dialog_.get(), SIGNAL(accepted()), + SLOT(EditTagDialogAccepted())); + connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); } void MainWindow::ShowAboutDialog() { @@ -2108,31 +2325,34 @@ void MainWindow::CheckFullRescanRevisions() { // if we're restoring DB from scratch or nothing has // changed, do nothing - if(from == 0 || from == to) { + if (from == 0 || from == to) { return; } // collect all reasons QSet reasons; - for(int i = from; i <= to; i++) { + for (int i = from; i <= to; i++) { QString reason = app_->library()->full_rescan_reason(i); - if(!reason.isEmpty()) { + if (!reason.isEmpty()) { reasons.insert(reason); } } // if we have any... - if(!reasons.isEmpty()) { - QString message = tr("The version of Clementine you've just updated to requires a full library rescan " - "because of the new features listed below:") + "