diff --git a/CMakeLists.txt b/CMakeLists.txt index 08b5e43cf..3ec89f0b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,8 @@ SET( TOMAHAWK_VERSION_PATCH 99 ) #SET( TOMAHAWK_VERSION_RC 0 ) +SET( TOMAHAWK_TRANSLATION_LANGUAGES ar bg ca de en es fi fr ja pl pt_BR ru sv tr zh_CN zh_TW ) + # enforce proper symbol exporting on all platforms add_definitions( "-fvisibility=hidden" ) # enforce using constBegin, constEnd for const-iterators @@ -121,14 +123,14 @@ macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://develo include( CheckTagLibFileName ) check_taglib_filename( COMPLEX_TAGLIB_FILENAME ) -macro_optional_find_package( Boost ) +macro_optional_find_package(Boost) macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination macro_optional_find_package(QCA2) macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" TRUE "" "") macro_optional_find_package(LibAttica 0.4.0) -macro_log_feature(LIBATTICA_FOUND "libattica" "Provides support for automatic fetching and managing of resolvers from the tomahawk website" "https://projects.kde.org/projects/kdesupport/attica" TRUE "" "") +macro_log_feature(LIBATTICA_FOUND "libattica" "Provides support for installation of resolvers from the Tomahawk website" "https://projects.kde.org/projects/kdesupport/attica" TRUE "" "") macro_optional_find_package(QuaZip) macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloaded resolvers automatically." "http://quazip.sourceforge.net/" TRUE "" "") diff --git a/ChangeLog b/ChangeLog index 9ebe4cfec..81045a56b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,30 @@ Version 0.6.0: - * Access Control queries now stay on the bottom of the job view, - removing the tendency to jump away from the mouse. + * Improved icon theme with vector graphics. + * Higher resolution artist and album images. + * You can now click artists, albums and tracks mentioned in artists' + biographies. + * New AudioControl logic - only enable Prev/Skip buttons if available. + * Added more options to right-click/context menus. + * Make friends' currently playing song (in sidebar) clickable. + * Improve MusicBrainz plugin to use normalized artist names and avoid + duplicate tracks. + * Access Control queries now stay on the bottom of the job view, removing + the tendency to jump away from the mouse. * Improved random mode, preventing songs from being played in too rapid succession. - * You can now choose between Various view modes for your playlists. - * Nicer layout for the Album page. - * Follow HTTP redirects when fetching Playlists from the Internet. + * You can now choose between various view modes for your playlists. + * Nicer layout for the Artist, Album & Track pages. + * Follow HTTP redirects when fetching Playlists. * Main menu can now be hidden and instead be shown as a toolbar button. * Connectivity controls in the toolbar. * Cleaned up settings dialog. + * Ability to sync Spotify Starred Tracks with Tomahawk's Loved Tracks. + * Remove YouTube resolver from plug-in directory on request of YouTube. + * Fixed iTunes m3u playlist support. + * Support dropping of new Soundcloud user, track, set & likes URLs. + * Add HotNewHipHop as available chart. + * Add iTunes as available source for New Releases. + * (Linux) Allow disabling of playback notifications. Version 0.5.5: * Changed the Spotify config dialog to indicate when the user diff --git a/README.md b/README.md index e1e111fce..043410d76 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Required dependencies: * CMake 2.8.6 - http://www.cmake.org/ * Qt 4.7.0 - http://qt.nokia.com/ +* Phonon 4.6.0 - http://phonon.kde.org/ * QJson 0.7.1 - http://qjson.sourceforge.net/ * SQLite 3.6.22 - http://www.sqlite.org/ * TagLib 1.6.2 - http://developer.kde.org/~wheeler/taglib.html @@ -55,5 +56,6 @@ The following dependencies are optional, but recommended: Third party libraries that we ship with our source: * MiniUPnP 1.6 - http://miniupnp.free.fr/ +* Breakpad - http://code.google.com/p/google-breakpad/ Enjoy! diff --git a/admin/unix/tomahawk.desktop b/admin/unix/tomahawk.desktop index 34fc92376..7c93ee89b 100644 --- a/admin/unix/tomahawk.desktop +++ b/admin/unix/tomahawk.desktop @@ -3,9 +3,12 @@ Type=Application Version=1.0 Name=Tomahawk GenericName=Music Player +GenericName[de]=Musik Player +GenericName[fi]=Musiikkisoitin TryExec=tomahawk Exec=tomahawk %u Comment=Tomahawk - Social Music Player +Comment[fi]=Tomahawk – sosiaalinen musiikkisoitin Icon=tomahawk Terminal=false Categories=Qt;AudioVideo;Audio;Player; diff --git a/data/images/add-contact.svg b/data/images/add-contact.svg index 11e81697e..e94934974 100644 --- a/data/images/add-contact.svg +++ b/data/images/add-contact.svg @@ -1,5 +1,5 @@ - + add-contact Created with Sketch (http://www.bohemiancoding.com/sketch) @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/data/images/artist-icon.svg b/data/images/artist-icon.svg index 5226f31d9..613bb3af1 100644 --- a/data/images/artist-icon.svg +++ b/data/images/artist-icon.svg @@ -1,12 +1,11 @@ - + artist-icon Created with Sketch (http://www.bohemiancoding.com/sketch) - - + \ No newline at end of file diff --git a/data/images/artist-placeholder-grid.svg b/data/images/artist-placeholder-grid.svg index b80659ed5..5f3f487b2 100644 --- a/data/images/artist-placeholder-grid.svg +++ b/data/images/artist-placeholder-grid.svg @@ -1,39 +1,14 @@ - - artist-placeholder + + artist-placeholder-grid Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/data/images/cancel.svg b/data/images/cancel.svg index 4354ac718..7d3169286 100644 --- a/data/images/cancel.svg +++ b/data/images/cancel.svg @@ -1,5 +1,5 @@ - + cancel Created with Sketch (http://www.bohemiancoding.com/sketch) @@ -9,6 +9,6 @@ - + \ No newline at end of file diff --git a/data/images/charts.svg b/data/images/charts.svg index 24e209fa0..515e7d2b8 100644 --- a/data/images/charts.svg +++ b/data/images/charts.svg @@ -1,12 +1,16 @@ - + charts Created with Sketch (http://www.bohemiancoding.com/sketch) - + + + + + - - + + \ No newline at end of file diff --git a/data/images/downloading.svg b/data/images/downloading.svg index cad384b27..fcc720d23 100644 --- a/data/images/downloading.svg +++ b/data/images/downloading.svg @@ -1,12 +1,12 @@ - + downloading Created with Sketch (http://www.bohemiancoding.com/sketch) - + - - + + \ No newline at end of file diff --git a/data/images/lastfm-settings.svg b/data/images/lastfm-settings.svg index 802f7821c..9d104e92d 100644 --- a/data/images/lastfm-settings.svg +++ b/data/images/lastfm-settings.svg @@ -1,53 +1,17 @@ - - -image/svg+xml \ No newline at end of file + + lastfm-settings + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/images/list-add.svg b/data/images/list-add.svg index 0ddb0e42b..aab5ab7a6 100644 --- a/data/images/list-add.svg +++ b/data/images/list-add.svg @@ -1,10 +1,10 @@ - - Slice 1 + + list-add Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + \ No newline at end of file diff --git a/data/images/list-remove.svg b/data/images/list-remove.svg index 74ad8f7b8..eab0c9cf0 100644 --- a/data/images/list-remove.svg +++ b/data/images/list-remove.svg @@ -1,10 +1,10 @@ - + list-remove Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + \ No newline at end of file diff --git a/data/images/loading-animation.svg b/data/images/loading-animation.svg index 1898dad9f..cf92723bd 100644 --- a/data/images/loading-animation.svg +++ b/data/images/loading-animation.svg @@ -1,22 +1,22 @@ - + loading-animation Created with Sketch (http://www.bohemiancoding.com/sketch) - + - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/data/images/loved.svg b/data/images/loved.svg index 16f7b72bc..eb0c396cb 100644 --- a/data/images/loved.svg +++ b/data/images/loved.svg @@ -1,19 +1,19 @@ - + loved Created with Sketch (http://www.bohemiancoding.com/sketch) - + - + - + \ No newline at end of file diff --git a/data/images/no-artist-image-placeholder.svg b/data/images/no-artist-image-placeholder.svg index 93bc6ff8f..89500fc4b 100644 --- a/data/images/no-artist-image-placeholder.svg +++ b/data/images/no-artist-image-placeholder.svg @@ -1,10 +1,10 @@ - + no-artist-image-placeholder Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + \ No newline at end of file diff --git a/data/images/no-source.svg b/data/images/no-source.svg index c85098c18..4a9a01477 100644 --- a/data/images/no-source.svg +++ b/data/images/no-source.svg @@ -1,53 +1,12 @@ - - -image/svg+xml \ No newline at end of file + + no-source + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + \ No newline at end of file diff --git a/data/images/not-loved.svg b/data/images/not-loved.svg index 00a863f19..626edc6c4 100644 --- a/data/images/not-loved.svg +++ b/data/images/not-loved.svg @@ -1,9 +1,9 @@ - + not-loved Created with Sketch (http://www.bohemiancoding.com/sketch) - + \ No newline at end of file diff --git a/data/images/now-playing-speaker-dark.svg b/data/images/now-playing-speaker-dark.svg index dc3b856d0..fe88c01fa 100644 --- a/data/images/now-playing-speaker-dark.svg +++ b/data/images/now-playing-speaker-dark.svg @@ -1,5 +1,5 @@ - + now-playing-speaker-dark Created with Sketch (http://www.bohemiancoding.com/sketch) @@ -23,10 +23,10 @@ - - - - + + + + \ No newline at end of file diff --git a/data/images/now-playing-speaker.svg b/data/images/now-playing-speaker.svg index 2656036e5..0333b4a4a 100644 --- a/data/images/now-playing-speaker.svg +++ b/data/images/now-playing-speaker.svg @@ -1,14 +1,14 @@ - + now-playing-speaker Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + \ No newline at end of file diff --git a/data/images/open-padlock.svg b/data/images/open-padlock.svg index 23b5f62d3..e4eb9fffe 100644 --- a/data/images/open-padlock.svg +++ b/data/images/open-padlock.svg @@ -1,10 +1,13 @@ - + open-padlock Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + + + + \ No newline at end of file diff --git a/data/images/private-listening.svg b/data/images/private-listening.svg index e5af70329..4ca75c7df 100644 --- a/data/images/private-listening.svg +++ b/data/images/private-listening.svg @@ -1,12 +1,14 @@ - - private-listening + + listen-privately Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - + + + + + + + + \ No newline at end of file diff --git a/data/images/resolver-default.svg b/data/images/resolver-default.svg index 038fd13fc..dcb35395d 100644 --- a/data/images/resolver-default.svg +++ b/data/images/resolver-default.svg @@ -1,56 +1,13 @@ - - -image/svg+xml \ No newline at end of file + + resolver-default + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + \ No newline at end of file diff --git a/data/images/resolvers-settings.svg b/data/images/resolvers-settings.svg index b05bd27c9..eb91df48e 100644 --- a/data/images/resolvers-settings.svg +++ b/data/images/resolvers-settings.svg @@ -1,12 +1,17 @@ - + resolvers-settings Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/data/images/search-box-dismiss-x.svg b/data/images/search-box-dismiss-x.svg index 2983d3925..c8a44b77c 100644 --- a/data/images/search-box-dismiss-x.svg +++ b/data/images/search-box-dismiss-x.svg @@ -1,10 +1,10 @@ - - search-box-dismiss + + search-box-dismiss-x Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + \ No newline at end of file diff --git a/data/images/share.svg b/data/images/share.svg index d955ca1a8..f4a7f3a40 100644 --- a/data/images/share.svg +++ b/data/images/share.svg @@ -1,9 +1,9 @@ - + share Created with Sketch (http://www.bohemiancoding.com/sketch) - + \ No newline at end of file diff --git a/data/images/shuffle-on-rest.svg b/data/images/shuffle-on-rest.svg index 5727c39f3..162e4bde6 100644 --- a/data/images/shuffle-on-rest.svg +++ b/data/images/shuffle-on-rest.svg @@ -1,5 +1,5 @@ - + shuffle-on-rest Created with Sketch (http://www.bohemiancoding.com/sketch) @@ -7,16 +7,8 @@ - - - - - - - - - + \ No newline at end of file diff --git a/data/images/sipplugin-add.svg b/data/images/sipplugin-add.svg index 0585f3a7e..94bac4886 100644 --- a/data/images/sipplugin-add.svg +++ b/data/images/sipplugin-add.svg @@ -1,10 +1,15 @@ - + sipplugin-add Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + + + + + + \ No newline at end of file diff --git a/data/images/sipplugin-remove.svg b/data/images/sipplugin-remove.svg index d994888c7..78560ceaf 100644 --- a/data/images/sipplugin-remove.svg +++ b/data/images/sipplugin-remove.svg @@ -1,10 +1,15 @@ - + sipplugin-remove Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + + + + + + \ No newline at end of file diff --git a/data/images/spotify-logo.svg b/data/images/spotify-logo.svg new file mode 100644 index 000000000..de71bdbc2 --- /dev/null +++ b/data/images/spotify-logo.svg @@ -0,0 +1,44 @@ + + + spotify-logo + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/images/track-placeholder-grid.svg b/data/images/track-placeholder-grid.svg index 789c2edb9..d938fe3ac 100644 --- a/data/images/track-placeholder-grid.svg +++ b/data/images/track-placeholder-grid.svg @@ -1,85 +1,9 @@ - - -image/svg+xml \ No newline at end of file + + track-placeholder-grid + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + \ No newline at end of file diff --git a/data/images/tweet.svg b/data/images/tweet.svg new file mode 100644 index 000000000..ec623b032 --- /dev/null +++ b/data/images/tweet.svg @@ -0,0 +1,14 @@ + + + tweet + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + \ No newline at end of file diff --git a/data/images/uploading.svg b/data/images/uploading.svg index ec238b7bb..7dabd4444 100644 --- a/data/images/uploading.svg +++ b/data/images/uploading.svg @@ -1,12 +1,12 @@ - + uploading Created with Sketch (http://www.bohemiancoding.com/sketch) - + - - + + \ No newline at end of file diff --git a/data/images/view-refresh.svg b/data/images/view-refresh.svg index cebe65781..ba91dfc51 100644 --- a/data/images/view-refresh.svg +++ b/data/images/view-refresh.svg @@ -1,9 +1,9 @@ - + view-refresh Created with Sketch (http://www.bohemiancoding.com/sketch) - - + + \ No newline at end of file diff --git a/data/images/view-toggle-active-centre.svg b/data/images/view-toggle-active-centre.svg index e2b7c72cb..d9deb1d2d 100644 --- a/data/images/view-toggle-active-centre.svg +++ b/data/images/view-toggle-active-centre.svg @@ -1,5 +1,5 @@ - + view-toggle-active-centre Created with Sketch (http://www.bohemiancoding.com/sketch) @@ -9,6 +9,6 @@ - + \ No newline at end of file diff --git a/data/images/view-toggle-active-left.svg b/data/images/view-toggle-active-left.svg index 3ffc30e13..961a47599 100644 --- a/data/images/view-toggle-active-left.svg +++ b/data/images/view-toggle-active-left.svg @@ -1,5 +1,5 @@ - + view-toggle-active-left Created with Sketch (http://www.bohemiancoding.com/sketch) diff --git a/data/images/view-toggle-active-right.svg b/data/images/view-toggle-active-right.svg index 7f45e334d..2c395348e 100644 --- a/data/images/view-toggle-active-right.svg +++ b/data/images/view-toggle-active-right.svg @@ -1,5 +1,5 @@ - + view-toggle-active-right Created with Sketch (http://www.bohemiancoding.com/sketch) diff --git a/data/images/view-toggle-inactive-centre.svg b/data/images/view-toggle-inactive-centre.svg index 6cce0a3df..801f87e6c 100644 --- a/data/images/view-toggle-inactive-centre.svg +++ b/data/images/view-toggle-inactive-centre.svg @@ -1,14 +1,14 @@ - - view-toggle-inactive-right + + view-toggle-inactive-centre Created with Sketch (http://www.bohemiancoding.com/sketch) - + - - + + \ No newline at end of file diff --git a/data/images/view-toggle-inactive-left.svg b/data/images/view-toggle-inactive-left.svg index c98f1aa42..f53a88919 100644 --- a/data/images/view-toggle-inactive-left.svg +++ b/data/images/view-toggle-inactive-left.svg @@ -1,5 +1,5 @@ - + view-toggle-inactive-left Created with Sketch (http://www.bohemiancoding.com/sketch) diff --git a/data/images/view-toggle-pressed-centre.svg b/data/images/view-toggle-pressed-centre.svg index c873f7f8c..f5fb7355f 100644 --- a/data/images/view-toggle-pressed-centre.svg +++ b/data/images/view-toggle-pressed-centre.svg @@ -1,14 +1,16 @@ - - view-toggle-pressed-center + + view-toggle-pressed-centre Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + + - - + + + \ No newline at end of file diff --git a/data/images/view-toggle-pressed-left.svg b/data/images/view-toggle-pressed-left.svg index c58c0ad03..04f1b07bb 100644 --- a/data/images/view-toggle-pressed-left.svg +++ b/data/images/view-toggle-pressed-left.svg @@ -1,14 +1,25 @@ +<<<<<<< HEAD view-toggle-pressed-right +======= + + view-toggle-pressed-left +>>>>>>> master Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + + +<<<<<<< HEAD +======= + + +>>>>>>> master \ No newline at end of file diff --git a/data/images/view-toggle-pressed-right.svg b/data/images/view-toggle-pressed-right.svg index 7ea9c32f7..ee1110715 100644 --- a/data/images/view-toggle-pressed-right.svg +++ b/data/images/view-toggle-pressed-right.svg @@ -1,14 +1,25 @@ +<<<<<<< HEAD view-toggle-pressed-left +======= + + view-toggle-pressed-right +>>>>>>> master Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - + + + + + +<<<<<<< HEAD +======= + + +>>>>>>> master \ No newline at end of file diff --git a/data/images/widget-border.png b/data/images/widget-border.png new file mode 100644 index 000000000..227e0f70a Binary files /dev/null and b/data/images/widget-border.png differ diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index d74e57b7c..906fc6483 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? هل تريد السماح ل%1 بالربط و التحميل منك؟ - + Allow Streaming السماح بالتحميل - + Deny Access رفض الوصول @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. توماهوك يريد منك ان تقرر ان كنت تريد السماح ل%1 بالربط بك. @@ -256,37 +256,17 @@ connect and stream from you? AlbumInfoWidget - - Form - استمارة - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! نعتذر, لم نستطيع إيجاد ألبومات أخرى لهذا الفنان! @@ -296,7 +276,7 @@ connect and stream from you? نعتذر، لم نستطيع إيجاد أغاني أخرى لهذا الألبوم! - + Other Albums by %1 ألبومات أخرى ل%1 @@ -318,49 +298,32 @@ connect and stream from you? ArtistInfoWidget - - Form - استمارة - - - + Top Hits الأكثر شهرة - + Related Artists الفنانين ذات الذوق القريب - - - Artist - فنان - - - + Albums ألبومات - - - Cover - غلاف - - - + Sorry, we could not find any albums for this artist! نعتذر, لم نستطيع إيجاد ألبومات أخرى لهذا الفنان! - + Sorry, we could not find any related artists! نعتذر، لم نستطيع إيجاد فنانين! - + Sorry, we could not find any top hits for this artist! نعتذر، لم نستطيع إيجاد أغاني مشهورة جدا لهذا الفنان! @@ -368,82 +331,15 @@ connect and stream from you? AudioControls - - Prev - سابق - - - - Play - إستمع - - - - Pause - تعليق - - - - Next - التالي - - - - Artist - فنان - - - - Album - البوم - - - - social - اجتماعي - - - - love - أحب - - - - resolver - المحلل - - - - Time - الوقت - - - - Time Left - الوقت المتبقي - - - Shuffle خلط - Repeat إعادة - - - Low - منخفض - - - - High - مرتفع - Time Elapsed @@ -473,17 +369,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 نعتذر، لم نستطيع إيجاد الأغنية '%1' ل%2 - + Sorry, Tomahawk couldn't find the artist '%1' نعتذر، لم نستطيع إيجاد الفنان '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 نعتذر، لم نستطيع إيجاد الألبوم '%1' ل%2 @@ -536,11 +432,6 @@ connect and stream from you? ContextWidget - - - InfoBar - InfoBar - @@ -770,14 +661,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - استمارة - - IndexingJobItem @@ -788,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - InfoBar - Filter... @@ -801,11 +679,6 @@ connect and stream from you? LastFmConfig - - - Form - استمارة - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ connect and stream from you? MetadataEditor - - - Form - استمارة - Tags @@ -1148,12 +1016,47 @@ connect and stream from you? - Score - علامة + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name إسم @@ -1161,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you سمعت %1 - + played %1 by %2 %2 سمع %1 @@ -1174,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - سمعت %1 - - - - played %1 by %2 - %2 سمع %1 - - - - added %1 - إضافة %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 جميع أغاني %1 في البوم %2 - + All tracks by %1 جميع أغاني %1 @@ -1338,67 +1246,67 @@ connect and stream from you? QObject - + %n year(s) ago منذ %n سنةمنذ سنة %nمنذ سنتين %nمنذ %n سنواتمنذ %n سنواتمنذ %n سنوات - + %n year(s) منذ %n سنةمنذ سنة %nمنذ سنتين %nمنذ %n سنواتمنذ %n سنواتمنذ %n سنوات - + %n month(s) ago منذ %n شهرمنذ شهر %nمنذ شهرين %nمنذ %n أشهرمنذ %n أشهرمنذ %n أشهر - + %n month(s) منذ %n شهرمنذ شهر %nمنذ شهرين %nمنذ %n أشهرمنذ %n أشهرمنذ %n أشهر - + %n week(s) ago منذ %n أسبوعمنذ أسبوع %nمنذ أسبوعين %nمنذ %n أسابيعمنذ %n أسابيعمنذ %n أسابيع - + %n week(s) منذ %n أسبوعمنذ أسبوع %nمنذ أسبوعين %nمنذ %n أسابيعمنذ %n أسابيعمنذ %n أسابيع - + %n day(s) ago منذ %n يوممنذ يوم %nمنذ يومين %nمنذ %n أياممنذ %n أياممنذ %n أيام - + %n day(s) منذ %n يوممنذ يوم %nمنذ يومين %nمنذ %n أياممنذ %n أياممنذ %n أيام - + %n hour(s) ago منذ %n ساعةمنذ ساعة %nمنذ ساعتين %nمنذ %n ساعاتمنذ %n ساعاتمنذ %n ساعات - + %n hour(s) منذ %n ساعةمنذ ساعة %nمنذ ساعتين %nمنذ %n ساعاتمنذ %n ساعاتمنذ %n ساعات - + %1 minutes ago منذ %1 دقائق - + %1 minutes %1 دقائق - + just now الآن @@ -1417,6 +1325,18 @@ connect and stream from you? Status Updaters أنظمة تحديث حالتك + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1428,24 +1348,19 @@ connect and stream from you? QueueView - - - InfoBar - InfoBar - - + Open Queue إفتح قائمة الإنتظار - + Open Queue - %n item(s) إفتح قائمة الإنتظار - %n بندإفتح قائمة الإنتظار - بند %nإفتح قائمة الإنتظار - بندين %nإفتح قائمة الإنتظار - %n بنودإفتح قائمة الإنتظار - %n بنودإفتح قائمة الإنتظار - %n بنود - + Close Queue أغلق قائمة الإنتظار @@ -1562,11 +1477,6 @@ connect and stream from you? Settings_Accounts - - - Form - استمارة - Filter by capability: @@ -1575,11 +1485,6 @@ connect and stream from you? Settings_Advanced - - - Form - استمارة - Remote Peer Connection Method @@ -1658,11 +1563,6 @@ connect and stream from you? Settings_Collection - - - Form - استمارة - Path to scan for music files: @@ -1725,11 +1625,6 @@ connect and stream from you? SocialWidget - - - Form - استمارة - Facebook @@ -1740,16 +1635,6 @@ connect and stream from you? Twitter تويتر (Twitter) - - - Cover - غلاف - - - - TextLabel - TextLabel - Tweet @@ -1774,44 +1659,44 @@ connect and stream from you? SourceDelegate - + Track اغنية - + Album البوم - + Artist فنان - + Local محلية - + Top 10 توب ١٠ - + All available tracks جميع الأغاني المتاحة - - + + Show أظهر - - + + Hide إخفي @@ -2052,11 +1937,6 @@ connect and stream from you? SpotifyConfig - - - Form - استمارة - Configure your Spotify account @@ -2084,6 +1964,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams جودة عالية في الأغاني المحملة @@ -2093,7 +1978,7 @@ connect and stream from you? قوائم أغاني سبوتيفي (Spotify) التي يجب إبقائها بتزامن: - + Delete Tomahawk playlist when removing synchronization حذف قوائم أغاني توماهوك عند إزالة التزام @@ -2240,59 +2125,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... اختبار... - + Test Login اختبار الدخول - + Importing %1 e.g. Importing 2012/01/01 استيراد %1 - + Importing History... نقل التاريخ... - + History Incomplete. Resume + Text on a button that resumes import تاريخ ناقص. استأنف - + Playback History Imported تم استيراد تاريخ إعادة الإستماع - - + + Failed فشلت - + Success نجاح - + Could not contact server لم أستطيع الإتصال بالخادم - + Synchronizing... مزامنة... - + Synchronization Finished المزامنة إنتهت @@ -2300,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify مزامنة مع سبوتيفي (Spotify) - + Re-enable syncing with Spotify إعادة تمكين المزامنة مع سبوتيفي (Spotify) - + Create local copy إنشاء نسخة محلية - + Subscribe to playlist changes الاشتراك في تغييرات قائمة الأغاني - + Re-enable playlist subscription إعادة تمكين الإشتراك في تغييرات قائمة الأغاني - + Stop subscribing to changes توقيف الإشتراك في التغييرات - + Enable Spotify collaborations تمكين التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Disable Spotify collaborations تعطيل التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Stop syncing with Spotify أوقف المزامنة مع سبوتيفي (Spotify) @@ -2348,28 +2234,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... جاري تسجيل الدخول... - + Failed: %1 فشل: %1 - + Logged in as %1 مسجل تحت اسم %1 - + Log Out تسجيل الخروج - - + + Log In تسجيل الدخول @@ -2377,7 +2263,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium إسمع موسيقى و زامن قوائم أغانيك مع سبوتيفي بريميوم (Spotify Premium) @@ -2527,8 +2413,22 @@ You may wish to try re-authenticating. أدخل إلى حسابك على Jabber/XMPP للربط بأصدقائك + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2544,8 +2444,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue أضف إلى &قائمة الانتظار @@ -2561,56 +2461,56 @@ You may wish to try re-authenticating. - + &Love &أحب - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &نسخ رابط الأغنية - + Copy Album &Link نسخ &رابط الالبوم - + Copy Artist &Link نسخ &رابط قائمة الأغاني - + Un-&Love لا &أحب - + &Delete Items &أحذف البنود - + Properties... خصائص... - + &Delete Item &أحذف البند @@ -2894,16 +2794,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity ألفة الفنان + Artist Hotttnesss شعبية الفنان + Song Hotttnesss شعبية الأغنية @@ -2929,92 +2832,135 @@ Try tweaking the filters for a new set of songs to play. + Energy حيوية + Danceability القابلية للرقص - + only by ~%1 فقط من جانب ~%1 - + + similar to ~%1 مشابهة ل%1 - + with genre ~%1 مع النوع ~%1 - - + + from no one من لا أحد - + My Collection مجموعتي الخاصة - + + from my radio + + + + from %1 radio من إذاعة %1 + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 مع %1 %2 - + about %1 BPM حوالي %1 نبضة في الدقيقة - + about %n minute(s) long بطول حوالي %n دقائقبطول حوالي دقيقة %nبطول حوالي دقيقتين %nبطول حوالي %n دقائقبطول حوالي %n دقائقبطول حوالي %n دقائق - + about %1 dB حوالي %1 د.ب. - + at around %1%2 %3 في حوالي %1%2 %3 - + in %1 في %1 - + in a %1 key في المفتاح %1 - + sorted in %1 %2 order تم فرزها بالترتيب %1 %2 - + with a %1 mood في مزاج %1 - + in a %1 style في أسلوب %1 @@ -3198,10 +3144,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) %n أخرين%n أخر%n أخرين%n أخرين%n أخرين%n أخرين - + - %1 people - %1 أشخاص + %n people + @@ -3225,6 +3171,14 @@ Try tweaking the filters for a new set of songs to play. خطأ شبكة في تحليل تقصير الرابط! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3288,7 +3242,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection مجموعتي الخاصة @@ -3308,6 +3262,14 @@ enter the displayed PIN number here: أدخل رقم البين (PIN) الموجود أمامك على الشاشة هنا: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3514,159 +3476,159 @@ enter the displayed PIN number here: Go forward one page تقدم صفحة واحدة - - - Global Search... - بحث شامل... - - + Hide Menu Bar إخفي شريط القائمة - + Show Menu Bar أظهر شريط القائمة + + + Search for any artist, album or song... + + &Main Menu ال&قائمة الرئيسية - - - + + + Connect To Peer ربط بالند - + Enter peer address: أدخل عنوان الند: - + Enter peer port: أدخل بوابة الند: - + Enter peer key: أدخل مفتاح الند: - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك @@ -3682,67 +3644,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - استمارة - - - - Cover - غلاف - - - - Track - اغنية - - - - Artist - فنان - - - - Album - البوم - - - - Statistics - إحصائيات - - - + Similar Tracks أغاني قريبة - + Sorry, but we could not find similar tracks for this song! نعتذر، لم نستطيع إيجاد أغاني قريبة من هذه الأغنية! - + You've listened to this track %n time(s). لقد استمعت إلى هذه الأغنية %n مرة.لقد استمعت إلى هذه الأغنية مرة %n.لقد استمعت إلى هذه الأغنية مرتين %n.لقد استمعت إلى هذه الأغنية %n مرات.لقد استمعت إلى هذه الأغنية %n مرات.لقد استمعت إلى هذه الأغنية %n مرات. - + You've never listened to this track before. لم تستمع لهذه الأغنية من قبل. - + You first listened to it on %1. استمعت إليها أولاً في %1. - + You've listened to %1 %n time(s). لقد استمعت إلى %1 %n مرة.لقد استمعت إلى %1 مرة %n.لقد استمعت إلى %1 مرتين %n.لقد استمعت إلى %1 %n مرات.لقد استمعت إلى %1 %n مرات.لقد استمعت إلى %1 %n مرات. - + You've never listened to %1 before. لم تستمع إلى %1 من قبل. @@ -3750,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. عذراً، ترشيحك "%1" لم يطابق أي نتائج. @@ -3773,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown مجهول @@ -3801,7 +3733,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. نتأسف، نظام الترشيح لم يجد شيئا تحت عنوان '%1'. @@ -4315,11 +4247,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - استمارة - Local Network configuration diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 01bf9723a..fe4777ae3 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Може ли %1 да се свърже и да слуша музика от теб? - + Allow Streaming Позволи разпространение - + Deny Access Откажи достъп @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Трябва да решиш, дали %1 може да се свърже с теб @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - - - - + Tracklist Списък на песни за изпълняване - + Other Albums Други албуми - - Cover - Обложка - - - - Album - Албум - - - - Artist - Изпълнител - - - + Sorry, we could not find any other albums for this artist! Съжалявам, но не откривам нито един албум от този артист! @@ -295,7 +275,7 @@ connect and stream from you? Съжалявам, но не откривам нито една песен за този артист! - + Other Albums by %1 Други албуми от %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - - - - + Top Hits Най-известни изпълнения - + Related Artists Изпълнители с подобно звучене - - - Artist - Изпълнител - - - + Albums Албуми - - - Cover - Обложка - - - + Sorry, we could not find any albums for this artist! Съжалявам, но не откривам нито един албум за този артист! - + Sorry, we could not find any related artists! Съжалявам, но не откривам нито един подобен на този артист! - + Sorry, we could not find any top hits for this artist! Съжалявам, но не откривам нито една хитова песен на този артист! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Предходна - - - - Play - Изпълни - - - - Pause - Пауза - - - - Next - Следваща - - - - Artist - Артист - - - - Album - Албум - - - - social - социален - - - - love - Харесай - - - - resolver - Модул за извличане - - - - Time - Времетраене - - - - Time Left - Оставащо време - - - Shuffle Разбъркано - Repeat Повтори - - - Low - 0 - - - - High - 100% - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Съжалявам. Не успявам да открия изпълнение '%1' от '%2' - + Sorry, Tomahawk couldn't find the artist '%1' Съжалявам, но не откривам '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Съжалявам, но не откривам албум с име '%1' от '%2' @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Информационно поле - @@ -562,9 +453,11 @@ connect and stream from you? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Извинявай!</span> Tomahawk заби. + <html><head/><body><p><span style=" font-weight:600;"> +Извинявай!</span> +Tomahawk заби. Моля уведоми ни за този слуай! -Tomahaw създаде доклад относно това и изпращайки го, ще помогнеш за по-добрата работа на приложението за в бъдеще. +Tomahawk създаде доклад относно това и изпращайки го, ще помогнеш за по-добрата работа на приложението за в бъдеще. Изпрати директно до разработчиците на Tomahawk</p></body></html> @@ -773,14 +666,6 @@ Tomahaw създаде доклад относно това и изпращай Този списък е празен в моментът. Добави няколко песни и се наслади на музиката. - - GlobalSearchWidget - - - Form - - - IndexingJobItem @@ -791,11 +676,6 @@ Tomahaw създаде доклад относно това и изпращай InfoBar - - - InfoBar - Информационно поле - Filter... @@ -804,11 +684,6 @@ Tomahaw създаде доклад относно това и изпращай LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -945,11 +820,6 @@ Tomahaw създаде доклад относно това и изпращай MetadataEditor - - - Form - - Tags @@ -1151,12 +1021,47 @@ Tomahaw създаде доклад относно това и изпращай - Score - Резултат + Accuracy + Съвпадение + + + + Perfect match + Абсолютно + + + + Very good match + Много добро + + + + Good match + Добро + + + + Vague match + Горе-долу + + + + Bad match + Лошо + + + + Very bad match + Много лошо + + + + Not available + Няма съвпадение - + Name Име @@ -1164,12 +1069,12 @@ Tomahaw създаде доклад относно това и изпращай PlaylistItemDelegate - + played %1 by you изпълнена %1 от мен - + played %1 by %2 изпълнена %1 от %2 @@ -1177,51 +1082,56 @@ Tomahaw създаде доклад относно това и изпращай PlaylistLargeItemDelegate - + played %1 by you - изпълнена %1 от мен + e.g. played 3 hours ago by you + Изпълнена %1 от теб - + played %1 by %2 - изпълнена %1 от %2 + e.g. played 3 hours ago by SomeSource + Изпълнена %1 от %2 - + added %1 - добавен %1 + e.g. added 3 hours ago + Добавена %1 - + by <b>%1</b> + e.g. by SomeArtist от <b>%1</b> - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum от <b>%1</b> на <b>%2</b> PlaylistModel - + A playlist you created %1. Списък, създаден от %1 - - + + A playlist by %1, created %2. Списък с изпълнения на %1, създаден от %2 - + All tracks by %1 on album %2 Всички песни от %1, от албум %2 - + All tracks by %1 Всички песни от %1 @@ -1343,67 +1253,67 @@ Tomahaw създаде доклад относно това и изпращай QObject - + %n year(s) ago преди %n годинапреди %n години - + %n year(s) %n година%n години - + %n month(s) ago преди %n месецпреди %n месеца - + %n month(s) %n месец%n месеца - + %n week(s) ago преди %n седмицапреди %n седмици - + %n week(s) %n седмица%n седмици - + %n day(s) ago преди %n денпреди %n дена - + %n day(s) %n ден%n дена - + %n hour(s) ago преди %n часпреди %n часа - + %n hour(s) %n час %n часа - + %1 minutes ago преди %1 минути - + %1 minutes %1 минути - + just now току-що @@ -1422,6 +1332,18 @@ Tomahaw създаде доклад относно това и изпращай Status Updaters Обновяване на статуси + + + + %1 Config + %1 Настрой + + + + + %1 Configuration + %1 Настройки + QuaZipFilePrivate @@ -1433,24 +1355,19 @@ Tomahaw създаде доклад относно това и изпращай QueueView - - - InfoBar - Информационно поле - - + Open Queue Отвори опашката - + Open Queue - %n item(s) Отвори опашка - %n елементОтвори опашка - %n елемента - + Close Queue Затвори опашката @@ -1568,11 +1485,6 @@ Tomahaw създаде доклад относно това и изпращай Settings_Accounts - - - Form - - Filter by capability: @@ -1581,11 +1493,6 @@ Tomahaw създаде доклад относно това и изпращай Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1665,11 +1572,6 @@ Tomahaw създаде доклад относно това и изпращай Settings_Collection - - - Form - - Path to scan for music files: @@ -1732,11 +1634,6 @@ Tomahaw създаде доклад относно това и изпращай SocialWidget - - - Form - Бланка - Facebook @@ -1747,16 +1644,6 @@ Tomahaw създаде доклад относно това и изпращай Twitter Twitter - - - Cover - Обложка - - - - TextLabel - Етикет - Tweet @@ -1765,7 +1652,7 @@ Tomahaw създаде доклад относно това и изпращай Listening to "%1" by %2. %3 - ♥ "%1" от %2, %3 + "%1" от %2, %3 @@ -1781,44 +1668,44 @@ Tomahaw създаде доклад относно това и изпращай SourceDelegate - + Track Песен - + Album Албум - + Artist Артист - + Local Локално - + Top 10 Първите 10 - + All available tracks Всички налични изпълнения - - + + Show Покажи - - + + Hide Скрий @@ -1877,7 +1764,7 @@ Tomahaw създаде доклад относно това и изпращай SuperCollection - Супер колекция + Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ @@ -2030,8 +1917,7 @@ Tomahaw създаде доклад относно това и изпращай SuperCollection - Супер колекция -/Сборен излед от локалните и наличните в колекциите на приятелите ти/ + Обща колекция @@ -2061,11 +1947,6 @@ Tomahaw създаде доклад относно това и изпращай SpotifyConfig - - - Form - - Configure your Spotify account @@ -2093,6 +1974,11 @@ Tomahaw създаде доклад относно това и изпращай + Sync Starred tracks to Loved tracks + Синхронизирай Песни означени със Звезда, като Харесани песни + + + High Quality Streams Високо качество @@ -2102,7 +1988,7 @@ Tomahaw създаде доклад относно това и изпращай Spotify списъци, които да бъдат поддържани обновени: - + Delete Tomahawk playlist when removing synchronization Изтрий запазените списъци, когато бъде премахната синхронизацията @@ -2252,59 +2138,60 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::LastFmConfig - + Testing... Тествам... - + Test Login Тествай връзката - + Importing %1 e.g. Importing 2012/01/01 Импортирам %1 - + Importing History... Импортирам... - + History Incomplete. Resume + Text on a button that resumes import Непълна информация. Продължи. - + Playback History Imported Историята на просвирените песни е импортирана - - + + Failed Неуспех - + Success Ура! - + Could not contact server Не мога да се свържа със сървъра - + Synchronizing... Синхронизирам... - + Synchronization Finished Синхронизирането приключи @@ -2312,47 +2199,47 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизирай със Spotify - + Re-enable syncing with Spotify Включи отново синхронизирането със Spotify - + Create local copy Създай локално копие - + Subscribe to playlist changes Получавай актуализации за промяната на списъкът - + Re-enable playlist subscription Поднови получаването на промените на списъкът - + Stop subscribing to changes Спри да получаването на на промени в списъкът - + Enable Spotify collaborations Активирай връзката с Spotify - + Disable Spotify collaborations Деактивирай връзката с Spotify - + Stop syncing with Spotify Спри синхронизацията със Spotify @@ -2360,28 +2247,28 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Влизам... - + Failed: %1 Неуспех: %1 - + Logged in as %1 Регистриран като %1 - + Log Out Изход - - + + Log In Влез @@ -2389,7 +2276,7 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Слушай музика и синхронизирай твоите списъци със Spotify Premium @@ -2540,8 +2427,22 @@ You may wish to try re-authenticating. Свържи се с твоята Jabber/XMPP регистрация, за да откриеш твоите приятели + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Локална мрежа + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + Локална мрежа + Automatically connect to Tomahawks on the local network @@ -2558,8 +2459,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Добави към &опашката @@ -2575,56 +2476,56 @@ You may wish to try re-authenticating. - + &Love &Харесай - - - + + + &Go to "%1" &Иди на "%1" - - - + + + Go to "%1" Иди на "%1" - + &Copy Track Link &Копирай адреса на изпълнението - + Copy Album &Link Копирай адресът на албума - + Copy Artist &Link Копирай адресът на изпълнителя - + Un-&Love Не-&харесай - + &Delete Items &Изтрий позициите - + Properties... Подробности: - + &Delete Item &Изтрий позицията @@ -2907,16 +2808,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity Подобие на изпълнителите + Artist Hotttnesss Популярност на изпълнителите + Song Hotttnesss Популярност на песните @@ -2942,92 +2846,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Енергичност + Danceability Танцувалност - + only by ~%1 само на -%1 - + + similar to ~%1 подобни на - %1 - + with genre ~%1 със стил - %1 - - + + from no one от никой - + My Collection Моята колекция - + + from my radio + От Моето радио + + + from %1 radio от %1 станция + + + Variety + Разнообразие + + + + Adventurousness + Откривателност + + very low + Много малко + + + + low + Малко + + + + moderate + Средно + + + + high + Голямо + + + + very high + Много голямо + + + with %1 %2 с %1 %2 - + about %1 BPM около %1 BPM - + about %n minute(s) long около %n минутаоколо %n минути - + about %1 dB около %1 dB - + at around %1%2 %3 около %1 %2 %3 - + in %1 в %1 - + in a %1 key в %1 Октава - + sorted in %1 %2 order сортирано в %1 %2 ред - + with a %1 mood с %1 настроение - + in a %1 style в %1 стил @@ -3117,7 +3064,7 @@ Try tweaking the filters for a new set of songs to play. Listening to "%1" by %2 and loving it! %3 - #fb ♥ "%1" от %2 %3 + "%1" от %2 %3 @@ -3211,10 +3158,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) %n друг%n други - + - %1 people - %1 хора + %n people + %n човек%n човека @@ -3238,6 +3185,14 @@ Try tweaking the filters for a new set of songs to play. Мрежова грешка при извличане на съкратеният адрес. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Песен '%1' от %2 не може да бъде възпроизведена от отдалечен източник + + Tomahawk::Source @@ -3301,7 +3256,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моята колекция @@ -3321,6 +3276,14 @@ enter the displayed PIN number here: въведи генерираният код тук: + + TomahawkSettings + + + Local Network + Локална мрежа + + TomahawkTrayIcon @@ -3527,162 +3490,162 @@ enter the displayed PIN number here: Go forward one page Една страница напред - - - Global Search... - Глобално търсене... - - + Hide Menu Bar Скрий лентата с менюто - + Show Menu Bar Покажи лентата с менюто + + + Search for any artist, album or song... + Търси за всеки Артист, Албум или Песен... + &Main Menu &Основно меню - - - + + + Connect To Peer Свържи се с друг потребител - + Enter peer address: Въведи адресът на отдалеченият потребител: - + Enter peer port: Въведи порт: - + Enter peer key: Въведи ключът за удостоверяване: - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Всички права - запазени. 2010 - 2012 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk @@ -3698,67 +3661,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - Обложка - - - - Track - Песен - - - - Artist - Изпълнител - - - - Album - Албум - - - - Statistics - Статистика - - - + Similar Tracks Подобни песни - + Sorry, but we could not find similar tracks for this song! Съжалявам, но не откривам нито една подобна на тази песен! - + You've listened to this track %n time(s). Ти си слушал тази песен %n път(и)Ти си слушал тази песен %n път(и) - + You've never listened to this track before. Никога не си слушал тази песен преди - + You first listened to it on %1. Първоначално си я слушал на %1 - + You've listened to %1 %n time(s). Слушал си %1 път(и)Слушал си %1 %n път(и) - + You've never listened to %1 before. Никога не си слушал %1 преди @@ -3766,7 +3699,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Съжалявам, твоят филтър %1 не върна никакъв резултат. @@ -3789,7 +3722,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестно @@ -3817,7 +3750,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. Съжалявам, но филтърът '%1' не върна никакви резултати. @@ -3924,7 +3857,7 @@ You can re-send a sync message at any time simply by sending another tweet using SuperCollection - Супер колекция + Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ @@ -4319,7 +4252,10 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - Извинявай.. Аз съм режимът за автоматични отговори изпълзван от Tomahawk. ( http://gettomahawk.com ) Щом получаваш това съобщение, този с който се опитваш да се свържеш вероятно не е на линия. Моля, опитай отново по-късно. + Извинявай.. + Аз съм режимът за автоматични отговори изпълзван от Tomahawk. +(http://gettomahawk.com) +Щом получаваш това съобщение, този с когото се опитваш да се свържеш вероятно не е на линия, така че опитай отново по-късно. @@ -4329,11 +4265,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 8a75f915a..f26befa9c 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - - - - + Top Hits - + Related Artists - - - Artist - - - - + Albums - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - - - - - Play - - - - - Pause - - - - - Next - - - - - Artist - - - - - Album - - - - - social - - - - - love - - - - - resolver - - - - - Time - - - - - Time Left - - - - Shuffle - Repeat - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> + e.g. by SomeArtist - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago - + %n year(s) - + %n month(s) ago - + %n month(s) - + %n week(s) ago - + %n week(s) - + %n day(s) ago - + %n day(s) - + %n hour(s) ago - + %n hour(s) - + %1 minutes ago - + %1 minutes - + just now @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter - - - Cover - - - - - TextLabel - - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -2090,7 +1975,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed - + Success - + Could not contact server - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items - + Properties... - + &Delete Item @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 4ae6b88da..67bf3e5ac 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Formulari - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 Altres Àlbums de %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Formulari - - - + Top Hits Grans Èxits - + Related Artists Artistes Relacionats - - - Artist - Artista - - - + Albums Àlbums - - - Cover - Caràtula - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Anterior - - - - Play - Reprodueix - - - - Pause - Pausa - - - - Next - Següent - - - - Artist - Artista - - - - Album - Àlbum - - - - social - social - - - - love - M'encanta - - - - resolver - - - - - Time - Temps - - - - Time Left - Temps Restant - - - Shuffle Mescla - Repeat Repeteix - - - Low - Baix - - - - High - Alt - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Barra d'Informació - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Formulari - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - Barra d'Informació - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Formulari - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score - Puntuació + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nom @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you reproduït %1 - + played %1 by %2 reproduït %1 per %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - reproduït %1 - - - - played %1 by %2 - reproduït %1 per %2 - - - - added %1 - afegit %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Totes les cançons de %1 a l'àlbum %2 - + All tracks by %1 Totes les cançons de %1 @@ -1336,67 +1244,67 @@ connect and stream from you? QObject - + %n year(s) ago fa %n anyfa %n anys - + %n year(s) %n any%n anys - + %n month(s) ago fa %n mesfa %n mesos - + %n month(s) %n mes%n mesos - + %n week(s) ago fa %n setmanafa %n setmanes - + %n week(s) %n setmana%n setmanes - + %n day(s) ago fa %n diafa %n dies - + %n day(s) %n dia%n dies - + %n hour(s) ago fa %n horafa %n hores - + %n hour(s) %n hora%n hores - + %1 minutes ago fa %1 minut - + %1 minutes %1 minuts - + just now ara mateix @@ -1415,6 +1323,18 @@ connect and stream from you? Status Updaters Actualitzadors d'Estat + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1426,24 +1346,19 @@ connect and stream from you? QueueView - - - InfoBar - Barra d'Informació - - + Open Queue Obre la cua - + Open Queue - %n item(s) Obre la cua - %n elementObre la cua - %n elements - + Close Queue Tanca la cua @@ -1560,11 +1475,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1573,11 +1483,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1656,11 +1561,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1723,11 +1623,6 @@ connect and stream from you? SocialWidget - - - Form - Formulari - Facebook @@ -1738,16 +1633,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Cover - - - - TextLabel - TextLabel - Tweet @@ -1772,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Cançó - + Album Àlbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Totes les cançons disponibles - - + + Show Mostra - - + + Hide Amaga @@ -2050,11 +1935,6 @@ connect and stream from you? SpotifyConfig - - - Form - Formulari - Configure your Spotify account @@ -2082,6 +1962,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Fluxos d'Alta Qualitat @@ -2091,7 +1976,7 @@ connect and stream from you? Llistes de reproducció de Spotify per mantenir sincronitzades: - + Delete Tomahawk playlist when removing synchronization Esborra les llistes de Tomahawk quan es tregui la sincronització @@ -2238,59 +2123,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... S'està comprovant... - + Test Login Comprova l'inici de sessió - + Importing %1 e.g. Importing 2012/01/01 S'està important %1 - + Importing History... S'està important l'historial... - + History Incomplete. Resume + Text on a button that resumes import Historial incomplet... Reprèn - + Playback History Imported S'ha importat l'historial de reproducció - - + + Failed Error - + Success Èxit - + Could not contact server No s'ha pogut contactar amb el servidor - + Synchronizing... - + Synchronization Finished @@ -2298,47 +2184,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronitza amb Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Atura la sincronització amb Spotify @@ -2346,28 +2232,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Iniciant sessió... - + Failed: %1 Error: %1 - + Logged in as %1 - + Log Out - - + + Log In Incia Sessió @@ -2375,7 +2261,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Reprodueix música i sincronitza les llistes de reproducció amb Spotify Premium @@ -2525,8 +2411,22 @@ Torneu a autenticar-vos. Inicieu sessió al vostre compte Jabber/XMPP per conectar-vos amb els amics + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2542,8 +2442,8 @@ Torneu a autenticar-vos. - - + + Add to &Queue &Afegeix a la Cua @@ -2559,56 +2459,56 @@ Torneu a autenticar-vos. - + &Love &M'encanta - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Copia l'Enllaç de la Cançó - + Copy Album &Link - + Copy Artist &Link - + Un-&Love &Treu de les preferides - + &Delete Items &Elimina els Ítems - + Properties... - + &Delete Item &Elimina l'Ítem @@ -2892,16 +2792,19 @@ Intenteu ajustar els filtres per reproduir noves cançons. + Artist Familiarity Semblança amb l'artista + Artist Hotttnesss Rellevància d'Artista + Song Hotttnesss Rellevància de Cançó @@ -2927,92 +2830,135 @@ Intenteu ajustar els filtres per reproduir noves cançons. + Energy Energia + Danceability Ballabilitat - + only by ~%1 només per ~%1 - + + similar to ~%1 semblant a ~%1 - + with genre ~%1 amb el gènere ~%1 - - + + from no one de ningú - + My Collection La Meva Col·lecció - + + from my radio + + + + from %1 radio de la ràdio %1 + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 amb %1 %2 - + about %1 BPM sobre %1 BPM - + about %n minute(s) long sobre %n minut de duradasobre %n minuts de durada - + about %1 dB sobre %1 dB - + at around %1%2 %3 sobre %1%2 %3 - + in %1 en %1 - + in a %1 key en clau de %1 - + sorted in %1 %2 order ordenades en %1 %2 - + with a %1 mood amb l'humor %1 - + in a %1 style amb l'estil %1 @@ -3196,10 +3142,10 @@ Intenteu ajustar els filtres per reproduir noves cançons. %n other(s) %n més%n més - + - %1 people - %1 persones + %n people + @@ -3223,6 +3169,14 @@ Intenteu ajustar els filtres per reproduir noves cançons. Error de la xarxa en analitzar l'enllaç escurçat! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3286,7 +3240,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. TomahawkApp - + My Collection La meva Col·lecció @@ -3306,6 +3260,14 @@ enter the displayed PIN number here: introduïu el PIN aquí: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3512,159 +3474,159 @@ introduïu el PIN aquí: Go forward one page Avança una pàgina - - - Global Search... - Cerca Global... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer Connexió Remota - + Enter peer address: Introduïu l'adreça remota: - + Enter peer port: Introduïu el port remot: - + Enter peer key: Introduïu la clau remota: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk @@ -3680,67 +3642,37 @@ introduïu el PIN aquí: TrackInfoWidget - - Form - Formulari - - - - Cover - Cover - - - - Track - Cançó - - - - Artist - Artista - - - - Album - Àlbum - - - - Statistics - Estadístiques - - - + Similar Tracks Cançons Semblants - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). Heu escoltat aquesta cançó %n cop.Heu escoltat aquesta cançó %n cops. - + You've never listened to this track before. No heu escoltat mai aquesta cançó abans. - + You first listened to it on %1. Vau escoltar aquesta cançó per primer cop el %1. - + You've listened to %1 %n time(s). Heu escoltat %1 %n cop.Heu escoltat %1 %n cops. - + You've never listened to %1 before. No heu escoltat mai %1 abans. @@ -3748,7 +3680,7 @@ introduïu el PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. El filtre '%1' no ha obtingut cap resultat. @@ -3771,7 +3703,7 @@ introduïu el PIN aquí: TreeItemDelegate - + Unknown Desconegut @@ -3799,7 +3731,7 @@ introduïu el PIN aquí: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4311,11 +4243,6 @@ Lletres de la cancó "%1" de %2: ZeroconfConfig - - - Form - Formulari - Local Network configuration diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 1885c083c..83f99d5aa 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Willst du %1 erlauben sich mit dir zu verbinden? - + Allow Streaming Zugriff erlauben - + Deny Access Zugriff verweigern @@ -22,7 +22,7 @@ erlauben sich mit dir zu verbinden? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk will wissen, ob du dich mit %1 verbinden möchtest. @@ -68,18 +68,18 @@ erlauben sich mit dir zu verbinden? Connections - + Verbindungen Connect &All - + &Alle verbinden Disconnect &All - + &Alle trennen @@ -87,7 +87,7 @@ erlauben sich mit dir zu verbinden? Invite - + Einladen @@ -95,7 +95,7 @@ erlauben sich mit dir zu verbinden? Configure Accounts - + Konten konfigurieren @@ -170,123 +170,103 @@ erlauben sich mit dir zu verbinden? Load &XSPF... - + &XSPF laden... U&pdate Collection - + Samml&ung aktualisieren Fully &Rescan Collection - + Sammlung komplett scannen Show Offline Sources - + Offline Sourcen anzeigen &Configure Tomahawk... - + &Konfiguriere Tomahawk... Minimize - + Minimieren Zoom - + Zoom Hide Menu Bar - + Menüleiste ausblenden Diagnostics... - + Diagnose... About &Tomahawk... - + &Über Tomahawk... &Legal Information... - + &Rechtliche Informationen... Check For Updates... - + Nach Updates suchen... &Controls - + S&teuerung &Settings - + &Einstellungen &Help - + &Hilfe &Window - + &Fenster Main Menu - + Hauptmenü AlbumInfoWidget - - Form - Form - - - + Tracklist - + Tracklist - + Other Albums - + Andere Alben - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! Sorry, wir konnten keine anderen Alben für diesen Künstler finden! @@ -296,7 +276,7 @@ erlauben sich mit dir zu verbinden? Sorry, wir konnten keine anderen Lieder für dieses Album finden! - + Other Albums by %1 Andere Alben von %1 @@ -318,49 +298,32 @@ erlauben sich mit dir zu verbinden? ArtistInfoWidget - - Form - Form - - - + Top Hits Top Hits - + Related Artists Ähnliche Künstler - - - Artist - Künstler - - - + Albums Alben - - - Cover - Cover - - - + Sorry, we could not find any albums for this artist! Sorry, wir konnten keine Alben für diesen Künstler finden! - + Sorry, we could not find any related artists! Sorry, wir konnten keine ähnlichen Künstler finden! - + Sorry, we could not find any top hits for this artist! Sorry, wir konnten keine Lieder für diesen Künstler finden! @@ -368,122 +331,55 @@ erlauben sich mit dir zu verbinden? AudioControls - - Prev - Zurück - - - - Play - Abspielen - - - - Pause - Pause - - - - Next - Weiter - - - - Artist - Künstler - - - - Album - Album - - - - social - Sozial - - - - love - Lieben - - - - resolver - - - - - Time - Zeit - - - - Time Left - Zeit verbleibend - - - Shuffle Zufall - Repeat Wiederholen - - - Low - Niedrig - - - - High - Hoch - Time Elapsed - + Abgelaufene Zeit Time Remaining - + Verbleibende Zeit Playing from %1 - + Wiedergabe von %1 Share - + Teilen Love - + Lieben AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk konnte '%1' von %2 nicht finden - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk konnte den Künstler '%1' nicht finden - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk konnte das Album '%1' von %2 nicht finden @@ -536,11 +432,6 @@ erlauben sich mit dir zu verbinden? ContextWidget - - - InfoBar - Infoleiste - @@ -563,7 +454,7 @@ erlauben sich mit dir zu verbinden? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk ist abgestürzt. Bitte informiere uns darüber! Tomahawk hat einen Fehlerbericht für dich erstellt, der uns dabei helfen kann die Stabilität zukünftiger Versionen zu verbessern. Du kannst diesen Bericht nun direkt an die Tomahawk Entwickler abschicken.</p></body></html> @@ -643,12 +534,12 @@ erlauben sich mit dir zu verbinden? &Copy to Clipboard - + In die Zwischenablage &kopieren Open &Log-file - + &Log-Datei öffnen @@ -656,97 +547,97 @@ erlauben sich mit dir zu verbinden? Steer this station: - + Steuere diese Station: Much less - + Viel weniger Less - + Weniger A bit less - + Etwas weniger Keep at current - + So belassen A bit more - + Etwas mehr More - + Mehr Much more - + Viel mehr Tempo - + Tempo Loudness - + Lautstärke Danceability - + Tanzbarkeit Energy - + Energie Song Hotttnesss - + Popularität des Liedes Artist Hotttnesss - + Popularität des Künstlers Artist Familiarity - + Ähnlichkeit Künstler By Description - + Von der Beschreibung Enter a description - + Gib eine Beschreibung ein Apply steering command - + Steuerkommando anwenden Reset all steering commands - + Setze alle Steuerkommandos zurück @@ -754,7 +645,7 @@ erlauben sich mit dir zu verbinden? Filter... - + Filtern... @@ -762,20 +653,12 @@ erlauben sich mit dir zu verbinden? This playlist is currently empty. - + Diese Playlist ist momentan leer. This playlist is currently empty. Add some tracks to it and enjoy the music! - - - - - GlobalSearchWidget - - - Form - Form + Diese Playlist ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik! @@ -788,11 +671,6 @@ erlauben sich mit dir zu verbinden? InfoBar - - - InfoBar - Infoleiste - Filter... @@ -801,11 +679,6 @@ erlauben sich mit dir zu verbinden? LastFmConfig - - - Form - Formular - Scrobble tracks to Last.fm @@ -834,7 +707,7 @@ erlauben sich mit dir zu verbinden? Synchronize Loved Tracks - + Lieblingslieder synchronisieren @@ -912,7 +785,7 @@ erlauben sich mit dir zu verbinden? Top Loved Tracks - + Meist-geliebte Songs @@ -922,17 +795,17 @@ erlauben sich mit dir zu verbinden? The most loved tracks from all your friends - + Die meist-geliebten Songs all deiner Freunde All of your loved tracks - + Deine Lieblingslieder All of %1's loved tracks - + %1's Lieblingslieder @@ -942,11 +815,6 @@ erlauben sich mit dir zu verbinden? MetadataEditor - - - Form - Form - Tags @@ -985,7 +853,7 @@ erlauben sich mit dir zu verbinden? Track Number: - + Lied Nummer: @@ -1050,7 +918,7 @@ erlauben sich mit dir zu verbinden? Properties - + Eigenschaften @@ -1148,12 +1016,47 @@ erlauben sich mit dir zu verbinden? - Score - Wertung + Accuracy + Treffsicherheit + + + + Perfect match + Perfekt + + + + Very good match + Sehr gut + + + + Good match + Gut + + + + Vague match + Vage + + + + Bad match + Schlecht + + + + Very bad match + Sehr schlecht + + + + Not available + Nicht verfügbar - + Name Name @@ -1161,12 +1064,12 @@ erlauben sich mit dir zu verbinden? PlaylistItemDelegate - + played %1 by you angehört %1 von dir - + played %1 by %2 angehört %1 von %2 @@ -1174,51 +1077,56 @@ erlauben sich mit dir zu verbinden? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you angehört %1 von dir - + played %1 by %2 - hörte %1 von %2 + e.g. played 3 hours ago by SomeSource + angehört %1 von %2 - + added %1 - fügte %1 hinzu + e.g. added 3 hours ago + hinzugefügt %1 - + by <b>%1</b> - + e.g. by SomeArtist + von <b>%1</b> - + by <b>%1</b> on <b>%2</b> - + e.g. by SomeArtist on SomeAlbum + von <b>%1</b> auf <b>%2</b> PlaylistModel - + A playlist you created %1. - + Eine Playlist die du %1 erstellt hast. - - + + A playlist by %1, created %2. - + Eine Playlist von %1, erstellt %2. - + All tracks by %1 on album %2 Alle Lieder von %1 auf dem Album %2 - + All tracks by %1 Alle Lieder von %1 @@ -1337,67 +1245,67 @@ erlauben sich mit dir zu verbinden? QObject - + %n year(s) ago vor %n Jahrvor %n Jahren - + %n year(s) %n Jahr%n Jahre - + %n month(s) ago vor %n Monatvor %n Monaten - + %n month(s) %n Monat%n Monate - + %n week(s) ago vor %n Wochevor %n Wochen - + %n week(s) %n Woche%n Wochen - + %n day(s) ago vor %n Tagvor %n Tagen - + %n day(s) %n Tag%n Tage - + %n hour(s) ago vor %n Stundevor %n Stunden - + %n hour(s) %n Stunde%n Stunden - + %1 minutes ago vor %1 Minuten - + %1 minutes %1 Minuten - + just now gerade eben @@ -1416,6 +1324,18 @@ erlauben sich mit dir zu verbinden? Status Updaters Status-Updater + + + + %1 Config + %1 Konfiguration + + + + + %1 Configuration + %1 Konfiguration + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ erlauben sich mit dir zu verbinden? QueueView - - - InfoBar - Infoleiste - - + Open Queue Warteschlange öffnen - + Open Queue - %n item(s) Warteschlange öffnen - Ein LiedWarteschlange öffnen - %n Lieder - + Close Queue Warteschlange schliessen @@ -1521,22 +1436,22 @@ erlauben sich mit dir zu verbinden? Install from file - + Von Datei installieren Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Konfiguriere Konten und Dienste die Tomahawk verwendet um Musik zu finden, sich mit Freunden zu verbinden oder deinen Status zu aktualisieren. Manage how Tomahawk finds music on your computer. - + Steuere wie Tomahawk Musik auf deinem System findet. Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Konfiguriere Tomahawk's erweiterte Einstellungen, wie Netzwerk Optionen, Browser Interaktion und mehr. @@ -1561,111 +1476,96 @@ erlauben sich mit dir zu verbinden? Settings_Accounts - - - Form - - Filter by capability: - + Nach Fähigkeit filtern: Settings_Advanced - - - Form - - Remote Peer Connection Method - + Verbindung zu anderen Tomahawks None (outgoing connections only) - + Keine (nur ausgehende Verbindungen möglich) Use UPnP to establish port forward (recommended) - + UPnP für Port-Weiterleitung verwenden (empfohlen) Use static external IP address/host name and port - + Statische externe IP Adresse / Hostnamen und Port verwenden Set this to your external IP address or host name. Make sure to forward the port to this host! - + Stelle hier deine externe IP Adresse oder Hostnamen ein. Du musst den Port selbst an diesen Rechner weiterleiten! Static Host Name: - + Statischer Rechnername: Static Port: - + Statischer Port: SOCKS Proxy - + SOCKS Proxy Use SOCKS Proxy - + SOCKS Proxy verwenden Proxy Settings... - + Proxy-Einstellungen… Other Settings - + Andere Einstellungen Allow web browsers to interact with Tomahawk (recommended) - + Erlaube Web Browser mit Tomahawk zu interagieren (empfohlen) Send reports after Tomahawk crashed - + Übermittlung von Fehlerberichten nach Tomahawk Absturz Show notification when a new song starts to play - + Ankündigung einblenden wenn ein neues Lied startet Clear All Access Control Entries - + Alle erteilten Zugriffsrechte löschen Settings_Collection - - - Form - - Path to scan for music files: - + Pfad zu den Musikdateien: @@ -1673,22 +1573,22 @@ erlauben sich mit dir zu verbinden? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + The Echo Nest kann die Metadaten deiner Sammlung analysieren um dir personalisierte Radio Stationen anzubieten. Wenn diese Option aktiviert ist, kannst du (und all deine Freunde) Automatische Playlisten und Stationen erstellen die auf deinen persönlichen Musikgeschmack zugeschnitten wurden. Upload collection list to The Echo Nest to enable user radio - + Liste der aktuellen Sammlung an Echo Nest übermitteln, um User Radio zu aktivieren Watch for changes - + Automatisch aktualisieren Time between scans, in seconds: - + Zeitinterval (in Sekunden) zwischen zwei Scans: @@ -1696,12 +1596,12 @@ erlauben sich mit dir zu verbinden? On - + Ein Off - + Aus @@ -1724,11 +1624,6 @@ erlauben sich mit dir zu verbinden? SocialWidget - - - Form - Formular - Facebook @@ -1739,16 +1634,6 @@ erlauben sich mit dir zu verbinden? Twitter Twitter - - - Cover - Cover - - - - TextLabel - TextLabel - Tweet @@ -1773,44 +1658,44 @@ erlauben sich mit dir zu verbinden? SourceDelegate - + Track Lied - + Album Album - + Artist Künstler - + Local Lokal - + Top 10 Top 10 - + All available tracks Alle verfügbaren Stücke - - + + Show Einblenden - - + + Hide Verstecken @@ -1963,7 +1848,7 @@ erlauben sich mit dir zu verbinden? Delete - + Löschen @@ -2051,11 +1936,6 @@ erlauben sich mit dir zu verbinden? SpotifyConfig - - - Form - Formular - Configure your Spotify account @@ -2079,10 +1959,15 @@ erlauben sich mit dir zu verbinden? Select All - + Alles markieren + Sync Starred tracks to Loved tracks + Starred Tracks mit Lieblingsliedern synchronisieren + + + High Quality Streams Hohe Stream Qualität @@ -2092,7 +1977,7 @@ erlauben sich mit dir zu verbinden? Spotify Listen die du synchronisieren willst: - + Delete Tomahawk playlist when removing synchronization Playlist in Tomahawk löschen wenn Synchronisierung entfernt wird @@ -2112,7 +1997,7 @@ erlauben sich mit dir zu verbinden? Delete associated Spotify playlist? - + Möchtest du die zugehörige Spotify Playlist löschen? @@ -2189,7 +2074,7 @@ erlauben sich mit dir zu verbinden? Google Address: - + Google Adresse: @@ -2215,7 +2100,7 @@ erlauben sich mit dir zu verbinden? Enter Google Address - + Google Adresse eingeben @@ -2239,107 +2124,108 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::LastFmConfig - + Testing... Teste... - + Test Login Login testen - + Importing %1 e.g. Importing 2012/01/01 Importiere %1 - + Importing History... Importiere Historie... - + History Incomplete. Resume + Text on a button that resumes import Historie unvollständig. Fortfahren - + Playback History Imported Lieder-Historie importiert - - + + Failed Fehlgeschlagen - + Success Erfolgreich - + Could not contact server Konnte den Server nicht erreichen! - + Synchronizing... - + Synchronisieren... - + Synchronization Finished - + Synchronisierung abgeschlossen Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Mit Spotify synchronisieren - + Re-enable syncing with Spotify Synchronisierung mit Spotify re-aktivieren - + Create local copy - + Lokale Kopie erstellen - + Subscribe to playlist changes - + Playlist Änderungen abonnieren - + Re-enable playlist subscription - + Playlist Abonnement re-aktivieren - + Stop subscribing to changes - + Abonnement stoppen - + Enable Spotify collaborations - + Spotify Kollaboration aktivieren - + Disable Spotify collaborations - + Spotify Kollaboration deaktivieren - + Stop syncing with Spotify Synchronisation beenden @@ -2347,28 +2233,28 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Anmelden... - + Failed: %1 Fehler: %1 - + Logged in as %1 - + Angemeldet als %1 - + Log Out - + Abmelden - - + + Log In Anmelden @@ -2376,7 +2262,7 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Musik abspielen und Playlisten synchronisieren mit Spotify Premium @@ -2524,8 +2410,22 @@ You may wish to try re-authenticating. Benutze dein Jabber/XMPP-Konto, um dich mit Freunden zu verbinden + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Lokales Netzwerk + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + Lokales Netzwerk + Automatically connect to Tomahawks on the local network @@ -2541,8 +2441,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue In &Warteschlange einreihen @@ -2558,56 +2458,56 @@ You may wish to try re-authenticating. - + &Love &Lieblingslied - - - + + + &Go to "%1" - + &Gehe zu "%1" - - - + + + Go to "%1" - + Gehe zu "%1" - + &Copy Track Link &Kopiere Link zu diesem Stück - + Copy Album &Link Album-&Link kopieren - + Copy Artist &Link Künstler-&Link kopieren - + Un-&Love Kein &Lieblingslied - + &Delete Items Elemente &entfernen - + Properties... - + Eigenschaften... - + &Delete Item Element &entfernen @@ -2891,16 +2791,19 @@ Versuch die Filter anzupassen für neue Lieder. + Artist Familiarity Ähnlichkeit + Artist Hotttnesss Popularität des Künstlers + Song Hotttnesss Popularität des Liedes @@ -2926,92 +2829,135 @@ Versuch die Filter anzupassen für neue Lieder. + Energy Energie + Danceability Tanzbarkeit - + only by ~%1 nur von %1 - + + similar to ~%1 ähnlich zu %1 - + with genre ~%1 aus dem Genre %1 - - + + from no one von niemandem - + My Collection Meine Sammlung - + + from my radio + von meinem Radio + + + from %1 radio aus dem %1 Radio + + + Variety + Vielfalt + + + + Adventurousness + Abenteuerlichkeit + + very low + sehr niedrig + + + + low + niedrig + + + + moderate + mäßig + + + + high + hoch + + + + very high + sehr hoch + + + with %1 %2 mit %1 %2 - + about %1 BPM ungefähr %1 BPM - + about %n minute(s) long ungefähr eine Minute langungefähr %n Minuten lang - + about %1 dB ungefähr %1 dB - + at around %1%2 %3 bei ungefähr %1%2 %3 - + in %1 in %1 - + in a %1 key in der Tonart %1 - + sorted in %1 %2 order sortiert nach %1 %2 - + with a %1 mood mit einer %1 Stimmung - + in a %1 style im %1 Stil @@ -3160,12 +3106,12 @@ Versuch die Filter anzupassen für neue Lieder. Would you like to delete the playlist <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Willst du die Playlist <b>"%2"</b> löschen? Delete - + Löschen @@ -3195,10 +3141,10 @@ Versuch die Filter anzupassen für neue Lieder. %n other(s) %n anderer%n andere - + - %1 people - %1 Leute + %n people + eine Person%n Personen @@ -3222,6 +3168,14 @@ Versuch die Filter anzupassen für neue Lieder. Konnte den Kurzlink nicht auflösen! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Lied '%1' von %2 ist nicht abspielbar. + + Tomahawk::Source @@ -3285,7 +3239,7 @@ Versuch die Filter anzupassen für neue Lieder. TomahawkApp - + My Collection Meine Sammlung @@ -3305,6 +3259,14 @@ enter the displayed PIN number here: Tomahawk auf Twitter's Website authentifiziert hast: + + TomahawkSettings + + + Local Network + Lokales Netzwerk + + TomahawkTrayIcon @@ -3511,159 +3473,159 @@ Tomahawk auf Twitter's Website authentifiziert hast: Go forward one page Gehe eine Seite vorwärts - - - Global Search... - Globale Suche... - - + Hide Menu Bar - + Menüleiste ausblenden - + Show Menu Bar - + Menüleiste einblenden + + + + Search for any artist, album or song... + Suche nach Künstler, Album oder Lied... &Main Menu - + Haupt&menü - - - + + + Connect To Peer Mit anderem Tomahawk verbinden - + Enter peer address: Gib die Adresse der Gegenstelle ein: - + Enter peer port: Gib den Port der Gegenstelle ein: - + Enter peer key: Gib den Schlüssel der Gegenstelle ein: - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play - + Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copright 2010 - 2012 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk @@ -3679,67 +3641,37 @@ Tomahawk auf Twitter's Website authentifiziert hast: TrackInfoWidget - - Form - Formular - - - - Cover - Cover - - - - Track - Lied - - - - Artist - Künstler - - - - Album - Album - - - - Statistics - Statistiken - - - + Similar Tracks Ähnliche Lieder - + Sorry, but we could not find similar tracks for this song! Sorry, wir konnten keine ähnlichen Lieder finden! - + You've listened to this track %n time(s). Du hast dieses Lied einmal gehört.Du hast dieses Lied %n mal gehört. - + You've never listened to this track before. Du hast dieses Lied noch nie angehört. - + You first listened to it on %1. Du hast dieses Lied zum ersten mal am %1 gehört. - + You've listened to %1 %n time(s). Du hast %1 einmal angehört.Du hast %1 %n mal angehört. - + You've never listened to %1 before. Du hast %1 vorher noch nie gehört. @@ -3747,7 +3679,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3758,19 +3690,19 @@ Tomahawk auf Twitter's Website authentifiziert hast: from streaming artist - track from friend - + von to streaming artist - track to friend - + zu TreeItemDelegate - + Unknown Unbekannt @@ -3798,7 +3730,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TreeView - + Sorry, your filter '%1' did not match any results. Sorry, dein Filter '%1' konnte keine Ergebnisse finden. @@ -3838,7 +3770,11 @@ If you only want to post tweets, you're done. If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! You can re-send a sync message at any time simply by sending another tweet using the button. - + Wenn du lediglich Tweets abschicken willst, bist du nun fertig. + +Wenn du Tomahawk mit deinen Freunden über Twitter verbinden willst, wähle nun einen Tweet-Typ aus und clicke den untenstehenden Button um eine Sync-Nachricht abzuschicken. Ihr müsst euch gegenseitig auf Twitter folgen, da Tomahawk über 'Direct Messages' kommuniziert. Bitte seid geduldig -- die initiale Verbindung kann ein paar Minuten dauern! + +Du kannst jederzeit eine neue Sync-Nachricht abschicken. @@ -3876,7 +3812,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Twitter Username eingeben @@ -3884,7 +3820,7 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Diese Playlist ist leer! @@ -3919,7 +3855,7 @@ You can re-send a sync message at any time simply by sending another tweet using Sorry, we could not find any recent plays! - + Es konnten keine zuletzt gehörten Songs gefunden werden! @@ -3942,7 +3878,7 @@ You can re-send a sync message at any time simply by sending another tweet using Recently played tracks - + Zuletzt gehörte Lieder @@ -3992,14 +3928,14 @@ Begriffe für %1: Hotttness for %1: %2 - + Hotttness für %1: %2 Familiarity for %1: %2 - + Bekanntheitsgrad für %1: %2 @@ -4254,7 +4190,7 @@ Lyrics for "%1" by %2: Enter Jabber ID - + Jabber ID eingeben @@ -4294,7 +4230,7 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! @@ -4304,11 +4240,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Form - Local Network configuration diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 063fa1dd2..10e5fae82 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Φόρμα - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 Άλλα Άλμπουμ από %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Φόρμα - - - + Top Hits - + Related Artists Παρόμοιοι Καλλιτέχνες - - - Artist - Καλλιτέχνης - - - + Albums Άλμπουμ - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Προηγ - - - - Play - Αναπαραγωγή - - - - Pause - Παύση - - - - Next - Επόμενο - - - - Artist - Καλλιτέχνης - - - - Album - Άλμπουμ - - - - social - - - - - love - αγάπησε - - - - resolver - - - - - Time - Χρόνος - - - - Time Left - Απομένει - - - Shuffle Τυχαία σειρά - Repeat Επανάληψη - - - Low - Χαμηλή - - - - High - Υψηλή - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Φόρμα - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - InfoBar - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Φόρμα - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name Όνομα @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you παίχθηκε %1 από εσάς - + played %1 by %2 παίχθηκε %1 από τον/την %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - παίχθηκε %1 από εσάς - - - - played %1 by %2 - παίχθηκε %1 από τον/την %2 - - - - added %1 - προστέθηκε το %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Όλα τα κομμάτια από τον/την %1 στο άλμπουμ %2 - + All tracks by %1 Όλα τα κομμάτια από τον/την %1 @@ -1336,67 +1244,67 @@ connect and stream from you? QObject - + %n year(s) ago %n χρόνο πριν%n χρόνια πριν - + %n year(s) %n χρόνο%n χρόνια - + %n month(s) ago %n μήνα πριν%n μήνες πριν - + %n month(s) %n μήνα%n μήνες - + %n week(s) ago %n εβδομάδα πριν%n εβδομάδες πριν - + %n week(s) %n εβδομάδα%n εβδομάδες - + %n day(s) ago %n μέρα πριν%n μέρες πριν - + %n day(s) %n μέρα %n μέρες - + %n hour(s) ago %n ώρα πριν%n ώρες πριν - + %n hour(s) %n ώρα%n ώρες - + %1 minutes ago %1 λεπτά πριν - + %1 minutes %1 λεπτά - + just now μόλις τώρα @@ -1415,6 +1323,18 @@ connect and stream from you? Status Updaters Ανανεωτές Κατάστασης + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1426,24 +1346,19 @@ connect and stream from you? QueueView - - - InfoBar - Γραμμή Πληροφοριών - - + Open Queue Άνοιγμα Σειράς - + Open Queue - %n item(s) Άνοιγμα Σειράς - %n αντικείμενοΆνοιγμα Σειράς - %n αντικείμενα - + Close Queue Κλείσιμο Σειράς @@ -1560,11 +1475,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1573,11 +1483,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1656,11 +1561,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1723,11 +1623,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1738,16 +1633,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Εξώφυλλο - - - - TextLabel - - Tweet @@ -1772,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Κομμάτι - + Album Άλμπουμ - + Artist Καλλιτέχνης - + Local Τοπικό - + Top 10 Κορυφαία 10 - + All available tracks Όλα τα διαθέσιμα τραγούδια - - + + Show Προβολή - - + + Hide Απόκρυψη @@ -2050,11 +1935,6 @@ connect and stream from you? SpotifyConfig - - - Form - Μορφή - Configure your Spotify account @@ -2082,6 +1962,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -2091,7 +1976,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2238,59 +2123,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed Αποτυχία - + Success Επιτυχία - + Could not contact server Δεν ήταν δυνατή η επικοινωνία με τον εξυπηρετητή - + Synchronizing... Συγχρονισμός... - + Synchronization Finished Συγχρονισμός Τελείωσε @@ -2298,47 +2184,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Συγχρονισμός με Spotify - + Re-enable syncing with Spotify - + Create local copy Δημιουργία τοπικού αντιγράφου - + Subscribe to playlist changes Εγγραφή σε μεταβολές λίστας αναπαραγωγής - + Re-enable playlist subscription Επανενεργοποίηση εγγραφής στην λίστα αναπαραγωγής - + Stop subscribing to changes Διακοπή εγγραφής σε μεταβολές - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Διακοπή συγχρονισμού με Spotify @@ -2346,28 +2232,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Σύνδεση... - + Failed: %1 Αποτυχία: %1 - + Logged in as %1 Σύνδεση ως %1 - + Log Out Αποσύνδεση - - + + Log In Σύνδεση @@ -2375,7 +2261,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Αναπαράξτε μουσική από και συγχρονίστε τις λίστες αναπαραγωγής σας με το Spotify Premium @@ -2525,8 +2411,22 @@ You may wish to try re-authenticating. Συνδεθείτε στον λογαριασμό Jabber/XMPP σας για να συνδεθείτε με τους φίλους σας + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2542,8 +2442,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Προσθήκη στην &Σειρά @@ -2559,56 +2459,56 @@ You may wish to try re-authenticating. - + &Love &Αγάπησε - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Αντιγραφή Συνδέσμου Κομματιού - + Copy Album &Link - + Copy Artist &Link - + Un-&Love &Μίσησε - + &Delete Items &Διαγραφή Αντικειμένων - + Properties... Ιδιότητες - + &Delete Item &Διαγραφή Αντικειμένου @@ -2892,16 +2792,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2927,92 +2830,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Ενέργεια + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Η Συλλογή Μου - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3196,10 +3142,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - %1 άτομα + %n people + @@ -3223,6 +3169,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3286,7 +3240,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Η Συλλογή μου @@ -3305,6 +3259,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3511,159 +3473,159 @@ enter the displayed PIN number here: Go forward one page Πήγαινε μπροστά μία σελίδα - - - Global Search... - Αναζήτηση Παντού... - - + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer Σύνδεση Σε Ομότιμο Κόμβο - + Enter peer address: Εισαγωγή διεύθυνσης ομότιμου κόμβου: - + Enter peer port: Εισαγωγή θύρας ομότιμου κόμβου: - + Enter peer key: Εισαγωγή κλειδιού ομότιμου κόμβου: - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk @@ -3679,67 +3641,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Φόρμα - - - - Cover - Εκτέλεση - - - - Track - Κομμάτι - - - - Artist - Καλλιτέχνης - - - - Album - Άλμπουμ - - - - Statistics - Στατιστικά - - - + Similar Tracks Παρόμοια Κομμάτια - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). Έχετε ακούσει το κομμάτι %n φορά.Έχετε ακούσει το κομμάτι %n φορές. - + You've never listened to this track before. Δεν έχετε ακούσει αυτό το κομμάτι παλιότερα. - + You first listened to it on %1. Το ακούσατε για πρώτη φορά στις %1. - + You've listened to %1 %n time(s). Ακούσατε το %1 %n φορά.Ακούσατε το %1 %n φορές. - + You've never listened to %1 before. Δεν έχετε ακούσει το %1 ποτέ πριν. @@ -3747,7 +3679,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Συγγνώμη, το φίλτρο «%1» δεν αντιστοίχισε αποτελέσματα. @@ -3770,7 +3702,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Άγνωστο @@ -3798,7 +3730,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4299,11 +4231,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 1875adf7b..040e90821 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Allow %1 to connect and stream from you? - + Allow Streaming Allow Streaming - + Deny Access Deny Access @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk needs you to decide whether %1 is allowed to connect. @@ -256,37 +256,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Form - - - + Tracklist Tracklist - + Other Albums Other Albums - - Cover - Cover - - - - Album - Album - - - - Artist - Artist - - - + Sorry, we could not find any other albums for this artist! Sorry, we could not find any other albums for this artist! @@ -296,7 +276,7 @@ connect and stream from you? Sorry, we could not find any tracks for this album! - + Other Albums by %1 Other Albums by %1 @@ -318,49 +298,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Form - - - + Top Hits Top Hits - + Related Artists Related Artists - - - Artist - Artist - - - + Albums Albums - - - Cover - Cover - - - + Sorry, we could not find any albums for this artist! Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! Sorry, we could not find any top hits for this artist! @@ -368,82 +331,15 @@ connect and stream from you? AudioControls - - Prev - Prev - - - - Play - Play - - - - Pause - Pause - - - - Next - Next - - - - Artist - Artist - - - - Album - Album - - - - social - social - - - - love - love - - - - resolver - resolver - - - - Time - Time - - - - Time Left - Time Left - - - Shuffle Shuffle - Repeat Repeat - - - Low - Low - - - - High - High - Time Elapsed @@ -473,17 +369,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -536,11 +432,6 @@ connect and stream from you? ContextWidget - - - InfoBar - InfoBar - @@ -770,14 +661,6 @@ connect and stream from you? This playlist is currently empty. Add some tracks to it and enjoy the music! - - GlobalSearchWidget - - - Form - Form - - IndexingJobItem @@ -788,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - InfoBar - Filter... @@ -801,11 +679,6 @@ connect and stream from you? LastFmConfig - - - Form - Form - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ connect and stream from you? MetadataEditor - - - Form - Form - Tags @@ -1148,12 +1016,47 @@ connect and stream from you? - Score - Score + Accuracy + Accuracy + + + + Perfect match + Perfect match + + + + Very good match + Very good match + + + + Good match + Good match + + + + Vague match + Vague match + + + + Bad match + Bad match + + + + Very bad match + Very bad match + + + + Not available + Not available - + Name Name @@ -1161,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you played %1 by you - + played %1 by %2 played %1 by %2 @@ -1174,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you played %1 by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource played %1 by %2 - + added %1 + e.g. added 3 hours ago added %1 - + by <b>%1</b> + e.g. by SomeArtist by <b>%1</b> - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum by <b>%1</b> on <b>%2</b> PlaylistModel - + A playlist you created %1. A playlist you created %1. - - + + A playlist by %1, created %2. A playlist by %1, created %2. - + All tracks by %1 on album %2 All tracks by %1 on album %2 - + All tracks by %1 All tracks by %1 @@ -1337,67 +1245,67 @@ connect and stream from you? QObject - + %n year(s) ago %n year ago%n years ago - + %n year(s) %n year%n years - + %n month(s) ago %n month ago%n months ago - + %n month(s) %n month%n months - + %n week(s) ago %n week ago%n weeks ago - + %n week(s) %n week%n weeks - + %n day(s) ago %n day ago%n days ago - + %n day(s) %n day%n days - + %n hour(s) ago %n hour ago%n hours ago - + %n hour(s) %n hour%n hours - + %1 minutes ago %1 minutes ago - + %1 minutes %1 minutes - + just now just now @@ -1416,6 +1324,18 @@ connect and stream from you? Status Updaters Status Updaters + + + + %1 Config + %1 Config + + + + + %1 Configuration + %1 Configuration + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ connect and stream from you? QueueView - - - InfoBar - InfoBar - - + Open Queue Open Queue - + Open Queue - %n item(s) Open Queue - %n itemOpen Queue - %n items - + Close Queue Close Queue @@ -1561,11 +1476,6 @@ connect and stream from you? Settings_Accounts - - - Form - Form - Filter by capability: @@ -1574,11 +1484,6 @@ connect and stream from you? Settings_Advanced - - - Form - Form - Remote Peer Connection Method @@ -1657,11 +1562,6 @@ connect and stream from you? Settings_Collection - - - Form - Form - Path to scan for music files: @@ -1727,11 +1627,6 @@ connect and stream from you? SocialWidget - - - Form - Form - Facebook @@ -1742,16 +1637,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Cover - - - - TextLabel - TextLabel - Tweet @@ -1776,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track Track - + Album Album - + Artist Artist - + Local Local - + Top 10 Top 10 - + All available tracks All available tracks - - + + Show Show - - + + Hide Hide @@ -2054,11 +1939,6 @@ connect and stream from you? SpotifyConfig - - - Form - Form - Configure your Spotify account @@ -2086,6 +1966,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + Sync Starred tracks to Loved tracks + + + High Quality Streams High Quality Streams @@ -2095,7 +1980,7 @@ connect and stream from you? Spotify playlists to keep in sync: - + Delete Tomahawk playlist when removing synchronization Delete Tomahawk playlist when removing synchronization @@ -2242,59 +2127,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... Testing... - + Test Login Test Login - + Importing %1 e.g. Importing 2012/01/01 Importing %1 - + Importing History... Importing History... - + History Incomplete. Resume + Text on a button that resumes import History Incomplete. Resume - + Playback History Imported Playback History Imported - - + + Failed Failed - + Success Success - + Could not contact server Could not contact server - + Synchronizing... Synchronizing... - + Synchronization Finished Synchronization Finished @@ -2302,47 +2188,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sync with Spotify - + Re-enable syncing with Spotify Re-enable syncing with Spotify - + Create local copy Create local copy - + Subscribe to playlist changes Subscribe to playlist changes - + Re-enable playlist subscription Re-enable playlist subscription - + Stop subscribing to changes Stop subscribing to changes - + Enable Spotify collaborations Enable Spotify collaborations - + Disable Spotify collaborations Disable Spotify collaborations - + Stop syncing with Spotify Stop syncing with Spotify @@ -2350,28 +2236,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Logging in... - + Failed: %1 Failed: %1 - + Logged in as %1 Logged in as %1 - + Log Out Log Out - - + + Log In Log In @@ -2379,7 +2265,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Play music from and sync your playlists with Spotify Premium @@ -2529,8 +2415,22 @@ You may wish to try re-authenticating. Log on to your Jabber/XMPP account to connect to your friends + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Local Network + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + Local Network + Automatically connect to Tomahawks on the local network @@ -2546,8 +2446,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Add to &Queue @@ -2563,56 +2463,56 @@ You may wish to try re-authenticating. - + &Love &Love - - - + + + &Go to "%1" &Go to "%1" - - - + + + Go to "%1" Go to "%1" - + &Copy Track Link &Copy Track Link - + Copy Album &Link Copy Album &Link - + Copy Artist &Link Copy Artist &Link - + Un-&Love Un-&Love - + &Delete Items &Delete Items - + Properties... Properties... - + &Delete Item &Delete Item @@ -2896,16 +2796,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity Artist Familiarity + Artist Hotttnesss Artist Hotttnesss + Song Hotttnesss Song Hotttnesss @@ -2931,92 +2834,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Energy + Danceability Danceability - + only by ~%1 only by ~%1 - + + similar to ~%1 similar to ~%1 - + with genre ~%1 with genre ~%1 - - + + from no one from no one - + My Collection My Collection - + + from my radio + from my radio + + + from %1 radio from %1 radio + + + Variety + Variety + + + + Adventurousness + Adventurousness + + very low + very low + + + + low + low + + + + moderate + moderate + + + + high + high + + + + very high + very high + + + with %1 %2 with %1 %2 - + about %1 BPM about %1 BPM - + about %n minute(s) long about %n minute longabout %n minutes long - + about %1 dB about %1 dB - + at around %1%2 %3 at around %1%2 %3 - + in %1 in %1 - + in a %1 key in a %1 key - + sorted in %1 %2 order sorted in %1 %2 order - + with a %1 mood with a %1 mood - + in a %1 style in a %1 style @@ -3200,10 +3146,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) %n other%n others - + - %1 people - %1 people + %n people + %n people%n people @@ -3227,6 +3173,14 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Track '%1' by %2 is not streamable. + + Tomahawk::Source @@ -3290,7 +3244,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection My Collection @@ -3310,6 +3264,14 @@ enter the displayed PIN number here: enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + Local Network + + TomahawkTrayIcon @@ -3516,159 +3478,159 @@ enter the displayed PIN number here: Go forward one page Go forward one page - - - Global Search... - Global Search... - - + Hide Menu Bar Hide Menu Bar - + Show Menu Bar Show Menu Bar + + + Search for any artist, album or song... + Search for any artist, album or song... + &Main Menu &Main Menu - - - + + + Connect To Peer Connect To Peer - + Enter peer address: Enter peer address: - + Enter peer port: Enter peer port: - + Enter peer key: Enter peer key: - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk @@ -3684,67 +3646,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Form - - - - Cover - Cover - - - - Track - Track - - - - Artist - Artist - - - - Album - Album - - - - Statistics - Statistics - - - + Similar Tracks Similar Tracks - + Sorry, but we could not find similar tracks for this song! Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). You've listened to this track %n time.You've listened to this track %n times. - + You've never listened to this track before. You've never listened to this track before. - + You first listened to it on %1. You first listened to it on %1. - + You've listened to %1 %n time(s). You've listened to %1 %n time.You've listened to %1 %n times. - + You've never listened to %1 before. You've never listened to %1 before. @@ -3752,7 +3684,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Sorry, your filter '%1' did not match any results. @@ -3775,7 +3707,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Unknown @@ -3803,7 +3735,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. Sorry, your filter '%1' did not match any results. @@ -4319,11 +4251,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Form - Local Network configuration diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 336d13d03..90c1d0bce 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -2,28 +2,29 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + ¿Permite a %1 +conectarse a usted y transmitir música? - + Allow Streaming - + Autorizar streaming - + Deny Access - + Denegar acceso ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. - + Tomahawk necesita que decida si %1 está autorizado a conectarse @@ -41,7 +42,7 @@ connect and stream from you? Add Account - Añadir Cuenta + Añadir cuenta @@ -67,18 +68,18 @@ connect and stream from you? Connections - + Conexiones Connect &All - + Conect&artodo Disconnect &All - + Desconect&ar todo @@ -86,7 +87,7 @@ connect and stream from you? Invite - + Invitar @@ -94,7 +95,7 @@ connect and stream from you? Configure Accounts - + Configurar cuentas @@ -118,7 +119,7 @@ connect and stream from you? &Listen Privately - &Escuchar en privado + &Modo privado @@ -129,7 +130,7 @@ connect and stream from you? &Load Playlist - &Cargar lista de reproducción + Cargar &lista de reproducción @@ -144,7 +145,7 @@ connect and stream from you? &Play - &Reproducir + Re&producir @@ -159,7 +160,7 @@ connect and stream from you? &Next Track - &Pista siguiente + Pista siguie&nte @@ -169,135 +170,115 @@ connect and stream from you? Load &XSPF... - + Cargar &XSPF U&pdate Collection - + Act&ualizar colección Fully &Rescan Collection - + &Re-escanear colección Show Offline Sources - + Mostrar fuentes sin conexión &Configure Tomahawk... - + &Configurar Tomahawk Minimize - + Minimizar Zoom - + Zoom Hide Menu Bar - + Esconder barra de menú Diagnostics... - + Diagnósticos... About &Tomahawk... - + Acerca de &Tomahawk &Legal Information... - + Información &legal Check For Updates... - + Buscar actualizaciones... &Controls - + &Controles &Settings - + &Configuración &Help - + &Ayuda &Window - + &Ventana Main Menu - + Menú principal AlbumInfoWidget - - Form - Formulario - - - + Tracklist - + Pistas - + Other Albums - + Otros álbumes - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! - + No se encontraron otros álbumes de este artista Sorry, we could not find any tracks for this album! - + No se encontraron pistas de este álbum - + Other Albums by %1 - Otros álbumes por %1 + Otros álbumes de %1 @@ -317,174 +298,90 @@ connect and stream from you? ArtistInfoWidget - - Form - Formulario - - - + Top Hits Grandes éxitos - + Related Artists Artistas relacionados - - - Artist - - - - + Albums Álbumes - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + No se encontraron álbumes de este artista - + Sorry, we could not find any related artists! - + No se encontraron artistas relacionados - + Sorry, we could not find any top hits for this artist! - + No se encontraron éxitos de este artista AudioControls - - Prev - Anterior - - - - Play - Reproducir - - - - Pause - Pausar - - - - Next - Siguiente - - - - Artist - Artista - - - - Album - Álbum - - - - social - social - - - - love - favorita - - - - resolver - - - - - Time - Duración - - - - Time Left - Tiempo restante - - - Shuffle Aleatorio - Repeat Repetir - - - Low - Bajar volumen - - - - High - Subir volumen - Time Elapsed - + Tiempo transcurrido Time Remaining - + Tiempo restante Playing from %1 - + Reproduciendo de %1 Share - + Compartir Love - + Favorito AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Tomahawk no pudo encontrar la pista '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Tomahawk no pudo encontrar el artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 - + Tomahawk no pudo encontrar el álbum '%1' de %2 @@ -492,12 +389,12 @@ connect and stream from you? Create new Playlist - + Nueva lista de reproducción Create new Station - + Nueva estación @@ -522,7 +419,7 @@ connect and stream from you? Stations - Estaciones + Radio @@ -535,11 +432,6 @@ connect and stream from you? ContextWidget - - - InfoBar - InfoBar - @@ -562,22 +454,22 @@ connect and stream from you? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">¡Lo siento!</span>Tomahawk ha fallado. ¡Por favor infórmenos! Tomahawk ha creado un informe de error que puede mejorar la estabilidad del programa en el futuro. Usted puede mandar este informe directamente a los desarrolladores de Tomahawk.</p></body></html> Send this report - + Enviar informe de fallo Don't send - + No enviar Abort - Abortar + Cancelar @@ -598,12 +490,12 @@ connect and stream from you? Sent! <b>Many thanks</b>. - ¡Enviado!<b>Muchas gracias</b>. + ¡Enviado! <b>Muchas gracias</b>. Failed to send crash info. - Error al enviar la información del fallo. + Error al enviar el informe del fallo. @@ -629,7 +521,7 @@ connect and stream from you? About this Account - Acerca de esta Cuenta + Acerca de esta cuenta @@ -642,12 +534,12 @@ connect and stream from you? &Copy to Clipboard - + &Copiar al portapapeles Open &Log-file - + Abrir archivo de &log @@ -655,97 +547,97 @@ connect and stream from you? Steer this station: - + Controlar esta estación: Much less - + Mucho menos Less - + Menos A bit less - + Un poco menos Keep at current - + Mantener en el actual A bit more - + Un poco más More - + Más Much more - + Mucho más Tempo - + Tempo Loudness - + Intensidad Danceability - + Bailable Energy - + Energía Song Hotttnesss - + Popularidad de la pista Artist Hotttnesss - + Popularidad del artista Artist Familiarity - + Familiaridad del artista By Description - + Por descripción Enter a description - + Introducir una descripción Apply steering command - + Aplicar comando Reset all steering commands - + Resetear todos los comandos @@ -753,7 +645,7 @@ connect and stream from you? Filter... - + Filtro... @@ -761,20 +653,12 @@ connect and stream from you? This playlist is currently empty. - + Lista de reproducción vacía This playlist is currently empty. Add some tracks to it and enjoy the music! - - - - - GlobalSearchWidget - - - Form - Formulario + Lista de reproducción vacía. ¡Añada pistas y disfrute de la música! @@ -787,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - Barra de información - Filter... @@ -800,15 +679,10 @@ connect and stream from you? LastFmConfig - - - Form - Formulario - Scrobble tracks to Last.fm - Hacer scrobble a las pistas en Last.fm + Hacer scrobble en Last.fm @@ -828,12 +702,12 @@ connect and stream from you? Import Playback History - + Importar historial de reproducción Synchronize Loved Tracks - + Sincronizar pistas favoritas @@ -849,7 +723,7 @@ connect and stream from you? %1 is listening along with you! - + ¡%1 está escuchando junto a usted! @@ -911,145 +785,140 @@ connect and stream from you? Top Loved Tracks - + Pistas favoritas Sorry, we could not find any loved tracks! - + No se encontraron pistas favoritas The most loved tracks from all your friends - + Pistas favoritas de tus amigos All of your loved tracks - + Mis pistas favoritas All of %1's loved tracks - + Pistas favoritas de %1 Loved Tracks - + Pistas favoritas MetadataEditor - - - Form - - Tags - + Tags Title: - + Título: Title... - + Título Artist: - + Artista: Artist... - + Artista Album: - + Álbum: Album... - + Álbum Track Number: - + Número de pista: Duration: - + Duración: 00.00 - + 00.00 Year: - + Año: Bitrate: - + Bitrate: File - + Archivo File Name: - + Nombre: File Name... - + Nombre de archivo... File Size... - + Tamaño de archivo... File size... - + Tamaño de archivo... File Size: - + Tamaño de archivo: Back - + Atrás Forward - + Adelante Properties - + Propiedades @@ -1077,7 +946,7 @@ connect and stream from you? Create a new playlist - Crear una nueva lista de reproducción + Nueva lista de reproducción @@ -1093,79 +962,114 @@ connect and stream from you? Artist - + Artista Title - + Título Composer - + Compositor Album - + Álbum Track - + Pista Duration - + Duración Bitrate - + Bitrate Age - + Antigüedad Year - + Año Size - + Tamaño Origin + Origen + + + + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - Score - - - - - + Name - + Título PlaylistItemDelegate - + played %1 by you %1 reproducido por usted - + played %1 by %2 %1 reproducido por %2 @@ -1173,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - %1 reproducido por usted - - - - played %1 by %2 - %1 reproducido por %2 - - - - added %1 - añadio %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - + Lista de reproducción creada %1. - - + + A playlist by %1, created %2. - + Lista de reproducción de %1, creada %2. - + All tracks by %1 on album %2 Todas las pistas de %1 en el álbum %2 - + All tracks by %1 Todas las pistas de %1 @@ -1227,12 +1136,12 @@ connect and stream from you? New Playlist - Nueva lista de reproducción + Crear nueva lista de reproducción Just a regular old playlist... Give it a name, drag in some tracks, and go! - Sólo una lista de reproducción normal... ¡Póngale un nombre, añada algunas pistas, y comience! + Una lista de reproducción normal... ¡Póngale un nombre, añada algunas pistas, y comience! @@ -1252,12 +1161,12 @@ connect and stream from you? Create Manual Playlist - Crear lista de reproducción manual + Lista de reproducción manual Create Automatic Playlist - Crear lista de reproducción automática + Lista de reproducción automática @@ -1265,7 +1174,7 @@ connect and stream from you? This playlist is currently empty. - + Lista de reproducción vacía @@ -1319,7 +1228,8 @@ connect and stream from you? No Proxy Hosts: (Overrides system proxy) - Sin proxy (Sobreescribe el proxy del sistema) + Sin proxy: +(Sobreescribe el proxy del sistema) @@ -1335,67 +1245,67 @@ connect and stream from you? QObject - + %n year(s) ago hace %n añohace%n años - + %n year(s) %n año%n años - + %n month(s) ago hace %n meshace %n meses - + %n month(s) %n mes%n meses - + %n week(s) ago hace %n semanahace %n semanas - + %n week(s) %n semana%n semanas - + %n day(s) ago hace %n díahace %n días - + %n day(s) %n día%n días - + %n hour(s) ago hace %n horahace %n horas - + %n hour(s) %n hora%n horas - + %1 minutes ago hace %1 minutos - + %1 minutes %1 minutos - + just now justo ahora @@ -1414,6 +1324,18 @@ connect and stream from you? Status Updaters Actualizadores de estado + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,26 +1347,21 @@ connect and stream from you? QueueView - - - InfoBar - InfoBar - - + Open Queue - + Abrir cola - + Open Queue - %n item(s) - + Abrir cola - %n pistaAbrir cola - %n pistas - + Close Queue - + Cerrar cola @@ -1509,7 +1426,7 @@ connect and stream from you? Some changed settings will not take effect until Tomahawk is restarted - Algunos cambios no tomarán efecto hasta reiniciar Tomahawk + Algunos cambios no surtirán efecto hasta reiniciar Tomahawk @@ -1519,37 +1436,37 @@ connect and stream from you? Install from file - + Instalar desde archivo Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Configurar las cuentas y los servicios usados por Tomahawk para buscar y recolectar música, encontrar a sus amigos y actualizar su estado. Manage how Tomahawk finds music on your computer. - + Configurar cómo Tomahawk encuentra música en su ordenador Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Configurar las preferencias avanzadas de Tomahawk, incluyendo la conectividad de red, del navegador y más. Install resolver from file - Instalar un Resolver desde un fichero + Instalar un servicio desde un fichero Delete all Access Control entries? - + ¿Eliminar todas las fuentes del Control de acceso? Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. - + ¿De verdad quiere borrar todo el Control de acceso de las fuentes? Será preguntado por cada fuente a la que se conecte. @@ -1559,111 +1476,96 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: - + Filtrar por capacidad: Settings_Advanced - - - Form - - Remote Peer Connection Method - + Método de conexión al peer remoto None (outgoing connections only) - + Ninguna (sólo conexiones salientes) Use UPnP to establish port forward (recommended) - + Utilizar UPnP para establecer el enrutamiento de puertos (recomendado) Use static external IP address/host name and port - + Utilizar una IP estática externa, dirección/nombre del host y puerto Set this to your external IP address or host name. Make sure to forward the port to this host! - + Fijar esta como su dirección IP externa o nombre del host. Asegúrese de enrutar el puerto hacia este host Static Host Name: - + Nombre del host estático Static Port: - + Puerto estático SOCKS Proxy - + Proxy SOCKS Use SOCKS Proxy - + Utilizar proxy SOCKS Proxy Settings... - + Configuración del proxy Other Settings - + Otras preferencias Allow web browsers to interact with Tomahawk (recommended) - + Autorizar a los navegadores web interactuar con Tomahawk (recomendado) Send reports after Tomahawk crashed - + Mandar informes después de un fallo de Tomahawk Show notification when a new song starts to play - + Mostrar una notificación al comenzar la reproducción de una nueva canción Clear All Access Control Entries - + Limpiar todas las fuentes del Control de acceso Settings_Collection - - - Form - - Path to scan for music files: - + Ruta para escanear archivos de música: @@ -1671,22 +1573,25 @@ connect and stream from you? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + The Echo Nest analiza los metadatos de su colección +y los emplea para crear radios personalizadas. Activando esta opción +usted y sus amigos podrán crear listas de reproducción automáticas +y estaciones basadas en sus gustos personales. Upload collection list to The Echo Nest to enable user radio - + Enviar información de la colección a The Echo Nest para activar la radio Watch for changes - + Vigilar cambios en las carpetas Time between scans, in seconds: - + Tiempo entre escaneo, en segundos: @@ -1694,12 +1599,12 @@ connect and stream from you? On - + On Off - + Off @@ -1707,26 +1612,21 @@ connect and stream from you? Popular New Albums From Your Friends - Nuevos álbumes favoritos de tus amigos + Nuevos álbumes populares de tus amigos Most Played Playlists - Listas de reproducción más reproducidas + Listas de reproducción más escuchadas Most Played Tracks You Don't Have - Pistas más reproducidas no disponibles + Pistas más reproducidas que no tiene SocialWidget - - - Form - Formulario - Facebook @@ -1737,30 +1637,20 @@ connect and stream from you? Twitter Twitter - - - Cover - Portada - - - - TextLabel - TextLabel - Tweet - + Tweet Listening to "%1" by %2. %3 - + Escuchando "%1" de %2.%3 Listening to "%1" by %2 on "%3". %4 - + Escuchando "%1" de %2 en "%3". %4 @@ -1771,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track - Tema + Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Todas las pistas disponibles - - + + Show Mostrar - - + + Hide Ocultar @@ -1867,42 +1757,42 @@ connect and stream from you? SuperCollection - SuperColección + Supercolección Latest additions to your collection - Últimas novedades en mi colección + Pistas añadidas recientemente Latest additions to %1's collection - Últimas novedadoes en la colección de %1 + Pistas añadidas recientemente en la colección de %1 Sorry, we could not find any recent additions! - + No se encontraron pistas nuevas recientes Recently Played Tracks - Temas Escuchados Recientemente + Pistas reproducidas recientemente Your recently played tracks - Mis canciones escuchadas recientemente + Mis pistas escuchadas recientemente %1's recently played tracks - Las canciones escuchadas recientemente por %1 + Canciones escuchadas recientemente por %1 Sorry, we could not find any recent plays! - + No hay reproducciones recientes @@ -1920,17 +1810,17 @@ connect and stream from you? Add to my Playlists - + Añadir a mis listas de reproducción Add to my Automatic Playlists - + Añadir a mis listas de reproducción automáticas Add to my Stations - + Añadir a mis estaciones @@ -1940,28 +1830,28 @@ connect and stream from you? playlist - + lista de reproducción automatic playlist - + lista de reproducción automática station - + estación Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + ¿Borrar lista de reproducción %1 <b>"%2"</b>? Delete - + Eliminar @@ -2004,22 +1894,22 @@ connect and stream from you? Browse - Buscar + Navegar Search History - Historial de Búsqueda + Historial de búsqueda My Music - Mi Musica + Mi música SuperCollection - SuperColección + Supercolección @@ -2049,50 +1939,50 @@ connect and stream from you? SpotifyConfig - - - Form - Formulario - Configure your Spotify account - Configura tu cuenta de Spotify + Configure su cuenta de Spotify Username or Facebook Email - Usurio o dirección de correo de Facebook + Usuario o dirección de correo de Facebook Log In - Inciar Sesión + Iniciar sesión Right click on any Tomahawk playlist to sync it to Spotify. - Click derecho en cualquier lista de Tomahawk para sincronizar con Spotify. + Haga click derecho en cualquier lista de Tomahawk para sincronizarla con Spotify. Select All - + Seleccionar todo + Sync Starred tracks to Loved tracks + + + + High Quality Streams - Streams de Alta Calidad + Streams de alta calidad Spotify playlists to keep in sync: - Listas de Spotify a mantener sincronizadas: + Listas de Spotify sincronizadas: - + Delete Tomahawk playlist when removing synchronization - Borra las listas de Tomahawk cuando se quiten de la sincronización + Borrar la lista de reproducción de Tomahawk cuando se elimine la sincronización @@ -2110,7 +2000,7 @@ connect and stream from you? Delete associated Spotify playlist? - + ¿Eliminar lista de reproducción de Spotify? @@ -2118,17 +2008,17 @@ connect and stream from you? Copy Artist Link - + Copiar enlace del artista Copy Album Link - + Copiar enlace del álbum Copy Track Link - + Copiar enlace de la pista @@ -2141,7 +2031,7 @@ connect and stream from you? Remove - + Eliminar @@ -2161,7 +2051,7 @@ connect and stream from you? Offline - Desconectado + Fuera de línea @@ -2169,12 +2059,12 @@ connect and stream from you? Manual Install Required - + Instalación manual necesaria Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + Desafortunadamente, la instalación automática de este servicio no está disponible o está desactivada para su plataforma.<br /><br />Por favor use "Instalar desde archivo", obteniéndolo desde su distribución o compilándolo. Más instrucciones aquí:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2182,17 +2072,17 @@ connect and stream from you? Configure this Google Account - Configura esta Cuenta Google + Configura esta cuenta de Google Google Address: - + Dirección de correo de Google Enter your Google login to connect with your friends using Tomahawk! - Introducir los datos de la cuenta Google para contectar con los amigos que usen Tomahawk! + Introducir los datos de su cuenta Google para conectar con sus amigos que usen Tomahawk @@ -2205,7 +2095,7 @@ connect and stream from you? Connect to Google Talk to find your friends - Conectarse a Google Talk y encontrar mis amigos + Conectarse a Google Talk y encontrar a mis amigos @@ -2213,12 +2103,12 @@ connect and stream from you? Enter Google Address - + Introducir dirección de Google Add Friend - Añadir Amigo + Añadir amigo @@ -2231,152 +2121,153 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - Hacer Scrobble de mis temas a last.fm y encontrar canciones gratuitas para reproducirlas + Hacer scrobble en Last.fm y encontrar canciones gratuitas Tomahawk::Accounts::LastFmConfig - + Testing... - + Probando conexión... - + Test Login - Comprobar Inicio de Sesión + Comprobar el inicio de sesión - + Importing %1 e.g. Importing 2012/01/01 - + Importando %1 - + Importing History... - + Importando historial... - + History Incomplete. Resume - + Text on a button that resumes import + Historial incompleto. Reanudar - + Playback History Imported - + Historial de reproducciones importado - - + + Failed Fallo - + Success Éxito - + Could not contact server No se pudo contactar el servidor - + Synchronizing... - + Sincronizando... - + Synchronization Finished - + Sincronización finalizada Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar con Spotify - + Re-enable syncing with Spotify - + Volver a activar la sincronización con Spotify - + Create local copy - + Crear copia local - + Subscribe to playlist changes - + Suscribirse a la lista de reproducción - + Re-enable playlist subscription - + Activar suscripción a la lista de reproducción - + Stop subscribing to changes - + Dejar de suscribirse - + Enable Spotify collaborations - + Activar colaboraciones de Spotify - + Disable Spotify collaborations - + Desactivar colaboraciones de Spotify - + Stop syncing with Spotify - Dejar de sincronizar con Spotify + Detener la sincronización con Spotify Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - Inciando sesión... + Iniciando sesión... - + Failed: %1 Fallo: %1 - + Logged in as %1 - + Sesión iniciada como %1 - + Log Out - + Salir - - + + Log In - Iniciar Sesión + Iniciar sesión Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium - Reproduce música de Spotofy Premium y sincroniza las listas de reprodución + Reproduzca música de Spotify Premium y sincronice sus listas de reprodución @@ -2384,7 +2275,7 @@ connect and stream from you? Connect to your Twitter followers. - Conectar con los seguidores de Twitter. + Conectar con sus seguidores de Twitter. @@ -2394,7 +2285,7 @@ connect and stream from you? Tweet! - Twittear! + Twittear @@ -2413,7 +2304,7 @@ connect and stream from you? Status: Credentials saved for %1 - Estado: Credenciales de %1 guardadas + Estado: credenciales de %1 guardadas @@ -2430,34 +2321,34 @@ connect and stream from you? Tweetin' Error - Error al Twittear + Error al twittear The credentials could not be verified. You may wish to try re-authenticating. Las credencials no se han podido verificar. -Hay que volver a intentar la autenticación. +Deberá volver a intentar la autenticación. Status: Error validating credentials - Estado: Error al validar las credenciales + Estado: error al validar las credenciales Global Tweet - Tweet Global + Tweet global Direct Message - Mensaje Directo + Mensaje directo Send Message! - Enviar Mensaje! + Enviar mensaje! @@ -2467,7 +2358,7 @@ Hay que volver a intentar la autenticación. Send Mention! - Enviar Mención! + Enviar mención! @@ -2479,41 +2370,41 @@ Hay que volver a intentar la autenticación. Your saved credentials could not be loaded. You may wish to try re-authenticating. Las credenciales guardadas no se han podido cargar. -Hay que volverse a autenticar. +Deberá volverse a autenticar. Your saved credentials could not be verified. You may wish to try re-authenticating. Las credenciales guardadas no se han podido verificar. -Hay que volverse a autenticar. +Deberá volverse a autenticar. There was an error posting your status -- sorry! - Error publicando el estado! + Error publicando su estado Tweeted! - Twitteado! + Twitteado Your tweet has been posted! - El tweet se ha publicado! + Su tweet se ha publicado There was an error posting your direct message -- sorry! - Error publicando el mensahe directo! + Error publicando el mensaje directo Your message has been posted! - El mensaje se ha publicado! + El mensaje se ha publicado @@ -2521,15 +2412,29 @@ Hay que volverse a autenticar. Log on to your Jabber/XMPP account to connect to your friends - Inciar sesón en Jabber/XMPP para conectar con mis amigos + Inicie sesón en Jabber/XMPP para conectar con sus amigos + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network - Conectarse automáticament a los Tomahawks de la red local + Conectarse automáticamente a los Tomahawks de la red local @@ -2541,75 +2446,75 @@ Hay que volverse a autenticar. - - + + Add to &Queue Añadir a la &cola Continue Playback after this &Track - + Continuar la reproducción tras esta pis&ta Stop Playback after this &Track - + Detener la reproducción tras esta pis&ta - + &Love &Favorito - - - + + + &Go to "%1" - + &Ir a "%1" - - - + + + Go to "%1" - - - - - &Copy Track Link - &Copiar enlace del Tema - - - - Copy Album &Link - - - - - Copy Artist &Link - - - - - Un-&Love - Quitar de &Favoritos - - - - &Delete Items - &Eliminar de la cola + &Ir a "%1" - Properties... - + &Copy Track Link + &Copiar enlace del tema - + + Copy Album &Link + Copiar en&lace del álbum + + + + Copy Artist &Link + Copiar en&lace del artista + + + + Un-&Love + Quitar de &favoritos + + + + &Delete Items + Eliminar &de la cola + + + + Properties... + Propiedades... + + + &Delete Item - &Eliminar de la cola + Eliminar &de la cola @@ -2617,22 +2522,22 @@ Hay que volverse a autenticar. playlist - + lista de reproducción artist - + artista track - + pista album - + álbum @@ -2668,7 +2573,7 @@ Por favor, cambie los filtros o inténtelo de nuevo. Failed to generate preview with the desired filters - Fallo al generar vista previa con los filtros deseados + Fallo al generar una vista previa con los filtros deseados @@ -2689,7 +2594,7 @@ Por favor, cambie los filtros o inténtelo de nuevo. Add some filters above to seed this station! - ¡Añada algunos filtros para la estación! + ¡Añada algunos filtros para esta estación! @@ -2709,7 +2614,7 @@ Por favor, cambie los filtros o inténtelo de nuevo. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - La Emisora se ha quedado sin temas! + La estación se ha quedado sin pistas Intente ajustar los filtros para reproducir nuevas canciones. @@ -2887,20 +2792,23 @@ Intente ajustar los filtros para reproducir nuevas canciones. Loudness - Volumen + Intensidad + Artist Familiarity Familiaridad del artista + Artist Hotttnesss Popularidad del artista + Song Hotttnesss Popularidad de la pista @@ -2926,92 +2834,135 @@ Intente ajustar los filtros para reproducir nuevas canciones. + Energy Energía + Danceability - Bailabilidad + Bailable - + only by ~%1 sólo por ~%1 - + + similar to ~%1 similar a ~%1 - + with genre ~%1 con el género ~%1 - - + + from no one de ninguno - + My Collection Mi colección - + + from my radio + + + + from %1 radio de %1 radio + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 con %1 %2 - + about %1 BPM sobre %1 BPM - + about %n minute(s) long sobre %n minuto de duraciónsobre %n minutos de duración - + about %1 dB sobre %1 dB - + at around %1%2 %3 sobre %1%2 %3 - + in %1 en %1 - + in a %1 key en la tonalidad %1 - + sorted in %1 %2 order ordenado en %1 %2 - + with a %1 mood con un carácter %1 - + in a %1 style con un estilo %1 @@ -3021,7 +2972,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Error fetching Grooveshark information from the network! - Error al buscar la información de Grooveshar en la red! + Error al buscar la información de Grooveshark en la red @@ -3065,17 +3016,17 @@ Intente ajustar los filtros para reproducir nuevas canciones. Top Tracks - Temas más escuchados + Pistas más reproducidas Loved Tracks - Temas Favoritos + Pistas favoritas Hyped Tracks - Temas a la alza + Pistas en alza @@ -3085,7 +3036,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Hyped Artists - Artistas a la alza + Artistas en alza @@ -3109,7 +3060,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Error fetching iTunes information from the network! - Error al buscar la información de iTunes en la red! + Error al buscar la información de iTunes en la red @@ -3160,12 +3111,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. Would you like to delete the playlist <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + ¿Eliminar la lista de reproducción <b>"%2"</b>? Delete - + Eliminar @@ -3195,15 +3146,15 @@ Intente ajustar los filtros para reproducir nuevas canciones. %n other(s) %n más%n más - + - %1 people - %1 personas + %n people + loved this track - han añadido este tema a Favoritos + han añadido esta pista a Favoritos @@ -3211,7 +3162,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Error fetching Rdio information from the network! - Error al buscar la información de Rdio en la red! + Error al buscar la información de Rdio en la red @@ -3219,7 +3170,15 @@ Intente ajustar los filtros para reproducir nuevas canciones. Network error parsing shortened link! - Error en la red al analizar el enlace acortado! + Error en la red al analizar el enlace acortado + + + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + @@ -3243,12 +3202,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. Syncing - + Sincronizando Importing - + Importando @@ -3258,12 +3217,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. Online - + En línea Offline - + Desconectado @@ -3271,7 +3230,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Error fetching Spotify information from the network! - Error al buscar la información de Spotify en la red! + Error al buscar la información de Spotify en la red @@ -3285,7 +3244,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. TomahawkApp - + My Collection Mi colección @@ -3305,12 +3264,20 @@ enter the displayed PIN number here: introduzca su número PIN aquí: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon &Stop Playback after current Track - &Para la Reproducción después de este Tema + Detener la reproducción despué&s de la pista actual @@ -3341,17 +3308,17 @@ introduzca su número PIN aquí: &Love - + &Favorito Un-&Love - + Quitar de &favoritos &Continue Playback after current Track - &Continuar la Reproducción después de este Tema + &Continuar la reproducción después de la pista actual @@ -3454,7 +3421,7 @@ introduzca su número PIN aquí: &Legal Info... - + Información &legal... @@ -3494,176 +3461,176 @@ introduzca su número PIN aquí: Back - + Atrás Go back one page - + Ir atrás una página Forward - + Adelante Go forward one page - + Ir adelante una página + + + + + Hide Menu Bar + Esconder barra de menú + + + + + Show Menu Bar + Mostrar barra de menú - Global Search... - Búsqueda global... - - - - - Hide Menu Bar - - - - - - Show Menu Bar - + Search for any artist, album or song... + Buscar un artista, álbum o pista... &Main Menu - + &Menú principal - - - + + + Connect To Peer Conectar a un par - + Enter peer address: Introducir dirección del par: - + Enter peer port: Introducir puerto del par: - + Enter peer key: Introducir contraseña del par: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - Se ha producido un error al acceder al dispostivo de audio o al tema deseado y se va saltar. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. + Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - Se ha producido un error al acceder al dispostivo de audio o al tema deseado y se va saltar. + Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station - + Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist - + Lista de reproducción - + Automatic Playlist - + Lista de reproducción automática - + Pause Pausar - + &Play - + &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! - + Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Copyright 2010-2012 - + Thanks to: - + Gracias a: - + About Tomahawk Acerca de Tomahawk @@ -3679,67 +3646,37 @@ introduzca su número PIN aquí: TrackInfoWidget - - Form - Formulario - - - - Cover - Portada - - - - Track - Tema - - - - Artist - Artista - - - - Album - Álbum - - - - Statistics - Estadísticas - - - + Similar Tracks - Temas Similares + Pistas similares - + Sorry, but we could not find similar tracks for this song! - + No se han encontrado pistas similares - + You've listened to this track %n time(s). - Ha escuchado esta canción %n vez.Ha escuchado esta canción %n veces. + Ha escuchado esta pista %n vez.Ha escuchado esta pista %n veces. - + You've never listened to this track before. - Nunca ha escuchado este tema antes. + Nunca ha escuchado esta pista antes. - + You first listened to it on %1. - Escuchó este tema pro primera vez en %1. + Escuchó esta pista por primera vez en %1. - + You've listened to %1 %n time(s). - Ha escuchado %1 %n vez.Ha escuchado %1 %n veces. + Ha escuchado %1 una vez.Ha escuchado %1 %n veces. - + You've never listened to %1 before. Nunca ha escuchado %1 antes. @@ -3747,7 +3684,7 @@ introduzca su número PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. Lo siento, tu filtro '%1' no ha encontrado resultados. @@ -3758,19 +3695,19 @@ introduzca su número PIN aquí: from streaming artist - track from friend - + de to streaming artist - track to friend - + para TreeItemDelegate - + Unknown Desconocido @@ -3798,9 +3735,9 @@ introduzca su número PIN aquí: TreeView - + Sorry, your filter '%1' did not match any results. - + Tu filtro '%1' no produjo ningún resultado @@ -3881,7 +3818,7 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en Enter Twitter username - + Introducir nombre de usuario de Twitter @@ -3889,32 +3826,32 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en This playlist is empty! - + Lista de reproducción vacía After you have scanned your music collection you will find your tracks right here. - + Después de escanear su colección de música encontrará sus pistas aquí This collection is empty. - + Colección vacía SuperCollection - SuperColección + Supercolección Combined libraries of all your online friends - Bibliotecas combinadas de todos tus amigos conectados + Bibliotecas combinadas de todos tus amigos Recently Played Tracks - Temas Escuchados Recientemente + Pistas reproducidas recientemente @@ -3924,7 +3861,7 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en Sorry, we could not find any recent plays! - + No hay reproducciones recientes @@ -3947,7 +3884,7 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en Recently played tracks - + Pistas reproducidas recientemente @@ -4028,17 +3965,17 @@ Letras de "%1" por %2: Failed to parse contents of XSPF playlist - Error al analizar los contenidos de la lista XSPF + Error al analizar el contenido de la lista XSPF Some playlist entries were found without artist and track name, they will be omitted - Algunas entradas de la lista no tenía información de artista o de títul y serán omitidas + Algunas entradas de la lista de reproducción no tenían información de artista o de título y serán omitidas Failed to fetch the desired playlist from the network, or the desired file does not exist - Error al buscar la lista deseada en la red, o el fichero no existe + Error al buscar la lista deseada en la red (o el fichero no existe) @@ -4140,12 +4077,12 @@ Letras de "%1" por %2: Enter your Xmpp login to connect with your friends using Tomahawk! - Introduzca sus datos de inicio de sesión de XMPP para conectarse son sus amigos que usen Tomahawk! + Introduzca sus datos de inicio de sesión de XMPP para conectarse con sus amigos que usen Tomahawk Login Information - Información de Inicio de Sesión + Información de inicio de sesión @@ -4155,7 +4092,7 @@ Letras de "%1" por %2: e.g. user@example.com - e.g. usuario@ejemplo.com + p.ej. usuario@ejemplo.com @@ -4165,7 +4102,7 @@ Letras de "%1" por %2: An account with this name already exists! - Ya existe una cuenta con el mismo nombre! + Ya existe una cuenta con el mismo nombre @@ -4185,12 +4122,12 @@ Letras de "%1" por %2: Lots of servers don't support this (e.g. GTalk, jabber.org) - Muchos servidores no soporta esta opción (e.g. GTalk, jabber.org) + Muchos servidores no soportan esta opción (p.ej. GTalk, jabber.org) Publish currently playing track - Publicar el tema reproducido al momento + Publicar la pista en reproducción @@ -4203,7 +4140,7 @@ Letras de "%1" por %2: User Interaction - Interacción de usuario + Interacción del usuario @@ -4218,22 +4155,22 @@ Letras de "%1" por %2: Authorization Error - Error de Autorización + Error de autorización Remote Stream Error - Error de Stream Remoto + Error de stream remoto Remote Connection failed - Fallo en la Conexión Remota + Fallo en la conexión remota Internal Server Error - Error de Servidor Interno + Error interno del servidor @@ -4253,17 +4190,17 @@ Letras de "%1" por %2: Do you want to add <b>%1</b> to your friend list? - + ¿Le gustaría añadir <b>%1</b> a su lista de amigos? No Compression Support - Compresión no sportada + Compresión no soportada Enter Jabber ID - + Introducir ID de Jabber @@ -4283,7 +4220,7 @@ Letras de "%1" por %2: Add Friend - Añadir Amigo + Añadir amigo @@ -4293,7 +4230,7 @@ Letras de "%1" por %2: Add Friend... - Añadir Amigo... + Añadir amigo... @@ -4303,21 +4240,16 @@ Letras de "%1" por %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - Lo siento -- soy una presencia automática usada por el Reproductor Tomahawk (http://gettomahawk.com). Si recibe este mensaje, la persona con quién intenta contactar no esté contectada probablemente. Inténtelo más tarde! + Lo siento -- soy un robot del reproductor Tomahawk (http://gettomahawk.com). Si recibe este mensaje, la persona con quién intenta contactar probablemente no esté conectada. ¡Inténtelo más tarde! Authorize User - Autorizar Usuario + Autorizar usuario ZeroconfConfig - - - Form - Formulario - Local Network configuration diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts new file mode 100644 index 000000000..b5333be3f --- /dev/null +++ b/lang/tomahawk_fi.ts @@ -0,0 +1,4270 @@ + + + ACLJobDelegate + + + Allow %1 to +connect and stream from you? + Sallitaanko käyttäjän %1 +yhdistää ja toistaa sinulta virtaa? + + + + Allow Streaming + Salli virran toisto + + + + Deny Access + Kiellä pääsy + + + + ACLJobItem + + + Tomahawk needs you to decide whether %1 is allowed to connect. + Tomahawk tarvitsee sinua päättämään, sallitaanko käyttäjän %1 yhdistää. + + + + AccountFactoryWrapper + + + Dialog + Ikkuna + + + + Description goes here + Kuvaus tulee tähän + + + + Add Account + Lisää tili + + + + AccountFactoryWrapperDelegate + + + Online + Verkossa + + + + Connecting... + Yhdistetään... + + + + Offline + Ei verkossa + + + + AccountListWidget + + + Connections + Yhteydet + + + + + Connect &All + Yhdistä &kaikki + + + + Disconnect &All + Katkaise &kaikki + + + + AccountWidget + + + Invite + Kutsu + + + + AccountsToolButton + + + Configure Accounts + Tilien asetukset + + + + ActionCollection + + + &Listen Along + Kuuntele &mukana + + + + Stop &Listening Along + Lopeta &mukana kuunteleminen + + + + &Follow in real-time + &Seuraa reaaliajassa + + + + + &Listen Privately + &Kuuntele yksityisesti + + + + + &Listen Publicly + &Kuuntele julkisesti + + + + &Load Playlist + &Lataa soittolista + + + + &Rename Playlist + &Muuta soittolistan nimeä + + + + &Copy Playlist Link + &Kopioi soittolistan linkki + + + + &Play + &Soita + + + + &Stop + &Pysäytä + + + + &Previous Track + &Edellinen kappale + + + + &Next Track + S&euraava kappale + + + + &Quit + &Lopeta + + + + Load &XSPF... + Lataa &XSPF... + + + + U&pdate Collection + &Päivitä kokoelma + + + + Fully &Rescan Collection + &Muodosta kokoelma alusta alkaen + + + + Show Offline Sources + Näytä verkottomat lähteet + + + + &Configure Tomahawk... + Tomahawkin &asetukset... + + + + Minimize + Pienennä + + + + Zoom + Zoomaa + + + + Hide Menu Bar + Piilota valikkorivi + + + + Diagnostics... + Diagnostiikka... + + + + About &Tomahawk... + Tietoa &Tomahawkista... + + + + &Legal Information... + Lakitiet&oa... + + + + Check For Updates... + Tarkista päivitykset... + + + + &Controls + &Ohjaus + + + + &Settings + &Asetukset + + + + &Help + O&hje + + + + &Window + &Ikkuna + + + + Main Menu + Päävalikko + + + + AlbumInfoWidget + + + Tracklist + Kappalelista + + + + Other Albums + Muita albumeita + + + + Sorry, we could not find any other albums for this artist! + Valitettavasti emme löytänet mitään muita albumeita tältä artistilta! + + + + Sorry, we could not find any tracks for this album! + Valitettavasti emme löytäneet mitään tämän albumin kappaleita! + + + + Other Albums by %1 + Muita artistin %1 levyjä + + + + AlbumModel + + + + All albums from %1 + Kaikki artistin %1 albumit + + + + All albums + Kaikki albumit + + + + ArtistInfoWidget + + + Top Hits + Parhaat hitit + + + + Related Artists + Samankaltaisia artisteja + + + + Albums + Albumit + + + + Sorry, we could not find any albums for this artist! + Valitettavasti emme löytänet yhtään tämän artistin albumia! + + + + Sorry, we could not find any related artists! + Valitettavasti emme löytäneet yhtään samankaltaista artistia! + + + + Sorry, we could not find any top hits for this artist! + Valitettavasti emme löytäneet yhtään tämän artistin parhaista hiteistä! + + + + AudioControls + + + Shuffle + Sekoita + + + + Repeat + Toista + + + + Time Elapsed + Kulunut aika + + + + Time Remaining + Jäljellä oleva aika + + + + Playing from %1 + Soitetaan lähteestä %1 + + + + Share + Jaa + + + + Love + Tykkää + + + + AudioEngine + + + Sorry, Tomahawk couldn't find the track '%1' by %2 + Valitettavasti Tomahawk ei löytänyt artistin %2 kappaletta ”%1” + + + + Sorry, Tomahawk couldn't find the artist '%1' + Valitettavasti Tomahawk ei löytänyt artistia ”%1” + + + + Sorry, Tomahawk couldn't find the album '%1' by %2 + Valitettavasti Tomahawk ei löytänyt artistin %2 albumia ”%1” + + + + CategoryAddItem + + + Create new Playlist + Luo uusi soittolista + + + + Create new Station + Luo uusi asema + + + + + New Station + Uusi asema + + + + + %1 Station + %1 – asema + + + + CategoryItem + + + Playlists + Soittolistat + + + + Stations + Asemat + + + + ClearButton + + + Clear + Tyhjennä + + + + ContextWidget + + + + Show Footnotes + Näytä alaviitteet + + + + Hide Footnotes + Piilota alaviitteet + + + + CrashReporter + + + Tomahawk Crash Reporter + Tomahawkin kaatumisen ilmoitus + + + + <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Pahoittelut!</span> Tomahawk kaatui. Kerro siitä meille! Tomahawk on luonut puolestasi virheilmoituksen, joka auttaa vakauden parantamisessa jatkossa. Voit nyt lähettää tämän ilmoituksen suoraan Tomahawkin kehittäjille.</p></body></html> + + + + Send this report + Lähetä tämä ilmoitus + + + + Don't send + Älä lähetä + + + + Abort + Keskeytä + + + + You can disable sending crash reports in the configuration dialog. + Voit poistaa kaatumisilmoitusten lähettämisen käytöstä asetusikkunasta. + + + + Uploaded %L1 of %L2 KB. + Lähetetty %L1/%L2 kB. + + + + + Close + Sulje + + + + Sent! <b>Many thanks</b>. + Lähetetty! <b>Paljon kiitoksia</b>. + + + + Failed to send crash info. + Kaatumistietojen lähettäminen epäonnistui. + + + + DatabaseCommand_AllAlbums + + + Unknown + Tuntematon + + + + DelegateConfigWrapper + + + About + Tietoa + + + + Delete Account + Poista tili + + + + About this Account + Tietoa tästä tilistä + + + + DiagnosticsDialog + + + Tomahawk Diagnostics + Tomahawk-diagnostiikka + + + + &Copy to Clipboard + &Kopioi leikepöydälle + + + + Open &Log-file + &Avaa lokitiedosto + + + + EchonestSteerer + + + Steer this station: + Ohjaa tätä asemaa: + + + + Much less + Paljon vähemmän + + + + Less + Vähemän + + + + A bit less + Hieman vähemmän + + + + Keep at current + Pidä nykyisellä + + + + A bit more + Hieman enemmän + + + + More + Enemmän + + + + Much more + Paljon enemmän + + + + Tempo + Tempo + + + + Loudness + Äänekkyys + + + + Danceability + Tanssittavuus + + + + Energy + Energia + + + + Song Hotttnesss + Kappaleen suosittuus + + + + Artist Hotttnesss + Artistin suosittuus + + + + Artist Familiarity + Artistin tuttuus + + + + By Description + Kuvauksen perusteella + + + + Enter a description + Anna kuvaus + + + + Apply steering command + Käytä ohjauskomentoa + + + + Reset all steering commands + Nollaa kaikki ohjauskomennot + + + + FlexibleHeader + + + Filter... + Suodata... + + + + FlexibleView + + + This playlist is currently empty. + Tämä soittolista on parhaillaan tyhjä. + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + Tämä soittolista on parhaillaan tyhjä. Lisää kappaleita ja nauti musiikista! + + + + IndexingJobItem + + + Indexing database + Indeksoidaan tietokantaa + + + + InfoBar + + + Filter... + Suodata... + + + + LastFmConfig + + + Scrobble tracks to Last.fm + Skrobblaa kappaleet Last.fm:ään + + + + Username: + Käyttäjätunnus: + + + + Password: + Salasana: + + + + Test Login + Kokeile kirjautumista + + + + Import Playback History + Tuo soittohistoria + + + + Synchronize Loved Tracks + Synkronoi tykätyt kappaleet + + + + LastfmContext + + + Last.fm + Last.fm + + + + LatchedStatusItem + + + %1 is listening along with you! + %1 kuuntelee kanssasi! + + + + LoadXSPF + + + Load XSPF + Lataa XSPF + + + + Playlist URL + Soittolistan osoite + + + + Enter URL... + Anna osoite... + + + + ... + ... + + + + Automatically update + Päivitä automaattisesti + + + + LoadXSPFDialog + + + Load XSPF File + Lataa XSPF-tiedosto + + + + XSPF Files (*.xspf) + XSPF-tiedostot (*.xspf) + + + + LocalCollection + + + Bookmarks + Kirjanmerkit + + + + Saved tracks + Tallennetut kappaleet + + + + LovedTracksItem + + + Top Loved Tracks + Tykätyimmät kappaleet + + + + Sorry, we could not find any loved tracks! + Valitettavasti emme löytäneet yhtään tykättyä kappaletta! + + + + The most loved tracks from all your friends + Kaikkien kaveriesi tykätyimmät kappaleet + + + + All of your loved tracks + Kaikki tykkäämäsi kappaleet + + + + All of %1's loved tracks + Kaikki käyttäjän %1 tykkäämät kappaleet + + + + Loved Tracks + Tykätyt kappaleet + + + + MetadataEditor + + + Tags + Tagit + + + + Title: + Nimi: + + + + Title... + Nimi... + + + + Artist: + Artisti: + + + + Artist... + Artisti... + + + + Album: + Albumi: + + + + Album... + Albumi... + + + + Track Number: + Kappaleen numero: + + + + Duration: + Kesto: + + + + 00.00 + 00,00 + + + + Year: + Vuosi: + + + + Bitrate: + Bittinopeus: + + + + File + Tiedosto + + + + File Name: + Tiedostonimi: + + + + File Name... + Tiedostonimi... + + + + File Size... + Tiedostokoko... + + + + File size... + Tiedostokoko... + + + + File Size: + Tiedostokoko: + + + + Back + Edellinen + + + + Forward + Seuraava + + + + Properties + Ominaisuudet + + + + NewPlaylistWidget + + + Enter a title for the new playlist: + Anna uuden soittolistan nimi: + + + + Tomahawk offers a variety of ways to help you create playlists and find music you enjoy! + Tomahawk tarjoaa monia apuja soittolistojen luontiin sekä pitämäsi musiikin etsimiseen! + + + + Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist: + Anna vain lajityypin tai tagin nimi, ja Tomahawk ehdottaa muutamia kappaleita, jotta pääset alkuun uuden soittolistasi parissa: + + + + &Create Playlist + &Luo soittolista + + + + Create a new playlist + Luo uusi soittolista + + + + NewReleasesWidget + + + New Releases + Uudet julkaisut + + + + PlayableModel + + + Artist + Artisti + + + + Title + Nimi + + + + Composer + Säveltäjä + + + + Album + Albumi + + + + Track + Kappale + + + + Duration + Kesto + + + + Bitrate + Bittinopeus + + + + Age + Ikä + + + + Year + Vuosi + + + + Size + Koko + + + + Origin + Alkuperä + + + + Accuracy + Tarkkuus + + + + Perfect match + Täysosuma + + + + Very good match + Erittäin hyvä osuma + + + + Good match + Hyvä osuma + + + + Vague match + Epämääräinen osuma + + + + Bad match + Kehno osuma + + + + Very bad match + Erittäin kehno osuma + + + + Not available + Ei saatavilla + + + + + Name + Nimi + + + + PlaylistItemDelegate + + + played %1 by you + kuuntelit %1 + + + + played %1 by %2 + %2 kuunteli %1 + + + + PlaylistLargeItemDelegate + + + played %1 by you + e.g. played 3 hours ago by you + kuuntelit %1 + + + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + %2 kuunteli %1 + + + + added %1 + e.g. added 3 hours ago + lisätty %1 + + + + by <b>%1</b> + e.g. by SomeArtist + artistilta <b>%1</b> + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum + artistilta <b>%1</b> albumilla <b>%2</b> + + + + PlaylistModel + + + A playlist you created %1. + Soittolista, jonka loit %1. + + + + + A playlist by %1, created %2. + Soittolista, jonka %1 loi %2. + + + + All tracks by %1 on album %2 + Kaikki artistin %1 kappaleet albumilla %2 + + + + All tracks by %1 + Kaikki artistin %1 kappaleet + + + + PlaylistTypeSelectorDlg + + + New Playlist + Uusi soittolista + + + + Just a regular old playlist... Give it a name, drag in some tracks, and go! + Ihan tavanomainen soittolista... Anna sille nimi, vedä siihen joitain kappaleita ja anna mennä! + + + + Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you! + Etkö oikein tiedä, mitä haluat? Anna Tomahawkille muutamia vihjeitä ja anna sen muodostaa soittolista puolestasi! + + + + Name: + Nimi: + + + + New Playlist... + Uusi soittolista... + + + + Create Manual Playlist + Luo manuaalinen soittolista + + + + Create Automatic Playlist + Luo automaattinen soittolista + + + + PlaylistView + + + This playlist is currently empty. + Tämä soittolista on parhaillaan tyhjä. + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + Tämä soittolista on parhaillaan tyhjä. Lisää kappaleita ja nauti musiikista! + + + + ProxyDialog + + + Proxy Settings + Välityspalvelinasetukset + + + + Hostname of proxy server + Välityspalvelimen konenimi + + + + Host + Kone + + + + Port + Portti + + + + Proxy login + Välityspalvelimen tunnus + + + + User + Käyttäjä + + + + Password + Salasana + + + + Proxy password + Välityspalvelimen salasana + + + + No Proxy Hosts: +(Overrides system proxy) + Välityspalvelittomat osoitteet: +(ohittaa järjestelmän välityspalvelimen) + + + + localhost *.example.com (space separated) + localhost *.esimerkki.fi (välilyönnein eroteltuna) + + + + Use proxy for DNS lookups? + Käytetäänkö välityspalvelinta DNS-hauissa? + + + + QObject + + + %n year(s) ago + %n vuosi sitten%n vuotta sitten + + + + %n year(s) + %n vuosi%n vuotta + + + + %n month(s) ago + %n kuukausi sitten%n kuukautta sitten + + + + %n month(s) + %n kuukausi%n kuukautta + + + + %n week(s) ago + %n viikko sitten%n viikkoa sitten + + + + %n week(s) + %n viikko%n viikkoa + + + + %n day(s) ago + %n päivä sitten%n päivää sitten + + + + %n day(s) + %n päivä%n päivää + + + + %n hour(s) ago + %n tunti sitten%n tuntia sitten + + + + %n hour(s) + %n tunti%n tuntia + + + + %1 minutes ago + %1 minuuttia sitten + + + + %1 minutes + %1 minuuttia + + + + just now + juuri nyt + + + + Friend Finders + Kaverietsimet + + + + Music Finders + Musiikkietsimet + + + + Status Updaters + Tilanpäivittimet + + + + + %1 Config + %1-asetukset + + + + + %1 Configuration + %1-asetukset + + + + QuaZipFilePrivate + + + ZIP/UNZIP API error %1 + ZIP/UNZIP-rajapintavirhe %1 + + + + QueueView + + + + Open Queue + Avaa jono + + + + Open Queue - %n item(s) + Avaa jono – %n kohdeAvaa jono – %n kohdetta + + + + Close Queue + Sulje jono + + + + RelatedArtistsContext + + + Related Artists + Samankaltaisia artisteja + + + + ResolverConfigDelegate + + + Not found: %1 + Ei löydy: %1 + + + + Failed to load: %1 + Lataaminen epäonnistui: %1 + + + + SearchLineEdit + + + Search + Hae + + + + SearchWidget + + + Search: %1 + Haku: %1 + + + + Results for '%1' + Tulokset haulle ”%1” + + + + SettingsDialog + + + Collection + Kokoelma + + + + Advanced + Lisäasetukset + + + + All + Kaikki + + + + Some changed settings will not take effect until Tomahawk is restarted + Jotkin asetusmuutokset tulevat voimaan vasta, kun Tomahawk käynnistetään uudelleen. + + + + Services + Palvelut + + + + Install from file + Asenna tiedostosta + + + + Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. + Aseta tilit ja palvelut, joita Tomahawk käyttää musiikin etsimiseen ja noutamiseen, kaveriesi etsimiseen sekä tilasi päivittämiseen. + + + + Manage how Tomahawk finds music on your computer. + Hallitse Tomahawkin tapaa etsiä musiikkia tietokoneeltasi. + + + + Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. + Aseta Tomahawkin lisäasetuksia, joihin kuuluu verkkoyhteysasetukset, selainyhteys ja muuta. + + + + Install resolver from file + Asenna selvitin tiedostosta + + + + Delete all Access Control entries? + Poistetaanko kaikki pääsynvalvontatietueet? + + + + Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. + Haluatko varmasti poistaa kaikki pääsynvalvontatietueet? Sinulta tullaan kysymään päätös uudelleen jokaisen sellaisen vertaisen kohdalla, johon yhdistät. + + + + Information + Tiedoksi + + + + Settings_Accounts + + + Filter by capability: + Suodata kyvyn perusteella: + + + + Settings_Advanced + + + Remote Peer Connection Method + Etävertaisten yhteystapa + + + + None (outgoing connections only) + Ei yhteyttä (vain lähtevät yhteydet) + + + + Use UPnP to establish port forward (recommended) + Käytä UPnP:tä porttien uudelleenohjaukseen (suositellaan) + + + + Use static external IP address/host name and port + Käytä kiinteää julkista IP-osoitetta/konenimeä ja porttia + + + + Set this to your external IP address or host name. Make sure to forward the port to this host! + Aseta julkinen IP-osoitteesi tai konenimesi tähän. Varmista, että ohjaat portin tähän koneeseen! + + + + Static Host Name: + Kiinteä konenimi: + + + + Static Port: + Kiinteä portti: + + + + SOCKS Proxy + SOCKS-välityspalvelin + + + + Use SOCKS Proxy + Käytä SOCKS-välityspalvelinta + + + + Proxy Settings... + Välityspalvelinasetukset... + + + + Other Settings + Muut asetukset + + + + Allow web browsers to interact with Tomahawk (recommended) + Salli webselainten olla yhteydessä Tomahawkiin (suositellaan) + + + + Send reports after Tomahawk crashed + Lähetä ilmoituksia Tomahawkin kaatumisen jälkeen + + + + Show notification when a new song starts to play + Näytä ilmoitus, kun uusi kappale alkaa + + + + Clear All Access Control Entries + Tyhjennä kaikki pääsynvalvontatietueet + + + + Settings_Collection + + + Path to scan for music files: + Polku, josta musiikkitiedostoja etsitään: + + + + The Echo Nest supports keeping track of your catalog metadata + and using it to craft personalized radios. Enabling this option + will allow you (and all your friends) to create automatic playlists + and stations based on your personal taste profile. + The Echo Nest voi pitää kirjaa metadatahakemistostasi ja +käyttää sitä personoitujen radioiden tekemiseen. +Tämän valinnan käyttöönottaminen mahdollistaa sinun +(ja kaikkien kaveriesi) luoda automaattisia soittolistoja ja +asemia sinun henkilökohtaisen musiikkimakuprofiilisi perusteella. + + + + Upload collection list to The Echo Nest to enable user radio + Lähetä kokoelmalista The Echo Nestille +käyttäjäradion käyttöönottamiseksi + + + + Watch for changes + Tarkkaile muutoksia + + + + Time between scans, in seconds: + Etsimisten aikaväli (sekunteina): + + + + SlideSwitchButton + + + On + Päällä + + + + Off + Pois + + + + SocialPlaylistWidget + + + Popular New Albums From Your Friends + Kaveriesi suosiossa olevat uudet albumit + + + + Most Played Playlists + Kuunnelluimmat soittolistat + + + + Most Played Tracks You Don't Have + Kuunnelluimmat kappaleet, joita sinulla ei ole + + + + SocialWidget + + + Facebook + Facebook + + + + Twitter + Twitter + + + + Tweet + Twiittaa + + + + Listening to "%1" by %2. %3 + Kuuntelen ”%1” artistilta %2. %3 + + + + Listening to "%1" by %2 on "%3". %4 + Kuuntelen ”%1” artistilta %2, albumilta ”%3”. %4 + + + + %1 characters left + %1 merkkiä jäljellä + + + + SourceDelegate + + + Track + Kappale + + + + Album + Albumi + + + + Artist + Artisti + + + + Local + Paikallinen + + + + Top 10 + Kymmenen kärki + + + + All available tracks + Kaikki saatavilla olevat kappaleet + + + + + Show + Näytä + + + + + Hide + Piilota + + + + SourceInfoWidget + + + Recent Albums + Viimeaikaiset albumit + + + + Latest Additions + Viimeisimmät lisäykset + + + + Recently Played Tracks + Viime aikoina kuunnellut kappaleet + + + + New Additions + Uudet lisäykset + + + + My recent activity + Viimeaikainen toimintani + + + + Recent activity from %1 + Käyttäjän %1 viimeaikainen toiminta + + + + SourceItem + + + Collection + Kokoelma + + + + + Latest Additions + Viimeisimmät lisäykset + + + + Recently Played + Viime aikoina kuunnellut + + + + SuperCollection + Superkokoelma + + + + Latest additions to your collection + Viimeisimmät lisäykset kokoelmaasi + + + + Latest additions to %1's collection + Viimeisimmät lisäykset käyttäjän %1 kokoelmaan + + + + Sorry, we could not find any recent additions! + Valitettavasti emme löytäneet yhtään viimeaikaisia lisäyksiä! + + + + Recently Played Tracks + Viime aikoina kuunnellut kappaleet + + + + Your recently played tracks + Viime aikoina kuuntelemasi kappaleet + + + + %1's recently played tracks + Käyttäjän %1 viime aikoina kuuntelemat kappaleet + + + + Sorry, we could not find any recent plays! + Valitettavasti emme löytäneet yhtään viimeaikaisia soittoja! + + + + SourceTreeView + + + &Copy Link + &Kopioi linkki + + + + &Delete %1 + &Poista %1 + + + + Add to my Playlists + Lisää omiin soittolistoihin + + + + Add to my Automatic Playlists + Lisää omiin automaattisiin soittolistoihin + + + + Add to my Stations + Lisää omiin asemiin + + + + &Export Playlist + &Vie soittolista + + + + playlist + soittolistan + + + + automatic playlist + automaattisen soittolistan + + + + station + aseman + + + + Would you like to delete the %1 <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + Haluatko poistaa %1 <b>”%2”</b>? + + + + Delete + Poista + + + + Save XSPF + Tallenna XSPF + + + + Playlists (*.xspf) + Soittolistat (*.xspf) + + + + SourcesModel + + + Group + Ryhmä + + + + Collection + Kokoelma + + + + Playlist + soittolista + + + + Automatic Playlist + automaattinen soittolista + + + + Station + asema + + + + Browse + Selaa + + + + Search History + Hakuhistoria + + + + My Music + Oma musiikki + + + + SuperCollection + Superkokoelma + + + + Dashboard + Kojelauta + + + + Recently Played + Viime aikoina kuunnellut + + + + Charts + Listat + + + + New Releases + Uudet julkaisut + + + + Friends + Kaverit + + + + SpotifyConfig + + + Configure your Spotify account + Spotify-tilisi asetukset + + + + Username or Facebook Email + Käyttäjätunnus tai Facebookin sähköposti + + + + Log In + Kirjaudu + + + + Right click on any Tomahawk playlist to sync it to Spotify. + Synkronoi Tomahawk-soittolista Spotifyn kanssa +napsauttamalla hiiren oikealla. + + + + Select All + Valitse kaikki + + + + Sync Starred tracks to Loved tracks + Synkronoi tähdellä merkityt kappaleet tykättyihin kappaleisiin + + + + High Quality Streams + Laadukkaat virrat + + + + Spotify playlists to keep in sync: + Synkronoitavat Spotify-soittolistat: + + + + Delete Tomahawk playlist when removing synchronization + Poista Tomahawkin soittolista, kun synkronointi lopetetaan + + + + Username: + Käyttäjätunnus: + + + + Password: + Salasana: + + + + SpotifyPlaylistUpdater + + + Delete associated Spotify playlist? + Poistetaanko liitetty Spotify-soittolista? + + + + TemporaryPageItem + + + Copy Artist Link + Kopioi artistin linkki + + + + Copy Album Link + Kopioi albumin linkki + + + + Copy Track Link + Kopioi kappaleen linkki + + + + Tomahawk::Accounts::AccountDelegate + + + Add Account + Lisää tili + + + + Remove + Poista + + + + %1 downloads + %1 latausta + + + + Online + Verkossa + + + + Connecting... + Yhdistetään... + + + + Offline + Ei verkossa + + + + Tomahawk::Accounts::AccountModel + + + Manual Install Required + Manuaalinen asennus tarvitaan + + + + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 + Valitettavasti tämän selvittimen automaattinen asennus ei ole saatavilla tai on poissa käytöstä alustallasi.<br /><br />Hae selvitin jakelusi kautta tai kääntämällä se itse, ja käytä sitten Asenna tiedostosta -painiketta. Lisäohjeita on osoitteessa:<br /><br />http://www.tomahawk-player.org/resolvers/%1 + + + + Tomahawk::Accounts::GoogleWrapper + + + Configure this Google Account + Tämän Google-tilin asetukset + + + + Google Address: + Google-osoite: + + + + Enter your Google login to connect with your friends using Tomahawk! + Ole yhteydessä Tomahawkia käyttäviin kavereihisi antamalla Google-tunnuksesi! + + + + username@gmail.com + käyttäjätunnus@gmail.com + + + + Tomahawk::Accounts::GoogleWrapperFactory + + + Connect to Google Talk to find your friends + Löydä kaverisi yhdistämällä Google Talkiin + + + + Tomahawk::Accounts::GoogleWrapperSip + + + Enter Google Address + Anna Google-osoite + + + + Add Friend + Lisää kaveri + + + + Enter Google Address: + Anna Google-osoite: + + + + Tomahawk::Accounts::LastFmAccountFactory + + + Scrobble your tracks to last.fm, and find freely downloadable tracks to play + Skrobblaa kappaleet Last.fm:ään, ja löydä kuunneltavaksi ilmaisesti ladattavia kappaleita + + + + Tomahawk::Accounts::LastFmConfig + + + Testing... + Kokeillaan... + + + + Test Login + Kokeile kirjautumista + + + + Importing %1 + e.g. Importing 2012/01/01 + Tuodaan %1 + + + + Importing History... + Tuodaan historiaa... + + + + History Incomplete. Resume + Text on a button that resumes import + Historia epätäydellinen. Jatka tuontia + + + + Playback History Imported + Soittohistoria tuotu + + + + + Failed + Epäonnistui + + + + Success + Onnistui + + + + Could not contact server + Palvelimeen ei saatu yhteyttä + + + + Synchronizing... + Synkronoidaan... + + + + Synchronization Finished + Synkronointi valmis + + + + Tomahawk::Accounts::SpotifyAccount + + + Sync with Spotify + Synkronoi Spotifyn kanssa + + + + Re-enable syncing with Spotify + Ota Spotifyn kanssa synkronointi käyttöön + + + + Create local copy + Luo paikallinen kopio + + + + Subscribe to playlist changes + Tilaa soittolistojen muutokset + + + + Re-enable playlist subscription + Tilaa soittolistojen muutokset uudelleen + + + + Stop subscribing to changes + Lopeta muutosten tilaus + + + + Enable Spotify collaborations + Käytä Spotify-yhteistöitä + + + + Disable Spotify collaborations + Poista Spotify-yhteistyöt käytöstä + + + + Stop syncing with Spotify + Lopeta Spotifyn kanssa synkronointi + + + + Tomahawk::Accounts::SpotifyAccountConfig + + + Logging in... + Kirjaudutaan... + + + + Failed: %1 + Epäonnistui: %1 + + + + Logged in as %1 + Kirjauduttu käyttäjänä %1 + + + + Log Out + Kirjaudu ulos + + + + + Log In + Kirjaudu + + + + Tomahawk::Accounts::SpotifyAccountFactory + + + Play music from and sync your playlists with Spotify Premium + Toista musiikkia Spotify Premiumin kautta ja synkronoi soittolistasi sen kanssa + + + + Tomahawk::Accounts::TwitterAccountFactory + + + Connect to your Twitter followers. + Ole yhteydessä Twitter-seuraajiisi. + + + + Tomahawk::Accounts::TwitterConfigWidget + + + + + Tweet! + Twiittaa! + + + + + Status: No saved credentials + Tila: Ei tallennettuja tunnistetietoja + + + + + + Authenticate + Tunnistaudu + + + + + Status: Credentials saved for %1 + Tila: Tunnistetiedot tallennettu käyttäjälle %1 + + + + + De-authenticate + Poista tunnistautuminen + + + + + + + + + + Tweetin' Error + Twiittausvirhe + + + + The credentials could not be verified. +You may wish to try re-authenticating. + Tunnistetietojen varmennus epäonnistui. +Voit haluta yrittää tunnistautumista uudelleen. + + + + Status: Error validating credentials + Tila: Virhe tunnistetietojen kelpuuttamisessa + + + + Global Tweet + Yleistwiitti + + + + Direct Message + Yksityisviesti + + + + Send Message! + Lähetä viesti! + + + + @Mention + @Maininta + + + + Send Mention! + Lähetä maininta! + + + + You must enter a user name for this type of tweet. + Tällaiselle twiitille pitää antaa käyttäjätunnus. + + + + Your saved credentials could not be loaded. +You may wish to try re-authenticating. + Tallennettuja tunnistetietojasi ei voitu ladata. +Voit haluta yrittää tunnistautumista uudelleen. + + + + Your saved credentials could not be verified. +You may wish to try re-authenticating. + Tallennettuja tunnistetietojasi ei voitu varmentaa. +Voit haluta yrittää tunnistautumista uudelleen. + + + + + There was an error posting your status -- sorry! + Tilasi lähettämisessä tapahtui virhe – anteeksi! + + + + + Tweeted! + Twiitattu! + + + + Your tweet has been posted! + Twiittisi on lähetetty! + + + + There was an error posting your direct message -- sorry! + Yksityisviestisi lähettämisessa tapahtui virhe – anteeksi! + + + + Your message has been posted! + Viestisi on lähetetty! + + + + Tomahawk::Accounts::XmppAccountFactory + + + Log on to your Jabber/XMPP account to connect to your friends + Ole yhteydessä kavereihisi kirjautumalla Jabber/XMPP-tilillesi + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Paikallisverkko + + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + Paikallisverkko + + + + Automatically connect to Tomahawks on the local network + Yhdistä paikallisverkon Tomahawkeihin automaattisesti + + + + Tomahawk::ContextMenu + + + &Play + &Soita + + + + + + Add to &Queue + &Lisää jonoon + + + + Continue Playback after this &Track + Jatka s&oittoa tämän kappaleen jälkeen + + + + Stop Playback after this &Track + Pysäytä s&oitto tämän &kappaleen jälkeen + + + + + &Love + &Tykkää + + + + + + &Go to "%1" + Sii&rry sivulle ”%1” + + + + + + Go to "%1" + Siirry sivulle ”%1” + + + + &Copy Track Link + &Kopioi kappaleen linkki + + + + Copy Album &Link + &Kopioi albumin linkki + + + + Copy Artist &Link + &Kopioi artistin linkki + + + + Un-&Love + Lakkaa &tykkäämästä + + + + &Delete Items + &Poista kohteet + + + + Properties... + Ominaisuudet... + + + + &Delete Item + &Poista kohde + + + + Tomahawk::DropJobNotifier + + + playlist + soittolistaa + + + + artist + artistia + + + + track + kappaletta + + + + album + albumia + + + + Fetching %1 from database + Noudetaan %1 tietokannasta + + + + Parsing %1 %2 + Jäsennetään %1 -%2 + + + + Tomahawk::DynamicControlList + + + Click to collapse + Tiivistä napsauttamalla + + + + Tomahawk::DynamicModel + + + + Could not find a playable track. + +Please change the filters or try again. + Soittokelpoista kappaletta ei löydy. + +Muuta suodattimia tai yritä uudelleen. + + + + Failed to generate preview with the desired filters + Esikatselun luonti halutuilla suodattimilla epäonnistui + + + + Tomahawk::DynamicSetupWidget + + + Type: + Tyyppi: + + + + Generate + Muodosta + + + + Tomahawk::DynamicView + + + Add some filters above to seed this station! + Alusta tämä asema lisäämällä hieman suodattimia! + + + + Press Generate to get started! + Aloita painamalla Muodosta! + + + + Add some filters above, and press Generate to get started! + Lisää yllä hieman suodattimia, ja aloita sitten painamalla Muodosta! + + + + Tomahawk::DynamicWidget + + + Station ran out of tracks! + +Try tweaking the filters for a new set of songs to play. + Asemalta loppui kappaleet! + +Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi. + + + + Tomahawk::EchonestControl + + + + + + + + is + on + + + + from user + käyttäjältä + + + + + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings + Ei käyttäjiä, joilla on Echo Nestin hakemisto käytössä. Kokeile ottaa valinta käyttöön kokoelma-asetuksista + + + + similar to + samankaltainen kuin + + + + + + + + + + Less + Vähemmän + + + + + + + + + + More + Enemmän + + + + 0 BPM + 0 BPM + + + + 500 BPM + 500 BPM + + + + 0 secs + 0 sekuntia + + + + 3600 secs + 3600 sekuntia + + + + -100 dB + −100 dB + + + + 100 dB + 100 dB + + + + Major + Duuri + + + + Minor + Molli + + + + C + C + + + + C Sharp + Ylennetty C + + + + D + D + + + + E Flat + Alennettu E + + + + E + E + + + + F + F + + + + F Sharp + Ylennetty F + + + + G + G + + + + A Flat + Alennettu A + + + + A + A + + + + B Flat + Alennettu H + + + + B + H + + + + Ascending + Nouseva + + + + Descending + Laskeva + + + + Tempo + Tempo + + + + Duration + Kesto + + + + Loudness + Äänekkyys + + + + + Artist Familiarity + Artistin tuttuus + + + + + Artist Hotttnesss + Artistin suosittuus + + + + + Song Hotttnesss + Kappaleen suosittuus + + + + Latitude + Leveysaste + + + + Longitude + Pituusaste + + + + Mode + Moodi + + + + Key + Sävellaji + + + + + Energy + Energia + + + + + Danceability + Tanssittavuus + + + + only by ~%1 + vain likimäärin artistilta %1 + + + + + similar to ~%1 + likimäärin artistin %1 samankaltaisia artisteja + + + + with genre ~%1 + likimäärin lajityypillä %1 + + + + + from no one + ei keneltäkään + + + + My Collection + Oma kokoelma + + + + from my radio + omasta radiosta + + + + from %1 radio + käyttäjän %1 radiosta + + + + Variety + Vaihtelevuus + + + + Adventurousness + Seikkailunhaluisuus + + + + very low + erittäin pieni + + + + low + pieni + + + + moderate + kohtalainen + + + + high + suuri + + + + very high + erittäin suuri + + + + with %1 %2 + , jonka %2 on %1 + + + + about %1 BPM + noin %1 BPM + + + + about %n minute(s) long + noin %n minuutti pitkänoin %n minuuttia pitkä + + + + about %1 dB + noin %1 dB + + + + at around %1%2 %3 + noin %1%2 %3elta + + + + in %1 + sävellajissa %1 + + + + in a %1 key + %1ssa + + + + sorted in %1 %2 order + lajiteltu %1, lajitteluperusteena %2 + + + + with a %1 mood + %1 mielialalla + + + + in a %1 style + %1 tyylillä + + + + Tomahawk::GroovesharkParser + + + Error fetching Grooveshark information from the network! + Grooveshark-tietojen hakeminen verkosta epäonnistui! + + + + Tomahawk::InfoSystem::ChartsPlugin + + + Top Overall + Kokonaisuudessaan parhaat + + + + Artists + Artistit + + + + Albums + Albumit + + + + Tracks + Kappaleet + + + + Tomahawk::InfoSystem::FdoNotifyPlugin + + + Tomahawk is playing "%1" by %2%3. + Tomahawk soittaa artistin %2 kappaletta ”%1”%3. + + + + on "%1" + albumilta ”%1” + + + + Tomahawk::InfoSystem::LastFmInfoPlugin + + + Top Tracks + Parhaat kappaleet + + + + Loved Tracks + Tykätyt kappaleet + + + + Hyped Tracks + Hypetetyt kappaleet + + + + Top Artists + Parhaat artistit + + + + Hyped Artists + Hypetetyt artistit + + + + Tomahawk::InfoSystem::NewReleasesPlugin + + + Albums + Albumit + + + + Tomahawk::InfoSystem::TwitterInfoPlugin + + + Listening to "%1" by %2 and loving it! %3 + Kuuntelee kappaletta ”%1” artistilta %2 ja pitää siitä! %3 + + + + Tomahawk::ItunesParser + + + Error fetching iTunes information from the network! + iTunes-tietojen hakeminen verkosta epäonnistui! + + + + Tomahawk::JSPFLoader + + + New Playlist + Uusi soittolista + + + + Failed to save tracks + Kappaleiden tallentaminen epäonnistui + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. + + + + XSPF Error + XSPF-virhe + + + + This is not a valid XSPF playlist. + Tämä ei ole kelvollinen XSPF-soittolista. + + + + Tomahawk::LatchManager + + + &Catch Up + &Ota kiinni + + + + + &Listen Along + Kuuntele &mukana + + + + Tomahawk::Playlist + + + Would you like to delete the playlist <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + Haluatko poistaa soittolistan <b>”%2”</b>? + + + + Delete + Poista + + + + Tomahawk::Query + + + and + ja + + + + You + Sinä + + + + you + sinä + + + + and + ja + + + + %n other(s) + %n muu%n muuta + + + + %n people + % ihminen%n ihmistä + + + + loved this track + tykkäsi tästä kappaleesta + + + + Tomahawk::RdioParser + + + Error fetching Rdio information from the network! + Rdio-tietojen hakeminen verkosta epäonnistui! + + + + Tomahawk::ShortenedLinkParser + + + Network error parsing shortened link! + Verkkovirhe jäsennettäessä lyhennettyä linkkiä! + + + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Kappale ”%1” artistilta %2 ei voida toistaa virtana. + + + + Tomahawk::Source + + + + Scanning (%L1 tracks) + Etsitään (%L1 kappaletta) + + + + Scanning + Etsitään + + + + Checking + Tarkistetaan + + + + Syncing + Synkronoidaan + + + + Importing + Tuodaan + + + + Saving (%1%) + Tallennetaan (%1 %) + + + + Online + Verkossa + + + + Offline + Ei verkossa + + + + Tomahawk::SpotifyParser + + + Error fetching Spotify information from the network! + Spotify-tietojen hakeminen verkosta epäonnistui! + + + + Tomahawk::XspfUpdater + + + Automatically update from XSPF + Päivitä automaattisesti XSPF:stä + + + + TomahawkApp + + + My Collection + Oma kokoelma + + + + TomahawkOAuthTwitter + + + Twitter PIN + Twitterin PIN + + + + After authenticating on Twitter's web site, +enter the displayed PIN number here: + Tunnistauduttuasi Twitterin verkkosivulla, +anna siellä näytetty PIN-koodi tähän: + + + + TomahawkSettings + + + Local Network + Paikallisverkko + + + + TomahawkTrayIcon + + + &Stop Playback after current Track + Pysäytä s&oitto nykyisen kappaleen jälkeen + + + + + Hide Tomahawk Window + Piilota Tomahawk-ikkuna + + + + Show Tomahawk Window + Näytä Tomahawk-ikkuna + + + + Currently not playing. + Mikään ei soi. + + + + Play + Soita + + + + Pause + Tauko + + + + &Love + &Tykkää + + + + Un-&Love + Lakkaa &tykkäämästä + + + + &Continue Playback after current Track + Jatka s&oittoa nykyisen kappaleen jälkeen + + + + TomahawkWindow + + + Tomahawk + Tomahawk + + + + &Quit + &Lopeta + + + + Ctrl+Q + Ctrl+Q + + + + Go &Online + Mene &verkkoon + + + + Add &Friend... + Lisää &kaveri... + + + + U&pdate Collection + P&äivitä kokoelma + + + + Update Collection + Päivitä kokoelma + + + + &Configure Tomahawk... + Tomahawkin &asetukset... + + + + Load &XSPF... + Lataa &XSPF... + + + + Create &New Playlist... + Luo &uusi soittolista... + + + + About &Tomahawk... + &Tietoa Tomahawkista... + + + + Create New &Automatic Playlist + Luo uusi &automaattinen soittolista + + + + Create New &Station + Luo uusi a&sema + + + + Show Offline Sources + Näytä verkottomat lähteet + + + + Hide Offline Sources + Piilota verkottomat lähteet + + + + Minimize + Pienennä + + + + Ctrl+M + Ctrl+M + + + + Zoom + Zoomaa + + + + Meta+Ctrl+Z + Meta+Ctrl+Z + + + + &Legal Info... + Lakitiet&oa... + + + + Diagnostics... + Diagnostiikka... + + + + Fully &Rescan Collection + &Muodosta kokoelma alusta alkaen + + + + Fully Rescan Collection + Muodosta kokoelma alusta alkaen + + + + Play + Soita + + + + Space + Space + + + + Previous + Edellinen + + + + Next + Seuraava + + + + Back + Takaisin + + + + Go back one page + Mene yksi sivu takaisin + + + + Forward + Eteenpäin + + + + Go forward one page + Mene yksi sivu eteenpäin + + + + + Hide Menu Bar + Piilota valikkorivi + + + + + Show Menu Bar + Näytä valikkorivi + + + + Search for any artist, album or song... + Etsi mitä tahansa artistia, albumia tai kappaletta... + + + + &Main Menu + &Päävalikko + + + + + + Connect To Peer + Yhdistä vertaiseen + + + + Enter peer address: + Anna vertaisen osoite: + + + + Enter peer port: + Anna vertaisen portti: + + + + Enter peer key: + Anna vertaisen avain: + + + + XSPF Error + XSPF-virhe + + + + This is not a valid XSPF playlist. + Tämä ei ole kelvollinen XSPF-soittolista. + + + + Failed to save tracks + Kappaleiden tallentaminen epäonnistui + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. + Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. + Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. + + + + Station + Asema + + + + Create New Station + Luo uusi asema + + + + Name: + Nimi: + + + + Playlist + Soittolista + + + + Automatic Playlist + Automaattinen soittolista + + + + Pause + Tauko + + + + &Play + &Soita + + + + Authentication Error + Tunnistautumisvirhe + + + + Error connecting to SIP: Authentication failed! + Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! + + + + %1 by %2 + track, artist name + %1 artistilta %2 + + + + %1 - %2 + current track, some window title + %1 – %2 + + + + <h2><b>Tomahawk %1<br/>(%2)</h2> + <h2><b>Tomahawk %1<br/>(%2)</h2> + + + + <h2><b>Tomahawk %1</h2> + <h2><b>Tomahawk %1</h2> + + + + Copyright 2010 - 2012 + Copyright 2010–2012 + + + + Thanks to: + Kiitokset: + + + + About Tomahawk + Tietoa Tomahawkista + + + + TopTracksContext + + + Top Hits + Parhaat hitit + + + + TrackInfoWidget + + + Similar Tracks + Samankaltaisia kappaleita + + + + Sorry, but we could not find similar tracks for this song! + Valitettavasti emme löytäneet tälle kappaleelle samankaltaisia kappaleita! + + + + You've listened to this track %n time(s). + Olet kuunnellut tätä kappaletta %n kerran.Olet kuunnellut tätä kappaletta %n kertaa. + + + + You've never listened to this track before. + Et ole kuunnellut tätä kappaletta aiemmin. + + + + You first listened to it on %1. + Kuuntelit sitä ensi kerran %1. + + + + You've listened to %1 %n time(s). + Olet kuunnellut artistia %1 %n kerran.Olet kuunnellut artistia %1 %n kertaa. + + + + You've never listened to %1 before. + Et ole kuunnellut artistia %1 aiemmin. + + + + TrackView + + + Sorry, your filter '%1' did not match any results. + Valitettavasti suodattimesi ”%1” ei tuottanut yhtään tuloksia. + + + + TransferStatusItem + + + from + streaming artist - track from friend + kaverilta + + + + to + streaming artist - track to friend + kaverille + + + + TreeItemDelegate + + + Unknown + Tuntematon + + + + TreeModel + + + All Artists + Kaikki artistit + + + + + My Collection + Oma kokoelma + + + + + Collection of %1 + Käyttäjän %1 kokoelma + + + + TreeView + + + Sorry, your filter '%1' did not match any results. + Valitettavasti suodattimesi ”%1” ei tuottanut yhtään tuloksia. + + + + TwitterConfigWidget + + + Configure this Twitter account + Tämän Twitter-tilin asetukset + + + + The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. + Twitter-liitännäisen avulla voit löytää ja soittaa Tomahawkia käyttävien Twitter-kaveriesi musiikkia sekä lähettää viestejä tilillesi. + + + + Status: No saved credentials + Tila: Ei tallennettuja tunnistetietoja + + + + Authenticate with Twitter + Tunnistaudu Twitteriin + + + + Twitter Connections + Twitter-yhteydet + + + + +If you only want to post tweets, you're done. + +If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! + +You can re-send a sync message at any time simply by sending another tweet using the button. + +Jos haluat vain lähettää twiittejä, olet valmis. + +Jos haluat yhdistää Tomahawkin Twitteriä käyttäviin kavereihisi, valitse twiitin tyyppi ja lähetä synkronointiviesti painamalla Lähetä. Teidän molempien pitää seurata toisianne, koska tässä käytetään yksityisviestejä. Sitten ole kärsivällinen – yhdistämisessä saattaa kestää useita minuutteja! + +Voit lähettää synkronointiviestin uudelleen millä hetkellä hyvänsä lähettämällä toisen twiitin painamalla Lähetä. + + + + Select the kind of tweet you would like, then press the button to post it: + Valitse haluamasi twiitin tyyppi, ja lähetä se sitten painamalla Lähetä: + + + + Global Tweet + Yleistwiitti + + + + @Mention + @Maininta + + + + Direct Message + Yksityisviesti + + + + e.g. @tomahawk + esim. @tomahawk + + + + Send Message + Lähetä viesti + + + + TwitterSipPlugin + + + Enter Twitter username + Anna Twitterin käyttäjätunnus + + + + ViewManager + + + This playlist is empty! + Tämä soittolista on tyhjä! + + + + After you have scanned your music collection you will find your tracks right here. + Löydät kappaleesi tästä, kunhan musiikkikokoelmasi haku on valmistunut. + + + + This collection is empty. + Tämä kokoelma on tyhjä. + + + + SuperCollection + Superkokoelma + + + + Combined libraries of all your online friends + Kaikkien verkkokaveriesi yhdistetyt kirjastot + + + + Recently Played Tracks + Viime aikoina kuunnellut kappaleet + + + + Recently played tracks from all your friends + Kaikkien kaveriesi viime aikoina kuuntelemat kappaleet + + + + Sorry, we could not find any recent plays! + Valitettavasti emme löytäneet yhtään viimeaikaisia soittoja! + + + + WelcomeWidget + + + Recent Additions + Viimeisimmät lisäykset + + + + Newest Stations & Playlists + Uusimmat asemat ja soittolistat + + + + Recently Played Tracks + Viime aikoina kuunnellut kappaleet + + + + Recently played tracks + Viime aikoina kuunnellut kappaleet + + + + No recently created playlists in your network. + Verkossasi ei ole viime aikoina luotuja soittolistoja. + + + + Welcome to Tomahawk + Tervetuloa Tomahawkiin + + + + WhatsHotWidget + + + Charts + Listat + + + + WikipediaContext + + + Wikipedia + Wikipedia + + + + XMPPBot + + + +Terms for %1: + + +Artistin %1 nimet: + + + + No terms found, sorry. + Nimiä ei löydy. + + + + +Hotttness for %1: %2 + + +Artistin %1 suosittuus: %2 + + + + +Familiarity for %1: %2 + + +Artistin %1 tuttuus: %2 + + + + +Lyrics for "%1" by %2: + +%3 + + +Sanat artistin %2 kappaleelle ”%1”: + +%3 + + + + + XSPFLoader + + + Failed to parse contents of XSPF playlist + XSPF-soittolistan sisällön jäsentäminen epäonnistui + + + + Some playlist entries were found without artist and track name, they will be omitted + Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta + + + + Failed to fetch the desired playlist from the network, or the desired file does not exist + Halutun soittolistan hakeminen verkosta epäonnistui tai haluttua tiedostoa ei ole olemassa + + + + New Playlist + Uusi soittolista + + + + XmlConsole + + + Xml stream console + XML-virtakonsoli + + + + + Filter + Suodata + + + + Save log + Tallenna loki + + + + Disabled + Poissa käytöstä + + + + By JID + JID:n perusteella + + + + By namespace uri + Nimiavaruuden URI:n perusteella + + + + By all attributes + Kaikkien attribuuttien perusteella + + + + Visible stanzas + Näkyvät säkeistöt + + + + Information query + Informaatiokysely + + + + Message + Viesti + + + + Presence + Läsnäolo + + + + Custom + Mukautettu + + + + Close + Sulje + + + + Save XMPP log to file + Tallenna XMPP-loki tiedostoon + + + + OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) + OpenDocument Format (*.odf);;HTML-tiedosto (*.html);;Muotoilematon teksti (*.txt) + + + + XmppConfigWidget + + + Xmpp Configuration + XMPP-asetukset + + + + Configure this Xmpp account + Tämän XMPP-tilin asetukset + + + + Enter your Xmpp login to connect with your friends using Tomahawk! + Ole yhteydessä Tomahawkia käyttäviin kavereihisi antamalla XMPP-kirjautumistietosi! + + + + Login Information + Kirjautumistiedot + + + + Xmpp ID: + XMPP-tunnus: + + + + e.g. user@example.com + esim: käyttäjä@esimerkki.fi + + + + Password: + Salasana: + + + + An account with this name already exists! + Tämänniminen tili on jo olemassa! + + + + Advanced Xmpp Settings + XMPP-lisäasetukset + + + + Server: + Palvelin: + + + + Port: + Portti: + + + + Lots of servers don't support this (e.g. GTalk, jabber.org) + Useat palvelimet eivät tue tätä (esim. GTalk ja jabber.org) + + + + Publish currently playing track + Julkaise parhaillaan soiva kappale + + + + Enforce secure connection + Pakota salattu yhteys + + + + XmppSipPlugin + + + User Interaction + Käyttäjän toiminta + + + + Host is unknown + Kone on tuntematon + + + + Item not found + Kohdetta ei löydy + + + + Authorization Error + Valtuutusvirhe + + + + Remote Stream Error + Etävirran virhe + + + + Remote Connection failed + Etäyhteys epäonnistui + + + + Internal Server Error + Sisäinen palvelinvirhe + + + + System shutdown + Järjestelmän sammutus + + + + Conflict + Ristiriita + + + + Unknown + Tuntematon + + + + Do you want to add <b>%1</b> to your friend list? + Haluatko lisätä käyttäjän <b>%1</b> kaverilistallesi? + + + + No Compression Support + Ei pakkaustukea + + + + Enter Jabber ID + Anna Jabber-tunnus + + + + No Encryption Support + Ei salaustukea + + + + No Authorization Support + Ei valtuutustukea + + + + No Supported Feature + Ei-tuettu ominaisuus + + + + Add Friend + Lisää kaveri + + + + Enter Xmpp ID: + Anna XMPP-tunnus: + + + + Add Friend... + Lisää kaveri... + + + + XML Console... + XML-konsoli... + + + + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! + Pahoittelen – olen pelkkä Tomahawk-soittimen (http://gettomahawk.com) automaattinen läsnäoloviesti. Jos näet tämän viestin, tavoittelemasi henkilö ei todennäköisesti ole kirjautuneena, joten yritä myöhemmin uudelleen! + + + + Authorize User + Salli käyttäjä + + + + ZeroconfConfig + + + Local Network configuration + Paikallisverkon asetukset + + + + This plugin will automatically find other users running Tomahawk on your local network + Tämä liitännäinen löytää automaattisesti muut paikallisverkossa olevat Tomahawk-käyttäjät + + + + Connect automatically when Tomahawk starts + Yhdistä automaattisesti Tomahawkin käynnistymisen yhteydessä + + + \ No newline at end of file diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 329966ec0..c60aef685 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Permettre a %1 de se connecter et streamer de vous? - + Allow Streaming Permettre Streaming - + Deny Access Refuser l'accès @@ -22,7 +22,7 @@ de se connecter et streamer de vous? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk a besoin de vous pour décider si %1 est autorisé à se connecter. @@ -68,18 +68,18 @@ de se connecter et streamer de vous? Connections - + Connexions Connect &All - + Connecter tout Disconnect &All - + Déconnecter tout @@ -256,37 +256,17 @@ de se connecter et streamer de vous? AlbumInfoWidget - - Form - Form - - - + Tracklist - + Liste des pistes - + Other Albums - + Autres Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! Désolé, aucun autre album n'a pu être trouvé pour cet artiste ! @@ -296,7 +276,7 @@ de se connecter et streamer de vous? Désolé, nous n'avons pu trouver aucune piste pour cet album ! - + Other Albums by %1 Autres albums de %1 @@ -318,49 +298,32 @@ de se connecter et streamer de vous? ArtistInfoWidget - - Form - Form - - - + Top Hits Top Hits - + Related Artists Artistes similaires - - - Artist - Artiste - - - + Albums Albums - - - Cover - Pochette - - - + Sorry, we could not find any albums for this artist! Désolé, on a pas pu trouver aucun album pour cet artiste! - + Sorry, we could not find any related artists! Désolé, on a rien trouvé par rapport a cet artite! - + Sorry, we could not find any top hits for this artist! Désolé, on a pas pu trouver aucun top hit pour cet artiste! @@ -368,82 +331,15 @@ de se connecter et streamer de vous? AudioControls - - Prev - Précédent - - - - Play - Lecture - - - - Pause - Pause - - - - Next - Suivant - - - - Artist - Artiste - - - - Album - Album - - - - social - social - - - - love - favori - - - - resolver - - - - - Time - Durée - - - - Time Left - Durée restante - - - Shuffle Lecture Aléatoire - Repeat Répéter - - - Low - Bas - - - - High - Haut - Time Elapsed @@ -473,17 +369,17 @@ de se connecter et streamer de vous? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Désolé, on a pas pu trouver la piste '%1' pour %2 - + Sorry, Tomahawk couldn't find the artist '%1' Désolé, on a pas pu trouver l'artiste '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Désolé, on a pas pu trouver l'album '%1' pour %2 @@ -536,11 +432,6 @@ de se connecter et streamer de vous? ContextWidget - - - InfoBar - Barre d'information - @@ -661,82 +552,82 @@ de se connecter et streamer de vous? Much less - + Beaucoup moins Less - + Moins A bit less - + Un peu moins Keep at current - + Ne rien changer A bit more - + Un peu plus More - + Plus Much more - + Beaucoup plus Tempo - + Tempo Loudness - + Intensité Danceability - + Dansabilité Energy - + Energie Song Hotttnesss - + Hotttnesss du morceau Artist Hotttnesss - + Hotttnesss de l'artiste Artist Familiarity - + Familiarité de l'artiste By Description - + Par Description Enter a description - + Saisir une description @@ -762,20 +653,12 @@ de se connecter et streamer de vous? This playlist is currently empty. - + Cette liste de lecture est vide. This playlist is currently empty. Add some tracks to it and enjoy the music! - - - - - GlobalSearchWidget - - - Form - Form + Cette liste de lecture est vide. Ajoutez des morceaux et profitez de la musique ! @@ -788,11 +671,6 @@ de se connecter et streamer de vous? InfoBar - - - InfoBar - Barre d'information - Filter... @@ -801,11 +679,6 @@ de se connecter et streamer de vous? LastFmConfig - - - Form - Form - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ de se connecter et streamer de vous? MetadataEditor - - - Form - Forme - Tags @@ -985,7 +853,7 @@ de se connecter et streamer de vous? Track Number: - + Numéro de piste : @@ -1050,7 +918,7 @@ de se connecter et streamer de vous? Properties - + Propriétés @@ -1148,12 +1016,47 @@ de se connecter et streamer de vous? - Score - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nom @@ -1161,12 +1064,12 @@ de se connecter et streamer de vous? PlaylistItemDelegate - + played %1 by you joué %1 par vous - + played %1 by %2 joué %1 par %2 @@ -1174,51 +1077,56 @@ de se connecter et streamer de vous? PlaylistLargeItemDelegate - + played %1 by you - joué %1 par vous - - - - played %1 by %2 - joué %1 par %2 - - - - added %1 - ajouté par %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - + Une liste de lecture crée %1 - - + + A playlist by %1, created %2. - + Une liste de lecture par %1, crée %2 - + All tracks by %1 on album %2 Tous les titres de %1 sur l'album %2 - + All tracks by %1 Tous les titres de %1 @@ -1337,67 +1245,67 @@ de se connecter et streamer de vous? QObject - + %n year(s) ago il y a %n anil y a %n ans - + %n year(s) %n an%n ans - + %n month(s) ago il y a %n moisil y a %n mois - + %n month(s) %n mois%n mois - + %n week(s) ago il y a %n semaineil y a %n semaines - + %n week(s) %n semaine%n semaines - + %n day(s) ago il y a %n jouril y a %n jours - + %n day(s) %n jour%n jours - + %n hour(s) ago il y a %n heureil y a %n heures - + %n hour(s) %n heure%n heures - + %1 minutes ago il y a %1 minutes - + %1 minutes %1 minutes - + just now à l'instant @@ -1416,6 +1324,18 @@ de se connecter et streamer de vous? Status Updaters Mettre à jour votre statut + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ de se connecter et streamer de vous? QueueView - - - InfoBar - Barre d'information - - + Open Queue Ouvrir la file d'attente - + Open Queue - %n item(s) Ouvrir la file d'attente - %n élémentOuvrir la file d'attente - %n éléments - + Close Queue Fermer la file d'attente @@ -1561,11 +1476,6 @@ de se connecter et streamer de vous? Settings_Accounts - - - Form - - Filter by capability: @@ -1574,11 +1484,6 @@ de se connecter et streamer de vous? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1657,11 +1562,6 @@ de se connecter et streamer de vous? Settings_Collection - - - Form - - Path to scan for music files: @@ -1724,11 +1624,6 @@ de se connecter et streamer de vous? SocialWidget - - - Form - Form - Facebook @@ -1739,16 +1634,6 @@ de se connecter et streamer de vous? Twitter Twitter - - - Cover - Pochette - - - - TextLabel - TextLabel - Tweet @@ -1773,44 +1658,44 @@ de se connecter et streamer de vous? SourceDelegate - + Track Piste - + Album Album - + Artist Artiste - + Local Local - + Top 10 Top 10 - + All available tracks Tous les titres disponibles - - + + Show Afficher - - + + Hide Masquer @@ -2051,11 +1936,6 @@ de se connecter et streamer de vous? SpotifyConfig - - - Form - Form - Configure your Spotify account @@ -2079,10 +1959,15 @@ de se connecter et streamer de vous? Select All - + Tout sélectionner + Sync Starred tracks to Loved tracks + + + + High Quality Streams Streaming haute qualité @@ -2092,7 +1977,7 @@ de se connecter et streamer de vous? Liste de lecture Spotify à synchroniser : - + Delete Tomahawk playlist when removing synchronization Supprimer la liste de lecture de Tomahawk à la suppression de la synchronisation @@ -2239,59 +2124,60 @@ de se connecter et streamer de vous? Tomahawk::Accounts::LastFmConfig - + Testing... Test... - + Test Login Test de connexion - + Importing %1 e.g. Importing 2012/01/01 Importation %1 - + Importing History... Import de l'historique... - + History Incomplete. Resume + Text on a button that resumes import Historique incomplet. Reprendre - + Playback History Imported Historique de lecture importé - - + + Failed Échec - + Success Succès - + Could not contact server Impossible de contacter le serveur - + Synchronizing... Synchronization en cours... - + Synchronization Finished Synchronization Terminée @@ -2299,47 +2185,47 @@ de se connecter et streamer de vous? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synchroniser avec Spotify - + Re-enable syncing with Spotify Réactiver la synchronisation avec Spotify - + Create local copy Créer une copie localement - + Subscribe to playlist changes S'abonner aux modifications de la liste de lecture - + Re-enable playlist subscription Réactiver l'abonnement à la liste de lecture - + Stop subscribing to changes Stopper l'abonnement aux modifications - + Enable Spotify collaborations Activer les collaborations Spotify - + Disable Spotify collaborations Désactiver les collaborations Spotify - + Stop syncing with Spotify Stopper la synchronisation avec Spotify @@ -2347,28 +2233,28 @@ de se connecter et streamer de vous? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Connexion... - + Failed: %1 Echec : %1 - + Logged in as %1 Connecté sous %1 - + Log Out Déconnectez-vous - - + + Log In Connexion @@ -2376,7 +2262,7 @@ de se connecter et streamer de vous? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Jouer la musique et synchroniser vos listes avec Spotify Premium @@ -2526,8 +2412,22 @@ Essayez de vous authentifier de nouveau. Connectez vous à votre compte Jabber/XMPP pour retrouver vos amis + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2543,8 +2443,8 @@ Essayez de vous authentifier de nouveau. - - + + Add to &Queue &Ajouter à la file d'attente @@ -2560,56 +2460,56 @@ Essayez de vous authentifier de nouveau. - + &Love &Favori - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Copier le lien de la piste - + Copy Album &Link Copier le &lien de l'album - + Copy Artist &Link Copier le &lien de l'artiste - + Un-&Love &Supprimer des Favoris - + &Delete Items &Supprimer les éléments - + Properties... Propriétés... - + &Delete Item &Supprimer l'élément @@ -2893,16 +2793,19 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. + Artist Familiarity Familiarité de l'artiste + Artist Hotttnesss Hotttnesss de l'artiste + Song Hotttnesss Hotttness du morceau @@ -2928,92 +2831,135 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. + Energy Energie + Danceability Dansabilité - + only by ~%1 uniquement par ~%1 - + + similar to ~%1 similaire à ~%1 - + with genre ~%1 avec le genre ~%1 - - + + from no one de personne - + My Collection Ma Collection - + + from my radio + de ma radio + + + from %1 radio de la radio %1 + + + Variety + + + + + Adventurousness + + + very low + très bas + + + + low + bas + + + + moderate + moyen + + + + high + haut + + + + very high + très haut + + + with %1 %2 avec %1 %2 - + about %1 BPM environ %1 BPM - + about %n minute(s) long environ %n minuteenviron %n minutes - + about %1 dB environ %1 dB - + at around %1%2 %3 à environ %1%2 %3 - + in %1 dans %1 - + in a %1 key en tonalité %1 - + sorted in %1 %2 order trié par ordre %1 %2 - + with a %1 mood avec une ambiance %1 - + in a %1 style ayant un style %1 @@ -3197,10 +3143,10 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.%n other(s) %n autre%n autres - + - %1 people - %1 personnes + %n people + @@ -3224,6 +3170,14 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.Erreur réseau lors du décodage de l'URL courte! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3287,7 +3241,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. TomahawkApp - + My Collection Ma Collection @@ -3307,6 +3261,14 @@ enter the displayed PIN number here: saisissez le numéro PIN ici : + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3513,159 +3475,159 @@ saisissez le numéro PIN ici : Go forward one page Avancer d'une page - - - Global Search... - Recherche Globale... - - + Hide Menu Bar Masquer la barre de menu - + Show Menu Bar Afficher la barre de menu + + + Search for any artist, album or song... + Chercher un artiste, un album, ou un morceau + &Main Menu &Menu Principal - - - + + + Connect To Peer Connexion à un pair - + Enter peer address: Adresse du pair : - + Enter peer port: Port du pair : - + Enter peer key: Clé du pair : - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sauter. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Droit d'auteur 2010 - 2012 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk @@ -3681,67 +3643,37 @@ saisissez le numéro PIN ici : TrackInfoWidget - - Form - Form - - - - Cover - Pochette - - - - Track - Piste - - - - Artist - Artiste - - - - Album - Album - - - - Statistics - Statistiques - - - + Similar Tracks Piste similaire - + Sorry, but we could not find similar tracks for this song! Désolé, nous n'avons pu trouver aucune piste similaire pour cette chanson ! - + You've listened to this track %n time(s). Vous avez écouté cette piste %n fois.Vous avez écouté cette piste %n fois. - + You've never listened to this track before. Vous n'avez encore jamais écouté cette piste. - + You first listened to it on %1. Vous l'avez écouté pour la première fois le %1. - + You've listened to %1 %n time(s). Vous avez écouté %1 %n fois.Vous avez écouté %1 %n fois. - + You've never listened to %1 before. Vous n'avez encore jamais écouté %1. @@ -3749,7 +3681,7 @@ saisissez le numéro PIN ici : TrackView - + Sorry, your filter '%1' did not match any results. Désolé, votre filtre '%1' ne correspond à aucun résultat. @@ -3772,7 +3704,7 @@ saisissez le numéro PIN ici : TreeItemDelegate - + Unknown Inconnu @@ -3800,7 +3732,7 @@ saisissez le numéro PIN ici : TreeView - + Sorry, your filter '%1' did not match any results. Désolé, votre filtre '%1' ne correspond à aucun résultat. @@ -3891,7 +3823,7 @@ Vous pouvez envoyer un message de synchronisation quand vous le souhaitez en env This playlist is empty! - + Cette liste de lecture est vide! @@ -4316,11 +4248,6 @@ Paroles de "%1" par %2 : ZeroconfConfig - - - Form - Form - Local Network configuration diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 8e0f1d6fa..c18c01d6d 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Quere permitirlle a %1 que se conecte en stream contigo? - + Allow Streaming Permitir o streaming - + Deny Access Negar o acceso @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk precisa que decidas se %1 pode conectarse. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Formulario - - - + Tracklist Lista de reprodución - + Other Albums Outros álbums - - Cover - Portada - - - - Album - Álbum - - - - Artist - Artista - - - + Sorry, we could not find any other albums for this artist! Non se atopou ningún outro álbum para este artista! @@ -295,7 +275,7 @@ connect and stream from you? Non se puido atopar ningunha outra pista para este álbum! - + Other Albums by %1 Outros álbums de %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Formulario - - - + Top Hits Maiores éxitos - + Related Artists Artistas relacionados - - - Artist - Artista - - - + Albums Álbums - - - Cover - Portada - - - + Sorry, we could not find any albums for this artist! Non se atopou ningún álbum para este artista! - + Sorry, we could not find any related artists! Non se atopou ningún artista relacionado! - + Sorry, we could not find any top hits for this artist! Non se atopou ningún éxito deste artista! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Anterior - - - - Play - Reproducir - - - - Pause - Pausa - - - - Next - Seguinte - - - - Artist - Artista - - - - Album - Álbum - - - - social - social - - - - love - gusta - - - - resolver - resolvedor - - - - Time - Tempo - - - - Time Left - Tempo que queda - - - Shuffle Ao chou - Repeat Repetir - - - Low - Baixa - - - - High - Alta - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawk non atopa a pista «%1» de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawl non atopa o artista «%1» - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawk non atopa o álbum «%1» de %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Barra de info - @@ -769,14 +660,6 @@ connect and stream from you? Esta lista de reprodución está baleira. Engádelle algunhas pistas para desfrutar da música! - - GlobalSearchWidget - - - Form - Formulario - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - Barra de info - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Formulario - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - Formulario - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score - Puntuación + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you escoitou %1 por coñecela por ti - + played %1 by %2 escoitou %1 por coñecela por %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - escoitou %1 por coñecela por ti - - - - played %1 by %2 - escoitou %1 por coñecela por %2 - - - - added %1 - engadiu %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. Unha lista de reprodución que ti creaches %1. - - + + A playlist by %1, created %2. Unha lista reprodución de %1, creada por %2. - + All tracks by %1 on album %2 Tódalas pistas de %1 no álbum %2 - + All tracks by %1 Tódalas pistas de %1 @@ -1336,67 +1244,67 @@ connect and stream from you? QObject - + %n year(s) ago %n ano(s) atrás - + %n year(s) %n ano(s) - + %n month(s) ago %n mes(es) atrás - + %n month(s) %n mes(es) - + %n week(s) ago %n semana(s) atrás - + %n week(s) %n semana(s) - + %n day(s) ago %n día(s) atrás - + %n day(s) %n día(s) - + %n hour(s) ago %n hora(s) atrás - + %n hour(s) %n hora(s) - + %1 minutes ago Hai %1 minutos - + %1 minutes %1 minutos - + just now só agora @@ -1415,6 +1323,18 @@ connect and stream from you? Status Updaters Actualizador de estado + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1426,24 +1346,19 @@ connect and stream from you? QueueView - - - InfoBar - Barra de info - - + Open Queue Abrir a ringleira - + Open Queue - %n item(s) Abrir a ringleira - %n elemento(s) - + Close Queue Pechar a ringleira @@ -1560,11 +1475,6 @@ connect and stream from you? Settings_Accounts - - - Form - Formulario - Filter by capability: @@ -1573,11 +1483,6 @@ connect and stream from you? Settings_Advanced - - - Form - Formulario - Remote Peer Connection Method @@ -1656,11 +1561,6 @@ connect and stream from you? Settings_Collection - - - Form - Formulario - Path to scan for music files: @@ -1723,11 +1623,6 @@ connect and stream from you? SocialWidget - - - Form - Formulario - Facebook @@ -1738,16 +1633,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Portada - - - - TextLabel - Etiqueta de texto - Tweet @@ -1772,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Os 10 primeiros - + All available tracks Tódolas pistas dispoñíbeis - - + + Show Mostrar - - + + Hide Agochar @@ -2052,11 +1937,6 @@ connect and stream from you? SpotifyConfig - - - Form - Formulario - Configure your Spotify account @@ -2084,6 +1964,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Transmisión de alta calidade @@ -2093,7 +1978,7 @@ connect and stream from you? Listas de reprodución de Spotify para manter en sincronización: - + Delete Tomahawk playlist when removing synchronization Eliminar a lista de reprodución cando se elimine a sincronización @@ -2240,59 +2125,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... Probando... - + Test Login Comprobar o acceso - + Importing %1 e.g. Importing 2012/01/01 A importar %1 - + Importing History... Importando o historial... - + History Incomplete. Resume + Text on a button that resumes import Historial incompleto. Reanudando - + Playback History Imported Importouse o historial de reproducións - - + + Failed Fallou - + Success Éxito - + Could not contact server Non se pode contactar co servidor - + Synchronizing... Sincronizando... - + Synchronization Finished Rematou a sincronización @@ -2300,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronización con Spotify - + Re-enable syncing with Spotify Reactivar a sincronización con Spotify - + Create local copy Crear unha copia local - + Subscribe to playlist changes Subscribirse a cambios la lista de reprodución - + Re-enable playlist subscription Reactivar subscrición á lista de reprodución - + Stop subscribing to changes Parar de subscribirse a cambios - + Enable Spotify collaborations Activar as colaboracións con Spotify - + Disable Spotify collaborations Descativar as colaboracións con Spotify - + Stop syncing with Spotify Deter a sincronización con Spotify @@ -2348,28 +2234,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Rexistrándose... - + Failed: %1 Fallou: %1 - + Logged in as %1 Accedeuse como %1 - + Log Out Saír - - + + Log In Iniciar sesión @@ -2377,7 +2263,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Escoitar música de aí e sincronizar coas túas listas de reprodución empregando Spotify Premium @@ -2527,8 +2413,22 @@ Proba a volver a autenticarte. Accede á túa conta Jabber/XMPP para conectarte cas túas amizades + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2544,8 +2444,8 @@ Proba a volver a autenticarte. - - + + Add to &Queue Engadir á &ringleira @@ -2561,56 +2461,56 @@ Proba a volver a autenticarte. - + &Love &Gústame - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link Copiar a &ligazón do álbum - + Copy Artist &Link Copiar a &ligazón do artista - + Un-&Love Xa non me &gusta - + &Delete Items &Borrar os elementos - + Properties... Propiedades... - + &Delete Item &Borrar o elemento @@ -2894,16 +2794,19 @@ Proba a trocar os filtros para ter outra lista música para escoitar. + Artist Familiarity Familiaridade do artista + Artist Hotttnesss Agrado do artista + Song Hotttnesss Agrado da canción @@ -2929,92 +2832,135 @@ Proba a trocar os filtros para ter outra lista música para escoitar. + Energy Enerxía + Danceability Como de bailable - + only by ~%1 só por ~%1 - + + similar to ~%1 similar a ~%1 - + with genre ~%1 có xénero ~%1 - - + + from no one de niguén - + My Collection A miña colección - + + from my radio + + + + from %1 radio de %1 radio + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 con %1 %2 - + about %1 BPM sobre %1 BPM - + about %n minute(s) long cerca de %n minuto(s) de longa - + about %1 dB sobre %1 dB - + at around %1%2 %3 aproximadamente %1 %2 %3 - + in %1 en %1 - + in a %1 key nunha tecla %1 - + sorted in %1 %2 order ordenada na %1 %2 orde - + with a %1 mood cun %1 de humor - + in a %1 style nun estilo %1 @@ -3198,10 +3144,10 @@ Proba a trocar os filtros para ter outra lista música para escoitar. %n other(s) - + - %1 people - %1 persoas + %n people + @@ -3225,6 +3171,14 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Erro de rede no acurtamento de ligazóns! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3288,7 +3242,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. TomahawkApp - + My Collection A miña colección @@ -3307,6 +3261,14 @@ enter the displayed PIN number here: Despois de autentificarse na páxina web de Twitter, introduce o número PIN que se mostrase aquí: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3513,160 +3475,160 @@ enter the displayed PIN number here: Go forward one page Ir unha páxian adiante - - - Global Search... - Busca global... - - + Hide Menu Bar Agochar a barra de menú - + Show Menu Bar Mostrar a barra de menú + + + Search for any artist, album or song... + + &Main Menu Menú &principal - - - + + + Connect To Peer Conectar cun parceiro - + Enter peer address: Introducir a dirección do parceiro: - + Enter peer port: Introducir o porto do parceiro: - + Enter peer key: Introducir a clave do parceiro: - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autentificación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk @@ -3682,67 +3644,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Formulario - - - - Cover - Portada - - - - Track - Pista - - - - Artist - Artista - - - - Album - Álbum - - - - Statistics - Estatísticas - - - + Similar Tracks Pistas parecidas - + Sorry, but we could not find similar tracks for this song! Non se atopan pistas parecidas a esta canción! - + You've listened to this track %n time(s). Escoitaches esta pista %n vece(s). - + You've never listened to this track before. Nunca antes escoutaras esta pista. - + You first listened to it on %1. Escoitaches esta pista por primeira vez en %1. - + You've listened to %1 %n time(s). Escoitaches %1 %n veces. - + You've never listened to %1 before. Nunca antes escoitaras a %1. @@ -3750,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. O filtro «%1» non dá ningún resultado. @@ -3773,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Descoñecido @@ -3801,7 +3733,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. O filtro «%1» non atopou ningún resultado que coincida. @@ -4302,11 +4234,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Formulario - Local Network configuration diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 04dbaa9ec..796b8ccb2 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - - - - + Top Hits - + Related Artists - - - Artist - - - - + Albums - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - - - - - Play - - - - - Pause - - - - - Next - - - - - Artist - - - - - Album - - - - - social - - - - - love - - - - - resolver - - - - - Time - - - - - Time Left - - - - Shuffle - Repeat - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> + e.g. by SomeArtist - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago - + %n year(s) - + %n month(s) ago - + %n month(s) - + %n week(s) ago - + %n week(s) - + %n day(s) ago - + %n day(s) - + %n hour(s) ago - + %n hour(s) - + %1 minutes ago - + %1 minutes - + just now @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter - - - Cover - - - - - TextLabel - - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -2090,7 +1975,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed - + Success - + Could not contact server - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items - + Properties... - + &Delete Item @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 8f2091f58..e2893ef0e 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - - - - + Tracklist Zeneszám lista - + Other Albums Egyéb albumok - - Cover - Borító - - - - Album - Album - - - - Artist - Előadó - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - - - - + Top Hits Top Hits - + Related Artists Kapcsolódó előadók - - - Artist - - - - + Albums Albumok - - - Cover - Borító - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Előző - - - - Play - Lejátszás - - - - Pause - Szünet - - - - Next - Következő - - - - Artist - Előadó - - - - Album - Album - - - - social - - - - - love - - - - - resolver - - - - - Time - Idő - - - - Time Left - Hátralévő idő - - - Shuffle - Repeat Ismétlés - - - Low - Alacsony - - - - High - Magas - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - InfoBar - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - InfoBar - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name Név @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> - by <b>%1</b> + e.g. by SomeArtist + - + by <b>%1</b> on <b>%2</b> - by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum + PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago %n évvel ezelőtt%n évvel ezelőtt - + %n year(s) %n év%n év - + %n month(s) ago %n hónappal ezelőtt%n hónappal ezelőtt - + %n month(s) %n hónap%n hónap - + %n week(s) ago %n héttel ezelőtt%n héttel ezelőtt - + %n week(s) %n hét%n hét - + %n day(s) ago %n nappal ezelőtt%n nappal ezelőtt - + %n day(s) %n nap%n nap - + %n hour(s) ago %n órával ezelőtt%n órával ezelőtt - + %n hour(s) %n óra%n óra - + %1 minutes ago %1 perccel ezelőtt - + %1 minutes %1 perc - + just now éppen most @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters Állapot frissítő + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter - - - Cover - - - - - TextLabel - - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Zeneszám - + Album Album - + Artist Előadó - + Local Helyi - + Top 10 Top 10 - + All available tracks Összes elérhető zeneszám - - + + Show Mutatás - - + + Hide Elrejtés @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Magas minőségű streamek @@ -2090,7 +1975,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login Teszt belépés - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed Sikertelen - + Success Sikeres - + Could not contact server - + Synchronizing... Szinkronizálás... - + Synchronization Finished Szinkronizálás befejezve @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Szinkronizálás a Spotify-val - + Re-enable syncing with Spotify - + Create local copy Helyi másolat létrehozása - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Belépés... - + Failed: %1 - + Logged in as %1 Bejelentkezve mint %1 - + Log Out Kijelentkezés - - + + Log In Belépés @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items - + Properties... Tulajdonságok... - + &Delete Item @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Energia + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Saját kollekció - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Saját kollekció @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - Globális keresés... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk Tomahawkról @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - Borító - - - - Track - Zeneszám - - - - Artist - Előadó - - - - Album - Album - - - - Statistics - Statisztika - - - + Similar Tracks Hasonló zeneszámok - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_i18n.qrc b/lang/tomahawk_i18n.qrc index f01815d68..27170c385 100644 --- a/lang/tomahawk_i18n.qrc +++ b/lang/tomahawk_i18n.qrc @@ -3,6 +3,7 @@ tomahawk_en.qm tomahawk_bg.qm tomahawk_de.qm +tomahawk_fi.qm tomahawk_fr.qm tomahawk_pl.qm tomahawk_pt_BR.qm diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 5083ea4d8..0bd41b80d 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Corpo - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! Siamo spiacenti, non è stato possibile trovare altri album di questo artista! @@ -295,7 +275,7 @@ connect and stream from you? Ci dispiace, ma non abbiamo trovato nessuna traccia di questo album! - + Other Albums by %1 Altri album di %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Corpo - - - + Top Hits Top Hits - + Related Artists Artisti simili - - - Artist - - - - + Albums Album - - - Cover - Copertina - - - + Sorry, we could not find any albums for this artist! Ci dispiace, ma non abbiamo trovato nessun album di questo artista! - + Sorry, we could not find any related artists! Siamo spiacenti, non è stato possibile trovare artisti simili! - + Sorry, we could not find any top hits for this artist! Ci dispiace, ma non abbiamo trovato alcun risultato top per l'artista! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Indietro - - - - Play - Play - - - - Pause - Pausa - - - - Next - Avanti - - - - Artist - Artista - - - - Album - Album - - - - social - sociale - - - - love - love - - - - resolver - - - - - Time - Durata - - - - Time Left - Tempo rimasto - - - Shuffle Riproduzione casuale - Repeat Ripeti - - - Low - Basso - - - - High - Alto - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Barra info - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Corpo - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - Barra dell'informazioni - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Corpo - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score - Punteggio + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you ascoltata %1 da te - + played %1 by %2 ascoltata %1 da %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - ascoltata %1 da te - - - - played %1 by %2 - ascoltata %1 da %2 - - - - added %1 - %1 aggiunte - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Tutte le tracce di %1 sull'album %2 - + All tracks by %1 Tutte le tracce di %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago un anno fa %n anni fa - + %n year(s) un anno fa%n anni fa - + %n month(s) ago un mese fa%n mesi fa - + %n month(s) un mese%n mesi - + %n week(s) ago una settimana fa%n settimane fa - + %n week(s) una settimana%n settimane - + %n day(s) ago un giorno fa%n giorni fa - + %n day(s) un giorno%n giorni - + %n hour(s) ago un'ora fa%n ore fa - + %n hour(s) un'ora%n ore - + %1 minutes ago %1 minuti fa - + %1 minutes %1 minuti - + just now proprio ora @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters Status updaters + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - Barra info - - + Open Queue Espandi coda - + Open Queue - %n item(s) Espandi coda - un elementoEspandi coda - %n elementi - + Close Queue Collassa coda @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - Scheda - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Copertina - - - - TextLabel - TextLabel - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Traccia - + Album Album - + Artist Artista - + Local Locale - + Top 10 Top 10 - + All available tracks Tutte le tracce disponibili - - + + Show Mostra - - + + Hide Nascondi @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - Corpo - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Stream di alta qualità @@ -2090,7 +1975,7 @@ connect and stream from you? Playlist di Spotify da tenere sincronizzate: - + Delete Tomahawk playlist when removing synchronization Cancella la playlist su Tomahawk quando viene rimossa la sincronizzazione @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... Sto provando... - + Test Login Prova di login - + Importing %1 e.g. Importing 2012/01/01 Sto importando %1 - + Importing History... Importando la cronologia... - + History Incomplete. Resume + Text on a button that resumes import Cronologia incompleta. Riprendere - + Playback History Imported Cronologia di riproduzione importata - - + + Failed Fallimento - + Success Successo - + Could not contact server Impossibile contattare server - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizzati con Spotify - + Re-enable syncing with Spotify Riabilita sincronizzazione con Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Ferma la sincronizzazione con Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Accedendo... - + Failed: %1 Fallito: %1 - + Logged in as %1 - + Log Out - - + + Log In Login @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Ascolta e sincronizza la musica con Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. Fai login to il tuo account Jabber/XMPP per connetterti ai tuoi amici + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Aggiungi alla &coda @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Copia link della traccia - + Copy Album &Link - + Copy Artist &Link - + Un-&Love Un-&love - + &Delete Items &Cancella tracce - + Properties... - + &Delete Item &Cancella traccia @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity Familiarità con l'artista + Artist Hotttnesss Artisti popolari + Song Hotttnesss Canzoni popolari @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Energia + Danceability Ballabilità - + only by ~%1 solo ~%1 - + + similar to ~%1 simili a ~%1 - + with genre ~%1 con il genere ~%1 - - + + from no one da nessuno - + My Collection La mia collezione - + + from my radio + + + + from %1 radio dalla radio %1 + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 con %1 %2 - + about %1 BPM circa %1 BPM - + about %n minute(s) long lunga circa un minutolunga circa %n minuti - + about %1 dB circa %1 db - + at around %1%2 %3 attorno a %1%2 %3 - + in %1 in %1 - + in a %1 key in %1 chiavi - + sorted in %1 %2 order ordinata in modo %1 %2 - + with a %1 mood con un umore %1 - + in a %1 style in uno stile %1 @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) un altro%n altri - + - %1 people - %1 persona + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. Errore di rete nell'analizzare il link accorciato! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection La mia collezione @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: Dopo esserti autenticato sulla pagina di Twitter,⏎ inserisci il PIN visualizzato qui: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page Vai avanti di una pagina - - - Global Search... - Ricerca globale... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer Connettiti al peer - + Enter peer address: Inserisci indirizzo peer: - + Enter peer port: Inserisci porta peer: - + Enter peer key: Inserisce chiave peer: - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Scheda - - - - Cover - Copertina - - - - Track - Traccia - - - - Artist - Artista - - - - Album - Album - - - - Statistics - Statistiche - - - + Similar Tracks Tracce simili - + Sorry, but we could not find similar tracks for this song! Ci dispiace, ma non abbiamo trovato tracce simili per questa canzone! - + You've listened to this track %n time(s). Hai ascoltato questa traccia una volta.Hai ascoltato questa traccia %n volte. - + You've never listened to this track before. Non hai mai ascoltato questa traccia. - + You first listened to it on %1. L'hai ascoltata la prima volta su %1. - + You've listened to %1 %n time(s). Hai ascoltato %1 una volta.Hai ascoltato %1 %n volte. - + You've never listened to %1 before. Non hai mai ascoltato %1. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Spiacente, il tuo filtro %1 non ha trovato nessun risultato. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Sconosciuto @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. Spiacente, il filtro '%1' non ha dato alcun risultato. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Scheda - Local Network configuration diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 263e57848..2875317fc 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? %1からの接続、又はストリーミングを許可しますか? - + Allow Streaming ストリーミングを許可 - + Deny Access アクセスを拒否 @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. %1からの接続を許可することが必要です。 @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - フォーム - - - + Tracklist - + トラックリスト - + Other Albums - + 他のアルバム - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! このアーティストのアルバムは他に見つかりませんでした。 @@ -295,7 +275,7 @@ connect and stream from you? このアルバムの曲は見つかりませんでした。 - + Other Albums by %1 %1の他のアルバム @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - フォーム - - - + Top Hits 大ヒット曲 - + Related Artists 似たアーティスト - - - Artist - アーティスト - - - + Albums アルバム - - - Cover - カバー - - - + Sorry, we could not find any albums for this artist! このアーティストのアルバムは見つかりませんでした。 - + Sorry, we could not find any related artists! 関連アーティストは見つかりませんでした。 - + Sorry, we could not find any top hits for this artist! このアーティストの大ヒット曲は見つかりませんでした。 @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - 前へ - - - - Play - 再生 - - - - Pause - 一時停止 - - - - Next - 次へ - - - - Artist - アーティスト - - - - Album - アルバム - - - - social - ソーシャル - - - - love - Love - - - - resolver - リゾルバー - - - - Time - 時間 - - - - Time Left - 残り時間 - - - Shuffle シャッフル - Repeat リピート - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawkは'%1'と言うアーティストを見つかりませんでした。 - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - インフォメーションバー - @@ -656,97 +547,97 @@ connect and stream from you? Steer this station: - + ステションを運転する: Much less - + 極小 Less - + A bit less - + やや小 Keep at current - + そのまま A bit more - + やや大 More - + Much more - + 極大 Tempo - + テンポ Loudness - + 音量 Danceability - + 踊れる Energy - + エネルギー Song Hotttnesss - + 曲のHotttnesss Artist Hotttnesss - + アーティストのHotttnesss Artist Familiarity - + アーティストの人気度 By Description - + 内容準に分類する Enter a description - + 内容を入力して下さい Apply steering command - + 運転のコマンドを適用 Reset all steering commands - + 運転のコマンドをリセット @@ -762,20 +653,12 @@ connect and stream from you? This playlist is currently empty. - + このプレイリストには何も入っていません。 This playlist is currently empty. Add some tracks to it and enjoy the music! - - - - - GlobalSearchWidget - - - Form - フォーム + プレイリストには何も入っていません。トラックを追加して、音楽を楽しみましょう! @@ -788,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - インフォメーションバー - Filter... @@ -801,11 +679,6 @@ connect and stream from you? LastFmConfig - - - Form - フォーム - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ connect and stream from you? MetadataEditor - - - Form - フォーム - Tags @@ -1050,7 +918,7 @@ connect and stream from you? Properties - + 情報 @@ -1148,12 +1016,47 @@ connect and stream from you? - Score - スコア + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name 名前 @@ -1161,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1を再生しました。 - + played %1 by %2 %2が%1を再生しました。 @@ -1174,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you %1を再生しました。 - + played %1 by %2 + e.g. played 3 hours ago by SomeSource %2が%1を再生しました。 - + added %1 - %1を追加しました。 + e.g. added 3 hours ago + %1を追加しました - + by <b>%1</b> - + e.g. by SomeArtist + <b>%1</b> - + by <b>%1</b> on <b>%2</b> - + e.g. by SomeArtist on SomeAlbum + <b>%1</b>の<b>%2</b> PlaylistModel - + A playlist you created %1. - + %1に作ったプレイリスト。 - - + + A playlist by %1, created %2. - + %2に、%1に作られたプレイリスト。 - + All tracks by %1 on album %2 %1のアルバム%2のトラック - + All tracks by %1 %1のトラック @@ -1337,67 +1245,67 @@ connect and stream from you? QObject - + %n year(s) ago %n年前 - + %n year(s) %n年 - + %n month(s) ago %nヶ月前 - + %n month(s) %nヶ月 - + %n week(s) ago %n週間前 - + %n week(s) %n週間 - + %n day(s) ago %n日前 - + %n day(s) %n日 - + %n hour(s) ago %n時間前 - + %n hour(s) %n時間 - + %1 minutes ago %1分前 - + %1 minutes %1分 - + just now たった今 @@ -1416,6 +1324,18 @@ connect and stream from you? Status Updaters ステータスを更新 + + + + %1 Config + %1設定 + + + + + %1 Configuration + %1設定 + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ connect and stream from you? QueueView - - - InfoBar - インフォメーションバー - - + Open Queue キューを表示 - + Open Queue - %n item(s) キューを表示 - %n項目 - + Close Queue キューを隠す @@ -1561,11 +1476,6 @@ connect and stream from you? Settings_Accounts - - - Form - フォーム - Filter by capability: @@ -1574,11 +1484,6 @@ connect and stream from you? Settings_Advanced - - - Form - フォーム - Remote Peer Connection Method @@ -1647,7 +1552,7 @@ connect and stream from you? Show notification when a new song starts to play - + 曲が再生したら、通知を表示する @@ -1657,11 +1562,6 @@ connect and stream from you? Settings_Collection - - - Form - フォーム - Path to scan for music files: @@ -1727,11 +1627,6 @@ connect and stream from you? SocialWidget - - - Form - フォーム - Facebook @@ -1742,16 +1637,6 @@ connect and stream from you? Twitter Twitter - - - Cover - カバー - - - - TextLabel - TextLabel - Tweet @@ -1776,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track トラック - + Album アルバム - + Artist アーティスト - + Local ローカル - + Top 10 トップ10 - + All available tracks 利用可能トラック - - + + Show 表示 - - + + Hide 隠す @@ -2054,11 +1939,6 @@ connect and stream from you? SpotifyConfig - - - Form - フォーム - Configure your Spotify account @@ -2086,6 +1966,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高音質ストリーム @@ -2095,7 +1980,7 @@ connect and stream from you? 同期するSpotifyのプレイリスト: - + Delete Tomahawk playlist when removing synchronization 同期を無効すれば、Tomahawkのプレイリストを削除 @@ -2242,59 +2127,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... 試験用接続... - + Test Login ログインを試用 - + Importing %1 e.g. Importing 2012/01/01 %1をインポート - + Importing History... 履歴をインポート中... - + History Incomplete. Resume + Text on a button that resumes import 不完全履歴。回復 - + Playback History Imported 再生履歴インポート完了 - - + + Failed 失敗しました - + Success 完成 - + Could not contact server サーバーに接続できませんでした - + Synchronizing... 同期中... - + Synchronization Finished 同期完了 @@ -2302,47 +2188,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Spotifyと同期する - + Re-enable syncing with Spotify Spotifyとの同期を再び有効にする - + Create local copy ローカルのコピーを作成 - + Subscribe to playlist changes プレイリストの変更フィードに登録する - + Re-enable playlist subscription 再びプレイリストのフィードに登録する - + Stop subscribing to changes 変更フィードの登録を解除 - + Enable Spotify collaborations Spotifyのコラボレーションを有効にする - + Disable Spotify collaborations Spotifyのコラボレーションを無効にする - + Stop syncing with Spotify Spotifyとの同期を解除 @@ -2350,28 +2236,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... ログイン中... - + Failed: %1 失敗しました: %1 - + Logged in as %1 %1としてログイン済み - + Log Out ログアウト - - + + Log In ログイン @@ -2379,7 +2265,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Spotify Premiumのアカウントを使って、音楽の再生とプレイリストの同期ができます @@ -2529,8 +2415,22 @@ You may wish to try re-authenticating. Jabber/XMPPのアカウントにログインすると、友達と共有できます + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + ローカルネットワーク + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + ローカルネットワーク + Automatically connect to Tomahawks on the local network @@ -2546,8 +2446,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue キューに追加 @@ -2563,56 +2463,56 @@ You may wish to try re-authenticating. - + &Love &Love - - - + + + &Go to "%1" - + %1に移動 - - - + + + Go to "%1" - + %1に移動 - + &Copy Track Link トラックリンクをコピー - + Copy Album &Link アルバムリンクをコピー - + Copy Artist &Link アーティストリンクをコピー - + Un-&Love Loveじゃないトラック - + &Delete Items 項目を削除 - + Properties... 情報... - + &Delete Item 項目を削除 @@ -2896,16 +2796,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity アーティストの人気度 + Artist Hotttnesss アーティストのHotttnesss + Song Hotttnesss 曲のHotttnesss @@ -2931,92 +2834,135 @@ Try tweaking the filters for a new set of songs to play. + Energy エネルギー + Danceability 踊れる - + only by ~%1 ~%1のみ - + + similar to ~%1 ~%1に似てる - + with genre ~%1 ジャンルは~%1 - - + + from no one ソース不明 - + My Collection マイコレクション - + + from my radio + マイラジオから + + + from %1 radio %1ラジオから + + + Variety + 多様 + + + + Adventurousness + 大胆さ + + very low + 極小 + + + + low + + + + + moderate + + + + + high + + + + + very high + 極大 + + + with %1 %2 %1は%2で - + about %1 BPM BPMは約%1 - + about %n minute(s) long 約%n分 - + about %1 dB 約%1dB - + at around %1%2 %3 %1%2 %3の近くに - + in %1 %1に - + in a %1 key %1調に - + sorted in %1 %2 order %1 %2順にソートされて - + with a %1 mood %1のムードで - + in a %1 style %1のスタイルで @@ -3200,10 +3146,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) 他に%n人 - + - %1 people - %1人 + %n people + %n人 @@ -3227,6 +3173,14 @@ Try tweaking the filters for a new set of songs to play. 短縮リンクの解析中にネットワークエラーが発生しました! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + '%1'の'%2'が配信できません。 + + Tomahawk::Source @@ -3290,7 +3244,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection マイコレクション @@ -3310,6 +3264,14 @@ enter the displayed PIN number here: このPIN番号を入力して下さい: + + TomahawkSettings + + + Local Network + ローカルネットワーク + + TomahawkTrayIcon @@ -3517,159 +3479,159 @@ Meta+Ctrl+Z Go forward one page 次のページ - - - Global Search... - グローバルサーチ... - - + Hide Menu Bar メニューバーを隠す - + Show Menu Bar メニューバーを表示 + + + Search for any artist, album or song... + アーティスト、又はアルバムや曲で検索して下さい + &Main Menu メインメニュー - - - + + + Connect To Peer ピアに接続する - + Enter peer address: ピアのアドレスを入力: - + Enter peer port: ピアのポートを入力: - + Enter peer key: ピアのキーを入力: - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて @@ -3685,67 +3647,37 @@ Meta+Ctrl+Z TrackInfoWidget - - Form - フォーム - - - - Cover - カバー - - - - Track - トラック - - - - Artist - アーティスト - - - - Album - アルバム - - - - Statistics - 統計 - - - + Similar Tracks 似ているトラック - + Sorry, but we could not find similar tracks for this song! この曲に似ているトラックが見つかりませんでした。 - + You've listened to this track %n time(s). このトラックは%n回聴いています。 - + You've never listened to this track before. このトラックを一度も聴いていません。 - + You first listened to it on %1. 初めてこの曲を聴いたのは、%1です。 - + You've listened to %1 %n time(s). %1を%n回聴いています。 - + You've never listened to %1 before. %1を一度も聴いていません。 @@ -3753,7 +3685,7 @@ Meta+Ctrl+Z TrackView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 @@ -3776,7 +3708,7 @@ Meta+Ctrl+Z TreeItemDelegate - + Unknown 不明 @@ -3804,7 +3736,7 @@ Meta+Ctrl+Z TreeView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 @@ -3895,7 +3827,7 @@ Twitterを使っている友達にTomahawkを接続したいなら、ツイー This playlist is empty! - + このプレイリストには何も入っていません。 @@ -4320,11 +4252,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - フォーム - Local Network configuration diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index f9d0c92f2..79e4be9f1 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming Leisti transliavimą - + Deny Access Drausti priėjimą @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Forma - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! Atsiprašome, neradome jokių kitų šio atlikėjo albumų! @@ -295,7 +275,7 @@ connect and stream from you? Atsiprašome, neradome jokių takelių iš šio albumo! - + Other Albums by %1 Kiti %1 albumai @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Forma - - - + Top Hits - + Related Artists Susiję atlikėjai - - - Artist - Atlikėjas - - - + Albums Albumai - - - Cover - Viršelis - - - + Sorry, we could not find any albums for this artist! Atsiprašome, neradome jokių šio atlikėjo albumų! - + Sorry, we could not find any related artists! Atsiprašome, neradome jokių susijusių atlikėjų! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Ankstesnis - - - - Play - Groti - - - - Pause - Pristabdyti - - - - Next - Kitas - - - - Artist - Atlikėjas - - - - Album - Albumas - - - - social - - - - - love - - - - - resolver - - - - - Time - - - - - Time Left - - - - Shuffle Maišyti - Repeat Kartoti - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti takelio '%1', atliekamo %2 - + Sorry, Tomahawk couldn't find the artist '%1' Atsiprašome, Tomahawk nepavyko rasti atlikėjo '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti %2 atliekamo albumo '%1' @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Forma - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Forma - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - Forma - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score - Įvertis + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Vardas @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> + e.g. by SomeArtist - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Visi %1 takeliai iš albumo %2 - + All tracks by %1 Visi %1 takeliai @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago prieš %n metusprieš %n metusprieš %n metų - + %n year(s) %n metai%n metai%n metų - + %n month(s) ago prieš %n mėnesįprieš %n mėnesiusprieš %n mėnesių - + %n month(s) %n mėnuo%n mėnesiai%n mėnesių - + %n week(s) ago prieš %n savaitęprieš %n savaitesprieš %n savaičių - + %n week(s) %n savaitė%n savaitės%n savaičių - + %n day(s) ago prieš %n dienąprieš %n dienasprieš %n dienų - + %n day(s) %n diena%n dienos%n dienų - + %n hour(s) ago prieš %n valandąprieš %n valandasprieš %n valandų - + %n hour(s) %n valanda%n valandos%n valandų - + %1 minutes ago - + %1 minutes - + just now ką tik @@ -1412,6 +1320,18 @@ connect and stream from you? Status Updaters + Būsenos atnaujintojai + + + + + %1 Config + + + + + + %1 Configuration @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue Atverti eilę - + Open Queue - %n item(s) Atverti eilę - %n elementasAtverti eilę - %n elementaiAtverti eilę - %n elementų - + Close Queue Užverti eilę @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - Forma - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Viršelis - - - - TextLabel - Teksto etiketė - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Takelis - + Album Albumas - + Artist Atlikėjas - + Local - + Top 10 Top 10 - + All available tracks Visi prieinami takeliai - - + + Show Rodyti - - + + Hide Slėpti @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - Forma - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Aukštos kokybės srautai @@ -2090,7 +1975,7 @@ connect and stream from you? Sinchronizuojami Spotify grojaraščiai: - + Delete Tomahawk playlist when removing synchronization Ištrinti Tomahawk grojaraštį kai panaikinamas sinchronizavimas @@ -2197,7 +2082,7 @@ connect and stream from you? username@gmail.com - + vartotojas@gmail.com @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... Bandoma... - + Test Login Išbandyti prisijungimą - + Importing %1 e.g. Importing 2012/01/01 Įkeliama %1 - + Importing History... Įkeliama istorija... - + History Incomplete. Resume + Text on a button that resumes import Istorija nepilna. Tęskite - + Playback History Imported Klausymosi istorija įkelta - - + + Failed Nepavyko - + Success - + Could not contact server - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sinchronizuoti su Spotify - + Re-enable syncing with Spotify Iš naujo įjungti sinchronizavimą su Spotify - + Create local copy Sukurti vietinę kopiją - + Subscribe to playlist changes Sekti grojaraščio pokyčius - + Re-enable playlist subscription Sekti grojarašio atnaujinimus iš naujo - + Stop subscribing to changes Nebesekti grojaraščio pokyčių - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Stabdyti sinchronizavimą su Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Prisijungiama... - + Failed: %1 Nepavyko: %1 - + Logged in as %1 Prisijungta kaip %1 - + Log Out Atsijungti - - + + Log In Prisijungti @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Pridėti į &eilę @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love My&liu - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Kopijuoti takelio nuorodą - + Copy Album &Link Kopijuoti albumo &nuorodą - + Copy Artist &Link Kopijuoti atlikėjo &nuorodą - + Un-&Love Nemy&liu - + &Delete Items Iš&trinti elementus - + Properties... Savybės... - + &Delete Item Iš&trinti elementą @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Energija + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Mano kolekcija - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - apytikriai %n minutės ilgioapytikriai %n minučių ilgioapytikriai %n minučių ilgio + moderate + - about %1 dB - apie %1 dB + high + - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + apytikriai %n minutės ilgioapytikriai %n minučių ilgioapytikriai %n minučių ilgio + + + + about %1 dB + apie %1 dB + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Mano kolekcija @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page Eiti vienu puslapiu pirmyn - - - Global Search... - Globali paieška... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorinės teisės 2010 - 2012 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Forma - - - - Cover - Viršelis - - - - Track - Takelis - - - - Artist - Atlikėjas - - - - Album - Albumas - - - - Statistics - Statistika - - - + Similar Tracks Panašūs takeliai - + Sorry, but we could not find similar tracks for this song! Atsiprašome, neradome jokių į šią dainą panašių takelių! - + You've listened to this track %n time(s). Jūs klausėtės šio takelio %n kartą.Jūs klausėtės šio takelio %n kartus.Jūs klausėtės šio takelio %n kartų. - + You've never listened to this track before. Jūs niekad anksčiau nesiklausėte šio takelio. - + You first listened to it on %1. Pirmąkart klausėtės jo %1. - + You've listened to %1 %n time(s). Jūs klausėtės %1 %n kartą.Jūs klausėtės %1 %n kartus.Jūs klausėtės %1 %n kartų. - + You've never listened to %1 before. Jūs niekada anksčiau nesiklausėte %1. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. Atsiprašome, Jūsų užklausa '%1' neatitiko jokių rezultatų. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Forma - Local Network configuration diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index d1188ff02..85f80b250 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -2,28 +2,29 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Pozwolić %1 +połączyć się i strumieniować od ciebie? - + Allow Streaming - + Zezwól na strumieniowanie - + Deny Access - + Zablokuj dostęp ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. - + Musisz zdecydować, czy Tomahawk ma pozwolić %1 na połączenie. @@ -255,37 +256,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Formularz - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +276,7 @@ connect and stream from you? - + Other Albums by %1 Inne albumy %1 @@ -317,49 +298,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Formularz - - - + Top Hits Hity na Topie - + Related Artists Powiązani artyści - - - Artist - - - - + Albums Albumy - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +331,15 @@ connect and stream from you? AudioControls - - Prev - Poprzedni - - - - Play - Odtwarzaj - - - - Pause - Pauza - - - - Next - Następny - - - - Artist - Artysta - - - - Album - Album - - - - social - - - - - love - ulubione - - - - resolver - - - - - Time - Czas - - - - Time Left - Pozostały czas - - - Shuffle Losowo - Repeat Powtarzaj - - - Low - Nisko - - - - High - Wysoko - Time Elapsed @@ -466,25 +363,25 @@ connect and stream from you? Love - + Lubię AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Przepraszamy, Tomahawk nie mógł znaleźć utworu '%1' wykonawcy %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Przepraszamy, Tomahawk nie mógł znaleźć wykonawcy '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 - + Przepraszamy, Tomahawk nie mógł znaleźć albumu '%1' wykonawcy %2 @@ -535,11 +432,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Informacje - @@ -562,17 +454,17 @@ connect and stream from you? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style="font-weigth:600;">Przepraszamy!</span>Tomahawk przestał odpowiadać. Poinformuj nas o tym! Tomahawk utworzył raport o błędzie, który może poprawić stabilność w przyszłości. Możesz teraz wysłać ten raport bezpośrednio do programistów Tomahawka.</p></body></html> Send this report - + Wyślij ten raport Don't send - + Nie wysyłaj @@ -629,7 +521,7 @@ connect and stream from you? About this Account - + O tym koncie @@ -769,14 +661,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Formularz - - IndexingJobItem @@ -787,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - Informacje - Filter... @@ -800,11 +679,6 @@ connect and stream from you? LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -828,12 +702,12 @@ connect and stream from you? Import Playback History - + Zaimportuj historię odtwarzania Synchronize Loved Tracks - + Synchronizuj lubiane utwory @@ -911,41 +785,36 @@ connect and stream from you? Top Loved Tracks - + Najczęściej lubiane utwory Sorry, we could not find any loved tracks! - + Przepraszamy, nie mogliśmy znaleźć żadnych lubianych utworów! The most loved tracks from all your friends - + Najczęściej lubiane utwory wszystkich twoich znajomych All of your loved tracks - + Wszystkie twoje lubiane utwory All of %1's loved tracks - + Wszystkie utwory lubiane przez %1 Loved Tracks - + Lubiane MetadataEditor - - - Form - - Tags @@ -954,17 +823,17 @@ connect and stream from you? Title: - + Tytuł: Title... - + Tytuł... Artist: - + Wykonawca: @@ -1093,66 +962,101 @@ connect and stream from you? Artist - + Wykonawca Title - + Tytuł Composer - + Kompozytor Album - + Album Track - + Utwór Duration - + Czas trwania Bitrate - + Bitrate Age - + Wiek Year - + Rok Size - + Rozmiar Origin + Źródło + + + + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - Score - - - - - + Name @@ -1160,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you odtworzone %1 przez ciebie - + played %1 by %2 odtworzone %1 przez %2 @@ -1173,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - odtworzone %1 przez ciebie + e.g. played 3 hours ago by you + - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 - dodano %1 - - - - by <b>%1</b> + e.g. added 3 hours ago - + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Wszystkie piosenki %1 z albumu %2 - + All tracks by %1 Wszystkie piosenki %1 @@ -1319,7 +1228,8 @@ connect and stream from you? No Proxy Hosts: (Overrides system proxy) - + Hosty bez proxy: +(zastępuje proxy systemowe) @@ -1335,83 +1245,95 @@ connect and stream from you? QObject - + %n year(s) ago %n rok temu%n lata temu%n lat temu - + %n year(s) %n rok%n lata%n lat - + %n month(s) ago %n miesiąc temu%n miesiące temu%n miesięcy temu - + %n month(s) %n miesiąc%n miesiące%n miesięcy - + %n week(s) ago %n tydzień temu%n tygodnie temu%n tygodni temu - + %n week(s) %n tydzień%n tygodnie%n tygodni - + %n day(s) ago %n dzień temu%n dni temu%n dni temu - + %n day(s) %n dzień%n dni%n dni - + %n hour(s) ago %n godzinę temu%n godziny temu%n godzin temu - + %n hour(s) %n godzinę%n godziny%n godzin - + %1 minutes ago %1 minut temu - + %1 minutes %1 minut - + just now przed chwilą Friend Finders - + Wyszukiwacze Znajomych Music Finders - + Wyszukiwacze Muzyki Status Updaters + Aktualizatory Statusu + + + + + %1 Config + + + + + + %1 Configuration @@ -1425,24 +1347,19 @@ connect and stream from you? QueueView - - - InfoBar - Informacje - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1509,7 +1426,7 @@ connect and stream from you? Some changed settings will not take effect until Tomahawk is restarted - + Niektóre zmiany zaczną działać po restarcie Tomahawka @@ -1539,7 +1456,7 @@ connect and stream from you? Install resolver from file - + Zainstaluj usługę z pliku @@ -1559,11 +1476,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1484,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1562,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1624,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1634,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Okładka - - - - TextLabel - - Tweet @@ -1760,7 +1647,7 @@ connect and stream from you? Listening to "%1" by %2 on "%3". %4 - + Słucham "%1" wykonawcy %2 z "%3". %4 @@ -1771,44 +1658,44 @@ connect and stream from you? SourceDelegate - + Track Utwór - + Album Album - + Artist Artysta - + Local Lokalny - + Top 10 Top 10 - + All available tracks Wszystkie dostępne utwory - - + + Show Pokaż - - + + Hide Ukryj @@ -1872,12 +1759,12 @@ connect and stream from you? Latest additions to your collection - + Ostatnio dodane do twojej kolekcji Latest additions to %1's collection - + Ostatnio dodane do kolekcji %1 @@ -1887,17 +1774,17 @@ connect and stream from you? Recently Played Tracks - + Ostatnio odtwarzane utwory Your recently played tracks - + Twoje ostatnio odtwarzane utwory %1's recently played tracks - + Utwory ostatnio odtwarzane przez %1 @@ -1920,17 +1807,17 @@ connect and stream from you? Add to my Playlists - + Dodaj do moich List odtwarzania Add to my Automatic Playlists - + Dodaj do moich Automatycznych list odtwarzania Add to my Stations - + Dodaj do moich Stacji @@ -1940,17 +1827,17 @@ connect and stream from you? playlist - + lista odtwarzania automatic playlist - + automatyczna lista odtwarzania station - + stacja @@ -2024,7 +1911,7 @@ connect and stream from you? Dashboard - + Tablica kontrolna @@ -2049,30 +1936,25 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account - + Skonfiguruj swoje konto Spotify Username or Facebook Email - + Nazwa użytkownika lub email z Facebooka Log In - + Zaloguj sie Right click on any Tomahawk playlist to sync it to Spotify. - + Kliknij prawym przyciskiem na dowolną listę Tomahawka aby zsynchronizować ją ze Spotify. @@ -2081,18 +1963,23 @@ connect and stream from you? - High Quality Streams + Sync Starred tracks to Loved tracks + + + High Quality Streams + Strumieniowanie w wysokiej jakości + Spotify playlists to keep in sync: - + Listy Spotify do synchronizacji: - + Delete Tomahawk playlist when removing synchronization - + Usuń listy Tomahawka podczas usuwania synchronizacji @@ -2118,17 +2005,17 @@ connect and stream from you? Copy Artist Link - + Kopiuj link do wykonawcy Copy Album Link - + Kopiuj link do albumu Copy Track Link - + Kopiuj link do utworu @@ -2169,12 +2056,12 @@ connect and stream from you? Manual Install Required - + Ręczna instalacja wymagana Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + Niestety, automatyczna instalacja tej usługi jest niedostępna lub wyłączona na twojej platformie.<br /><br />Użyj instalacji z pliku, ściągając usługę lub kompilując ją samodzielnie. Więcej informacji można znaleźć na:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2192,7 +2079,7 @@ connect and stream from you? Enter your Google login to connect with your friends using Tomahawk! - + Podaj swoje dane dostępu do konta Google aby połączyć się z innymi znajomymi używającymi Tomahawka! @@ -2231,152 +2118,153 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - + Scrobbluj swoje utwory do last.fm i znajduj darmowe utwory do odtwarzania Tomahawk::Accounts::LastFmConfig - + Testing... - + Testuję... - + Test Login - + Testuj logowanie - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + Importuję historię... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed - + Niepowodzenie - + Success - + Sukces - + Could not contact server - + Nie udało się połączyć z serwerem - + Synchronizing... - + Synchronization Finished Tomahawk::Accounts::SpotifyAccount - - - Sync with Spotify - - - - - Re-enable syncing with Spotify - - + Sync with Spotify + Synchronizuj ze Spotify + + + + Re-enable syncing with Spotify + Włącz ponownie synchronizację ze Spotify + + + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify - + Przestań synchronizować ze Spotify Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Loguję się... - + Failed: %1 - + Nie udało się: %1 - + Logged in as %1 - + Log Out - - + + Log In - + Zaloguj się Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium - + Odtwarzaj muzykę i synchronizuj listy odtwarzania ze Spotify Premium @@ -2400,26 +2288,26 @@ connect and stream from you? Status: No saved credentials - + Status: Brak zapisanych danych Authenticate - + Uwierzytelnij Status: Credentials saved for %1 - + Status: Dane zapisane dla %1 De-authenticate - + Cofnij uwierzytelnienie @@ -2430,82 +2318,85 @@ connect and stream from you? Tweetin' Error - + Błąd tweetowania The credentials could not be verified. You may wish to try re-authenticating. - + Dane nie mogły zostać zweryfikowane. +Możesz chcieć ponowić uwierzytelnienie. Status: Error validating credentials - + Status: Błąd podczas sprawdzania danych Global Tweet - + Globalny Tweet Direct Message - + Prywatna Wiadomość (DM) Send Message! - + Wyślij wiadomość! @Mention - + @Wzmianka Send Mention! - + Wyślij wzmiankę! You must enter a user name for this type of tweet. - + Musisz podać nazwę użytkownika do tego typu tweetu. Your saved credentials could not be loaded. You may wish to try re-authenticating. - + Twoje zapisane dane nie mogły zostać wczytane. +Możesz spróbować ponowić uwierzytelnienie. Your saved credentials could not be verified. You may wish to try re-authenticating. - + Twoje zapisane dane nie mogły zostać zweryfikowane. +Możesz spróbować ponowić uwierzytelnienie. There was an error posting your status -- sorry! - + Wystąpił błąd podczas wysyłania twojego statusu -- przepraszamy! Tweeted! - + Tweetnięto! Your tweet has been posted! - + Twój tweet został wysłany! There was an error posting your direct message -- sorry! - + Wystąpił błąd podczas wysyłanie twojej wiadomości -- przepraszamy! @@ -2518,15 +2409,29 @@ You may wish to try re-authenticating. Log on to your Jabber/XMPP account to connect to your friends + Zaloguj się na twoje konto Jabber/XMPP aby połączyć się ze swoimi znajomymi + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network - + Automatycznie łącz się z Tomahawkami w sieci lokalnej @@ -2538,73 +2443,73 @@ You may wish to try re-authenticating. - - + + Add to &Queue Dodaj do &kolejki Continue Playback after this &Track - + Kontynuuj odtwarzanie po &tym utworze Stop Playback after this &Track - + Zatrzymaj odtwarzanie po &tym utworze - + &Love - &Uwielbiam + &Lubię - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Kopiuj &link do albumu - + Copy Artist &Link - + Kopiuj &link do wykonawcy - + Un-&Love - + Przestań &lubić - + &Delete Items &Usuń pozycje - + Properties... - + &Delete Item &Usuń pozycję @@ -2614,22 +2519,22 @@ You may wish to try re-authenticating. playlist - + lista odtwarzania artist - + wykonawca track - + utwór album - + album @@ -2706,7 +2611,9 @@ Proszę zmienić filtry lub spróbować ponownie. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - + Stacji skończyły się utwory! + +Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. @@ -2792,12 +2699,12 @@ Try tweaking the filters for a new set of songs to play. Major - + Dur Minor - + Moll @@ -2807,7 +2714,7 @@ Try tweaking the filters for a new set of songs to play. C Sharp - + C# @@ -2832,7 +2739,7 @@ Try tweaking the filters for a new set of songs to play. F Sharp - + F# @@ -2886,18 +2793,21 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity Znajomość Artysty + Artist Hotttnesss - + Zainteresowanie wykonawcą + Song Hotttnesss - + Zainteresowanie piosenką @@ -2921,92 +2831,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Energiczność + Danceability Taneczność - + only by ~%1 tylko wykonawcy ~%1 - + + similar to ~%1 podobne do ~%1 - + with genre ~%1 w gatunku ~%1 - - + + from no one od nikogo - + My Collection Moja Kolekcja - + + from my radio + + + + from %1 radio z radia %1 + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 z %1 %2 - + about %1 BPM około %1 BPM - + about %n minute(s) long trwające około %n minutytrwające około %n minuttrwające około %n minut - + about %1 dB około %1 dB - + at around %1%2 %3 - + in %1 w %1 - + in a %1 key w kluczu %1 - + sorted in %1 %2 order posortowane w porządku %1 %2 - + with a %1 mood z nastrojem: %1 - + in a %1 style w stylu %1 @@ -3016,7 +2969,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Grooveshark information from the network! - + Błąd podczas pobierania informacji z Grooveshark! @@ -3047,7 +3000,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk is playing "%1" by %2%3. - + Tomahawk odtwarza "%1" wykonawcy %2%3. @@ -3060,12 +3013,12 @@ Try tweaking the filters for a new set of songs to play. Top Tracks - + Najpopularniejsze utwory Loved Tracks - + Lubiane utwory @@ -3075,7 +3028,7 @@ Try tweaking the filters for a new set of songs to play. Top Artists - + Najpopularniejsi wykonawcy @@ -3104,7 +3057,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching iTunes information from the network! - + Błąd podczas pobierania informacji z iTunes! @@ -3190,15 +3143,15 @@ Try tweaking the filters for a new set of songs to play. %n other(s) %n inny%n inne%n innych - + - %1 people - + %n people + loved this track - + lubi ten utwór @@ -3206,7 +3159,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Rdio information from the network! - + Błąd podczas pobierania informacji z Rdio! @@ -3214,6 +3167,14 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! + Błąd sieciowy podczas rozpoznawania krótkiego linku! + + + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. @@ -3266,7 +3227,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Spotify information from the network! - + Błąd podczas pobierania informacji ze Spotify! @@ -3274,13 +3235,13 @@ Try tweaking the filters for a new set of songs to play. Automatically update from XSPF - + Automatycznie aktualizuj z XSPF TomahawkApp - + My Collection Moja Kolekcja @@ -3300,6 +3261,14 @@ enter the displayed PIN number here: wprowadź pokazany numer PIN tutaj: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3336,12 +3305,12 @@ wprowadź pokazany numer PIN tutaj: &Love - + &Lubię Un-&Love - + Przestań &lubić @@ -3449,7 +3418,7 @@ wprowadź pokazany numer PIN tutaj: &Legal Info... - + Informacje prawne (&L) @@ -3489,178 +3458,178 @@ wprowadź pokazany numer PIN tutaj: Back - + Wstecz Go back one page - + Cofnij o jedną stronę Forward - + Naprzód Go forward one page - - - - - Global Search... - Globalne Wyszukiwanie... + Przejdź naprzód o jedną stronę - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! - + Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Copyright 2010 - 2012 - + Thanks to: - + Podziękowania dla: - + About Tomahawk - + O Tomahawku @@ -3674,75 +3643,45 @@ wprowadź pokazany numer PIN tutaj: TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Podobne utwory - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + Słuchałeś tego utworu %n raz.Słuchałeś tego utworu %n razy.Słuchałeś tego utworu %n razy. - + You've never listened to this track before. - + Nie słuchałeś wcześniej tego utworu. - + You first listened to it on %1. - + Pierwszy raz słuchałeś tego utworu %1. - + You've listened to %1 %n time(s). - + Słuchałeś %1 %n raz.Słuchałeś %1 %n razy.Słuchałeś %1 %n razy. - + You've never listened to %1 before. - + Nie słuchałeś wcześniej %1. TrackView - + Sorry, your filter '%1' did not match any results. Przepraszamy, twój filtr '%1' nie dopasował żadnych wyników. @@ -3765,7 +3704,7 @@ wprowadź pokazany numer PIN tutaj: TreeItemDelegate - + Unknown Nieznany @@ -3793,7 +3732,7 @@ wprowadź pokazany numer PIN tutaj: TreeView - + Sorry, your filter '%1' did not match any results. @@ -3909,12 +3848,12 @@ Zawsze możesz ponownie wysłać wiadomość synchronizacyjną - po prostu wyśl Recently Played Tracks - + Ostatnio odtwarzane utwory Recently played tracks from all your friends - + Utwory ostatnio odtwarzane przez twoich znajomych @@ -4020,17 +3959,17 @@ Tekst dla "%1" wykonawcy %2: Failed to parse contents of XSPF playlist - + Nie udało się rozpoznać zawartości playlisty XSPF Some playlist entries were found without artist and track name, they will be omitted - + Niektóre utwory na liście nie mają podanego wykonawcy lub tytułu, więc zostaną pominięte. Failed to fetch the desired playlist from the network, or the desired file does not exist - + Nie udało się pobrać żądanej listy odtwarzania z sieci lub żądany plik nie istnieje @@ -4122,27 +4061,27 @@ Tekst dla "%1" wykonawcy %2: Xmpp Configuration - + Konfiguracja XMPP Configure this Xmpp account - + Skonfiguruj to konto XMPP Enter your Xmpp login to connect with your friends using Tomahawk! - + Podaj dane logowania XMPP aby połączyć się ze znajomymi używającymi Tomahawka! Login Information - + Dane logowania Xmpp ID: - + ID: @@ -4157,12 +4096,12 @@ Tekst dla "%1" wykonawcy %2: An account with this name already exists! - + Konto o takiej nazwie już istnieje! Advanced Xmpp Settings - + Zaawansowane ustawienia XMPP @@ -4177,12 +4116,12 @@ Tekst dla "%1" wykonawcy %2: Lots of servers don't support this (e.g. GTalk, jabber.org) - + Wiele serwerów tego nie obsługuje (np. GTalk, jabber.org) Publish currently playing track - + Publikuj aktualnie odtwarzany utwór @@ -4210,7 +4149,7 @@ Tekst dla "%1" wykonawcy %2: Authorization Error - + Błąd uwierzytelnienia @@ -4280,7 +4219,7 @@ Tekst dla "%1" wykonawcy %2: Enter Xmpp ID: - + Podaj ID XMPP: @@ -4295,7 +4234,7 @@ Tekst dla "%1" wykonawcy %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Przepraszam -- Jestem automatyczną sekretarką Tomahawk Player (http://gettomahawk.com). Jeżeli czytasz tą wiadomość, osoba z którą próbujesz się skontaktować prawdopodobnie nie jest zalogowana, proszę spróbuj ponownie później! @@ -4305,11 +4244,6 @@ Tekst dla "%1" wykonawcy %2: ZeroconfConfig - - - Form - Formularz - Local Network configuration diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 658db041f..74aa397b1 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Permitir que %1 ⏎ se conecte e faça o stream de você? - + Allow Streaming Permitir Streaming - + Deny Access Negar Acesso @@ -22,7 +22,7 @@ se conecte e faça o stream de você? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk precisa que você decida se %1 tem permissão para conectar. @@ -256,37 +256,17 @@ se conecte e faça o stream de você? AlbumInfoWidget - - Form - Formulário - - - + Tracklist Lista de faixas - + Other Albums Outros álbuns - - Cover - Capa - - - - Album - Álbum - - - - Artist - Artista - - - + Sorry, we could not find any other albums for this artist! Desculpe, mas não conseguimos encontrar outro álbum para este artista! @@ -296,7 +276,7 @@ se conecte e faça o stream de você? Desculpe, mas não conseguimos encontrar outras faixas para este álbum! - + Other Albums by %1 Outros álbuns de %1 @@ -318,49 +298,32 @@ se conecte e faça o stream de você? ArtistInfoWidget - - Form - Formulário - - - + Top Hits Mais Tocadas - + Related Artists Artistas Relacionados - - - Artist - Artista - - - + Albums Álbuns - - - Cover - Capa - - - + Sorry, we could not find any albums for this artist! Desculpe, mas não conseguimos encontrar outros álbuns para este artista! - + Sorry, we could not find any related artists! Desculpe, mas não conseguimos encontrar outros artistas relacionados a este! - + Sorry, we could not find any top hits for this artist! Desculpe, mas não conseguimos encontrar outras faixas mais tocadas deste artista! @@ -368,82 +331,15 @@ se conecte e faça o stream de você? AudioControls - - Prev - Anterior - - - - Play - Play - - - - Pause - Pausar - - - - Next - Próxima - - - - Artist - Artista - - - - Album - Álbum - - - - social - social - - - - love - Favorita - - - - resolver - resolvedor - - - - Time - Tempo - - - - Time Left - Tempo restante - - - Shuffle Shuffle - Repeat Repetir - - - Low - Diminuir - - - - High - Aumentar - Time Elapsed @@ -473,17 +369,17 @@ se conecte e faça o stream de você? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Desculpe, o Tomahawk não encontrou a faixa '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Desculpe, o Tomahawk não encontrou o artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Desculpe, o Tomahawk não encontrou o álbum '%1' de %2 @@ -536,11 +432,6 @@ se conecte e faça o stream de você? ContextWidget - - - InfoBar - Barra de informações - @@ -711,7 +602,7 @@ se conecte e faça o stream de você? Energy - + Energia @@ -726,7 +617,7 @@ se conecte e faça o stream de você? Artist Familiarity - + Familiaridade do artista @@ -770,14 +661,6 @@ se conecte e faça o stream de você? Esta lista de reprodução está vazia no momento. Adicione algumas faixas a ela e aproveite a música! - - GlobalSearchWidget - - - Form - Formulário - - IndexingJobItem @@ -788,11 +671,6 @@ se conecte e faça o stream de você? InfoBar - - - InfoBar - Barra de informações - Filter... @@ -801,11 +679,6 @@ se conecte e faça o stream de você? LastFmConfig - - - Form - Formulário - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ se conecte e faça o stream de você? MetadataEditor - - - Form - Formulário - Tags @@ -1148,12 +1016,47 @@ se conecte e faça o stream de você? - Score - Pontuação + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1161,12 +1064,12 @@ se conecte e faça o stream de você? PlaylistItemDelegate - + played %1 by you tocou %1 por você - + played %1 by %2 tocou %1 por %2 @@ -1174,51 +1077,56 @@ se conecte e faça o stream de você? PlaylistLargeItemDelegate - + played %1 by you - tocou %1 por você + e.g. played 3 hours ago by you + - + played %1 by %2 - tocou %1 por %2 + e.g. played 3 hours ago by SomeSource + - + added %1 - adicionou %1 + e.g. added 3 hours ago + - + by <b>%1</b> - + e.g. by SomeArtist + por <b>%1</b> - + by <b>%1</b> on <b>%2</b> - + e.g. by SomeArtist on SomeAlbum + por <b>%1</b> em <b>%2</b> PlaylistModel - + A playlist you created %1. Uma lista de reprodução que você criou %1. - - + + A playlist by %1, created %2. Uma lista de reprodução de %1, criada %2. {1,?} - + All tracks by %1 on album %2 Todas as faixas de %1 no álbum %2 - + All tracks by %1 Todas as faixas de %1 @@ -1337,67 +1245,67 @@ se conecte e faça o stream de você? QObject - + %n year(s) ago %n ano atrás%n anos atrás - + %n year(s) %n ano%n anos - + %n month(s) ago %n mês atrás%n meses atrás - + %n month(s) %n mês%n meses - + %n week(s) ago %n semana atrás%n semanas atrás - + %n week(s) %n semana%n semanas - + %n day(s) ago %n dia atrás%n dias atrás - + %n day(s) %n dia%n dias - + %n hour(s) ago %n hora atrás%n horas atrás - + %n hour(s) %n hora%n horas - + %1 minutes ago %1 minutos atrás - + %1 minutes %1 minutos - + just now agora @@ -1416,6 +1324,18 @@ se conecte e faça o stream de você? Status Updaters Atualizadores de Status + + + + %1 Config + Config de %1 + + + + + %1 Configuration + Configuração de %1 + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ se conecte e faça o stream de você? QueueView - - - InfoBar - Barra de informações - - + Open Queue Abrir Lista - + Open Queue - %n item(s) Abrir Fila - %n itemAbrir Fila - %n itens - + Close Queue Fechar Lista @@ -1561,11 +1476,6 @@ se conecte e faça o stream de você? Settings_Accounts - - - Form - Forma - Filter by capability: @@ -1574,11 +1484,6 @@ se conecte e faça o stream de você? Settings_Advanced - - - Form - Forma - Remote Peer Connection Method @@ -1647,7 +1552,7 @@ se conecte e faça o stream de você? Show notification when a new song starts to play - + Mostrar notificação quando uma nova música começar a tocar @@ -1657,11 +1562,6 @@ se conecte e faça o stream de você? Settings_Collection - - - Form - Forma - Path to scan for music files: @@ -1724,11 +1624,6 @@ se conecte e faça o stream de você? SocialWidget - - - Form - Formulário - Facebook @@ -1739,16 +1634,6 @@ se conecte e faça o stream de você? Twitter Twitter - - - Cover - Capa - - - - TextLabel - TextLabel - Tweet @@ -1773,44 +1658,44 @@ se conecte e faça o stream de você? SourceDelegate - + Track Faixa - + Album Álbum - + Artist Artista - + Local Local - + Top 10 10 Mais - + All available tracks Todas as faixas disponíveis - - + + Show Mostrar - - + + Hide Ocultar @@ -2051,11 +1936,6 @@ se conecte e faça o stream de você? SpotifyConfig - - - Form - Formulário - Configure your Spotify account @@ -2083,6 +1963,11 @@ se conecte e faça o stream de você? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Streams de Alta Qualidade @@ -2092,7 +1977,7 @@ se conecte e faça o stream de você? Playlists do Spotify para sincronizar: - + Delete Tomahawk playlist when removing synchronization Deletar a playlist do Tomahawk quando remover a sincronização @@ -2239,59 +2124,60 @@ se conecte e faça o stream de você? Tomahawk::Accounts::LastFmConfig - + Testing... Testando... - + Test Login Testar Login - + Importing %1 e.g. Importing 2012/01/01 Importando %1 - + Importing History... Importando Histórico... - + History Incomplete. Resume + Text on a button that resumes import Histórico Incompleto. Retomar - + Playback History Imported Reproduzir Histórico Importado - - + + Failed Falhou - + Success Sucesso - + Could not contact server Não foi possível contatar o servidor - + Synchronizing... Sincronizando... - + Synchronization Finished Sincronização concluída @@ -2299,47 +2185,47 @@ se conecte e faça o stream de você? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar com o Spotify - + Re-enable syncing with Spotify Reativar sincronização com Spotify - + Create local copy Criar cópia local - + Subscribe to playlist changes Assinar para alterações na lista de reprodução - + Re-enable playlist subscription Re-habilitar assinatura da lista de reprodução - + Stop subscribing to changes Parar a assinatura de alterações - + Enable Spotify collaborations Habilitar colaborações Spotify - + Disable Spotify collaborations Desabilitar colaborações Spotify - + Stop syncing with Spotify Parar a sincronização com o Spotify @@ -2347,28 +2233,28 @@ se conecte e faça o stream de você? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Logando... - + Failed: %1 Falha: %1 - + Logged in as %1 Conectado como %1 - + Log Out Sair - - + + Log In Log In @@ -2376,7 +2262,7 @@ se conecte e faça o stream de você? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Reproduzir e sincronizar suas playlists com o Spotify Premium @@ -2526,8 +2412,22 @@ Você pode tentar re-autenticar. Entre em sua conta do Jabber/XMPP para se conectar com seus amigos + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + Rede local + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + Rede local + Automatically connect to Tomahawks on the local network @@ -2543,8 +2443,8 @@ Você pode tentar re-autenticar. - - + + Add to &Queue Adicionar à &lista @@ -2560,56 +2460,56 @@ Você pode tentar re-autenticar. - + &Love &Favorita - - - + + + &Go to "%1" - + &Ir para "%1" - - - + + + Go to "%1" - + Ir para "%1" - + &Copy Track Link &Copiar Link da Faixa - + Copy Album &Link Copiar &Link do Álbum - + Copy Artist &Link Copiar &Link do Artista - + Un-&Love &Desfavoritar - + &Delete Items &Deletar itens - + Properties... Propriedades... - + &Delete Item &Deletar item @@ -2893,16 +2793,19 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. + Artist Familiarity Familiaridade do Artista + Artist Hotttnesss Hotttnesss do Artista + Song Hotttnesss Hotttnesss da Música @@ -2928,92 +2831,135 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. + Energy Energia + Danceability Dançabilidade - + only by ~%1 somente por ~%1 - + + similar to ~%1 similar a ~%1 - + with genre ~%1 do gênero ~%1 - - + + from no one de ninguém - + My Collection Minha Coleção - + + from my radio + da minha rádio + + + from %1 radio da rádio %1 + + + Variety + Variedade + + + + Adventurousness + + + very low + muito baixo + + + + low + baixo + + + + moderate + moderado + + + + high + alto + + + + very high + muito alto + + + with %1 %2 com %1 %2 - + about %1 BPM aproximadamente %1 BPM - + about %n minute(s) long aproximadamente %n minuto de duraçãoaproximadamente %n minutos de duração - + about %1 dB aproximadamente %1 dB - + at around %1%2 %3 em torno de %1%2 %3 - + in %1 em %1 - + in a %1 key em um tom %1 - + sorted in %1 %2 order distrubuido em %1 %2 ordem - + with a %1 mood com um %1 humor - + in a %1 style em um %1 de estilo @@ -3197,10 +3143,10 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. %n other(s) %n outro%n outros - + - %1 people - %1 pessoas + %n people + @@ -3224,6 +3170,14 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Erro de rede ao analisar o encurtador de link! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3287,7 +3241,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. TomahawkApp - + My Collection Minha Coleção @@ -3307,6 +3261,14 @@ enter the displayed PIN number here: colocar o número PIN mostrado aqui: + + TomahawkSettings + + + Local Network + Rede local + + TomahawkTrayIcon @@ -3513,159 +3475,159 @@ colocar o número PIN mostrado aqui: Go forward one page Avançar uma página - - - Global Search... - Busca global... - - + Hide Menu Bar Esconder barra de menu - + Show Menu Bar Mostrar barra de menu + + + Search for any artist, album or song... + Pesquisar por qualquer artista, álbum ou música... + &Main Menu &Menu principal - - - + + + Connect To Peer Conectar-se ao par - + Enter peer address: Coloque o endereço do par: - + Enter peer port: Coloque a porta do par: - + Enter peer key: Coloque a chave do par: - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk @@ -3681,67 +3643,37 @@ colocar o número PIN mostrado aqui: TrackInfoWidget - - Form - Formulário - - - - Cover - Capa - - - - Track - Faixa - - - - Artist - Artista - - - - Album - Álbum - - - - Statistics - Estatísticas - - - + Similar Tracks Faixas Similares - + Sorry, but we could not find similar tracks for this song! Desculpe, mas não conseguimos encontrar faixas similares para esta música! - + You've listened to this track %n time(s). Você ouviu esta faixa %n vez.Você ouviu esta faixa %n vezes. - + You've never listened to this track before. Você nunca ouviu esta faixa antes. - + You first listened to it on %1. Você ouviu pela primeira vez em %1. - + You've listened to %1 %n time(s). Você ouviu %1 %n vez.Você ouviu %1 %n vezes. - + You've never listened to %1 before. Você nunca ouviu %1 antes. @@ -3749,7 +3681,7 @@ colocar o número PIN mostrado aqui: TrackView - + Sorry, your filter '%1' did not match any results. Desculpe, o seu filtro '%1' não encontreou nenhum resultado. @@ -3772,7 +3704,7 @@ colocar o número PIN mostrado aqui: TreeItemDelegate - + Unknown Desconhecido @@ -3800,7 +3732,7 @@ colocar o número PIN mostrado aqui: TreeView - + Sorry, your filter '%1' did not match any results. Desculpe, seu filtro '%1' não encontrou nenhum resultado. @@ -3891,7 +3823,7 @@ Você pode enviar uma outra mensagem de sincronia a qualquer momento simplesment This playlist is empty! - + Essa lista de reprodução está vazia! @@ -4313,11 +4245,6 @@ Letras de "%1" por %2: ZeroconfConfig - - - Form - Formulário - Local Network configuration diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 1effffddb..f5eb235a1 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Разрешить %1 ⏎ подключиться и слушать ваш поток? - + Allow Streaming Разрешить Поток - + Deny Access Запретить доступ @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -256,37 +256,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Форма - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! К сожалению, мы не смогли найти другие альбомы этого исполнителя! @@ -296,7 +276,7 @@ connect and stream from you? К сожалению, мы не смогли найти никаких треков для этого альбома! - + Other Albums by %1 Другие альбомы %1 @@ -318,49 +298,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Форма - - - + Top Hits Хиты - + Related Artists Похожие исполнители - - - Artist - Исполнитель - - - + Albums Альбомы - - - Cover - Обложка - - - + Sorry, we could not find any albums for this artist! К сожалению, мы не смогли найти никаких альбомов этого исполнителя! - + Sorry, we could not find any related artists! К сожалению, мы не смогли найти никаких исполнители! - + Sorry, we could not find any top hits for this artist! К сожалению, мы не смогли найти никаких хитов этого исполнителя! @@ -368,82 +331,15 @@ connect and stream from you? AudioControls - - Prev - Предыдущая - - - - Play - Играть - - - - Pause - Пауза - - - - Next - Следующая - - - - Artist - Исполнитель - - - - Album - Альбом - - - - social - социальный - - - - love - Любимая - - - - resolver - - - - - Time - Прошло - - - - Time Left - Осталось - - - Shuffle Случаная - Repeat Повторять - - - Low - Тише - - - - High - Громче - Time Elapsed @@ -473,17 +369,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 К сожалению, Tomahawk не мог найти песню '%1' %2 - + Sorry, Tomahawk couldn't find the artist '%1' К сожалению, Tomahawk не мог найти исполнителя '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 К сожалению, Tomahawk не мог найти альбом '%1' %2 @@ -536,11 +432,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Панель информации - @@ -770,14 +661,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Форма - - IndexingJobItem @@ -788,11 +671,6 @@ connect and stream from you? InfoBar - - - InfoBar - Информация - Filter... @@ -801,11 +679,6 @@ connect and stream from you? LastFmConfig - - - Form - Форма - Scrobble tracks to Last.fm @@ -942,11 +815,6 @@ connect and stream from you? MetadataEditor - - - Form - Форма - Tags @@ -1148,12 +1016,47 @@ connect and stream from you? - Score - Количество воспроизведений + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Имя @@ -1161,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you Проиграно %1 мной - + played %1 by %2 Песня %1 проиграна %2 @@ -1174,51 +1077,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - Воспроизводилось %1 вами - - - - played %1 by %2 - Воспроизводилось %1 %2 - - - - added %1 - Добавлено %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Все песни %1 альбома %2 - + All tracks by %1 Все песни %1 @@ -1337,67 +1245,67 @@ connect and stream from you? QObject - + %n year(s) ago %n год назад%n года назад%n лет назад - + %n year(s) %n год%n года%n лет - + %n month(s) ago %n месяц назад%n месяца назад%n месяцей назад - + %n month(s) %n месяц%n месяца%n месяцей - + %n week(s) ago %n неделю назад%n недели назад%n недель назад - + %n week(s) %n неделю%n недели%n недель - + %n day(s) ago %n день назад%n дня назад%n дней назад - + %n day(s) %n день%n дня%n дней - + %n hour(s) ago %n час назад%n часа назад%n часов назад - + %n hour(s) %n час%n часа%n часов - + %1 minutes ago %1 минут(ы) назад - + %1 minutes %1 минут(ы) - + just now только что @@ -1416,6 +1324,18 @@ connect and stream from you? Status Updaters Статус обновления + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1427,24 +1347,19 @@ connect and stream from you? QueueView - - - InfoBar - Информационный Бар - - + Open Queue Показать Очередь - + Open Queue - %n item(s) - + Close Queue Спрятать Очередь @@ -1561,11 +1476,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1574,11 +1484,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1657,11 +1562,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1724,11 +1624,6 @@ connect and stream from you? SocialWidget - - - Form - Форма - Facebook @@ -1739,16 +1634,6 @@ connect and stream from you? Twitter Twitter - - - Cover - Обложка - - - - TextLabel - TextLabel - Tweet @@ -1773,44 +1658,44 @@ connect and stream from you? SourceDelegate - + Track Трек - + Album Альбом - + Artist Исполнитель - + Local Локальная - + Top 10 Топ 10 - + All available tracks Доступные песни - - + + Show Показать - - + + Hide Спрятать @@ -2051,11 +1936,6 @@ connect and stream from you? SpotifyConfig - - - Form - Форма - Configure your Spotify account @@ -2083,6 +1963,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Поток высокого качества @@ -2092,7 +1977,7 @@ connect and stream from you? Синхронизировать плейлисты Spotify: - + Delete Tomahawk playlist when removing synchronization Удалить плейлист Tomahawk, при удалении синхронизации. @@ -2239,59 +2124,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... Тестирую... - + Test Login Проверить Вход - + Importing %1 e.g. Importing 2012/01/01 Импортирование %1 - + Importing History... Импортирование истории... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported История воспроизведений импортирована. - - + + Failed Неудача - + Success Успех - + Could not contact server Не удается связаться с сервером - + Synchronizing... Синхронизация... - + Synchronization Finished Синхронизация Закончена. @@ -2299,47 +2185,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизировать с Spotify - + Re-enable syncing with Spotify Повторно включить синхронизацию с Spotify - + Create local copy Создать локальную копию - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Прекратить синхронизацию с Spotify @@ -2347,28 +2233,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Вхожу... - + Failed: %1 Ошибка: %1 - + Logged in as %1 Вошли как %1 - + Log Out Выйти - - + + Log In Войти @@ -2376,7 +2262,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Слушать музыку и синхронизировать плейлисты с Spotify Премиум @@ -2526,8 +2412,22 @@ You may wish to try re-authenticating. Войдите в ваш Jabber/XMPP аккаунт чтобы соединится с вашими друзьями. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2543,8 +2443,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Добавить В &Очередь @@ -2560,56 +2460,56 @@ You may wish to try re-authenticating. - + &Love &Любимая - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link &Скопировать Ссылку Песни - + Copy Album &Link Копировать &Ссылку Альбома - + Copy Artist &Link Копировать &Ссылку Исполнителя - + Un-&Love &Не Любимая - + &Delete Items &Удалить Песни - + Properties... Свойства... - + &Delete Item &Удалить Песню @@ -2891,16 +2791,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity Artist Familiarity + Artist Hotttnesss Artist Hotttnesss + Song Hotttnesss Song Hotttnesss @@ -2926,92 +2829,135 @@ Try tweaking the filters for a new set of songs to play. + Energy Энергия + Danceability Danceability - + only by ~%1 только ~ %1 - + + similar to ~%1 похожие на ~%1 - + with genre ~%1 с жанром ~%1 - - + + from no one ни от кого не - + My Collection Моя коллекция - + + from my radio + + + + from %1 radio от %1 радио + + + Variety + + + + + Adventurousness + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + with %1 %2 с %1 %2 - + about %1 BPM около %1 BPM - + about %n minute(s) long - + about %1 dB около %1 dB - + at around %1%2 %3 около %1%2 %3 - + in %1 в %1 - + in a %1 key в %1 ключ - + sorted in %1 %2 order отсортированы в %1 %2 порядке - + with a %1 mood настроение %1 - + in a %1 style в стиле %1 @@ -3195,10 +3141,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - %1 человек + %n people + @@ -3222,6 +3168,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3285,7 +3239,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моя коллекция @@ -3304,6 +3258,14 @@ enter the displayed PIN number here: После авторизации в твиттере введите номер PIN сюда: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3510,159 +3472,159 @@ enter the displayed PIN number here: Go forward one page Перейдите на следующую страницу - - - Global Search... - Глобальный поиск - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu &Главное меню - - - + + + Connect To Peer Связаться с Peer - + Enter peer address: Введите адрес узла: - + Enter peer port: Введите адрес порта: - + Enter peer key: Введите адрес ключа: - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Станция - + Create New Station Создать новую станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Авторское право 2010 - 2012 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3678,67 +3640,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - Форма - - - - Cover - Обложка - - - - Track - Песня - - - - Artist - Исполнитель - - - - Album - Альбом - - - - Statistics - Статистика - - - + Similar Tracks Похожие Песни - + Sorry, but we could not find similar tracks for this song! Извините, но мы не смогли найти похожие треки на эту песню! - + You've listened to this track %n time(s). - + You've never listened to this track before. Вы никогда не слушали этот трек раньше. - + You first listened to it on %1. Первое прослушивание этой песни %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. Вы никогда не слушали %1 до этого. @@ -3746,7 +3678,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Ваш поиск '%1' недал результатов. @@ -3769,7 +3701,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестный @@ -3797,7 +3729,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. К сожалению, '%1' фильтр не найдено ни одного результата. @@ -4308,11 +4240,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Форма - Local Network configuration diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index cef4ba3f1..ccdf4c5c4 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Formulär - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 Andra album av %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Formulär - - - + Top Hits Största hits - + Related Artists Relaterade artister - - - Artist - - - - + Albums Album - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Föreg - - - - Play - Spela upp - - - - Pause - Paus - - - - Next - Nästa - - - - Artist - Artist - - - - Album - Album - - - - social - - - - - love - älska - - - - resolver - - - - - Time - Tid - - - - Time Left - Tid kvar - - - Shuffle Blanda - Repeat Upprepa - - - Low - Låg - - - - High - Hög - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - Inforad - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Formulär - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - Inforad - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Formulär - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1 spelades av dig - + played %1 by %2 %1 spelades av %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - %1 spelades av dig - - - - played %1 by %2 - %1 spelades av %2 - - - - added %1 - %1 tillagd - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Alla spår av %1 från albumet %2 - + All tracks by %1 Alla spår av %1 @@ -1336,67 +1244,67 @@ connect and stream from you? QObject - + %n year(s) ago %n år sedan%n år sedan - + %n year(s) %n år sedan%n år sedan - + %n month(s) ago %n månad sedan%n månader sedan - + %n month(s) %n månad%n månader - + %n week(s) ago %n vecka sedan%n veckor sedan - + %n week(s) %n vecka%n veckor - + %n day(s) ago %n dag sedan%n dagar sedan - + %n day(s) %n dag%n dagar - + %n hour(s) ago %n timme sedan%n timmar sedan - + %n hour(s) %n timme%n timmar - + %1 minutes ago %1 minuter sedan - + %1 minutes %1 minuter - + just now precis nyss @@ -1415,6 +1323,18 @@ connect and stream from you? Status Updaters Status uppdaterare + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1426,24 +1346,19 @@ connect and stream from you? QueueView - - - InfoBar - Inforad - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1560,11 +1475,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1573,11 +1483,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1656,11 +1561,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1723,11 +1623,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1738,16 +1633,6 @@ connect and stream from you? Twitter - - - Cover - - - - - TextLabel - - Tweet @@ -1772,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Spår - + Album Album - + Artist Artist - + Local Lokalt - + Top 10 Topp 10 - + All available tracks Alla tillgängliga spår - - + + Show Visa - - + + Hide Göm @@ -2025,12 +1910,12 @@ connect and stream from you? Dashboard - + Dashboard Recently Played - + Nyligen Spelade @@ -2050,11 +1935,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2082,6 +1962,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -2091,7 +1976,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2147,12 +2032,12 @@ connect and stream from you? %1 downloads - + %1 nedladdningar Online - + Uppkopplad @@ -2162,7 +2047,7 @@ connect and stream from you? Offline - + Nedkopplad @@ -2193,7 +2078,7 @@ connect and stream from you? Enter your Google login to connect with your friends using Tomahawk! - + Logga in med ditt Google-konto för att hålla kontakten med vänner som använder Tomahawk @@ -2206,7 +2091,7 @@ connect and stream from you? Connect to Google Talk to find your friends - + Koppla upp mot Google Talk och bjud in dina vänner @@ -2232,65 +2117,66 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - + Skrobbla dina låtar till Last.fm och hitta gratis nedladdningsbara låtar att spela Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed Misslyckades - + Success - + Färdig - + Could not contact server - + Det gick inte kontakta servern - + Synchronizing... - + Synchronization Finished @@ -2298,47 +2184,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2346,28 +2232,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2375,9 +2261,9 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium - + Spela musik från, och synca dina spellistor med Spotify Premium @@ -2385,7 +2271,7 @@ connect and stream from you? Connect to your Twitter followers. - + Koppla upp mot dina Twitter-följare @@ -2408,7 +2294,7 @@ connect and stream from you? Authenticate - + Verifiera @@ -2431,7 +2317,7 @@ connect and stream from you? Tweetin' Error - + Twitter-fel @@ -2447,22 +2333,22 @@ You may wish to try re-authenticating. Global Tweet - + Global tweet Direct Message - + direktmeddelande Send Message! - + Skicka Meddelande! @Mention - + @Nämn @@ -2472,7 +2358,7 @@ You may wish to try re-authenticating. You must enter a user name for this type of tweet. - + Du måste ange ett användarnamn för den här typen av tweet. @@ -2490,28 +2376,28 @@ You may wish to try re-authenticating. There was an error posting your status -- sorry! - + Det uppstod ett fel när din status skulle skickas. Vi ber om ursäkt för detta! Tweeted! - + Twittrat! Your tweet has been posted! - + Din tweet har skickats! There was an error posting your direct message -- sorry! - + Det uppstod ett fel när ditt meddelande skulle skickas. Vi ber om ursäkt för detta! Your message has been posted! - + Ditt meddelande har skickats! @@ -2519,15 +2405,29 @@ You may wish to try re-authenticating. Log on to your Jabber/XMPP account to connect to your friends + Logga in på ditt Jabber/XMPP-konto för att kontakta dina vänner + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network - + Koppla automatiskt upp Tomahawk mot det lokala nätverket @@ -2539,8 +2439,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Lägg till i &kö @@ -2556,56 +2456,56 @@ You may wish to try re-authenticating. - + &Love - + &Kärlek - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + &Kopiera Låtlänk - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items &Ta bort objekt - + Properties... - + &Delete Item &Ta bort objekt @@ -2659,12 +2559,14 @@ You may wish to try re-authenticating. Could not find a playable track. Please change the filters or try again. - + Det gick inte hitta någon spelbar låt + +Var god och ändra filtrerna eller försök igen Failed to generate preview with the desired filters - + Det gick inte att generera en förhandsvisning med det valda filtret @@ -2685,17 +2587,17 @@ Please change the filters or try again. Add some filters above to seed this station! - + Lägg till filter ovan för att dela ut denna stationen! Press Generate to get started! - + Klicka på Generera för att börja! Add some filters above, and press Generate to get started! - + Lägg till några filter ovan och tryck på Generera för att börja! @@ -2705,7 +2607,9 @@ Please change the filters or try again. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - + Stationens spellista tog sluta + +Försök att ändra i filtrerna för att få en ny låtlista @@ -2885,16 +2789,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2916,96 +2823,139 @@ Try tweaking the filters for a new set of songs to play. Key - + Nyckel + Energy Energi + Danceability - + Dansbarhet - + only by ~%1 - + Bara med ~%1 - + + similar to ~%1 - + liknar ~%1 - + with genre ~%1 - + med genre ~%1 - - + + from no one - + från ingen - + My Collection + Min Samling + + + + from my radio - + from %1 radio + från %1 radio + + + + Variety + + + + + Adventurousness - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + with %1 %2 + med %1 %2 + + about %1 BPM + ca %1 BPM + + + + about %n minute(s) long + ca %n minut långca %n minuter lång + + + + about %1 dB + ca %1 dB + + + + at around %1%2 %3 + runt %1%2 %3 + + + in %1 - + i %1 - + in a %1 key - + i en %1-nyckel - + sorted in %1 %2 order - + sorterad i %1 %2 ordning - + with a %1 mood - + med en %1 sinnesstämning - + in a %1 style @@ -3015,7 +2965,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Grooveshark information from the network! - + Det gick inte ta emot information från Grooveshark! @@ -3023,7 +2973,7 @@ Try tweaking the filters for a new set of songs to play. Top Overall - + Generell topplista @@ -3103,7 +3053,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching iTunes information from the network! - + Det gick inte ta emot information från iTunes via nätverket! @@ -3139,13 +3089,13 @@ Try tweaking the filters for a new set of songs to play. &Catch Up - + &Häng med &Listen Along - + &Spela med @@ -3167,37 +3117,37 @@ Try tweaking the filters for a new set of songs to play. and - + och You - + Du you - + du and - + och %n other(s) - + %n annan%n andra - + - %1 people - + %n people + loved this track - + älskade denna låten @@ -3205,7 +3155,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Rdio information from the network! - + Det gick inte hämta information från Rdio @@ -3216,6 +3166,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3227,7 +3185,7 @@ Try tweaking the filters for a new set of songs to play. Scanning - + Skannar @@ -3265,7 +3223,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Spotify information from the network! - + Det gick inte hämta information från Spotify @@ -3279,9 +3237,9 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection - + Min Samling @@ -3289,12 +3247,21 @@ Try tweaking the filters for a new set of songs to play. Twitter PIN - + Twitter PIN After authenticating on Twitter's web site, enter the displayed PIN number here: + Efter du loggat in på Twitter, +anger du PIN-koden här: + + + + TomahawkSettings + + + Local Network @@ -3504,159 +3471,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - Global sökning... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer Anslut till klient - + Enter peer address: Ange klientadress: - + Enter peer port: Ange klientport: - + Enter peer key: Ange klientnyckel: - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist - + Automatic Playlist - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk @@ -3666,73 +3633,43 @@ enter the displayed PIN number here: Top Hits - + Topplista TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3740,7 +3677,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3763,7 +3700,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Okänt @@ -3791,7 +3728,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -3999,7 +3936,10 @@ Lyrics for "%1" by %2: %3 - + Låttext för "%1" av %2 + +%3 + @@ -4007,17 +3947,17 @@ Lyrics for "%1" by %2: Failed to parse contents of XSPF playlist - + Det gick inte analysera innehållet av XSPF-spellistan Some playlist entries were found without artist and track name, they will be omitted - + Några spellistsinlägg hittades utan artistnamn eller låttitel. Dessa kommer hoppas över. Failed to fetch the desired playlist from the network, or the desired file does not exist - + Antingen gick det inte hitta den valda spellistan på nätverket, eller så fanns den inte @@ -4030,13 +3970,13 @@ Lyrics for "%1" by %2: Xml stream console - + XML-strömkonsol Filter - + Filter @@ -4071,7 +4011,7 @@ Lyrics for "%1" by %2: Information query - + Informationsförfrågan @@ -4081,7 +4021,7 @@ Lyrics for "%1" by %2: Presence - + Närvaro @@ -4109,72 +4049,72 @@ Lyrics for "%1" by %2: Xmpp Configuration - + XMPP Konfiguration Configure this Xmpp account - + Konfigurera detta XMPP-kontot Enter your Xmpp login to connect with your friends using Tomahawk! - + Ange dina XMPP-uppgifter för att kontakta dina vänner med Tomahawk Login Information - + Inloggningsinformation Xmpp ID: - + XMPP ID: e.g. user@example.com - + t ex användare@exempel.com Password: - + Lösenord: An account with this name already exists! - + Ett konto med det namnet finns redan! Advanced Xmpp Settings - + Avancerade XMPP-inställningar Server: - + Server: Port: - + Port: Lots of servers don't support this (e.g. GTalk, jabber.org) - + Många servrar stödjer inte detta (t ex GTalk eller Jabber.org) Publish currently playing track - + Publicera låt Enforce secure connection - + Tvinga säker anslutning @@ -4182,7 +4122,7 @@ Lyrics for "%1" by %2: User Interaction - + Användarinteraktion @@ -4292,11 +4232,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - Formulär - Local Network configuration diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index b4c971b46..0326fe20f 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - Form - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 Diğer %1 Albümleri @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - Form - - - + Top Hits En Çok Dinlenenler - + Related Artists Benzer Sanatçılar - - - Artist - - - - + Albums Albümler - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - Geri - - - - Play - Yürüt - - - - Pause - Duraklat - - - - Next - Sonraki - - - - Artist - Sanatçı - - - - Album - Albüm - - - - social - - - - - love - beğen - - - - resolver - - - - - Time - Süre - - - - Time Left - Kalan Süre - - - Shuffle Karışık - Repeat Yenile - - - Low - Düşük - - - - High - Yüksek - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - BilgiÇubuğu - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - Form - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - BilgiÇubuğu - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - Form - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> + e.g. by SomeArtist - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago - + %n year(s) - + %n month(s) ago - + %n month(s) - + %n week(s) ago - + %n week(s) - + %n day(s) ago - + %n day(s) - + %n hour(s) ago - + %n hour(s) - + %1 minutes ago - + %1 minutes - + just now @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter - - - Cover - - - - - TextLabel - - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -2090,7 +1975,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed - + Success - + Could not contact server - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items - + Properties... - + &Delete Item @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index d9acdb1d8..10dc4c1cf 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? 允许 %1 连接并为您播放吗? - + Allow Streaming 允许播放 - + Deny Access 拒绝访问 @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk 需要你决定是否允许 %1 连接。 @@ -67,18 +67,18 @@ connect and stream from you? Connections - + 连接 Connect &All - + 连接所有 Disconnect &All - + 断开所有 @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - 来自 - - - + Tracklist - + Other Albums - + 其他专辑 - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! 抱歉,找到此艺术家的其他专辑! @@ -295,7 +275,7 @@ connect and stream from you? 抱歉,没有找到这张专辑的其他歌曲! - + Other Albums by %1 %1 的其他专辑 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - 来自 - - - + Top Hits 最热歌曲 - + Related Artists 相关艺人 - - - Artist - 艺术家 - - - + Albums 专辑 - - - Cover - 封面 - - - + Sorry, we could not find any albums for this artist! 抱歉,未找到该艺术家的其他专辑! - + Sorry, we could not find any related artists! 抱歉,没有找到相关的艺术家! - + Sorry, we could not find any top hits for this artist! 抱歉,没有找到该艺术家的任何人气歌曲! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - 上一首 - - - - Play - 播放 - - - - Pause - 暂停 - - - - Next - 下一首 - - - - Artist - 艺人 - - - - Album - 专辑 - - - - social - - - - - love - 喜欢 - - - - resolver - 解析器 - - - - Time - 时间 - - - - Time Left - 剩余时间 - - - Shuffle 无序播放 - Repeat 重复播放 - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 抱歉,Tomahawk 未找到 %2 的歌曲 '%1' - + Sorry, Tomahawk couldn't find the artist '%1' 抱歉,Tomahawk 无法找到艺术家 '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 抱歉,Tomahawk 无法找到 %2 的专辑 '%1' @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - 信息栏 - @@ -660,37 +551,37 @@ connect and stream from you? Much less - + 更加更加少 Less - + 更少 A bit less - + 少一点 Keep at current - + 保持现状 A bit more - + 多一点 More - + 更多 Much more - + 更加更加多 @@ -700,27 +591,27 @@ connect and stream from you? Loudness - + 音量 Danceability - + 舞动指数 Energy - + 能量指数 Song Hotttnesss - + 单曲热度 Artist Hotttnesss - + 艺人热度 @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - 表单 - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - 信息栏 - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - 表单 - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - 表单 - Tags @@ -1049,7 +917,7 @@ connect and stream from you? Properties - + 属性 @@ -1147,12 +1015,47 @@ connect and stream from you? - Score - 评分 + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name 名字 @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1 - + played %1 by %2 已播放 %2 的 %1 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you - %1 - - - - played %1 by %2 - 已播放 %2 的 %1 - - - - added %1 - 已添加 %1 - - - - by <b>%1</b> + e.g. played 3 hours ago by you - + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - + 你于 %1 创建了此播放列表 - - + + A playlist by %1, created %2. - + %2 于 %1 创建了此播放列表 - + All tracks by %1 on album %2 %1 的专辑 %2 上的所有歌曲 - + All tracks by %1 %1 的所有歌曲 @@ -1336,67 +1244,67 @@ connect and stream from you? QObject - + %n year(s) ago %n 年前 - + %n year(s) %n 年 - + %n month(s) ago %n 月前 - + %n month(s) %n 月 - + %n week(s) ago %n 周前 - + %n week(s) %n 周 - + %n day(s) ago %n 天前 - + %n day(s) %n 天 - + %n hour(s) ago %n 小时前 - + %n hour(s) %n 小时 - + %1 minutes ago %1 分钟前 - + %1 minutes %1 分钟 - + just now 刚刚 @@ -1415,6 +1323,18 @@ connect and stream from you? Status Updaters 更新状态 + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1426,24 +1346,19 @@ connect and stream from you? QueueView - - - InfoBar - 信息栏 - - + Open Queue 打开队列 - + Open Queue - %n item(s) 打开队列 - %n 项 - + Close Queue 隐藏队列 @@ -1560,11 +1475,6 @@ connect and stream from you? Settings_Accounts - - - Form - 表单 - Filter by capability: @@ -1573,11 +1483,6 @@ connect and stream from you? Settings_Advanced - - - Form - 表单 - Remote Peer Connection Method @@ -1656,11 +1561,6 @@ connect and stream from you? Settings_Collection - - - Form - 表单 - Path to scan for music files: @@ -1725,11 +1625,6 @@ connect and stream from you? SocialWidget - - - Form - 表单 - Facebook @@ -1740,16 +1635,6 @@ connect and stream from you? Twitter Twitter - - - Cover - 封面 - - - - TextLabel - 文本标签 - Tweet @@ -1774,44 +1659,44 @@ connect and stream from you? SourceDelegate - + Track 歌曲 - + Album 专辑 - + Artist 艺术家 - + Local 本地 - + Top 10 Top 10 - + All available tracks 所有可用的歌曲 - - + + Show 显示 - - + + Hide 隐藏 @@ -2052,11 +1937,6 @@ connect and stream from you? SpotifyConfig - - - Form - 表单 - Configure your Spotify account @@ -2080,10 +1960,15 @@ connect and stream from you? Select All - + 全选 + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高质量音频流 @@ -2093,7 +1978,7 @@ connect and stream from you? 保持同步的 Spotify 播放列表: - + Delete Tomahawk playlist when removing synchronization 移除同步时删除 Tomahawk 播放列表: @@ -2240,59 +2125,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... 测试... - + Test Login 测试登录 - + Importing %1 e.g. Importing 2012/01/01 正在导入 %1 - + Importing History... 导入历史... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported 播放历史已导入 - - + + Failed 失败 - + Success 成功 - + Could not contact server 无法连接到服务器 - + Synchronizing... 同步中... - + Synchronization Finished 同步成功 @@ -2300,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify 与 Spotify 同步 - + Re-enable syncing with Spotify 重新启用 Spotify 同步 - + Create local copy 创建本地拷贝 - + Subscribe to playlist changes 订阅播放列表改动 - + Re-enable playlist subscription 重新启用播放列表订阅 - + Stop subscribing to changes 停止订阅改动 - + Enable Spotify collaborations 启用 Spotify 碰撞 - + Disable Spotify collaborations 禁用 Spotify 碰撞 - + Stop syncing with Spotify 停止与 Spotify 同步 @@ -2348,28 +2234,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... 登录中... - + Failed: %1 失败:%1 - + Logged in as %1 作为 %1 登录 - + Log Out 登出 - - + + Log In 登录 @@ -2377,7 +2263,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium 使用 Spotify Premium 播放并同步播放列表。 @@ -2527,8 +2413,22 @@ You may wish to try re-authenticating. 登录 Jabber/XMPP 账户以i连接你的朋友。 + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2544,8 +2444,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue 添加到队列 @@ -2561,56 +2461,56 @@ You may wish to try re-authenticating. - + &Love 喜欢 - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link 复制歌曲链接 - + Copy Album &Link 复制专辑链接 - + Copy Artist &Link 复制艺术家链接 - + Un-&Love 不喜欢 - + &Delete Items 删除该项 - + Properties... 属性... - + &Delete Item 删除该项 @@ -2894,16 +2794,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity 艺术家相似度 + Artist Hotttnesss 艺术家热度 + Song Hotttnesss 歌曲热度 @@ -2929,92 +2832,135 @@ Try tweaking the filters for a new set of songs to play. + Energy 能量 + Danceability 舞动指数 - + only by ~%1 限定艺术家为 ~%1 - + + similar to ~%1 类似于 ~%1 - + with genre ~%1 with genre ~%1 - - + + from no one - + My Collection 我的收藏 - + + from my radio + + + + from %1 radio + 从 %1 电台 + + + + Variety + + + + + Adventurousness - with %1 %2 + very low - about %1 BPM - 大约 %1 BPM + low + - + - about %n minute(s) long - 大约 %n 分钟长 + moderate + - about %1 dB - 大约 %1 dB + high + - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + 大约 %1 BPM + + + + about %n minute(s) long + 大约 %n 分钟长 + + + + about %1 dB + 大约 %1 dB + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood 以 %1 的情绪 - + in a %1 style @@ -3198,10 +3144,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) %n 其他的 - + - %1 people - %1 人 + %n people + @@ -3225,6 +3171,14 @@ Try tweaking the filters for a new set of songs to play. 解析短链接时出错! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3288,7 +3242,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3308,6 +3262,14 @@ enter the displayed PIN number here: 在这里输入获得的 PIN: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3514,159 +3476,159 @@ enter the displayed PIN number here: Go forward one page 转向下一页 - - - Global Search... - 全局搜索 ... - - + Hide Menu Bar 隐藏菜单栏 - + Show Menu Bar 显示菜单栏 + + + Search for any artist, album or song... + + &Main Menu 主菜单 - - - + + + Connect To Peer 连接到客户端 - + Enter peer address: 输入客户端地址: - + Enter peer port: 输入客户端端口: - + Enter peer key: 输入客户端密钥: - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 版权所有 2010 - 2012 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk @@ -3682,67 +3644,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - 表单 - - - - Cover - 封面 - - - - Track - 歌曲 - - - - Artist - 艺术家 - - - - Album - 专辑: - - - - Statistics - 统计信息 - - - + Similar Tracks 相似歌曲 - + Sorry, but we could not find similar tracks for this song! 抱歉,无法找到与这首歌类似的歌曲! - + You've listened to this track %n time(s). 你已经收听过此歌曲 %n 遍。 - + You've never listened to this track before. 你之前从未听过此歌曲。 - + You first listened to it on %1. 你第一次听的是 %1. - + You've listened to %1 %n time(s). 你已经听过 %1 有 %n 遍了。 - + You've never listened to %1 before. 你之前从未听过 %1。 @@ -3750,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. 抱歉,未找到任何匹配 '%1' 的结果。 @@ -3773,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown 未知 @@ -3801,7 +3733,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. 对不起,根据条件 '%1' 没有找到任何结果。 @@ -4309,11 +4241,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - 表单 - Local Network configuration diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 2de6d6636..b2facadb1 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -255,37 +255,17 @@ connect and stream from you? AlbumInfoWidget - - Form - 形式 - - - + Tracklist - + Other Albums - - Cover - - - - - Album - - - - - Artist - - - - + Sorry, we could not find any other albums for this artist! @@ -295,7 +275,7 @@ connect and stream from you? - + Other Albums by %1 列出所有其他專輯,依 %1 @@ -317,49 +297,32 @@ connect and stream from you? ArtistInfoWidget - - Form - 形式 - - - + Top Hits 流行精選 - + Related Artists 相關演出者 - - - Artist - - - - + Albums 專輯 - - - Cover - - - - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -367,82 +330,15 @@ connect and stream from you? AudioControls - - Prev - 上一首 - - - - Play - 播放 - - - - Pause - 暫停 - - - - Next - 下一首 - - - - Artist - 演出者 - - - - Album - 專輯 - - - - social - - - - - love - 喜愛 - - - - resolver - - - - - Time - 時間 - - - - Time Left - 剩餘時間 - - - Shuffle 隨機 - Repeat 重複 - - - Low - - - - - High - - Time Elapsed @@ -472,17 +368,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -535,11 +431,6 @@ connect and stream from you? ContextWidget - - - InfoBar - 信息欄 - @@ -769,14 +660,6 @@ connect and stream from you? - - GlobalSearchWidget - - - Form - - - IndexingJobItem @@ -787,11 +670,6 @@ connect and stream from you? InfoBar - - - InfoBar - 信息欄 - Filter... @@ -800,11 +678,6 @@ connect and stream from you? LastFmConfig - - - Form - - Scrobble tracks to Last.fm @@ -941,11 +814,6 @@ connect and stream from you? MetadataEditor - - - Form - - Tags @@ -1147,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1160,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1173,51 +1076,56 @@ connect and stream from you? PlaylistLargeItemDelegate - + played %1 by you + e.g. played 3 hours ago by you - + played %1 by %2 + e.g. played 3 hours ago by SomeSource - + added %1 + e.g. added 3 hours ago - + by <b>%1</b> + e.g. by SomeArtist - + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1335,67 +1243,67 @@ connect and stream from you? QObject - + %n year(s) ago - + %n year(s) - + %n month(s) ago - + %n month(s) - + %n week(s) ago - + %n week(s) - + %n day(s) ago - + %n day(s) - + %n hour(s) ago - + %n hour(s) - + %1 minutes ago %1 分鐘前 - + %1 minutes %1 分鐘 - + just now 剛才 @@ -1414,6 +1322,18 @@ connect and stream from you? Status Updaters + + + + %1 Config + + + + + + %1 Configuration + + QuaZipFilePrivate @@ -1425,24 +1345,19 @@ connect and stream from you? QueueView - - - InfoBar - - - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1559,11 +1474,6 @@ connect and stream from you? Settings_Accounts - - - Form - - Filter by capability: @@ -1572,11 +1482,6 @@ connect and stream from you? Settings_Advanced - - - Form - - Remote Peer Connection Method @@ -1655,11 +1560,6 @@ connect and stream from you? Settings_Collection - - - Form - - Path to scan for music files: @@ -1722,11 +1622,6 @@ connect and stream from you? SocialWidget - - - Form - - Facebook @@ -1737,16 +1632,6 @@ connect and stream from you? Twitter Twitter - - - Cover - 封面 - - - - TextLabel - 文字標籤 - Tweet @@ -1771,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track 曲目 - + Album 專輯 - + Artist 演出者 - + Local 本地 - + Top 10 前10名 - + All available tracks - - + + Show 顯示 - - + + Hide 隱藏 @@ -2049,11 +1934,6 @@ connect and stream from you? SpotifyConfig - - - Form - - Configure your Spotify account @@ -2081,6 +1961,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高品質的串流 @@ -2090,7 +1975,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization 刪除同步時,刪除 Tomahawk 播放清單 @@ -2237,59 +2122,60 @@ connect and stream from you? Tomahawk::Accounts::LastFmConfig - + Testing... - + Test Login - + Importing %1 e.g. Importing 2012/01/01 - + Importing History... - + History Incomplete. Resume + Text on a button that resumes import - + Playback History Imported - - + + Failed 失敗 - + Success 成功 - + Could not contact server 無法聯繫服務器 - + Synchronizing... - + Synchronization Finished @@ -2297,47 +2183,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2345,28 +2231,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... 登錄中... - + Failed: %1 失敗:%1 - + Logged in as %1 - + Log Out - - + + Log In 登錄 @@ -2374,7 +2260,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2521,8 +2407,22 @@ You may wish to try re-authenticating. 登錄到你的 Jabber/ XMPP 帳號以與您的朋友連線 + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + Automatically connect to Tomahawks on the local network @@ -2538,8 +2438,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue 添加至佇列 @@ -2555,56 +2455,56 @@ You may wish to try re-authenticating. - + &Love - - - + + + &Go to "%1" - - - + + + Go to "%1" - + &Copy Track Link - + Copy Album &Link - + Copy Artist &Link - + Un-&Love - + &Delete Items - + Properties... - + &Delete Item @@ -2884,16 +2784,19 @@ Try tweaking the filters for a new set of songs to play. + Artist Familiarity 藝術家熟悉程度 + Artist Hotttnesss + Song Hotttnesss @@ -2919,92 +2822,135 @@ Try tweaking the filters for a new set of songs to play. + Energy 能量 + Danceability - + only by ~%1 - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection 我的收藏 - + + from my radio + + + + from %1 radio + + + Variety + + + + + Adventurousness + + - with %1 %2 + very low - about %1 BPM + low - + - about %n minute(s) long - + moderate + - about %1 dB + high - at around %1%2 %3 + very high + + + + + with %1 %2 + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style @@ -3188,10 +3134,10 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + - %1 people - + %n people + @@ -3215,6 +3161,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3278,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3297,6 +3251,14 @@ enter the displayed PIN number here: + + TomahawkSettings + + + Local Network + + + TomahawkTrayIcon @@ -3503,159 +3465,159 @@ enter the displayed PIN number here: Go forward one page - - - Global Search... - 全域搜尋... - - + Hide Menu Bar - + Show Menu Bar + + + Search for any artist, album or song... + + &Main Menu - - - + + + Connect To Peer 連接點對點 - + Enter peer address: 輸入對等地址: - + Enter peer port: 輸入對等連接埠: - + Enter peer key: 輸入對等密鑰: - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk @@ -3671,67 +3633,37 @@ enter the displayed PIN number here: TrackInfoWidget - - Form - - - - - Cover - - - - - Track - - - - - Artist - - - - - Album - - - - - Statistics - - - - + Similar Tracks - + Sorry, but we could not find similar tracks for this song! - + You've listened to this track %n time(s). - + You've never listened to this track before. - + You first listened to it on %1. - + You've listened to %1 %n time(s). - + You've never listened to %1 before. @@ -3739,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3762,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown @@ -3790,7 +3722,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. @@ -4291,11 +4223,6 @@ Lyrics for "%1" by %2: ZeroconfConfig - - - Form - - Local Network configuration diff --git a/resources.qrc b/resources.qrc index 6681623a1..fd88c3fce 100644 --- a/resources.qrc +++ b/resources.qrc @@ -175,5 +175,7 @@ data/images/station-artist.svg data/images/station-genre.svg data/images/station-year.svg + data/images/tweet.svg + data/images/widget-border.png diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index a7e0f9660..dd8d82e42 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -329,7 +329,7 @@ AudioControls::setCover() ui->coverImage->setPixmap( TomahawkUtils::createRoundedImage( cover, QSize( 0, 0 ) ), false ); } else - ui->coverImage->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover, ui->coverImage->size() ), true ); + ui->coverImage->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Original, ui->coverImage->size() ), true ); } diff --git a/src/AudioControls.ui b/src/AudioControls.ui index 9d4ae1b31..a531df131 100644 --- a/src/AudioControls.ui +++ b/src/AudioControls.ui @@ -1,610 +1,609 @@ - - AudioControls - - - - 0 - 0 - 929 - 80 - - - - - 0 - 0 - - - - - 0 - 80 - - - - - 16777215 - 80 - - - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 254 - 0 - - - - - 254 - 16777215 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Prev - - - - - - - 0 - - - - - Play - - - - - - - Pause - - - - - - - - - Next - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - 16777215 - 74 - - - - - 10 - - - 0 - - - 12 - - - 0 - - - - - - 0 - 0 - - - - - 60 - 60 - - - - - 60 - 60 - - - - Qt::AlignCenter - - - - - - - 4 - - - 6 - - - 2 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 3 - - - - - - 0 - 0 - - - - - 0 - 16 - - - - Artist - - - - - - - - 0 - 0 - - - - - 0 - 16 - - - - Album - - - - - - - - - Qt::Horizontal - - - - 4 - 8 - - - - - - - - - - - - Qt::Horizontal - - - - 20 - 1 - - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - social - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - love - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - - - 0 - 0 - - - - PointingHandCursor - - - resolver - - - - - - - - - Qt::Vertical - - - - 20 - 4 - - - - - - - - 4 - - - 0 - - - 0 - - - 0 - - - - - Time - - - Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - Qt::Horizontal - - - - - - - Time Left - - - Qt::AlignRight|Qt::AlignVCenter - - - - - - - - - - - - - - - 0 - 0 - - - - - 200 - 0 - - - - - 200 - 66 - - - - - 2 - - - 0 - - - 2 - - - 0 - - - 0 - - - - - - 2 - - - 2 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - Shuffle - - - - - - - - 0 - 0 - - - - Repeat - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - 2 - - - 2 - - - - - - 0 - 0 - - - - Low - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - High - - - - - - - - - - - - - - SeekSlider - QSlider -
widgets/SeekSlider.h
-
- - ImageButton - QPushButton -
widgets/ImageButton.h
-
- - QueryLabel - QLabel -
widgets/QueryLabel.h
-
- - FadingPixmap - QLabel -
widgets/FadingPixmap.h
-
-
- - -
+AudioControls + + + +0 +0 +929 +80 + + + + +0 +0 + + + + +0 +80 + + + + +16777215 +80 + + + + +0 + + +0 + + + + + +0 +0 + + + + +254 +0 + + + + +254 +16777215 + + + + + + +Qt::Horizontal + + + +40 +20 + + + + + + + +Prev + + + + + + +0 + + + + +Play + + + + + + +Pause + + + + + + + + +Next + + + + + + +Qt::Horizontal + + + +40 +20 + + + + + + + + + + + +16777215 +74 + + + + +10 + + +0 + + +12 + + +0 + + + + + +0 +0 + + + + +60 +60 + + + + +60 +60 + + + +Qt::AlignCenter + + + + + + +4 + + +6 + + +2 + + +0 + + + + +0 + + +0 + + +0 + + +0 + + + + +0 + + +0 + + +0 + + +0 + + +3 + + + + + +0 +0 + + + + +0 +16 + + + +Artist + + + + + + + +0 +0 + + + + +0 +16 + + + +Album + + + + + + + + +Qt::Horizontal + + + +4 +8 + + + + + + + + + + + +Qt::Horizontal + + + +20 +1 + + + + + + + + +0 +0 + + + +PointingHandCursor + + +social + + + + + + + +0 +0 + + + +PointingHandCursor + + +love + + + + + + + + +Qt::Vertical + + + +20 +1 + + + + + + + + + + +0 +0 + + + +PointingHandCursor + + +resolver + + + + + + + + +Qt::Vertical + + + +20 +4 + + + + + + + +4 + + +0 + + +0 + + +0 + + + + +Time + + +Qt::AlignLeft|Qt::AlignVCenter + + + + + + + +0 +20 + + + + +16777215 +20 + + + +Qt::Horizontal + + + + + + +Time Left + + +Qt::AlignRight|Qt::AlignVCenter + + + + + + + + + + + + + + +0 +0 + + + + +200 +0 + + + + +200 +66 + + + + +2 + + +0 + + +2 + + +0 + + +0 + + + + + +2 + + +2 + + + + +Qt::Horizontal + + + +40 +20 + + + + + + + + +0 +0 + + + +Shuffle + + + + + + + +0 +0 + + + +Repeat + + + + + + +Qt::Horizontal + + + +40 +20 + + + + + + + + + + + +2 + + +2 + + + + + +0 +0 + + + +Low + + + + + + + +0 +20 + + + + +16777215 +20 + + + +Qt::Horizontal + + + + + + + +0 +0 + + + +High + + + + + + + + + + + + + +SeekSlider +QSlider +
widgets/SeekSlider.h
+
+ +ImageButton +QPushButton +
widgets/ImageButton.h
+
+ +QueryLabel +QLabel +
widgets/QueryLabel.h
+
+ +FadingPixmap +QLabel +
widgets/FadingPixmap.h
+
+
+ + + \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1a06b8246..6b411d570 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -156,7 +156,7 @@ INCLUDE(GNUInstallDirs) # translations include( ${CMAKE_SOURCE_DIR}/lang/translations.cmake ) -add_tomahawk_translations(ar bg ca de en es fr ja pl pt_BR ru sv tr zh_CN zh_TW) +add_tomahawk_translations( ${TOMAHAWK_TRANSLATION_LANGUAGES} ) SET( final_src ${final_src} ${tomahawkMoc} ${tomahawkSources} ${trans_outfile}) diff --git a/src/SearchBox.ui b/src/SearchBox.ui index 95e9a248d..c77443773 100644 --- a/src/SearchBox.ui +++ b/src/SearchBox.ui @@ -11,7 +11,7 @@ - Form + Form diff --git a/src/Settings_Accounts.ui b/src/Settings_Accounts.ui index de51ed1f0..a0154bcba 100644 --- a/src/Settings_Accounts.ui +++ b/src/Settings_Accounts.ui @@ -11,7 +11,7 @@ - Form + Form diff --git a/src/Settings_Advanced.ui b/src/Settings_Advanced.ui index e7e9a5dd7..08636c286 100644 --- a/src/Settings_Advanced.ui +++ b/src/Settings_Advanced.ui @@ -17,7 +17,7 @@ - Form + Form diff --git a/src/Settings_Collection.ui b/src/Settings_Collection.ui index 6579d2d51..590d46fea 100644 --- a/src/Settings_Collection.ui +++ b/src/Settings_Collection.ui @@ -17,7 +17,7 @@ - Form + Form diff --git a/src/SocialWidget.cpp b/src/SocialWidget.cpp index a1fe34e59..caed845ad 100644 --- a/src/SocialWidget.cpp +++ b/src/SocialWidget.cpp @@ -67,7 +67,7 @@ SocialWidget::SocialWidget( QWidget* parent ) ui->charsLeftLabel->setForegroundRole( QPalette::Text ); ui->charsLeftLabel->setStyleSheet( "text: black" ); ui->buttonBox->button( QDialogButtonBox::Ok )->setText( tr( "Tweet" ) ); - ui->buttonBox->button( QDialogButtonBox::Ok )->setIcon( ImageRegistry::instance()->icon( RESPATH "images/ok.svg" ) ); + ui->buttonBox->button( QDialogButtonBox::Ok )->setIcon( ImageRegistry::instance()->icon( RESPATH "images/tweet.svg" ) ); ui->buttonBox->button( QDialogButtonBox::Cancel )->setIcon( ImageRegistry::instance()->icon( RESPATH "images/cancel.svg" ) ); ui->textEdit->setStyleSheet( "border: 1px solid " + TomahawkUtils::Colors::BORDER_LINE.name() ); diff --git a/src/SocialWidget.ui b/src/SocialWidget.ui index 636dfaa24..155fa7112 100644 --- a/src/SocialWidget.ui +++ b/src/SocialWidget.ui @@ -11,7 +11,7 @@ - Form + Form @@ -66,7 +66,7 @@ - Cover + Cover @@ -123,7 +123,7 @@ - TextLabel + TextLabel diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index 25cf7f02b..a29619d7d 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -20,6 +20,8 @@ #include "TomahawkApp.h" +#include + #include "TomahawkVersion.h" #include "AclRegistryImpl.h" #include "Album.h" @@ -143,47 +145,7 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) setApplicationVersion( QLatin1String( TOMAHAWK_VERSION ) ); registerMetaTypes(); - installTranslator(); -} - - -void -TomahawkApp::installTranslator() -{ -#if QT_VERSION >= 0x040800 - QString locale = QLocale::system().uiLanguages().first().replace( "-", "_" ); -#else - QString locale = QLocale::system().name(); -#endif - if ( locale == "C" ) - locale = "en"; - - // Tomahawk translations - QTranslator* translator = new QTranslator( this ); - if ( translator->load( QString( ":/lang/tomahawk_" ) + locale ) ) - { - tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using system locale:" << locale; - } - else - { - tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using default locale, system locale one not found:" << locale; - translator->load( QString( ":/lang/tomahawk_en" ) ); - } - - TOMAHAWK_APPLICATION::installTranslator( translator ); - - // Qt translations - translator = new QTranslator( this ); - if ( translator->load( QString( ":/lang/qt_" ) + locale ) ) - { - tDebug( LOGVERBOSE ) << "Translation: Qt: Using system locale:" << locale; - } - else - { - tDebug( LOGVERBOSE ) << "Translation: Qt: Using default locale, system locale one not found:" << locale; - } - - TOMAHAWK_APPLICATION::installTranslator( translator ); + TomahawkUtils::installTranslator( this ); } @@ -423,8 +385,8 @@ TomahawkApp::printHelp() echo( "Usage: " + arguments().at( 0 ) + " [options] [url]" ); echo( "Options are:" ); echo( " --help Show this help" ); - echo( " --http Initialize HTTP server" ); - echo( " --filescan Scan files on startup" ); +// echo( " --http Initialize HTTP server" ); +// echo( " --filescan Scan files on startup" ); // echo( " --headless Run without a GUI" ); echo( " --hide Hide main window on startup" ); echo( " --testdb Use a test database instead of real collection" ); diff --git a/src/TomahawkApp.h b/src/TomahawkApp.h index d4e09ac61..5eb342d29 100644 --- a/src/TomahawkApp.h +++ b/src/TomahawkApp.h @@ -115,7 +115,6 @@ private slots: void accountManagerReady(); private: - void installTranslator(); void registerMetaTypes(); void printHelp(); diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 72f2475bf..c8c83ecb0 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -278,7 +278,7 @@ TomahawkWindow::setupToolBar() m_toolbar->addWidget( toolbarLeftSpacer )->setProperty( "kind", QString( "spacer" ) ); m_searchWidget = new QSearchField( this ); - m_searchWidget->setPlaceholderText( tr( "Global Search..." ) ); + m_searchWidget->setPlaceholderText( tr( "Search for any artist, album or song..." ) ); m_searchWidget->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred ); m_searchWidget->setFixedWidth( 340 ); connect( m_searchWidget, SIGNAL( returnPressed() ), this, SLOT( onFilterEdited() ) ); @@ -721,6 +721,8 @@ TomahawkWindow::winEvent( MSG* msg, long* result ) } +#endif // Q_OS_WIN + void TomahawkWindow::audioStateChanged( AudioState newState, AudioState oldState ) { @@ -765,6 +767,9 @@ TomahawkWindow::audioStateChanged( AudioState newState, AudioState oldState ) } m_taskbarList->ThumbBarUpdateButtons( winId(), ARRAYSIZE( m_thumbButtons ), m_thumbButtons ); +#else + Q_UNUSED( newState ); + Q_UNUSED( oldState ); #endif // HAVE_THUMBBUTTON } @@ -789,8 +794,6 @@ TomahawkWindow::updateWindowsLoveButton() #endif // HAVE_THUMBBUTTON } -#endif - void TomahawkWindow::onHistoryBackAvailable( bool avail ) diff --git a/src/TomahawkWindow.h b/src/TomahawkWindow.h index b76e35713..3807869ca 100644 --- a/src/TomahawkWindow.h +++ b/src/TomahawkWindow.h @@ -148,10 +148,9 @@ private slots: void toggleMenuBar(); void balanceToolbar(); -#ifdef Q_OS_WIN + void audioStateChanged( AudioState newState, AudioState oldState ); void updateWindowsLoveButton(); -#endif private: void loadSettings(); diff --git a/src/accounts/zeroconf/ConfigWidget.ui b/src/accounts/zeroconf/ConfigWidget.ui index 58633a017..84390fa37 100644 --- a/src/accounts/zeroconf/ConfigWidget.ui +++ b/src/accounts/zeroconf/ConfigWidget.ui @@ -11,7 +11,7 @@ - Form + Form diff --git a/src/accounts/zeroconf/ZeroconfAccount.cpp b/src/accounts/zeroconf/ZeroconfAccount.cpp index b337b48e1..e2cf9a674 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.cpp +++ b/src/accounts/zeroconf/ZeroconfAccount.cpp @@ -64,8 +64,8 @@ ZeroconfFactory::icon() const ZeroconfAccount::ZeroconfAccount( const QString& accountId ) : Account( accountId ) { - setAccountServiceName( "Local Network" ); - setAccountFriendlyName( "Local Network" ); + setAccountServiceName( tr( "Local Network" ) ); + setAccountFriendlyName( tr( "Local Network" ) ); setTypes( SipType ); } diff --git a/src/accounts/zeroconf/ZeroconfAccount.h b/src/accounts/zeroconf/ZeroconfAccount.h index 136c971c0..fc7a939ae 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.h +++ b/src/accounts/zeroconf/ZeroconfAccount.h @@ -39,7 +39,7 @@ public: virtual ~ZeroconfFactory(); virtual QString factoryId() const { return "zeroconfaccount"; } - virtual QString prettyName() const { return "Local Network"; } + virtual QString prettyName() const { return tr( "Local Network" ); } QString description() const { return tr( "Automatically connect to Tomahawks on the local network" ); } virtual bool isUnique() const { return true; } AccountTypes types() const { return AccountTypes( SipType ); }; diff --git a/src/breakpad/CrashReporter/CMakeLists.txt b/src/breakpad/CrashReporter/CMakeLists.txt index 291557c29..439f19b9f 100644 --- a/src/breakpad/CrashReporter/CMakeLists.txt +++ b/src/breakpad/CrashReporter/CMakeLists.txt @@ -16,7 +16,11 @@ INCLUDE( ${QT_USE_FILE} ) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ../../libtomahawk ) ADD_DEFINITIONS( ${QT_DEFINITIONS} ) -ADD_EXECUTABLE( tomahawk_crash_reporter WIN32 ${crashreporter_SOURCES} ${crashreporter_HEADERS_MOC} ${crashreporter_UI_HEADERS} ${crashreporter_RC_RCC} ) +# translations +include( ${CMAKE_SOURCE_DIR}/lang/translations.cmake ) +add_tomahawk_translations( ${TOMAHAWK_TRANSLATION_LANGUAGES} ) + +ADD_EXECUTABLE( tomahawk_crash_reporter WIN32 ${crashreporter_SOURCES} ${crashreporter_HEADERS_MOC} ${crashreporter_UI_HEADERS} ${crashreporter_RC_RCC} ${trans_outfile} ) TARGET_LINK_LIBRARIES( tomahawk_crash_reporter ${QT_LIBRARIES} tomahawklib ) set_target_properties( tomahawk_crash_reporter PROPERTIES AUTOMOC ON) install(TARGETS tomahawk_crash_reporter RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}) diff --git a/src/breakpad/CrashReporter/main.cpp b/src/breakpad/CrashReporter/main.cpp index 9a3db4701..7ae70acbe 100644 --- a/src/breakpad/CrashReporter/main.cpp +++ b/src/breakpad/CrashReporter/main.cpp @@ -19,9 +19,11 @@ #include "CrashReporter.h" #include - #include +#include "utils/TomahawkUtils.h" + + const char* k_usage = "Usage:\n" " CrashReporter \n"; @@ -35,13 +37,7 @@ int main( int argc, char* argv[] ) QCoreApplication::setOrganizationDomain( "tomahawk-player.org" ); QApplication app( argc, argv ); - - QString langCode; - QTranslator translatorApp; - QTranslator translatorQt; - -/* app.installTranslator( &translatorApp ); - app.installTranslator( &translatorQt );*/ + TomahawkUtils::installTranslator( &app ); if ( app.arguments().size() != 4 ) { diff --git a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp index 7bda1d747..a7fc23bb8 100644 --- a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp +++ b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp @@ -176,7 +176,7 @@ MusicBrainzPlugin::gotReleaseGroupsSlot() QString groupTitle = releaseGroupsNL.at(i).firstChildElement("title").text(); QString a = releaseGroupsNL.at(i).firstChildElement( "artist-credit" ).firstChildElement( "name-credit" ).firstChildElement( "artist" ).firstChildElement( "name" ).text(); QString id = releaseGroupsNL.at(i).firstChildElement( "artist-credit" ).firstChildElement( "name-credit" ).firstChildElement( "artist" ).attribute( "id" ); - if ( !albums.contains( groupTitle ) && hash["artist"] == a && id == popularId ) + if ( !albums.contains( groupTitle ) && id == popularId && a.normalized( QString::NormalizationForm_KC ) == hash["artist"].normalized( QString::NormalizationForm_KC ) ) { albums << groupTitle; tDebug() << Q_FUNC_INFO << groupTitle; @@ -273,7 +273,11 @@ MusicBrainzPlugin::gotRecordingsSlot() for ( int i = 0; i < tracksNL.count(); i++ ) { QString track = tracksNL.at(i).firstChildElement( "recording" ).firstChildElement( "title" ).text(); - tracksSL << track; + if ( !tracksSL.contains( track ) ) + { + tracksSL << track; + tDebug(LOGVERBOSE) << Q_FUNC_INFO << track; + } } Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(); diff --git a/src/libtomahawk/Album.cpp b/src/libtomahawk/Album.cpp index 54e23118a..51257be59 100644 --- a/src/libtomahawk/Album.cpp +++ b/src/libtomahawk/Album.cpp @@ -226,6 +226,12 @@ Album::id() const QPixmap Album::cover( const QSize& size, bool forceLoad ) const { + if ( name().isEmpty() ) + { + m_coverLoaded = true; + return QPixmap(); + } + if ( !m_coverLoaded && !m_coverLoading ) { if ( !forceLoad ) @@ -331,7 +337,6 @@ Album::infoSystemFinished( const QString& target ) this, SLOT( infoSystemFinished( QString ) ) ); m_coverLoading = false; - emit updated(); } diff --git a/src/libtomahawk/Album.h b/src/libtomahawk/Album.h index bdb3b05b4..b3894b614 100644 --- a/src/libtomahawk/Album.h +++ b/src/libtomahawk/Album.h @@ -96,7 +96,7 @@ private: artist_ptr m_artist; - bool m_coverLoaded; + mutable bool m_coverLoaded; mutable bool m_coverLoading; mutable QString m_uuid; mutable QString m_coverId; diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 654b38357..25b9035df 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -78,10 +78,11 @@ set( libGuiSources playlist/LovedTracksModel.cpp playlist/RecentlyAddedModel.cpp playlist/RecentlyPlayedModel.cpp + playlist/AlbumItemDelegate.cpp playlist/PlaylistLargeItemDelegate.cpp playlist/PlaylistChartItemDelegate.cpp playlist/PlayableItem.cpp - playlist/SingleTrackPlaylistInterface.h + playlist/SingleTrackPlaylistInterface.cpp playlist/dynamic/DynamicPlaylist.cpp playlist/dynamic/DynamicView.cpp diff --git a/src/libtomahawk/Collection.h b/src/libtomahawk/Collection.h index 3ae994017..f5121f70e 100644 --- a/src/libtomahawk/Collection.h +++ b/src/libtomahawk/Collection.h @@ -32,7 +32,6 @@ #include #include "Typedefs.h" -#include "FuncTimeout.h" #include "Playlist.h" #include "playlist/dynamic/DynamicPlaylist.h" diff --git a/src/libtomahawk/ContextMenu.cpp b/src/libtomahawk/ContextMenu.cpp index eefad6b0f..2cf7bef16 100644 --- a/src/libtomahawk/ContextMenu.cpp +++ b/src/libtomahawk/ContextMenu.cpp @@ -109,10 +109,13 @@ ContextMenu::setQueries( const QList& queries ) if ( m_supportedActions & ActionPage && itemCount() == 1 ) { - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_queries.first()->track() ) ), ActionTrackPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/track-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_queries.first()->track() ) ), ActionTrackPage ); if ( !m_queries.first()->album().isEmpty() ) - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_queries.first()->album() ) ), ActionAlbumPage ); - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_queries.first()->artist() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/album-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_queries.first()->album() ) ), ActionAlbumPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_queries.first()->artist() ) ), ActionArtistPage ); } addSeparator(); @@ -164,8 +167,10 @@ ContextMenu::setAlbums( const QList& albums ) if ( m_supportedActions & ActionPage && itemCount() == 1 ) { - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_albums.first()->name() ) ), ActionAlbumPage ); - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_albums.first()->artist()->name() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/album-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_albums.first()->name() ) ), ActionAlbumPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_albums.first()->artist()->name() ) ), ActionArtistPage ); } //m_sigmap->setMapping( addAction( tr( "&Add to Playlist" ) ), ActionAddToPlaylist ); @@ -210,7 +215,8 @@ ContextMenu::setArtists( const QList& artists ) addSeparator(); if ( m_supportedActions & ActionPage && itemCount() == 1 ) - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_artists.first()->name() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_artists.first()->name() ) ), ActionArtistPage ); //m_sigmap->setMapping( addAction( tr( "&Add to Playlist" ) ), ActionAddToPlaylist ); diff --git a/src/libtomahawk/PlaylistInterface.cpp b/src/libtomahawk/PlaylistInterface.cpp index 15a1798e9..1dd1e73ef 100644 --- a/src/libtomahawk/PlaylistInterface.cpp +++ b/src/libtomahawk/PlaylistInterface.cpp @@ -184,35 +184,23 @@ PlaylistInterface::onItemsChanged() Tomahawk::result_ptr prevResult = siblingResult( -1, m_currentIndex ); Tomahawk::result_ptr nextResult = siblingResult( 1, m_currentIndex ); - if ( prevResult ) { - bool avail = prevResult->toQuery()->playable(); + bool avail = prevResult && prevResult->toQuery()->playable(); if ( avail != m_prevAvail ) { m_prevAvail = avail; - emit previousTrackAvailable(); + emit previousTrackAvailable( avail ); } } - else if ( m_prevAvail ) - { - m_prevAvail = false; - emit previousTrackAvailable(); - } - if ( nextResult ) { - bool avail = nextResult->toQuery()->playable(); + bool avail = nextResult && nextResult->toQuery()->playable(); if ( avail != m_nextAvail ) { m_nextAvail = avail; - emit nextTrackAvailable(); + emit nextTrackAvailable( avail ); } } - else if ( m_nextAvail ) - { - m_nextAvail = false; - emit nextTrackAvailable(); - } } diff --git a/src/libtomahawk/PlaylistInterface.h b/src/libtomahawk/PlaylistInterface.h index fd52aa56f..4cccd3224 100644 --- a/src/libtomahawk/PlaylistInterface.h +++ b/src/libtomahawk/PlaylistInterface.h @@ -96,8 +96,8 @@ signals: void shuffleModeChanged( bool enabled ); void latchModeChanged( Tomahawk::PlaylistModes::LatchMode mode ); - void previousTrackAvailable(); - void nextTrackAvailable(); + void previousTrackAvailable( bool available ); + void nextTrackAvailable( bool available ); void currentIndexChanged(); diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index 63c0b6305..c781d7849 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -793,7 +793,7 @@ Query::socialActionDescription( const QString& action, DescriptionMode mode ) co desc += " " + tr( "and" ) + "
" + tr( "%n other(s)", "", loveCounter - 3 ) + ""; if ( mode == Short ) - desc = "" + tr( "%1 people" ).arg( loveCounter ) + ""; + desc = "" + tr( "%n people", "", loveCounter ) + ""; desc += " " + tr( "loved this track" ); //FIXME: more action descs required } diff --git a/src/libtomahawk/SourcePlaylistInterface.cpp b/src/libtomahawk/SourcePlaylistInterface.cpp index 5e10f3b25..444ab1d22 100644 --- a/src/libtomahawk/SourcePlaylistInterface.cpp +++ b/src/libtomahawk/SourcePlaylistInterface.cpp @@ -180,8 +180,9 @@ SourcePlaylistInterface::resolvingFinished( bool hasResults ) if ( hasResults ) { m_gotNextItem = true; - emit nextTrackAvailable(); } + + emit nextTrackAvailable( hasResults ); } diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index 0aa059583..ad3f9e855 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -372,7 +372,7 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion ) } else if ( pluginName == "sipzeroconf" ) { - setValue( QString( "accounts/%1/accountfriendlyname" ).arg( accountKey ), "Local Network" ); + setValue( QString( "accounts/%1/accountfriendlyname" ).arg( accountKey ), tr( "Local Network" ) ); } beginGroup( "accounts/" + accountKey ); diff --git a/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp b/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp index 9d985f156..1f3c00887 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp @@ -19,6 +19,8 @@ #include "LastFmConfig.h" #include "ui_LastFmConfig.h" +#include + #include "LastFmAccount.h" #include "database/Database.h" #include "database/DatabaseCommand_LogPlayback.h" @@ -191,6 +193,7 @@ LastFmConfig::onHistoryLoaded() { if ( m_page != total ) { + //: Text on a button that resumes import m_ui->importHistory->setText( tr( "History Incomplete. Resume" ) ); m_ui->importHistory->setEnabled( true ); } @@ -265,7 +268,6 @@ LastFmConfig::syncLovedTracks( uint page ) connect( cmd, SIGNAL( done( DatabaseCommand_LoadSocialActions::TrackActions ) ), this, SLOT( localLovedLoaded( DatabaseCommand_LoadSocialActions::TrackActions ) ) ); Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( cmd ) ); - } @@ -302,7 +304,6 @@ LastFmConfig::onLovedFinished( QNetworkReply* reply ) m_lastfmLoved.insert( query ); } - if ( thisPage == m_totalLovedPages ) { m_doneFetchingLoved = true; diff --git a/src/libtomahawk/accounts/lastfm/LastFmConfig.ui b/src/libtomahawk/accounts/lastfm/LastFmConfig.ui index 19629957b..969b2aa16 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmConfig.ui +++ b/src/libtomahawk/accounts/lastfm/LastFmConfig.ui @@ -11,7 +11,7 @@ - Form + Form diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp index 86fb827a0..a69bcab13 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp @@ -623,7 +623,7 @@ LastFmInfoPlugin::similarTracksReturned() returnedData["artists"] = sortedArtists; returnedData["score"] = sortedScores; - qDebug() << "Returning data, tracks:" << sortedTracks << "artists:" << sortedArtists << "scors:" << sortedScores; + tDebug( LOGVERBOSE ) << "Returning data, tracks:" << sortedTracks << "artists:" << sortedArtists << "scores:" << sortedScores; Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(); @@ -801,13 +801,17 @@ LastFmInfoPlugin::coverArtReturned() QUrl redir = reply->attribute( QNetworkRequest::RedirectionTargetAttribute ).toUrl(); if ( redir.isEmpty() ) { + Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(); + Tomahawk::InfoSystem::InfoStringHash origData = requestData.input.value< Tomahawk::InfoSystem::InfoStringHash>(); + QByteArray ba = reply->readAll(); if ( ba.isNull() || !ba.length() ) { - tLog() << Q_FUNC_INFO << "Uh oh, null byte array"; - emit info( reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(), QVariant() ); + tLog() << Q_FUNC_INFO << "Null byte array for cover of" << origData["artist"] << origData["album"]; + emit info( requestData, QVariant() ); return; } + foreach ( const QUrl& url, m_badUrls ) { if ( reply->url().toString().startsWith( url.toString() ) ) @@ -818,11 +822,8 @@ LastFmInfoPlugin::coverArtReturned() returnedData["imgbytes"] = ba; returnedData["url"] = reply->url().toString(); - Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(); - emit info( requestData, returnedData ); - Tomahawk::InfoSystem::InfoStringHash origData = requestData.input.value< Tomahawk::InfoSystem::InfoStringHash>(); Tomahawk::InfoSystem::InfoStringHash criteria; criteria["artist"] = origData["artist"]; criteria["album"] = origData["album"]; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index f7b11d8c5..99701a764 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -414,6 +414,18 @@ SpotifyAccount::setManualResolverPath( const QString &resolverPath ) } } +void +SpotifyAccount::starTrack(const QString &artist, const QString &title, const bool starred) +{ + qDebug() << Q_FUNC_INFO << artist << title << starred; + QVariantMap msg; + msg[ "_msgtype" ] = "setStarred"; + msg[ "starred" ] = starred; + msg[ "artist" ] = artist; + msg[ "title" ] = title; + sendMessage( msg ); +} + bool SpotifyAccount::loggedIn() const @@ -826,6 +838,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const bool isOwner = plMap.value( "owner" ).toBool(); const bool sync = plMap.value( "sync" ).toBool(); const bool subscribed = plMap.value( "subscribed" ).toBool(); + const bool starContainer = ( plMap.value( "starContainer" ).toBool() || name == "Starred Tracks"); if ( name.isNull() || plid.isNull() || revid.isNull() ) { @@ -833,7 +846,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg continue; } - registerPlaylistInfo( new SpotifyPlaylistInfo( name, plid, revid, sync, subscribed, isOwner ) ); + registerPlaylistInfo( new SpotifyPlaylistInfo( name, plid, revid, sync, subscribed, isOwner, starContainer ) ); } if ( !m_configWidget.isNull() ) @@ -850,7 +863,19 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } + SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; + // We have previously sycned starred container, but not anymore. + // If we added loveSync, its synced in the background + if( !updater->sync() && m_configWidget.data()->loveSync() ) + return; + Q_ASSERT( updater->sync() ); const QString startPos = msg.value( "startPosition" ).toString(); @@ -869,6 +894,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; // If we're not syncing with this, the resolver is quite misinformed. @@ -880,7 +911,6 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const QString newRev = msg.value( "revid" ).toString(); const QString oldRev = msg.value( "oldRev" ).toString(); - updater->spotifyTracksRemoved( tracksList, newRev, oldRev ); } else if ( msgType == "tracksMoved" ) @@ -892,6 +922,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; Q_ASSERT( updater->sync() ); @@ -902,6 +938,20 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg updater->spotifyTracksMoved( tracksList, newStartPos, newRev, oldRev ); } + else if ( msgType == "starredChanged" ) + { + if ( loveSync() ) + { + const QVariantList tracksList = msg.value( "tracks" ).toList(); + const bool love = msg.value( "starred" ).toBool(); + + QList qs = SpotifyPlaylistUpdater::variantToQueries( tracksList ); + foreach ( const query_ptr& query, qs ) + { + query->setLoved( love ); + } + } + } else if ( msgType == "playlistMetadataChanged" ) { const QString plid = msg.value( "id" ).toString(); @@ -912,6 +962,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; Q_ASSERT( updater->sync() ); @@ -921,7 +977,6 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const bool collaborative = msg.value( "collaborative" ).toBool(); const int subscribers = msg.value( "subscribers" ).toInt(); - SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; if( info && info->name != title ) { qDebug() << "Playlist renamed fetched in tomahawk"; @@ -1114,16 +1169,18 @@ SpotifyAccount::saveConfig() QVariantHash config = configuration(); config[ "deleteOnUnsync" ] = m_configWidget.data()->deleteOnUnsync(); + config[ "loveSync" ] = m_configWidget.data()->loveSync(); setConfiguration( config ); m_configWidget.data()->saveSettings(); foreach ( SpotifyPlaylistInfo* pl, m_allSpotifyPlaylists.values() ) { -// qDebug() << "Checking changed state:" << pl->changed << pl->name << pl->sync; +// qDebug() << "Checking changed state:" << pl->changed << "name:" << pl->name << "sync" << pl->sync << "starred:" << pl->starContainer; if ( pl->changed ) { pl->changed = false; - if ( pl->sync ) + + if ( pl->sync || ( pl->starContainer && loveSync() ) ) { // Fetch full playlist contents, then begin the sync startPlaylistSync( pl ); @@ -1173,11 +1230,22 @@ SpotifyAccount::startPlaylistSync( SpotifyPlaylistInfo* playlist ) return; QVariantMap msg; - msg[ "_msgtype" ] = "getPlaylist"; msg[ "playlistid" ] = playlist->plid; - msg[ "sync" ] = playlist->sync; + msg[ "sync" ] = true; + + if( playlist->loveSync ) + { + msg[ "_msgtype" ] = "setSync"; + sendMessage( msg ); + if( playlist->sync && m_updaters.contains( playlist->plid ) ) + stopPlaylistSync(playlist, true); + } + else if( playlist->sync ) + { + msg[ "_msgtype" ] = "getPlaylist"; + sendMessage( msg, this, "startPlaylistSyncWithPlaylist" ); + } - sendMessage( msg, this, "startPlaylistSyncWithPlaylist" ); } @@ -1197,7 +1265,6 @@ SpotifyAccount::startPlaylistSyncWithPlaylist( const QString& msgType, const QVa // create a list of query/plentries directly QList< query_ptr > queries = SpotifyPlaylistUpdater::variantToQueries( tracks ); - /** * Begin syncing a playlist. Two options: * 1) This is a playlist that has never been synced to tomahawk. Create a new one @@ -1210,12 +1277,22 @@ SpotifyAccount::startPlaylistSyncWithPlaylist( const QString& msgType, const QVa { //Q_ASSERT( m_updaters[ id ]->sync() == false ); /// Should have been unchecked/off before, but might not be if the user // changed spotify resolver meanwhile, so allow it for now - m_updaters[ id ]->setSync( true ); -// m_updaters[ id ]-> - // TODO + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ id ]; + if ( loveSync() && ( info && info->starContainer ) ) + { + qDebug() << "Stopping playlist sync in favour for Love Sync"; + stopPlaylistSync( info, true ); + } + else + { + m_updaters[ id ]->setSync( true ); +// m_updaters[ id ]-> + // TODO + } } else { + playlist_ptr plPtr = Tomahawk::Playlist::create( SourceList::instance()->getLocal(), uuid(), name, @@ -1355,21 +1432,35 @@ SpotifyAccount::deleteOnUnsync() const return configuration().value( "deleteOnUnsync", false ).toBool(); } + +bool +SpotifyAccount::loveSync() const +{ + return configuration().value( "loveSync", false ).toBool(); +} + + void SpotifyAccount::stopPlaylistSync( SpotifyPlaylistInfo* playlist, bool forceDontDelete ) { if ( !playlist ) return; - QVariantMap msg; - msg[ "_msgtype" ] = "removeFromSyncList"; - msg[ "playlistid" ] = playlist->plid; + if ( loveSync() && playlist->starContainer ) + { + qDebug() << "LoveSync in action, wont remove playlist " << playlist->name; + } + else if( !loveSync() ) + { + QVariantMap msg; + msg[ "_msgtype" ] = "removeFromSyncList"; + msg[ "playlistid" ] = playlist->plid; - m_spotifyResolver.data()->sendMessage( msg ); + m_spotifyResolver.data()->sendMessage( msg ); + } if ( m_updaters.contains( playlist->plid ) ) { - SpotifyPlaylistUpdater* updater = m_updaters[ playlist->plid ]; updater->setSync( false ); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index afc4ee3cc..59527afe2 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -51,13 +51,14 @@ class SpotifyAccountConfig; // metadata for a playlist struct SpotifyPlaylistInfo { QString name, plid, revid; - bool sync, subscribed, changed, isOwner; + bool sync, subscribed, changed, isOwner, starContainer; + bool loveSync; + SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false, bool star = false ) + : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ) + , changed( false ), isOwner( isowner ), starContainer( star ), loveSync( false ) {} - SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false ) - : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ), changed( false ), isOwner( isowner ) {} - - SpotifyPlaylistInfo() : sync( false ), changed( false ) {} + SpotifyPlaylistInfo() : sync( false ), changed( false ), starContainer( false ), loveSync( false ) {} }; @@ -109,7 +110,8 @@ public: void unregisterUpdater( const QString& plid ); bool deleteOnUnsync() const; - + bool loveSync() const; + void starTrack(const QString& artist, const QString&title, const bool starred); void setManualResolverPath( const QString& resolverPath ); bool loggedIn() const; @@ -139,13 +141,11 @@ private slots: void playlistCopyCreated( const QString& msgType, const QVariantMap& msg, const QVariant& extraData ); void delayedInit(); void hookupAfterDeletion( bool autoEnable ); - private: void init(); bool checkForResolver(); void hookupResolver(); void killExistingResolvers(); - void loadPlaylists(); void clearUser( bool permanentlyDelete = false ); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp index 09ce54add..c7622b3e8 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp @@ -49,7 +49,7 @@ SpotifyAccountConfig::SpotifyAccountConfig( SpotifyAccount *account ) m_ui->loginButton->setDefault( true ); connect( m_ui->loginButton, SIGNAL( clicked( bool ) ), this, SLOT( doLogin() ) ); - + connect( m_ui->loveSync, SIGNAL( toggled(bool) ), this, SLOT( showStarredPlaylist(bool) ) ); connect( m_ui->usernameEdit, SIGNAL( textEdited( QString ) ), this, SLOT( resetLoginButton() ) ); connect( m_ui->passwordEdit, SIGNAL( textEdited( QString ) ), this, SLOT( resetLoginButton() ) ); connect( m_ui->selectAllCheckbox, SIGNAL( stateChanged( int ) ), this, SLOT( selectAllPlaylists() ) ); @@ -77,6 +77,7 @@ SpotifyAccountConfig::loadFromConfig() m_ui->passwordEdit->setText( m_account->credentials().value( "password" ).toString() ); m_ui->streamingCheckbox->setChecked( m_account->credentials().value( "highQuality" ).toBool() ); m_ui->deleteOnUnsync->setChecked( m_account->deleteOnUnsync() ); + m_ui->loveSync->setChecked( m_account->loveSync() ); if ( m_account->loggedIn() ) { @@ -100,9 +101,17 @@ SpotifyAccountConfig::saveSettings() const bool toSync = ( item->checkState() == Qt::Checked ); if ( pl->sync != toSync ) { + qDebug() << Q_FUNC_INFO << "Setting sync"; pl->changed = true; pl->sync = toSync; } + + if ( ( pl->starContainer && loveSync() ) && ( pl->loveSync != loveSync() ) ) + { + qDebug() << Q_FUNC_INFO << "Setting lovesync"; + pl->loveSync = loveSync(); + pl->changed = true; + } } } @@ -133,6 +142,13 @@ SpotifyAccountConfig::deleteOnUnsync() const } +bool +SpotifyAccountConfig::loveSync() const +{ + return m_ui->loveSync->isChecked(); +} + + void SpotifyAccountConfig::setPlaylists( const QList& playlists ) { @@ -147,8 +163,12 @@ SpotifyAccountConfig::setPlaylists( const QList& playlist foreach ( SpotifyPlaylistInfo* pl, myList ) { + bool starContainer = ( pl->starContainer || pl->name == "Starred Tracks" ); QListWidgetItem* item = new QListWidgetItem( pl->name, m_ui->playlistList ); item->setData( Qt::UserRole, QVariant::fromValue< SpotifyPlaylistInfo* >( pl ) ); + item->setData( Qt::UserRole+2, starContainer ); + if( loveSync() && starContainer ) + item->setHidden(true); item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled ); item->setCheckState( pl->sync ? Qt::Checked : Qt::Unchecked ); } @@ -203,6 +223,16 @@ SpotifyAccountConfig::loginResponse( bool success, const QString& msg, const QSt } +void +SpotifyAccountConfig::showStarredPlaylist( bool hide ) +{ + for ( int i = 0; i < m_ui->playlistList->count(); i++ ) + { + QListWidgetItem* item = m_ui->playlistList->item( i ); + if ( item->data( Qt::UserRole+2 ).toBool() ) + item->setHidden( hide ); + } +} void SpotifyAccountConfig::selectAllPlaylists() { diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h index 1080d2a70..8afedd69f 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h @@ -50,6 +50,7 @@ public: QString password() const; bool highQuality() const; bool deleteOnUnsync() const; + bool loveSync() const; void setPlaylists( const QList< SpotifyPlaylistInfo* >& playlists ); @@ -71,6 +72,7 @@ private slots: void doLogin(); void resetLoginButton(); void selectAllPlaylists(); + void showStarredPlaylist(bool); private: void showLoggedIn(); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui index d465487a1..8eb3e55f5 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui @@ -17,7 +17,7 @@ - Form + Form @@ -145,6 +145,19 @@ + + + + Qt::LeftToRight + + + Sync Starred tracks to Loved tracks + + + false + + + diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp index 87697c02f..60872a9cc 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp @@ -20,6 +20,7 @@ #include "SpotifyAccount.h" #include "utils/Closure.h" +#include "utils/Logger.h" using namespace Tomahawk; using namespace Tomahawk::InfoSystem; @@ -30,7 +31,10 @@ SpotifyInfoPlugin::SpotifyInfoPlugin( Accounts::SpotifyAccount* account ) , m_account( QWeakPointer< Accounts::SpotifyAccount >( account ) ) { if ( !m_account.isNull() ) + { m_supportedGetTypes << InfoAlbumSongs; + m_supportedPushTypes << InfoLove << InfoUnLove; + } } @@ -39,6 +43,53 @@ SpotifyInfoPlugin::~SpotifyInfoPlugin() } +void +SpotifyInfoPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData ) +{ + if ( m_account.isNull() || !m_account.data()->loggedIn() ) + return; + + switch ( pushData.type ) + { + case InfoLove: + case InfoUnLove: + sendLoveSong(pushData.type, pushData.infoPair.second); + break; + + default: + return; + } +} + +void +SpotifyInfoPlugin::sendLoveSong( const InfoType type, QVariant input ) +{ + + if ( m_account.isNull() || !m_account.data()->loggedIn() ) + return; + + if( !m_account.data()->loveSync() ) + return; + + if ( !input.toMap().contains( "trackinfo" ) || !input.toMap()[ "trackinfo" ].canConvert< Tomahawk::InfoSystem::InfoStringHash >() ) + { + tLog( LOGVERBOSE ) << "SpotifyInfoPlugin::sendLoveSong cannot convert input!"; + return; + } + + InfoStringHash hash = input.toMap()[ "trackinfo" ].value< Tomahawk::InfoSystem::InfoStringHash >(); + if ( !hash.contains( "title" ) || !hash.contains( "artist" ) || !hash.contains( "album" ) ) + return; + + if ( type == Tomahawk::InfoSystem::InfoLove ) + { + m_account.data()->starTrack( hash["artist"], hash["title"], true ); + } + else if ( type == Tomahawk::InfoSystem::InfoUnLove ) + { + m_account.data()->starTrack( hash["artist"], hash["title"], false ); + } +} void SpotifyInfoPlugin::getInfo( InfoRequestData requestData ) @@ -97,7 +148,7 @@ SpotifyInfoPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ else { // Running resolver, so do the lookup through that - qDebug() << Q_FUNC_INFO << "Doing album lookup through spotify:" << album << artist; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Doing album lookup through spotify:" << album << artist; QVariantMap message; message[ "_msgtype" ] = "albumListing"; message[ "artist" ] = artist; @@ -138,7 +189,7 @@ SpotifyInfoPlugin::albumListingResult( const QString& msgType, const QVariantMap trackNameList << trackData[ "track" ].toString(); } - qDebug() << Q_FUNC_INFO << "Successfully got album listing from spotify resolver"; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Successfully got album listing from spotify resolver"; trackListResult( trackNameList, requestData ); } @@ -171,12 +222,12 @@ SpotifyInfoPlugin::albumIdLookupFinished( QNetworkReply* reply, const InfoReques const QString id = album.value( "href" ).toString(); if ( id.isEmpty() || !id.contains( "spotify:album" ) ) { - qDebug() << "Empty or malformed spotify album ID from json:" << id << response; + tLog( LOGVERBOSE ) << "Empty or malformed spotify album ID from json:" << id << response; dataError( requestData ); return; } - qDebug() << "Doing spotify album lookup via webservice with ID:" << id; + tLog( LOGVERBOSE ) << "Doing spotify album lookup via webservice with ID:" << id; QUrl lookupUrl( QString( "http://spotikea.tomahawk-player.org/browse/%1" ).arg( id ) ); @@ -186,7 +237,7 @@ SpotifyInfoPlugin::albumIdLookupFinished( QNetworkReply* reply, const InfoReques } else { - qDebug() << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); + tLog( LOGVERBOSE ) << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); } } @@ -226,7 +277,7 @@ SpotifyInfoPlugin::albumContentsLookupFinished( QNetworkReply* reply, const Info trackNameList << trackMap.value( "title" ).toString(); } - qDebug() << Q_FUNC_INFO << "Successfully got album listing from spotikea service!"; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Successfully got album listing from spotikea service!"; if ( trackNameList.isEmpty() ) dataError( requestData ); @@ -235,7 +286,7 @@ SpotifyInfoPlugin::albumContentsLookupFinished( QNetworkReply* reply, const Info } else { - qDebug() << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); + tLog( LOGVERBOSE ) << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); } } diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h index 97c0b96ad..26757cac2 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h @@ -52,7 +52,7 @@ protected slots: virtual void init() {} virtual void getInfo( Tomahawk::InfoSystem::InfoRequestData requestData ); virtual void notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, Tomahawk::InfoSystem::InfoRequestData requestData ); - virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData ) {} + virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData ); private slots: void albumIdLookupFinished( QNetworkReply* reply, const Tomahawk::InfoSystem::InfoRequestData& requestData ); @@ -61,7 +61,7 @@ private slots: private: void dataError( InfoRequestData ); void trackListResult( const QStringList& trackNameList, const Tomahawk::InfoSystem::InfoRequestData& requestData ); - + void sendLoveSong( const InfoType type, QVariant input ); QWeakPointer< Tomahawk::Accounts::SpotifyAccount > m_account; }; diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index ba3454fe2..35af08c17 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -167,7 +167,7 @@ AudioEngine::pause() void AudioEngine::stop( AudioErrorCode errorCode ) { - tDebug( LOGEXTRA ) << Q_FUNC_INFO << errorCode; + tDebug() << Q_FUNC_INFO << errorCode; if ( isStopped() ) return; @@ -471,6 +471,8 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) furl = QUrl( m_currentTrack->url().left( m_currentTrack->url().indexOf( '?' ) ) ); furl.setEncodedQuery( QString( m_currentTrack->url().mid( m_currentTrack->url().indexOf( '?' ) + 1 ) ).toLocal8Bit() ); } + + tLog( LOGVERBOSE ) << "Passing to Phonon:" << furl; m_mediaObject->setCurrentSource( furl ); } else @@ -837,16 +839,16 @@ AudioEngine::setQueue( const playlistinterface_ptr& queue ) { if ( m_queue ) { - disconnect( m_queue.data(), SIGNAL( previousTrackAvailable() ), this, SIGNAL( controlStateChanged() ) ); - disconnect( m_queue.data(), SIGNAL( nextTrackAvailable() ), this, SIGNAL( controlStateChanged() ) ); + disconnect( m_queue.data(), SIGNAL( previousTrackAvailable( bool ) ), this, SIGNAL( controlStateChanged() ) ); + disconnect( m_queue.data(), SIGNAL( nextTrackAvailable( bool ) ), this, SIGNAL( controlStateChanged() ) ); } m_queue = queue; if ( m_queue ) { - connect( m_queue.data(), SIGNAL( previousTrackAvailable() ), SIGNAL( controlStateChanged() ) ); - connect( m_queue.data(), SIGNAL( nextTrackAvailable() ), SIGNAL( controlStateChanged() ) ); + connect( m_queue.data(), SIGNAL( previousTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); + connect( m_queue.data(), SIGNAL( nextTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); } } @@ -861,8 +863,8 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) { if ( m_playlist.data() ) { - disconnect( m_playlist.data(), SIGNAL( previousTrackAvailable() ) ); - disconnect( m_playlist.data(), SIGNAL( nextTrackAvailable() ) ); + disconnect( m_playlist.data(), SIGNAL( previousTrackAvailable( bool ) ) ); + disconnect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ) ); } m_playlist.data()->reset(); @@ -880,10 +882,10 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) if ( !m_playlist.isNull() ) { - connect( m_playlist.data(), SIGNAL( nextTrackAvailable() ), SLOT( onPlaylistNextTrackAvailable() ) ); + connect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ), SLOT( onPlaylistNextTrackAvailable() ) ); - connect( m_playlist.data(), SIGNAL( previousTrackAvailable() ), SIGNAL( controlStateChanged() ) ); - connect( m_playlist.data(), SIGNAL( nextTrackAvailable() ), SIGNAL( controlStateChanged() ) ); + connect( m_playlist.data(), SIGNAL( previousTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); + connect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); } emit playlistChanged( playlist ); diff --git a/src/libtomahawk/context/ContextWidget.cpp b/src/libtomahawk/context/ContextWidget.cpp index 5672bc52b..e9a742325 100644 --- a/src/libtomahawk/context/ContextWidget.cpp +++ b/src/libtomahawk/context/ContextWidget.cpp @@ -93,7 +93,7 @@ ContextWidget::ContextWidget( QWidget* parent ) ensurePolished(); QPalette pal = palette(); - pal.setBrush( QPalette::Window, QColor( "#454e59" ) ); + pal.setBrush( QPalette::Window, QColor( "#272b2e" ) ); setPalette( pal ); connect( ui->toggleButton, SIGNAL( clicked() ), SLOT( toggleSize() ) ); diff --git a/src/libtomahawk/context/ContextWidget.ui b/src/libtomahawk/context/ContextWidget.ui index 5282df4ad..f47b6a15f 100644 --- a/src/libtomahawk/context/ContextWidget.ui +++ b/src/libtomahawk/context/ContextWidget.ui @@ -23,7 +23,7 @@ - InfoBar + InfoBar diff --git a/src/libtomahawk/filemetadata/MetadataEditor.ui b/src/libtomahawk/filemetadata/MetadataEditor.ui index 0729627d6..5ea2401d4 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.ui +++ b/src/libtomahawk/filemetadata/MetadataEditor.ui @@ -11,7 +11,7 @@ - Form + Form diff --git a/src/libtomahawk/infobar/InfoBar.cpp b/src/libtomahawk/infobar/InfoBar.cpp index 09b5d2e0c..eba07f208 100644 --- a/src/libtomahawk/infobar/InfoBar.cpp +++ b/src/libtomahawk/infobar/InfoBar.cpp @@ -293,11 +293,11 @@ InfoBar::paintEvent( QPaintEvent* event ) QLinearGradient gradient( QPoint( 0, 0 ), QPoint( 0, 1 ) ); gradient.setCoordinateMode( QGradient::ObjectBoundingMode ); - gradient.setColorAt( 0.0, QColor( "#615858" ) ); - gradient.setColorAt( 1.0, QColor( "#231F1F" ) ); + gradient.setColorAt( 0.0, QColor( "#707070" ) ); + gradient.setColorAt( 1.0, QColor( "#25292c" ) ); painter.setBrush( gradient ); - painter.fillRect( event->rect(), gradient ); + painter.fillRect( rect(), gradient ); } diff --git a/src/libtomahawk/infobar/InfoBar.ui b/src/libtomahawk/infobar/InfoBar.ui index afb8d6cc9..a24e59030 100644 --- a/src/libtomahawk/infobar/InfoBar.ui +++ b/src/libtomahawk/infobar/InfoBar.ui @@ -23,7 +23,7 @@ - InfoBar + InfoBar diff --git a/src/libtomahawk/jobview/AclJobItem.cpp b/src/libtomahawk/jobview/AclJobItem.cpp index e7ff72a60..6326251a4 100644 --- a/src/libtomahawk/jobview/AclJobItem.cpp +++ b/src/libtomahawk/jobview/AclJobItem.cpp @@ -19,20 +19,17 @@ #include "AclJobItem.h" -#include "JobStatusModel.h" -#include "utils/TomahawkUtils.h" -#include "utils/TomahawkUtilsGui.h" -#include "infosystem/InfoSystem.h" -#include "utils/Logger.h" - #include #include #include #include #include +#include "JobStatusModel.h" +#include "infosystem/InfoSystem.h" +#include "utils/TomahawkUtilsGui.h" +#include "utils/Logger.h" -#define ROW_HEIGHT 20 #define ICON_PADDING 1 #define PADDING 2 @@ -65,7 +62,6 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget ); painter->setRenderHint( QPainter::Antialiasing ); - painter->fillRect( opt.rect, Qt::lightGray ); QString mainText = QString( tr( "Allow %1 to\nconnect and stream from you?" ) ).arg( item->username() ); @@ -85,11 +81,11 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co int minPixels = 20; QString allowBtnText = tr( "Allow Streaming" ); - int allowBtnWidth = fm.width( allowBtnText ) + 2*PADDING; - allowBtnRect = QRect( opt.rect.left() + thirds - allowBtnWidth/2, opt.rect.bottom() - fm.height() - 4*PADDING, allowBtnWidth + 2*PADDING, fm.height() + 2*PADDING ); + int allowBtnWidth = fm.width( allowBtnText ) + 2 * PADDING; + allowBtnRect = QRect( opt.rect.left() + thirds - allowBtnWidth / 2, opt.rect.bottom() - fm.height() - 4 * PADDING, allowBtnWidth + 2 * PADDING, fm.height() + 2 * PADDING ); QString denyBtnText = tr( "Deny Access" ); - int denyBtnWidth = fm.width( denyBtnText ) + 2*PADDING; - denyBtnRect = QRect( opt.rect.right() - thirds - denyBtnWidth/2, opt.rect.bottom() - fm.height() - 4*PADDING, denyBtnWidth + 2*PADDING, fm.height() + 2*PADDING ); + int denyBtnWidth = fm.width( denyBtnText ) + 2 * PADDING; + denyBtnRect = QRect( opt.rect.right() - thirds - denyBtnWidth / 2, opt.rect.bottom() - fm.height() - 4 * PADDING, denyBtnWidth + 2 * PADDING, fm.height() + 2 * PADDING ); if ( allowBtnRect.right() >= denyBtnRect.left() ) { @@ -105,10 +101,11 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co m_savedDenyRect = denyBtnRect; } + QSize ACLJobDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const { - QSize size( QStyledItemDelegate::sizeHint ( option, index ).width(), ROW_HEIGHT * 3 ); + QSize size( QStyledItemDelegate::sizeHint( option, index ).width(), ( TomahawkUtils::defaultFontHeight() + 6 ) * 3.5 ); return size; } @@ -117,9 +114,9 @@ void ACLJobDelegate::drawRoundedButton( QPainter* painter, const QRect& btnRect, bool red ) const { if ( !red ) - TomahawkUtils::drawRoundedButton( painter, btnRect, QColor(54, 127, 211), QColor(43, 104, 182), QColor(34, 85, 159), QColor(35, 79, 147) ); + TomahawkUtils::drawRoundedButton( painter, btnRect, QColor( 54, 127, 211 ), QColor( 43, 104, 182 ), QColor( 34, 85, 159 ), QColor( 35, 79, 147 ) ); else - TomahawkUtils::drawRoundedButton( painter, btnRect, QColor(206, 63, 63), QColor(170, 52, 52), QColor(150, 50, 50), QColor(130, 40, 40) ); + TomahawkUtils::drawRoundedButton( painter, btnRect, QColor( 206, 63, 63 ), QColor( 170, 52, 52 ), QColor( 150, 50, 50 ), QColor( 130, 40, 40 ) ); } diff --git a/src/libtomahawk/jobview/JobStatusDelegate.cpp b/src/libtomahawk/jobview/JobStatusDelegate.cpp index 90a02b55c..b2adf7502 100644 --- a/src/libtomahawk/jobview/JobStatusDelegate.cpp +++ b/src/libtomahawk/jobview/JobStatusDelegate.cpp @@ -19,13 +19,14 @@ #include "JobStatusDelegate.h" #include "JobStatusModel.h" +#include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" #include #include #include -#define ROW_HEIGHT 20 +#define ROW_HEIGHT ( TomahawkUtils::defaultFontHeight() + 6 ) #define ICON_PADDING 2 #define PADDING 2 @@ -80,7 +81,7 @@ JobStatusDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, rightEdge = rRect.left(); } - const int mainW = rightEdge - 4 * PADDING - iconRect.right(); + const int mainW = rightEdge - 6 * PADDING - iconRect.right(); QString mainText = index.data( Qt::DisplayRole ).toString(); QTextOption to( Qt::AlignLeft | Qt::AlignVCenter ); if ( !allowMultiLine ) @@ -98,9 +99,9 @@ JobStatusDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelInd const bool allowMultiLine = index.data( JobStatusModel::AllowMultiLineRole ).toBool(); if ( !allowMultiLine ) - return QSize( QStyledItemDelegate::sizeHint ( option, index ).width(), ROW_HEIGHT ); + return QSize( QStyledItemDelegate::sizeHint( option, index ).width(), ROW_HEIGHT ); else if ( m_cachedMultiLineHeights.contains( index ) ) - return QSize( QStyledItemDelegate::sizeHint ( option, index ).width(), m_cachedMultiLineHeights[ index ] ); + return QSize( QStyledItemDelegate::sizeHint( option, index ).width(), m_cachedMultiLineHeights[ index ] ); // Don't elide, but stretch across as many rows as required QStyleOptionViewItemV4 opt = option; diff --git a/src/libtomahawk/jobview/JobStatusItem.h b/src/libtomahawk/jobview/JobStatusItem.h index dc85d8ae4..bd3041415 100644 --- a/src/libtomahawk/jobview/JobStatusItem.h +++ b/src/libtomahawk/jobview/JobStatusItem.h @@ -44,7 +44,7 @@ public: virtual ~JobStatusItem(); virtual QString type() const = 0; - virtual int weight() const { return 0; } + virtual int weight() const { return 1; } /// Please cache this. virtual QPixmap icon() const = 0; diff --git a/src/libtomahawk/jobview/JobStatusModel.cpp b/src/libtomahawk/jobview/JobStatusModel.cpp index 8a364e926..73793aab7 100644 --- a/src/libtomahawk/jobview/JobStatusModel.cpp +++ b/src/libtomahawk/jobview/JobStatusModel.cpp @@ -88,7 +88,6 @@ JobStatusSortModel::lessThan( const QModelIndex& left, const QModelIndex& right if ( leftSort == rightSort ) return left.data( JobStatusModel::AgeRole ).toUInt() > right.data( JobStatusModel::AgeRole ).toUInt(); - return leftSort < rightSort; } diff --git a/src/libtomahawk/jobview/TransferStatusItem.cpp b/src/libtomahawk/jobview/TransferStatusItem.cpp index 168cb26c9..ea6fa319d 100644 --- a/src/libtomahawk/jobview/TransferStatusItem.cpp +++ b/src/libtomahawk/jobview/TransferStatusItem.cpp @@ -85,9 +85,9 @@ TransferStatusItem::icon() const return QPixmap(); if ( m_stream.data()->type() == StreamConnection::SENDING ) - return m_parent->rxPixmap(); - else return m_parent->txPixmap(); + else + return m_parent->rxPixmap(); } diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index b25c842e7..148f0c173 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -28,6 +28,8 @@ #include #include +#include + #include "Result.h" #include "Source.h" #include "BufferIoDevice.h" @@ -88,7 +90,6 @@ Servent::Servent( QObject* parent ) Servent::~Servent() { - if ( m_portfwd ) { m_portfwd.data()->quit(); diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.cpp b/src/libtomahawk/playlist/AlbumItemDelegate.cpp new file mode 100644 index 000000000..bdb38681a --- /dev/null +++ b/src/libtomahawk/playlist/AlbumItemDelegate.cpp @@ -0,0 +1,170 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2010-2011, Christian Muehlhaeuser + * + * Tomahawk 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. + * + * Tomahawk 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 Tomahawk. If not, see . + */ + +#include "AlbumItemDelegate.h" + +#include +#include +#include + +#include "Query.h" +#include "Result.h" +#include "Artist.h" +#include "Source.h" +#include "SourceList.h" + +#include "PlaylistView.h" +#include "PlayableModel.h" +#include "PlayableItem.h" +#include "PlayableProxyModel.h" +#include "TrackView.h" +#include "ViewHeader.h" + +#include "utils/TomahawkUtilsGui.h" +#include "utils/Logger.h" +#include +#include + +using namespace Tomahawk; + + +AlbumItemDelegate::AlbumItemDelegate( TrackView* parent, PlayableProxyModel* proxy ) + : PlaylistItemDelegate( parent, proxy ) + , m_view( parent ) + , m_model( proxy ) +{ + m_centerOption = QTextOption( Qt::AlignVCenter ); + m_centerOption.setWrapMode( QTextOption::NoWrap ); + + m_centerRightOption = QTextOption( Qt::AlignVCenter | Qt::AlignRight ); + m_centerRightOption.setWrapMode( QTextOption::NoWrap ); + + connect( proxy, SIGNAL( modelReset() ), this, SLOT( modelChanged() ) ); + connect( parent, SIGNAL( modelChanged() ), this, SLOT( modelChanged() ) ); +} + + +QSize +AlbumItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const +{ + QSize size = QStyledItemDelegate::sizeHint( option, index ); + + if ( index.isValid() ) + { + int rowHeight = option.fontMetrics.height() + 8; + size.setHeight( rowHeight * 1.5 ); + } + + return size; +} + + +void +AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const +{ + PlayableItem* item = m_model->itemFromIndex( m_model->mapToSource( index ) ); + Q_ASSERT( item ); + + QStyleOptionViewItemV4 opt = option; + prepareStyleOption( &opt, index, item ); + opt.text.clear(); + + qApp->style()->drawControl( QStyle::CE_ItemViewItem, &opt, painter ); + + if ( m_view->header()->visualIndex( index.column() ) > 0 ) + return; + + const query_ptr q = item->query()->displayQuery(); + const QString artist = q->artist(); + const QString album = q->album(); + const QString track = q->track(); + int duration = q->duration(); + QString lowerText; + + painter->save(); + { + QRect r = opt.rect.adjusted( 4, 6, -12, -6 ); + + // Paint Now Playing Speaker Icon + if ( item->isPlaying() ) + { + const int pixHeight = r.height(); + QRect npr = r.adjusted( 0, 0, pixHeight - r.width(), 0 ); + painter->drawPixmap( npr, TomahawkUtils::defaultPixmap( TomahawkUtils::NowPlayingSpeaker, TomahawkUtils::Original, npr.size() ) ); + r.adjust( pixHeight, 0, 0, 0 ); + } + + QFont boldFont = opt.font; + boldFont.setPointSize( TomahawkUtils::defaultFontSize() + 2 ); + boldFont.setWeight( 99 ); + QFontMetrics boldFontMetrics( boldFont ); + + QFont smallBoldFont = opt.font; + smallBoldFont.setPointSize( TomahawkUtils::defaultFontSize() - 1 ); + smallBoldFont.setBold( true ); + smallBoldFont.setWeight( 60 ); + QFontMetrics smallBoldFontMetrics( smallBoldFont ); + + painter->setFont( boldFont ); + painter->setPen( option.palette.text().color().lighter() ); + + QRect figureRect = r.adjusted( 4, 0, 0, 0 ); + figureRect.setWidth( QFontMetrics( painter->font() ).width( "888" ) ); + painter->drawText( figureRect, QString::number( index.row() + 1 ), QTextOption( Qt::AlignCenter ) ); + + r.adjust( figureRect.width() + 12, 0, 0, 0 ); + QRect leftRect = r.adjusted( 0, 0, -48, 0 ); + QRect rightRect = r.adjusted( r.width() - smallBoldFontMetrics.width( TomahawkUtils::timeToString( duration ) ), 0, 0, 0 ); + + QString text = painter->fontMetrics().elidedText( track, Qt::ElideRight, leftRect.width() ); + painter->setPen( opt.palette.text().color() ); + painter->drawText( leftRect, text, m_centerOption ); + + const int sourceIconSize = r.height(); + if ( q->numResults() && !q->results().first()->sourceIcon( TomahawkUtils::RoundedCorners, QSize( sourceIconSize, sourceIconSize ) ).isNull() ) + { + const QPixmap sourceIcon = q->results().first()->sourceIcon( TomahawkUtils::RoundedCorners, QSize( sourceIconSize, sourceIconSize ) ); + painter->setOpacity( 0.8 ); + painter->drawPixmap( QRect( rightRect.right() - sourceIconSize, r.center().y() - sourceIconSize / 2, sourceIcon.width(), sourceIcon.height() ), sourceIcon ); + painter->setOpacity( 1.0 ); + rightRect.moveLeft( rightRect.left() - sourceIcon.width() - 8 ); + } + + if ( duration > 0 ) + { + painter->setPen( opt.palette.text().color() ); + painter->setFont( smallBoldFont ); + painter->drawText( rightRect, TomahawkUtils::timeToString( duration ), m_centerRightOption ); + } + } + painter->restore(); +} + + +void +AlbumItemDelegate::doUpdateIndex( const QPersistentModelIndex& idx ) +{ + if ( idx.isValid() ) + emit updateIndex( idx ); +} + + +void +AlbumItemDelegate::modelChanged() +{ +} diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.h b/src/libtomahawk/playlist/AlbumItemDelegate.h new file mode 100644 index 000000000..040a20099 --- /dev/null +++ b/src/libtomahawk/playlist/AlbumItemDelegate.h @@ -0,0 +1,62 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2010-2011, Christian Muehlhaeuser + * + * Tomahawk 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. + * + * Tomahawk 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 Tomahawk. If not, see . + */ + +#ifndef ALBUMITEMDELEGATE_H +#define ALBUMITEMDELEGATE_H + +#include +#include +#include + +#include "PlaylistItemDelegate.h" +#include "DllMacro.h" +#include "Typedefs.h" + +namespace Tomahawk { +class PixmapDelegateFader; +} + +class PlayableItem; +class PlayableProxyModel; +class TrackView; + +class DLLEXPORT AlbumItemDelegate : public PlaylistItemDelegate +{ +Q_OBJECT + +public: + AlbumItemDelegate( TrackView* parent = 0, PlayableProxyModel* proxy = 0 ); + + virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; + +protected: + void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; + +private slots: + void doUpdateIndex( const QPersistentModelIndex& idx ); + void modelChanged(); + +private: + QTextOption m_centerOption; + QTextOption m_centerRightOption; + + TrackView* m_view; + PlayableProxyModel* m_model; +}; + +#endif // ALBUMITEMDELEGATE_H diff --git a/src/libtomahawk/playlist/GridItemDelegate.cpp b/src/libtomahawk/playlist/GridItemDelegate.cpp index 0a5d174d3..9271dac32 100644 --- a/src/libtomahawk/playlist/GridItemDelegate.cpp +++ b/src/libtomahawk/playlist/GridItemDelegate.cpp @@ -82,16 +82,13 @@ void GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { PlayableItem* item = m_model->sourceModel()->itemFromIndex( m_model->mapToSource( index ) ); - if ( !item ) + if ( !item || !index.isValid() ) return; QStyleOptionViewItemV4 opt = option; initStyleOption( &opt, QModelIndex() ); qApp->style()->drawControl( QStyle::CE_ItemViewItem, &opt, painter ); - painter->save(); - painter->setRenderHint( QPainter::Antialiasing ); - QRect r = option.rect; QString top, bottom; if ( !item->album().isNull() ) @@ -105,11 +102,18 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, { top = item->artist()->name(); } - else + else if ( !item->query().isNull() ) { top = item->query()->track(); bottom = item->query()->artist(); } + else + { + return; + } + + painter->save(); + painter->setRenderHint( QPainter::Antialiasing ); if ( !m_covers.contains( index ) ) { @@ -194,9 +198,9 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, painter->drawRect( gradientRect ); painter->restore(); - painter->setPen( opt.palette.color( QPalette::HighlightedText ) ); + painter->setPen( Qt::white ); - QRect textRect = option.rect.adjusted( 6, option.rect.height() - frameHeight, -4, -6 ); + QRect textRect = option.rect.adjusted( 6, option.rect.height() - frameHeight, -6, -6 ); bool oneLiner = false; if ( bottom.isEmpty() ) oneLiner = true; diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index e8dcb5395..eff32c234 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -19,7 +19,6 @@ #include "GridView.h" -#include #include #include #include @@ -35,7 +34,6 @@ #include "AlbumModel.h" #include "PlayableModel.h" #include "PlayableProxyModelPlaylistInterface.h" -#include "SingleTrackPlaylistInterface.h" #include "ContextMenu.h" #include "ViewManager.h" #include "MetaPlaylistInterface.h" @@ -74,7 +72,7 @@ GridView::GridView( QWidget* parent ) setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); - setStyleSheet( "QListView { background-color: #323435; }" ); + setStyleSheet( "QListView { background-color: #272b2e; }" ); setAutoFitItems( true ); setAutoResize( false ); @@ -82,8 +80,6 @@ GridView::GridView( QWidget* parent ) connect( this, SIGNAL( doubleClicked( QModelIndex ) ), SLOT( onItemActivated( QModelIndex ) ) ); connect( this, SIGNAL( customContextMenuRequested( QPoint ) ), SLOT( onCustomContextMenu( QPoint ) ) ); - - connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ) ); } @@ -99,11 +95,17 @@ GridView::setProxyModel( PlayableProxyModel* model ) if ( m_proxyModel ) { disconnect( m_proxyModel, SIGNAL( filterChanged( QString ) ), this, SLOT( onFilterChanged( QString ) ) ); + disconnect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); + disconnect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); + disconnect( proxyModel(), SIGNAL( modelReset() ), this, SLOT( layoutItems() ) ); } m_proxyModel = model; connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); - + connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) ); + connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); + connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ) ); + if ( m_delegate ) delete m_delegate; @@ -129,24 +131,15 @@ GridView::setModel( QAbstractItemModel* model ) void GridView::setPlayableModel( PlayableModel* model ) { - if ( m_model ) - { - disconnect( model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); - disconnect( model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); - } - m_inited = false; m_model = model; if ( m_proxyModel ) { m_proxyModel->setSourcePlayableModel( m_model ); - m_proxyModel->sort( 0 ); + m_proxyModel->sort( -1 ); } - connect( model, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) ); - connect( model, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); - emit modelChanged(); } @@ -239,10 +232,10 @@ GridView::verifySize() const int rows = floor( (double)m_model->rowCount( QModelIndex() ) / (double)itemsPerRow ); const int newHeight = rows * m_delegate->itemSize().height(); + m_proxyModel->setMaxVisibleItems( m_model->rowCount( QModelIndex() ) - overlapRows ); + if ( newHeight > 0 ) setFixedHeight( newHeight ); - - m_proxyModel->setMaxVisibleItems( m_model->rowCount( QModelIndex() ) - overlapRows ); } diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index 760b56c1c..bf606c7ff 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -54,7 +54,7 @@ PlayableModel::PlayableModel( QObject* parent, bool loading ) connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( onPlaybackStopped() ), Qt::DirectConnection ); m_header << tr( "Artist" ) << tr( "Title" ) << tr( "Composer" ) << tr( "Album" ) << tr( "Track" ) << tr( "Duration" ) - << tr( "Bitrate" ) << tr( "Age" ) << tr( "Year" ) << tr( "Size" ) << tr( "Origin" ) << tr( "Score" ) << tr( "Name" ); + << tr( "Bitrate" ) << tr( "Age" ) << tr( "Year" ) << tr( "Size" ) << tr( "Origin" ) << tr( "Accuracy" ) << tr( "Name" ); } @@ -69,6 +69,7 @@ PlayableModel::createIndex( int row, int column, PlayableItem* item ) const if ( item->query() ) { connect( item->query().data(), SIGNAL( playableStateChanged( bool ) ), SLOT( onQueryBecamePlayable( bool ) ), Qt::UniqueConnection ); + connect( item->query().data(), SIGNAL( resolvingFinished( bool ) ), SLOT( onQueryResolved( bool ) ), Qt::UniqueConnection ); } return QAbstractItemModel::createIndex( row, column, item ); @@ -150,9 +151,6 @@ PlayableModel::parent( const QModelIndex& child ) const QVariant PlayableModel::artistData( const artist_ptr& artist, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 44 ); - if ( role == CoverIDRole ) { artist->cover( QSize( 0, 0 ) ); @@ -162,12 +160,6 @@ PlayableModel::artistData( const artist_ptr& artist, int role ) const if ( role != Qt::DisplayRole ) // && role != Qt::ToolTipRole ) return QVariant(); - if ( role == CoverIDRole ) - { - artist->cover( QSize( 0, 0 ) ); - return artist->coverId(); - } - return artist->name(); } @@ -175,9 +167,6 @@ PlayableModel::artistData( const artist_ptr& artist, int role ) const QVariant PlayableModel::albumData( const album_ptr& album, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 32 ); - if ( role == CoverIDRole ) { album->cover( QSize( 0, 0 ) ); @@ -187,12 +176,6 @@ PlayableModel::albumData( const album_ptr& album, int role ) const if ( role != Qt::DisplayRole ) // && role != Qt::ToolTipRole ) return QVariant(); - if ( role == CoverIDRole ) - { - album->cover( QSize( 0, 0 ) ); - return album->coverId(); - } - return album->name(); } @@ -200,9 +183,6 @@ PlayableModel::albumData( const album_ptr& album, int role ) const QVariant PlayableModel::queryData( const query_ptr& query, int column, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 18 ); - if ( role == CoverIDRole ) { query->cover( QSize( 0, 0 ) ); @@ -280,8 +260,24 @@ PlayableModel::queryData( const query_ptr& query, int column, int role ) const break; case Score: - return query->results().first()->score(); + { + float score = query->results().first()->score(); + if ( score == 1.0 ) + return tr( "Perfect match" ); + if ( score > 0.9 ) + return tr( "Very good match" ); + if ( score > 0.7 ) + return tr( "Good match" ); + if ( score > 0.5 ) + return tr( "Vague match" ); + if ( score > 0.3 ) + return tr( "Bad match" ); + if ( score > 0.0 ) + return tr( "Very bad match" ); + + return tr( "Not available" ); break; + } default: break; @@ -360,7 +356,7 @@ PlayableModel::headerData( int section, Qt::Orientation orientation, int role ) void -PlayableModel::setCurrentItem( const QModelIndex& index ) +PlayableModel::setCurrentIndex( const QModelIndex& index ) { if ( m_currentIndex.isValid() ) { @@ -383,7 +379,8 @@ PlayableModel::setCurrentItem( const QModelIndex& index ) m_currentIndex = QModelIndex(); m_currentUuid = QString(); } - emit currentItemChanged( m_currentIndex ); + + emit currentIndexChanged(); } @@ -648,6 +645,9 @@ PlayableModel::removeIndex( const QModelIndex& index, bool moreToCome ) PlayableItem* item = itemFromIndex( index ); if ( item ) { + if ( index == m_currentIndex ) + setCurrentIndex( QModelIndex() ); + emit beginRemoveRows( index.parent(), index.row(), index.row() ); delete item; emit endRemoveRows(); @@ -734,6 +734,7 @@ PlayableModel::columnAlignment( int column ) const case Bitrate: case Duration: case Filesize: + case Score: case Year: return Qt::AlignHCenter; break; @@ -938,6 +939,28 @@ PlayableModel::onQueryBecamePlayable( bool playable ) } +void +PlayableModel::onQueryResolved( bool hasResults ) +{ + Q_UNUSED( hasResults ); + + Tomahawk::Query* q = qobject_cast< Query* >( sender() ); + if ( !q ) + { + // Track has been removed from the playlist by now + return; + } + + Tomahawk::query_ptr query = q->weakRef().toStrongRef(); + PlayableItem* item = itemFromQuery( query ); + + if ( item ) + { + emit indexResolved( item->index ); + } +} + + PlayableItem* PlayableModel::itemFromQuery( const Tomahawk::query_ptr& query ) const { diff --git a/src/libtomahawk/playlist/PlayableModel.h b/src/libtomahawk/playlist/PlayableModel.h index 541a54c31..05a18c955 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -141,12 +141,14 @@ signals: void loadingStarted(); void loadingFinished(); + void indexResolved( const QModelIndex& index ); void indexPlayable( const QModelIndex& index ); + void changed(); - void currentItemChanged( const QPersistentModelIndex ¤tIndex ); + void currentIndexChanged(); public slots: - virtual void setCurrentItem( const QModelIndex& index ); + virtual void setCurrentIndex( const QModelIndex& index ); virtual void clear(); @@ -178,8 +180,10 @@ protected: private slots: void onDataChanged(); - void onQueryBecamePlayable( bool playable ); + void onQueryBecamePlayable( bool playable ); + void onQueryResolved( bool hasResults ); + void onPlaybackStarted( const Tomahawk::result_ptr& result ); void onPlaybackStopped(); diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp index 77963025b..93777815e 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -108,6 +108,8 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel ) disconnect( m_model, SIGNAL( loadingFinished() ), this, SIGNAL( loadingFinished() ) ); disconnect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), this, SIGNAL( itemCountChanged( unsigned int ) ) ); disconnect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), this, SLOT( onIndexPlayable( QModelIndex ) ) ); + disconnect( m_model, SIGNAL( indexResolved( QModelIndex ) ), this, SLOT( onIndexResolved( QModelIndex ) ) ); + disconnect( m_model, SIGNAL( currentIndexChanged() ), this, SIGNAL( currentIndexChanged() ) ); } m_model = sourceModel; @@ -118,6 +120,8 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel ) connect( m_model, SIGNAL( loadingFinished() ), SIGNAL( loadingFinished() ) ); connect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), SIGNAL( itemCountChanged( unsigned int ) ) ); connect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), SLOT( onIndexPlayable( QModelIndex ) ) ); + connect( m_model, SIGNAL( indexResolved( QModelIndex ) ), SLOT( onIndexResolved( QModelIndex ) ) ); + connect( m_model, SIGNAL( currentIndexChanged() ), SIGNAL( currentIndexChanged() ) ); } QSortFilterProxyModel::setSourceModel( m_model ); @@ -131,7 +135,7 @@ PlayableProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourcePa if ( !pi ) return false; - if ( m_maxVisibleItems >= 0 && sourceRow > m_maxVisibleItems - 1 ) + if ( m_maxVisibleItems > 0 && sourceRow > m_maxVisibleItems - 1 ) return false; if ( m_hideDupeItems ) @@ -607,7 +611,7 @@ PlayableProxyModel::updateDetailedInfo( const QModelIndex& index ) if ( style() == PlayableProxyModel::Short || style() == PlayableProxyModel::Large ) { - item->query()->cover( QSize( 0, 0 ) ); + item->query()->displayQuery()->cover( QSize( 0, 0 ) ); } if ( style() == PlayableProxyModel::Large ) @@ -641,9 +645,7 @@ void PlayableProxyModel::setCurrentIndex( const QModelIndex& index ) { tDebug() << Q_FUNC_INFO; - m_model->setCurrentItem( mapToSource( index ) ); - - emit currentIndexChanged(); + m_model->setCurrentIndex( mapToSource( index ) ); } @@ -652,3 +654,10 @@ PlayableProxyModel::onIndexPlayable( const QModelIndex& index ) { emit indexPlayable( mapFromSource( index ) ); } + + +void +PlayableProxyModel::onIndexResolved( const QModelIndex& index ) +{ + emit indexResolved( mapFromSource( index ) ); +} diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index 241d57c7f..e7b45bacb 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -95,6 +95,7 @@ signals: void loadingFinished(); void indexPlayable( const QModelIndex& index ); + void indexResolved( const QModelIndex& index ); void currentIndexChanged(); void itemCountChanged( unsigned int items ); @@ -107,6 +108,7 @@ protected: private slots: void onIndexPlayable( const QModelIndex& index ); + void onIndexResolved( const QModelIndex& index ); private: virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const; diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp index 24e0e0694..f1b833ec1 100644 --- a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp @@ -39,6 +39,7 @@ PlayableProxyModelPlaylistInterface::PlayableProxyModelPlaylistInterface( Playab connect( proxyModel, SIGNAL( indexPlayable( QModelIndex ) ), SLOT( onItemsChanged() ) ); connect( proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onItemsChanged() ) ); connect( proxyModel, SIGNAL( itemCountChanged( unsigned int ) ), SLOT( onItemsChanged() ) ); + connect( proxyModel, SIGNAL( currentIndexChanged() ), SLOT( onCurrentIndexChanged() ) ); } @@ -83,6 +84,16 @@ PlayableProxyModelPlaylistInterface::tracks() const } +void +PlayableProxyModelPlaylistInterface::onCurrentIndexChanged() +{ + if ( m_proxyModel.data()->currentIndex().isValid() ) + setCurrentIndex( (qint64) m_proxyModel.data()->mapToSource( m_proxyModel.data()->currentIndex() ).internalPointer() ); + else + setCurrentIndex( -1 ); +} + + void PlayableProxyModelPlaylistInterface::setCurrentIndex( qint64 index ) { @@ -90,12 +101,14 @@ PlayableProxyModelPlaylistInterface::setCurrentIndex( qint64 index ) if ( m_proxyModel.isNull() ) return; - PlayableItem* item = static_cast( (void*)index ); - if ( index < 0 || !item ) - { - m_proxyModel.data()->setCurrentIndex( QModelIndex() ); - } - else + if ( m_currentIndex == index ) + return; + m_currentIndex = index; // we need to manually set m_currentIndex (protected member from PlaylistInterface) here + // because calling m_proxyModel.data()->setCurrentIndex( ... ) will end up emitting a + // signal which leads right back here and would cause an infinite loop. + + PlayableItem* item = reinterpret_cast( (void*)index ); + if ( index >= 0 && item ) { if ( m_shuffled && m_shuffleHistory.count() > 1 ) { @@ -194,7 +207,7 @@ PlayableProxyModelPlaylistInterface::siblingIndex( int itemsAway, qint64 rootInd } else { - PlayableItem* pitem = static_cast( (void*)rootIndex ); + PlayableItem* pitem = reinterpret_cast( (void*)rootIndex ); if ( !pitem || !pitem->index.isValid() ) return -1; @@ -258,7 +271,7 @@ PlayableProxyModelPlaylistInterface::queryAt( qint64 index ) const if ( m_proxyModel.isNull() ) return query_ptr(); - PlayableItem* item = static_cast( (void*)index ); + PlayableItem* item = reinterpret_cast( (void*)index ); if ( item && item->query() ) return item->query(); @@ -272,7 +285,7 @@ PlayableProxyModelPlaylistInterface::resultAt( qint64 index ) const if ( m_proxyModel.isNull() ) return result_ptr(); - PlayableItem* item = static_cast( (void*)index ); + PlayableItem* item = reinterpret_cast( (void*)index ); if ( item && item->result() ) return item->result(); diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h index 7b6d50d11..f134d2293 100644 --- a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h +++ b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h @@ -61,9 +61,8 @@ public slots: virtual void setRepeatMode( Tomahawk::PlaylistModes::RepeatMode mode ) { m_repeatMode = mode; emit repeatModeChanged( mode ); } virtual void setShuffled( bool enabled ) { m_shuffled = enabled; emit shuffleModeChanged( enabled ); } -signals: - void previousTrackAvailable(); - void nextTrackAvailable(); +private slots: + void onCurrentIndexChanged(); protected: QWeakPointer< PlayableProxyModel > m_proxyModel; diff --git a/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp index ae50f3988..49c9cc7b9 100644 --- a/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp @@ -207,7 +207,7 @@ PlaylistChartItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& if ( !m_pixmaps.contains( index ) ) { - m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->query(), pixmapRect.size(), TomahawkUtils::ScaledCover, false ) ) ); + m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->query(), pixmapRect.size(), TomahawkUtils::Original, false ) ) ); _detail::Closure* closure = NewClosure( m_pixmaps[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( const QPersistentModelIndex& ) ), QPersistentModelIndex( index ) ); closure->setAutoDelete( false ); } diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp index a1b875d4c..5cf892400 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp @@ -65,17 +65,15 @@ PlaylistItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModel { QSize size = QStyledItemDelegate::sizeHint( option, index ); - if ( index.isValid() ) { - int style = index.data( PlayableProxyModel::StyleRole ).toInt(); - if ( style == PlayableProxyModel::Short || style == PlayableProxyModel::ShortWithAvatars ) + if ( m_model->style() == PlayableProxyModel::Short || m_model->style() == PlayableProxyModel::ShortWithAvatars ) { int rowHeight = option.fontMetrics.height() + 8; size.setHeight( rowHeight * 2 ); } - else if ( style == PlayableProxyModel::Detailed ) + else if ( m_model->style() == PlayableProxyModel::Detailed ) { - int rowHeight = option.fontMetrics.height() * 1.4; + int rowHeight = option.fontMetrics.height() * 1.6; size.setHeight( rowHeight ); } } @@ -190,7 +188,7 @@ PlaylistItemDelegate::paintShort( QPainter* painter, const QStyleOptionViewItem& if ( pixmap.isNull() ) { if ( !useAvatars ) - pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::ScaledCover, ir.size() ); + pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::Original, ir.size() ); else pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultSourceAvatar, TomahawkUtils::RoundedCorners, ir.size() ); } @@ -242,11 +240,11 @@ PlaylistItemDelegate::paintDetailed( QPainter* painter, const QStyleOptionViewIt painter->save(); - if ( index.column() == PlayableModel::Score ) +/* if ( index.column() == PlayableModel::Score ) { QColor barColor( 167, 183, 211 ); // This matches the sidebar (sourcetreeview.cpp:672) - if ( opt.state & QStyle::State_Selected ) - painter->setPen( opt.palette.brightText().color() ); + if ( opt.state & QStyle::State_Selected && !item->isPlaying() ) + painter->setPen( Qt::white ); else painter->setPen( barColor ); @@ -257,14 +255,14 @@ PlaylistItemDelegate::paintDetailed( QPainter* painter, const QStyleOptionViewIt int fillerWidth = (int)( index.data().toFloat() * (float)fillR.width() ); fillR.adjust( 0, 0, -( fillR.width() - fillerWidth ), 0 ); - if ( opt.state & QStyle::State_Selected ) - painter->setBrush( opt.palette.brightText().color() ); + if ( opt.state & QStyle::State_Selected && !item->isPlaying() ) + painter->setBrush( TomahawkUtils::Colors::NOW_PLAYING_ITEM.lighter() ); else painter->setBrush( barColor ); painter->drawRect( fillR ); } - else if ( item->isPlaying() ) + else */ if ( item->isPlaying() ) { QRect r = opt.rect.adjusted( 3, 0, 0, 0 ); diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.h b/src/libtomahawk/playlist/PlaylistItemDelegate.h index 244a726d2..1e81765f9 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.h +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.h @@ -34,18 +34,22 @@ class DLLEXPORT PlaylistItemDelegate : public QStyledItemDelegate Q_OBJECT public: - PlaylistItemDelegate( TrackView* parent = 0, PlayableProxyModel* proxy = 0 ); + PlaylistItemDelegate( TrackView* parent, PlayableProxyModel* proxy ); void updateRowSize( const QModelIndex& index ); + virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; + +signals: + void updateIndex( const QModelIndex& idx ); + protected: + void prepareStyleOption( QStyleOptionViewItemV4* option, const QModelIndex& index, PlayableItem* item ) const; + void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; - QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; QWidget* createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const; private: - void prepareStyleOption( QStyleOptionViewItemV4* option, const QModelIndex& index, PlayableItem* item ) const; - void paintDetailed( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; void paintShort( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index, bool useAvatars = false ) const; diff --git a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp index cae2f5ea7..ed3858dbb 100644 --- a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp @@ -44,7 +44,7 @@ using namespace Tomahawk; PlaylistLargeItemDelegate::PlaylistLargeItemDelegate( DisplayMode mode, TrackView* parent, PlayableProxyModel* proxy ) - : QStyledItemDelegate( (QObject*)parent ) + : PlaylistItemDelegate( parent, proxy ) , m_view( parent ) , m_model( proxy ) , m_mode( mode ) @@ -58,9 +58,8 @@ PlaylistLargeItemDelegate::PlaylistLargeItemDelegate( DisplayMode mode, TrackVie m_bottomOption = QTextOption( Qt::AlignBottom ); m_bottomOption.setWrapMode( QTextOption::NoWrap ); - connect( proxy, SIGNAL( modelReset() ), this, SLOT( modelChanged() ) ); - if ( PlaylistView* plView = qobject_cast< PlaylistView* >( parent ) ) - connect( plView, SIGNAL( modelChanged() ), this, SLOT( modelChanged() ) ); + connect( proxy, SIGNAL( modelReset() ), SLOT( modelChanged() ) ); + connect( parent, SIGNAL( modelChanged() ), SLOT( modelChanged() ) ); } @@ -79,28 +78,11 @@ PlaylistLargeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const Q } -QWidget* -PlaylistLargeItemDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const -{ - Q_UNUSED( parent ); - Q_UNUSED( option ); - Q_UNUSED( index ); - return 0; -} - - -void -PlaylistLargeItemDelegate::prepareStyleOption( QStyleOptionViewItemV4* option, const QModelIndex& index, PlayableItem* item ) const -{ - initStyleOption( option, index ); - - TomahawkUtils::prepareStyleOption( option, index, item ); -} - - void PlaylistLargeItemDelegate::drawRichText( QPainter* painter, const QStyleOptionViewItem& option, const QRect& rect, int flags, QTextDocument& text ) const { + Q_UNUSED( option ); + text.setPageSize( QSize( rect.width(), QWIDGETSIZE_MAX ) ); QAbstractTextDocumentLayout* layout = text.documentLayout(); @@ -142,27 +124,25 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& const QString album = q->album(); const QString track = q->track(); int duration = q->duration(); - QPixmap avatar; QString lowerText; QSize avatarSize( 32, 32 ); source_ptr source = item->query()->playedBy().first; if ( m_mode == RecentlyPlayed && !source.isNull() ) { - avatar = source->avatar( TomahawkUtils::RoundedCorners, avatarSize ); QString playtime = TomahawkUtils::ageToString( QDateTime::fromTime_t( item->query()->playedBy().second ), true ); if ( source == SourceList::instance()->getLocal() ) - lowerText = QString( tr( "played %1 by you" ) ).arg( playtime ); + lowerText = QString( tr( "played %1 by you", "e.g. played 3 hours ago by you" ) ).arg( playtime ); else - lowerText = QString( tr( "played %1 by %2" ) ).arg( playtime ).arg( source->friendlyName() ); + lowerText = QString( tr( "played %1 by %2", "e.g. played 3 hours ago by SomeSource" ) ).arg( playtime ).arg( source->friendlyName() ); } if ( m_mode == LatestAdditions && item->query()->numResults() ) { QString playtime = TomahawkUtils::ageToString( QDateTime::fromTime_t( item->query()->results().first()->modificationTime() ), true ); - lowerText = QString( tr( "added %1" ) ).arg( playtime ); + lowerText = QString( tr( "added %1", "e.g. added 3 hours ago" ) ).arg( playtime ); } if ( m_mode == LovedTracks ) @@ -190,7 +170,7 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& if ( !m_pixmaps.contains( index ) ) { - m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->query(), pixmapRect.size(), TomahawkUtils::ScaledCover, false ) ) ); + m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->query(), pixmapRect.size(), TomahawkUtils::RoundedCorners, false ) ) ); _detail::Closure* closure = NewClosure( m_pixmaps[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( const QPersistentModelIndex& ) ), QPersistentModelIndex( index ) ); closure->setAutoDelete( false ); } @@ -198,9 +178,6 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& const QPixmap pixmap = m_pixmaps[ index ]->currentPixmap(); painter->drawPixmap( pixmapRect, pixmap ); - if ( !avatar.isNull() ) - painter->drawPixmap( avatarRect, avatar ); - QFont boldFont = opt.font; boldFont.setPointSize( TomahawkUtils::defaultFontSize() + 2 ); boldFont.setWeight( 99 ); @@ -215,7 +192,7 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& QFont smallFont = opt.font; smallFont.setPointSize( TomahawkUtils::defaultFontSize() - 1 ); - r.adjust( pixmapRect.width() + 12, 1, - 16 - avatar.width(), 0 ); + r.adjust( pixmapRect.width() + 12, 1, - 16, 0 ); QRect leftRect = r.adjusted( 0, 0, -48, 0 ); QRect rightRect = r.adjusted( r.width() - smallBoldFontMetrics.width( TomahawkUtils::timeToString( duration ) ), 0, 0, 0 ); @@ -226,9 +203,9 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& painter->setFont( smallFont ); QTextDocument textDoc; if ( album.isEmpty() ) - textDoc.setHtml( tr( "by %1" ).arg( artist ) ); + textDoc.setHtml( tr( "by %1", "e.g. by SomeArtist" ).arg( artist ) ); else - textDoc.setHtml( tr( "by %1 on %2" ).arg( artist ).arg( album ) ); + textDoc.setHtml( tr( "by %1 on %2", "e.g. by SomeArtist on SomeAlbum" ).arg( artist ).arg( album ) ); textDoc.setDocumentMargin( 0 ); textDoc.setDefaultFont( painter->font() ); textDoc.setDefaultTextOption( m_topOption ); diff --git a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.h b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.h index 9fed77936..eb6cf7e54 100644 --- a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.h +++ b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.h @@ -23,6 +23,7 @@ #include #include +#include "PlaylistItemDelegate.h" #include "DllMacro.h" #include "Typedefs.h" @@ -30,12 +31,11 @@ namespace Tomahawk { class PixmapDelegateFader; } -class TrackModel; class PlayableItem; class PlayableProxyModel; class TrackView; -class DLLEXPORT PlaylistLargeItemDelegate : public QStyledItemDelegate +class DLLEXPORT PlaylistLargeItemDelegate : public PlaylistItemDelegate { Q_OBJECT @@ -45,20 +45,16 @@ public: PlaylistLargeItemDelegate( DisplayMode mode, TrackView* parent = 0, PlayableProxyModel* proxy = 0 ); + virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; + protected: void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; - QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; - QWidget* createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const; - -signals: - void updateIndex( const QModelIndex& idx ); private slots: - void modelChanged(); void doUpdateIndex( const QPersistentModelIndex& idx ); + void modelChanged(); private: - void prepareStyleOption( QStyleOptionViewItemV4* option, const QModelIndex& index, PlayableItem* item ) const; void drawRichText( QPainter* painter, const QStyleOptionViewItem& option, const QRect& rect, int flags, QTextDocument& text ) const; QTextOption m_topOption; diff --git a/src/libtomahawk/playlist/PlaylistModel.cpp b/src/libtomahawk/playlist/PlaylistModel.cpp index f470aa157..cccf817e5 100644 --- a/src/libtomahawk/playlist/PlaylistModel.cpp +++ b/src/libtomahawk/playlist/PlaylistModel.cpp @@ -45,6 +45,7 @@ PlaylistModel::PlaylistModel( QObject* parent ) , m_isTemporary( false ) , m_changesOngoing( false ) , m_isLoading( false ) + , m_acceptPlayableQueriesOnly( false ) , m_savedInsertPos( -1 ) { m_dropStorage.parent = QPersistentModelIndex(); @@ -218,6 +219,9 @@ PlaylistModel::insertQueries( const QList< Tomahawk::query_ptr >& queries, int r QList< Tomahawk::plentry_ptr > entries; foreach ( const query_ptr& query, queries ) { + if ( m_acceptPlayableQueriesOnly && query && query->resolvingFinished() && !query->playable() ) + continue; + plentry_ptr entry = plentry_ptr( new PlaylistEntry() ); entry->setDuration( query->displayQuery()->duration() ); @@ -270,7 +274,7 @@ PlaylistModel::insertEntries( const QList< Tomahawk::plentry_ptr >& entries, int i++; if ( entry->query()->id() == currentItemUuid() ) - setCurrentItem( plitem->index ); + setCurrentIndex( plitem->index ); if ( !entry->query()->resolvingFinished() && !entry->query()->playable() ) { diff --git a/src/libtomahawk/playlist/PlaylistModel.h b/src/libtomahawk/playlist/PlaylistModel.h index 3bc92478a..69ca826dc 100644 --- a/src/libtomahawk/playlist/PlaylistModel.h +++ b/src/libtomahawk/playlist/PlaylistModel.h @@ -57,6 +57,9 @@ public: virtual void loadPlaylist( const Tomahawk::playlist_ptr& playlist, bool loadEntries = true ); bool isTemporary() const; + bool acceptPlayableQueriesOnly() const { return m_acceptPlayableQueriesOnly; } + void setAcceptPlayableQueriesOnly( bool b ) { m_acceptPlayableQueriesOnly = b; } + public slots: virtual void clear(); @@ -95,6 +98,7 @@ private: bool m_isTemporary; bool m_changesOngoing; bool m_isLoading; + bool m_acceptPlayableQueriesOnly; QList< Tomahawk::Query* > m_waitingForResolved; QStringList m_waitForRevision; diff --git a/src/libtomahawk/playlist/QueueProxyModel.cpp b/src/libtomahawk/playlist/QueueProxyModel.cpp index c2023642a..522723758 100644 --- a/src/libtomahawk/playlist/QueueProxyModel.cpp +++ b/src/libtomahawk/playlist/QueueProxyModel.cpp @@ -32,6 +32,8 @@ using namespace Tomahawk; QueueProxyModel::QueueProxyModel( TrackView* parent ) : PlayableProxyModel( parent ) { + connect( this, SIGNAL( indexPlayable( QModelIndex ) ), SLOT( onIndexChanged( QModelIndex ) ) ); + connect( this, SIGNAL( indexResolved( QModelIndex ) ), SLOT( onIndexChanged( QModelIndex ) ) ); connect( parent, SIGNAL( itemActivated( QModelIndex ) ), SLOT( onIndexActivated( QModelIndex ) ) ); connect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), SLOT( onPlaybackStarted( Tomahawk::result_ptr ) ) ); } @@ -42,6 +44,21 @@ QueueProxyModel::~QueueProxyModel() } +void +QueueProxyModel::onIndexChanged( const QModelIndex& index ) +{ + PlayableItem* item = itemFromIndex( mapToSource( index ) ); + if ( item && item->query() ) + { + tDebug() << item->query()->toString() << item->query()->resolvingFinished() << item->query()->playable(); + } + if ( !item || !item->query() || ( item->query()->resolvingFinished() && !item->query()->playable() ) ) + { + removeIndex( index ); + } +} + + void QueueProxyModel::onPlaybackStarted( const Tomahawk::result_ptr& result ) { diff --git a/src/libtomahawk/playlist/QueueProxyModel.h b/src/libtomahawk/playlist/QueueProxyModel.h index f2755a03a..ad8d20641 100644 --- a/src/libtomahawk/playlist/QueueProxyModel.h +++ b/src/libtomahawk/playlist/QueueProxyModel.h @@ -36,6 +36,7 @@ public: virtual ~QueueProxyModel(); private slots: + void onIndexChanged( const QModelIndex& index ); void onIndexActivated( const QModelIndex& index ); void onPlaybackStarted( const Tomahawk::result_ptr& result ); }; diff --git a/src/libtomahawk/playlist/QueueView.cpp b/src/libtomahawk/playlist/QueueView.cpp index 2d25eb3e1..45b1c13ba 100644 --- a/src/libtomahawk/playlist/QueueView.cpp +++ b/src/libtomahawk/playlist/QueueView.cpp @@ -47,6 +47,7 @@ QueueView::QueueView( AnimatedSplitter* parent ) ui->queue->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored ); PlaylistModel* queueModel = new PlaylistModel( this ); + queueModel->setAcceptPlayableQueriesOnly( true ); ui->queue->proxyModel()->setStyle( PlayableProxyModel::Short ); queueModel->finishLoading(); ui->queue->setPlaylistModel( queueModel ); diff --git a/src/libtomahawk/playlist/QueueView.h b/src/libtomahawk/playlist/QueueView.h index ce8ef7eae..10f8ec8e0 100644 --- a/src/libtomahawk/playlist/QueueView.h +++ b/src/libtomahawk/playlist/QueueView.h @@ -56,7 +56,7 @@ public slots: protected: void changeEvent( QEvent* e ); - + private slots: void updateLabel(); void onAnimationFinished(); diff --git a/src/libtomahawk/playlist/QueueView.ui b/src/libtomahawk/playlist/QueueView.ui index fba21c5b1..faae65081 100644 --- a/src/libtomahawk/playlist/QueueView.ui +++ b/src/libtomahawk/playlist/QueueView.ui @@ -23,7 +23,7 @@ - InfoBar + InfoBar diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp new file mode 100644 index 000000000..54e9bf821 --- /dev/null +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp @@ -0,0 +1,95 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2012 Leo Franchi + * Copyright 2012, Christian Muehlhaeuser + * + * Tomahawk 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. + * + * Tomahawk 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 Tomahawk. If not, see . + */ + + +#include "SingleTrackPlaylistInterface.h" + +namespace Tomahawk +{ + +SingleTrackPlaylistInterface::SingleTrackPlaylistInterface( const Tomahawk::query_ptr& query ) + : PlaylistInterface() + , m_track( query ) +{ +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::currentItem() const +{ + if ( m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::resultAt( qint64 index ) const +{ + if ( index == 0 && m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::query_ptr +SingleTrackPlaylistInterface::queryAt( qint64 index ) const +{ + if ( index == 0 ) + return m_track; + + return query_ptr(); +} + + +qint64 +SingleTrackPlaylistInterface::indexOfResult( const Tomahawk::result_ptr& result ) const +{ + if ( m_track && m_track->results().contains( result ) ) + return 0; + + return -1; +} + + +qint64 +SingleTrackPlaylistInterface::indexOfQuery( const Tomahawk::query_ptr& query ) const +{ + if ( m_track == query ) + return 0; + + return -1; +} + + +QList< Tomahawk::query_ptr > +SingleTrackPlaylistInterface::tracks() const +{ + QList< query_ptr > ql; + + if ( m_track ) + ql << m_track; + + return ql; +} + +} + diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h index f692e7457..494714b43 100644 --- a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h @@ -32,22 +32,18 @@ class DLLEXPORT SingleTrackPlaylistInterface : public PlaylistInterface { Q_OBJECT public: - explicit SingleTrackPlaylistInterface( const query_ptr& query ) - : PlaylistInterface() - , m_track( query ) - { - } + explicit SingleTrackPlaylistInterface( const query_ptr& query ); query_ptr track() const { return m_track; } void setQuery( const query_ptr& track ) { m_track = track; } virtual void setCurrentIndex( qint64 index ) { Q_UNUSED( index ); } - virtual result_ptr currentItem() const { return result_ptr(); } + virtual result_ptr currentItem() const; - virtual Tomahawk::result_ptr resultAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::result_ptr(); } - virtual Tomahawk::query_ptr queryAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::query_ptr(); } - virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const { Q_UNUSED( result ); Q_ASSERT( false ); return -1; } - virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const { Q_UNUSED( query ); Q_ASSERT( false ); return -1; } + virtual Tomahawk::result_ptr resultAt( qint64 index ) const; + virtual Tomahawk::query_ptr queryAt( qint64 index ) const; + virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const; + virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const; virtual PlaylistModes::RepeatMode repeatMode() const { return PlaylistModes::NoRepeat; } virtual void setRepeatMode( PlaylistModes::RepeatMode ) {} @@ -57,7 +53,7 @@ public: virtual qint64 siblingIndex( int, qint64 rootIndex = -1 ) const { Q_UNUSED( rootIndex ); return -1; } virtual int trackCount() const { return 1; } - virtual QList< query_ptr > tracks() const { return QList< query_ptr >(); } + virtual QList< query_ptr > tracks() const; private: query_ptr m_track; diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index 4edd4a890..d4c68c50f 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "ViewHeader.h" #include "ViewManager.h" @@ -75,6 +76,7 @@ TrackView::TrackView( QWidget* parent ) setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); setRootIsDecorated( false ); setUniformRowHeights( true ); + setAutoResize( false ); setHeader( m_header ); setSortingEnabled( true ); @@ -144,8 +146,21 @@ TrackView::setGuid( const QString& newguid ) void TrackView::setProxyModel( PlayableProxyModel* model ) { + if ( m_proxyModel ) + { + disconnect( m_proxyModel, SIGNAL( filterChanged( QString ) ), this, SLOT( onFilterChanged( QString ) ) ); + disconnect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( onViewChanged() ) ); + disconnect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); + disconnect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); + } + m_proxyModel = model; + connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); + connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( onViewChanged() ) ); + connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) ); + connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); + m_delegate = new PlaylistItemDelegate( this, m_proxyModel ); setItemDelegate( m_delegate ); @@ -162,6 +177,17 @@ TrackView::setModel( QAbstractItemModel* model ) } +void +TrackView::setPlaylistItemDelegate( PlaylistItemDelegate* delegate ) +{ + m_delegate = delegate; + setItemDelegate( delegate ); + connect( delegate, SIGNAL( updateIndex( QModelIndex ) ), SLOT( update( QModelIndex ) ) ); + + verifySize(); +} + + void TrackView::setPlayableModel( PlayableModel* model ) { @@ -172,9 +198,6 @@ TrackView::setPlayableModel( PlayableModel* model ) m_proxyModel->setSourcePlayableModel( m_model ); } - connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); - connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( onViewChanged() ) ); - setAcceptDrops( true ); m_header->setDefaultColumnWeights( m_proxyModel->columnWeights() ); setGuid( m_proxyModel->guid() ); @@ -807,3 +830,24 @@ TrackView::deleteSelectedItems() tDebug() << Q_FUNC_INFO << "Error: Model is read-only!"; } } + + +void +TrackView::verifySize() +{ + if ( !autoResize() || !m_proxyModel ) + return; + + if ( m_proxyModel->rowCount() > 0 ) + setFixedHeight( m_proxyModel->rowCount() * m_delegate->sizeHint( QStyleOptionViewItem(), m_proxyModel->index( 0, 0 ) ).height() + frameWidth() * 2 ); +} + + +void +TrackView::setAutoResize( bool b ) +{ + m_autoResize = b; + + if ( m_autoResize ) + setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); +} diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index b840c3576..7dc488e7a 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -48,6 +48,7 @@ public: virtual QString guid() const; virtual void setGuid( const QString& newguid ); + virtual void setPlaylistItemDelegate( PlaylistItemDelegate* delegate ); virtual void setPlayableModel( PlayableModel* model ); virtual void setModel( QAbstractItemModel* model ); void setProxyModel( PlayableProxyModel* model ); @@ -81,6 +82,9 @@ public: bool updatesContextView() const { return m_updateContextView; } void setUpdatesContextView( bool b ) { m_updateContextView = b; } + bool autoResize() const { return m_autoResize; } + void setAutoResize( bool b ); + // Starts playing from the beginning if resolved, or waits until a track is playable void startPlayingFromStart(); @@ -126,6 +130,8 @@ private slots: void autoPlayResolveFinished( const Tomahawk::query_ptr& query, int row ); + void verifySize(); + private: void startAutoPlay( const QModelIndex& index ); bool tryToPlayItem( const QModelIndex& index ); @@ -145,6 +151,7 @@ private: QRect m_dropRect; bool m_updateContextView; + bool m_autoResize; QModelIndex m_hoveredIndex; QModelIndex m_contextMenuIndex; diff --git a/src/libtomahawk/playlist/TreeItemDelegate.cpp b/src/libtomahawk/playlist/TreeItemDelegate.cpp index ea991cad3..de7776f76 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.cpp +++ b/src/libtomahawk/playlist/TreeItemDelegate.cpp @@ -45,6 +45,35 @@ TreeItemDelegate::TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ) } +QSize +TreeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const +{ + QSize size = QStyledItemDelegate::sizeHint( option, index ); + + if ( index.isValid() ) + { + PlayableItem* item = m_model->sourceModel()->itemFromIndex( m_model->mapToSource( index ) ); + if ( item ) + { + if ( item->album() ) + { + size.setHeight( option.fontMetrics.height() * 3 ); + return size; + } + else if ( item->query() || item->result() ) + { + size.setHeight( option.fontMetrics.height() * 1.6 ); + return size; + } + } + } + + // artist per default + size.setHeight( option.fontMetrics.height() * 4 ); + return size; +} + + void TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { @@ -161,13 +190,13 @@ TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, { if ( !item->album().isNull() ) { - m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->album(), r.size(), TomahawkUtils::ScaledCover, false ) ) ); + m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->album(), r.size(), TomahawkUtils::Original, false ) ) ); _detail::Closure* closure = NewClosure( m_pixmaps[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( const QPersistentModelIndex& ) ), QPersistentModelIndex( index ) ); closure->setAutoDelete( false ); } else if ( !item->artist().isNull() ) { - m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->artist(), r.size(), TomahawkUtils::ScaledCover, false ) ) ); + m_pixmaps.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->artist(), r.size(), TomahawkUtils::Original, false ) ) ); _detail::Closure* closure = NewClosure( m_pixmaps[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( const QPersistentModelIndex& ) ), QPersistentModelIndex( index ) ); closure->setAutoDelete( false ); } diff --git a/src/libtomahawk/playlist/TreeItemDelegate.h b/src/libtomahawk/playlist/TreeItemDelegate.h index 84dc69f45..7f80e50e7 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.h +++ b/src/libtomahawk/playlist/TreeItemDelegate.h @@ -36,7 +36,9 @@ class DLLEXPORT TreeItemDelegate : public QStyledItemDelegate Q_OBJECT public: - TreeItemDelegate( TreeView* parent = 0, TreeProxyModel* proxy = 0 ); + TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ); + + virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; protected: void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; diff --git a/src/libtomahawk/playlist/TreeView.cpp b/src/libtomahawk/playlist/TreeView.cpp index e8bf2b78a..a9ef89a71 100644 --- a/src/libtomahawk/playlist/TreeView.cpp +++ b/src/libtomahawk/playlist/TreeView.cpp @@ -243,6 +243,10 @@ TreeView::onItemActivated( const QModelIndex& index ) { AudioEngine::instance()->playItem( m_proxyModel->playlistInterface(), item->result() ); } + else if ( !item->query().isNull() ) + { + AudioEngine::instance()->playItem( m_proxyModel->playlistInterface(), item->query() ); + } } } diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index d9983b846..2320c4dfe 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -740,15 +740,20 @@ Tomahawk::EchonestControl::calculateSummary() { // turns the current control into an english phrase suitable for embedding into a sentence summary QString summary; - if( selectedType() == "Artist" ) { + if ( selectedType() == "Artist" ) + { // magic char is used by EchonestGenerator to split the prefix from the artist name - if( static_cast< Echonest::DynamicPlaylist::ArtistTypeEnum >( m_matchData.toInt() ) == Echonest::DynamicPlaylist::ArtistType ) + if ( static_cast< Echonest::DynamicPlaylist::ArtistTypeEnum >( m_matchData.toInt() ) == Echonest::DynamicPlaylist::ArtistType ) summary = tr( "only by ~%1" ).arg( m_data.second.toString() ); - else if( static_cast< Echonest::DynamicPlaylist::ArtistTypeEnum >( m_matchData.toInt() ) == Echonest::DynamicPlaylist::ArtistRadioType ) + else if ( static_cast< Echonest::DynamicPlaylist::ArtistTypeEnum >( m_matchData.toInt() ) == Echonest::DynamicPlaylist::ArtistRadioType ) summary = tr( "similar to ~%1" ).arg( m_data.second.toString() ); - } else if( selectedType() == "Artist Description" ) { + } + else if( selectedType() == "Artist Description" ) + { summary = tr( "with genre ~%1" ).arg( m_data.second.toString() ); - } else if( selectedType() == "User Radio" ) { + } + else if( selectedType() == "User Radio" ) + { QComboBox* b = qobject_cast< QComboBox* >( m_input.data() ); if ( b ) { @@ -758,52 +763,70 @@ Tomahawk::EchonestControl::calculateSummary() { QString subSum; if ( b->currentText() == tr( "My Collection" ) ) - subSum = "my"; + summary = tr( "from my radio" ); else - subSum = b->currentText(); - summary = tr( "from %1 radio" ).arg( subSum ); + summary = tr( "from %1 radio" ).arg( b->currentText() ); } } else summary = tr( "from no one" ); - } else if( selectedType() == "Artist Description" || selectedType() == "Song" ) { - summary = QString( "similar to ~%1" ).arg( m_data.second.toString() ); - } else if( selectedType() == "Variety" || selectedType() == "Danceability" || selectedType() == "Artist Hotttnesss" || - selectedType() == "Energy" || selectedType() == "Artist Familiarity" || selectedType() == "Song Hotttnesss" || - selectedType() == "Adventurousness" ) { + } + else if ( selectedType() == "Artist Description" || selectedType() == "Song" ) + { + summary = tr( "similar to ~%1" ).arg( m_data.second.toString() ); + } + else if ( selectedType() == QT_TR_NOOP( "Variety" ) || selectedType() == QT_TR_NOOP( "Danceability" ) || + selectedType() == QT_TR_NOOP( "Artist Hotttnesss" ) || selectedType() == QT_TR_NOOP( "Energy" ) || + selectedType() == QT_TR_NOOP( "Artist Familiarity" ) || selectedType() == QT_TR_NOOP( "Song Hotttnesss" ) || + selectedType() == QT_TR_NOOP( "Adventurousness" ) ) + { QString modifier; qreal sliderVal = m_data.second.toReal(); // divide into avpproximate chunks if( 0.0 <= sliderVal && sliderVal < 0.2 ) - modifier = "very low"; + modifier = tr( "very low" ); else if( 0.2 <= sliderVal && sliderVal < 0.4 ) - modifier = "low"; + modifier = tr( "low" ); else if( 0.4 <= sliderVal && sliderVal < 0.6 ) - modifier = "moderate"; + modifier = tr( "moderate" ); else if( 0.6 <= sliderVal && sliderVal < 0.8 ) - modifier = "high"; + modifier = tr( "high" ); else if( 0.8 <= sliderVal && sliderVal <= 1 ) - modifier = "very high"; - summary = tr( "with %1 %2" ).arg( modifier ).arg( selectedType().toLower() ); - } else if( selectedType() == "Tempo" ) { + modifier = tr( "very high" ); + summary = tr( "with %1 %2" ).arg( modifier ).arg( tr( selectedType().toStdString().c_str() ) ); + } + else if ( selectedType() == "Tempo" ) + { summary = tr( "about %1 BPM" ).arg( m_data.second.toString() ); - } else if( selectedType() == "Duration" ) { + } + else if ( selectedType() == "Duration" ) + { summary = tr( "about %n minute(s) long", "", m_data.second.toInt() / 60 ); - } else if( selectedType() == "Loudness" ) { + } + else if ( selectedType() == "Loudness" ) + { summary = tr( "about %1 dB" ).arg( m_data.second.toString() ); - } else if( selectedType() == "Latitude" || selectedType() == "Longitude" ) { - summary = tr( "at around %1%2 %3" ).arg( m_data.second.toString() ).arg( QString( QChar( 0x00B0 ) ) ).arg( selectedType().toLower() ); - } else if( selectedType() == "Key" ) { + } + else if ( selectedType() == "Latitude" || selectedType() == "Longitude" ) + { + summary = tr( "at around %1%2 %3" ).arg( m_data.second.toString() ).arg( QString( QChar( 0x00B0 ) ) ).arg( tr( selectedType().toStdString().c_str() ) ); + } + else if ( selectedType() == "Key" ) + { Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString keyName = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); summary = tr( "in %1" ).arg( keyName ); - } else if( selectedType() == "Mode" ) { + } + else if ( selectedType() == "Mode" ) + { Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString modeName = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); summary = tr( "in a %1 key" ).arg( modeName ); - } else if( selectedType() == "Sorting" ) { + } + else if ( selectedType() == "Sorting" ) + { Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString sortType = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); @@ -813,17 +836,22 @@ Tomahawk::EchonestControl::calculateSummary() QString ascdesc = qobject_cast< QComboBox* >( m_match.data() )->currentText().toLower(); summary = tr( "sorted in %1 %2 order" ).arg( ascdesc ).arg( sortType ); - } else if( selectedType() == "Mood" ) { + } + else if ( selectedType() == "Mood" ) + { Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString text = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); summary = tr( "with a %1 mood" ).arg( text ); - } else if( selectedType() == "Style" ) { + } + else if ( selectedType() == "Style" ) + { Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString text = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); summary = tr( "in a %1 style" ).arg( text ); } + m_summary = summary; } diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 2c727d5af..cd9e427ab 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -20,13 +20,13 @@ #include "QtScriptResolver.h" #include - #include #include - #include #include +#include + #include "Artist.h" #include "Album.h" #include "config.h" @@ -529,28 +529,6 @@ QtScriptResolver::saveConfig() } -QWidget* -QtScriptResolver::findWidget(QWidget* widget, const QString& objectName) -{ - if( !widget || !widget->isWidgetType() ) - return 0; - - if( widget->objectName() == objectName ) - return widget; - - - foreach( QObject* child, widget->children() ) - { - QWidget* found = findWidget(qobject_cast< QWidget* >( child ), objectName); - - if( found ) - return found; - } - - return 0; -} - - QVariant QtScriptResolver::widgetData(QWidget* widget, const QString& property) { @@ -589,7 +567,7 @@ QtScriptResolver::loadDataFromWidgets() QVariantMap data = dataWidget.toMap(); QString widgetName = data["widget"].toString(); - QWidget* widget= findWidget( m_configWidget.data(), widgetName ); + QWidget* widget= m_configWidget.data()->findChild( widgetName ); QVariant value = widgetData( widget, data["property"].toString() ); @@ -606,7 +584,7 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data ) foreach(const QVariant& dataWidget, m_dataWidgets) { QString widgetName = dataWidget.toMap()["widget"].toString(); - QWidget* widget= findWidget( m_configWidget.data(), widgetName ); + QWidget* widget= m_configWidget.data()->findChild( widgetName ); if( !widget ) { tLog() << Q_FUNC_INFO << "Widget specified in resolver was not found:" << widgetName; diff --git a/src/libtomahawk/resolvers/QtScriptResolver.h b/src/libtomahawk/resolvers/QtScriptResolver.h index 392f29ecc..f2624f200 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.h +++ b/src/libtomahawk/resolvers/QtScriptResolver.h @@ -154,7 +154,6 @@ private: void init(); void loadUi(); - QWidget* findWidget( QWidget* widget, const QString& objectName ); void setWidgetData( const QVariant& value, QWidget* widget, const QString& property ); QVariant widgetData( QWidget* widget, const QString& property ); QVariantMap loadDataFromWidgets(); diff --git a/src/libtomahawk/sip/SipHandler.cpp b/src/libtomahawk/sip/SipHandler.cpp index 07457e26b..8e545a04d 100644 --- a/src/libtomahawk/sip/SipHandler.cpp +++ b/src/libtomahawk/sip/SipHandler.cpp @@ -29,8 +29,6 @@ #include #endif -#include "FuncTimeout.h" - #include "database/Database.h" #include "database/DatabaseImpl.h" #include "network/ControlConnection.h" diff --git a/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm index 9dfdf9672..e2b0aa360 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm @@ -24,9 +24,7 @@ THE SOFTWARE. #include "qocoa_mac.h" -#import "Foundation/NSAutoreleasePool.h" -#import "AppKit/NSButton.h" -#import "AppKit/NSFont.h" +#import class QButtonPrivate : public QObject { diff --git a/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h b/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h index 053f57a06..50c75c395 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h +++ b/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h @@ -23,7 +23,7 @@ THE SOFTWARE. #ifndef QCOCOA_MAC_H #define QCOCOA_MAC_H -#include +#import #include #include #include diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm index 40b109849..54fafd83c 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm @@ -26,9 +26,7 @@ THE SOFTWARE. #include "qocoa_mac.h" -#import "Foundation/NSAutoreleasePool.h" -#import "Foundation/NSNotification.h" -#import "AppKit/NSSearchField.h" +#import #include #include diff --git a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm index 7c5fbced2..316e87f9d 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm @@ -24,8 +24,7 @@ #include "qocoa_mac.h" -#import -#import +#import #include #include diff --git a/src/libtomahawk/utils/GuiHelpers.cpp b/src/libtomahawk/utils/GuiHelpers.cpp index a682f8b9c..2342c5344 100644 --- a/src/libtomahawk/utils/GuiHelpers.cpp +++ b/src/libtomahawk/utils/GuiHelpers.cpp @@ -99,7 +99,7 @@ createAccountFromFactory( Tomahawk::Accounts::AccountFactory* factory, QWidget* { #ifdef Q_WS_MAC // on osx a sheet needs to be non-modal - DelegateConfigWrapper* dialog = new DelegateConfigWrapper( account->configurationWidget(), account->aboutWidget(), QString("%1 Config" ).arg( account->accountFriendlyName() ), parent, Qt::Sheet ); + DelegateConfigWrapper* dialog = new DelegateConfigWrapper( account->configurationWidget(), account->aboutWidget(), QObject::tr( "%1 Config" ).arg( account->accountFriendlyName() ), parent, Qt::Sheet ); dialog->setProperty( "accountplugin", QVariant::fromValue< QObject* >( account ) ); UtilsObject* obj = new UtilsObject( dialog ); @@ -110,7 +110,7 @@ createAccountFromFactory( Tomahawk::Accounts::AccountFactory* factory, QWidget* dialog->show(); #else - DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QString("%1 Config" ).arg( account->accountFriendlyName() ), parent ); + DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QObject::tr( "%1 Config" ).arg( account->accountFriendlyName() ), parent ); QWeakPointer< DelegateConfigWrapper > watcher( &dialog ); if( account->configurationWidget()->metaObject()->indexOfSignal( "dataError(bool)" ) > -1 ) @@ -139,7 +139,7 @@ openAccountConfig( Tomahawk::Accounts::Account* account, QWidget* parent, bool s if( account->configurationWidget() ) { #ifndef Q_OS_MAC - DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QString("%1 Configuration" ).arg( account->accountFriendlyName() ), parent ); + DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QObject::tr("%1 Configuration" ).arg( account->accountFriendlyName() ), parent ); dialog.setShowDelete( showDelete ); QWeakPointer< DelegateConfigWrapper > watcher( &dialog ); int ret = dialog.exec(); @@ -154,7 +154,7 @@ openAccountConfig( Tomahawk::Accounts::Account* account, QWidget* parent, bool s } #else // on osx a sheet needs to be non-modal - DelegateConfigWrapper* dialog = new DelegateConfigWrapper( account->configurationWidget(), account->aboutWidget(), QString("%1 Configuration" ).arg( account->accountFriendlyName() ), parent, Qt::Sheet ); + DelegateConfigWrapper* dialog = new DelegateConfigWrapper( account->configurationWidget(), account->aboutWidget(), QObject::tr("%1 Configuration" ).arg( account->accountFriendlyName() ), parent, Qt::Sheet ); dialog->setShowDelete( showDelete ); dialog->setProperty( "accountplugin", QVariant::fromValue< QObject* >( account ) ); UtilsObject* obj = new UtilsObject( dialog ); diff --git a/src/libtomahawk/utils/ImageRegistry.cpp b/src/libtomahawk/utils/ImageRegistry.cpp index 8dc09c41e..4fa350e72 100644 --- a/src/libtomahawk/utils/ImageRegistry.cpp +++ b/src/libtomahawk/utils/ImageRegistry.cpp @@ -23,7 +23,7 @@ #include "utils/Logger.h" -static QHash< QString, QHash< int, QHash< int, QPixmap > > > s_cache; +static QHash< QString, QHash< int, QHash< qint64, QPixmap > > > s_cache; ImageRegistry* ImageRegistry::s_instance = 0; @@ -50,8 +50,8 @@ ImageRegistry::icon( const QString& image, TomahawkUtils::ImageMode mode ) QPixmap ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode ) { - QHash< int, QPixmap > subsubcache; - QHash< int, QHash< int, QPixmap > > subcache; + QHash< qint64, QPixmap > subsubcache; + QHash< int, QHash< qint64, QPixmap > > subcache; if ( s_cache.contains( image ) ) { @@ -61,9 +61,9 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::I { subsubcache = subcache.value( mode ); - if ( subsubcache.contains( size.width() ) ) + if ( subsubcache.contains( size.width() * size.height() ) ) { - return subsubcache.value( size.width() ); + return subsubcache.value( size.width() * size.height() ); } } } @@ -109,10 +109,10 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::I void ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, const QPixmap& pixmap ) { - tDebug() << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode; - QHash< int, QPixmap > subsubcache; - QHash< int, QHash< int, QPixmap > > subcache; + QHash< qint64, QPixmap > subsubcache; + QHash< int, QHash< qint64, QPixmap > > subcache; if ( s_cache.contains( image ) ) { @@ -122,14 +122,14 @@ ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtil { subsubcache = subcache.value( mode ); -/* if ( subsubcache.contains( size.width() ) ) +/* if ( subsubcache.contains( size.width() * size.height() ) ) { Q_ASSERT( false ); }*/ } } - subsubcache.insert( size.width(), pixmap ); + subsubcache.insert( size.width() * size.height(), pixmap ); subcache.insert( mode, subsubcache ); s_cache.insert( image, subcache ); } diff --git a/src/libtomahawk/utils/M3uLoader.cpp b/src/libtomahawk/utils/M3uLoader.cpp index f028ec4d0..7176c9f9a 100644 --- a/src/libtomahawk/utils/M3uLoader.cpp +++ b/src/libtomahawk/utils/M3uLoader.cpp @@ -97,12 +97,31 @@ M3uLoader::getTags( const QFileInfo& info ) { q->setResultHint( "file://" + info.absoluteFilePath() ); q->setSaveHTTPResultHint( true ); - qDebug() << "ADding resulthint" << q->resultHint(); + qDebug() << "Adding resulthint" << q->resultHint(); m_tracks << q; } } } +void +M3uLoader::parseLine( const QString& line, const QFile& file ) +{ + QFileInfo tmpFile( QUrl::fromUserInput( QString( line.simplified() ) ).toLocalFile() ); + + if( tmpFile.exists() ) + { + getTags( tmpFile ); + } + else + { + QUrl fileUrl = QUrl::fromUserInput( QString( QFileInfo(file).canonicalPath() + "/" + line.simplified() ) ); + QFileInfo tmpFile( fileUrl.toLocalFile() ); + if ( tmpFile.exists() ) + { + getTags( tmpFile ); + } + } +} void M3uLoader::parseM3u( const QString& fileLink ) @@ -110,7 +129,7 @@ M3uLoader::parseM3u( const QString& fileLink ) QFileInfo fileInfo( fileLink ); QFile file( QUrl::fromUserInput( fileLink ).toLocalFile() ); - if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + if ( !file.open( QIODevice::ReadOnly ) ) { tDebug() << "Error opening m3u:" << file.errorString(); return; @@ -118,54 +137,56 @@ M3uLoader::parseM3u( const QString& fileLink ) m_title = fileInfo.baseName(); - while ( !file.atEnd() ) + QTextStream stream( &file ); + QString singleLine; + + while ( !stream.atEnd() ) { - QByteArray line = file.readLine(); - /// If anyone wants to take on the regex for parsing EXT, go ahead - /// But the notion that users does not tag by a common rule. that seems hard - /// So ignore that for now - if ( line.contains( "EXT" ) ) - continue; + QString line = stream.readLine().trimmed(); - QFileInfo tmpFile( QUrl::fromUserInput( QString( line.simplified() ) ).toLocalFile() ); + /// Fallback solution for, (drums) itunes! + singleLine.append(line); - if( tmpFile.exists() ) - { - getTags( tmpFile ); - } - else - { - QUrl fileUrl = QUrl::fromUserInput( QString( QFileInfo(file).canonicalPath() + "/" + line.simplified() ) ); - QFileInfo tmpFile( fileUrl.toLocalFile() ); - if ( tmpFile.exists() ) - { - getTags( tmpFile ); - } - } + /// If anyone wants to take on the regex for parsing EXT, go ahead + /// But the notion that users does not tag by a common rule. that seems hard + /// So ignore that for now + if ( line.contains( "EXT" ) ) + continue; + + parseLine( line, file ); } if ( m_tracks.isEmpty() ) { - tDebug() << Q_FUNC_INFO << "Could not parse M3U!"; - return; + if ( !singleLine.isEmpty() ) + { + QStringList m3uList = singleLine.split("\r"); + foreach( const QString& line, m3uList ) + parseLine( line, file ); + } + + if ( m_tracks.isEmpty() ) + { + tDebug() << "Could not parse M3U!"; + return; + } } if ( m_createNewPlaylist ) { m_playlist = Playlist::create( SourceList::instance()->getLocal(), - uuid(), - m_title, - m_info, - m_creator, - false, - m_tracks ); + uuid(), + m_title, + m_info, + m_creator, + false, + m_tracks ); connect( m_playlist.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistCreated() ) ); } else emit tracks( m_tracks ); - m_tracks.clear(); } diff --git a/src/libtomahawk/utils/M3uLoader.h b/src/libtomahawk/utils/M3uLoader.h index 81c3790ac..fa541e1b0 100644 --- a/src/libtomahawk/utils/M3uLoader.h +++ b/src/libtomahawk/utils/M3uLoader.h @@ -28,6 +28,7 @@ #include "Playlist.h" #include #include +#include #include class TrackModel; @@ -56,6 +57,7 @@ signals: private: void parseM3u( const QString& track ); void getTags( const QFileInfo& info ); + void parseLine(const QString& line , const QFile &file); QList< query_ptr > m_tracks; QString m_title, m_info, m_creator; bool m_single; diff --git a/src/libtomahawk/utils/PixmapDelegateFader.cpp b/src/libtomahawk/utils/PixmapDelegateFader.cpp index 4f1563eb2..9b0bd418d 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.cpp +++ b/src/libtomahawk/utils/PixmapDelegateFader.cpp @@ -19,14 +19,16 @@ */ #include "PixmapDelegateFader.h" -#include "TomahawkUtilsGui.h" -#include "Source.h" #include #include #include #include +#include "Source.h" +#include "TomahawkUtilsGui.h" +#include "Logger.h" + using namespace Tomahawk; QWeakPointer< TomahawkUtils::SharedTimeLine > PixmapDelegateFader::s_stlInstance = QWeakPointer< TomahawkUtils::SharedTimeLine >(); @@ -85,6 +87,7 @@ PixmapDelegateFader::PixmapDelegateFader( const query_ptr& track, const QSize& s { connect( m_track.data(), SIGNAL( updated() ), SLOT( trackChanged() ) ); connect( m_track.data(), SIGNAL( resultsChanged() ), SLOT( trackChanged() ) ); + connect( m_track->displayQuery().data(), SIGNAL( updated() ), SLOT( trackChanged() ) ); connect( m_track->displayQuery().data(), SIGNAL( coverChanged() ), SLOT( trackChanged() ) ); m_currentReference = TomahawkUtils::createRoundedImage( m_track->displayQuery()->cover( size, forceLoad ), QSize( 0, 0 ), m_mode == TomahawkUtils::Grid ? 0.00 : 0.20 ); @@ -139,7 +142,7 @@ PixmapDelegateFader::setSize( const QSize& size ) else if ( !m_artist.isNull() ) m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, m_mode, m_size ); else if ( !m_track.isNull() ) - m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, m_mode, m_size ); + m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, m_mode, m_size ); } else { @@ -161,7 +164,7 @@ PixmapDelegateFader::albumChanged() if ( m_album.isNull() ) return; - QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, TomahawkUtils::createRoundedImage( m_album->cover( m_size ), QSize( 0, 0 ), m_mode == TomahawkUtils::Grid ? 0.00 : 0.20 ) ) ); + QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, m_album->cover( m_size ) ) ); } @@ -171,7 +174,7 @@ PixmapDelegateFader::artistChanged() if ( m_artist.isNull() ) return; - QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, TomahawkUtils::createRoundedImage( m_artist->cover( m_size ), QSize( 0, 0 ), m_mode == TomahawkUtils::Grid ? 0.00 : 0.20 ) ) ); + QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, m_artist->cover( m_size ) ) ); } @@ -181,8 +184,9 @@ PixmapDelegateFader::trackChanged() if ( m_track.isNull() ) return; - connect( m_track->displayQuery().data(), SIGNAL( coverChanged() ), SLOT( trackChanged() ) ); - QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, TomahawkUtils::createRoundedImage( m_track->displayQuery()->cover( m_size ), QSize( 0, 0 ), m_mode == TomahawkUtils::Grid ? 0.00 : 0.20 ) ) ); + connect( m_track->displayQuery().data(), SIGNAL( updated() ), SLOT( trackChanged() ), Qt::UniqueConnection ); + connect( m_track->displayQuery().data(), SIGNAL( coverChanged() ), SLOT( trackChanged() ), Qt::UniqueConnection ); + QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, m_track->displayQuery()->cover( m_size ) ) ); } @@ -193,14 +197,10 @@ PixmapDelegateFader::setPixmap( const QPixmap& pixmap ) return; m_defaultImage = false; - QCryptographicHash hash( QCryptographicHash::Md5 ); - const QImage img = pixmap.toImage(); - hash.addData( (const char*)img.constBits(), img.byteCount() ); - const QString newImageMd5 = hash.result(); + const qint64 newImageMd5 = pixmap.cacheKey(); if ( m_oldImageMd5 == newImageMd5 ) return; - m_oldImageMd5 = newImageMd5; if ( m_connectedToStl ) @@ -210,7 +210,7 @@ PixmapDelegateFader::setPixmap( const QPixmap& pixmap ) } m_oldReference = m_currentReference; - m_currentReference = pixmap; + m_currentReference = TomahawkUtils::createRoundedImage( pixmap, QSize( 0, 0 ), m_mode == TomahawkUtils::Grid ? 0.00 : 0.20 ); stlInstance().data()->setUpdateInterval( 20 ); m_startFrame = stlInstance().data()->currentFrame(); diff --git a/src/libtomahawk/utils/PixmapDelegateFader.h b/src/libtomahawk/utils/PixmapDelegateFader.h index f79c58774..04df7db1b 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.h +++ b/src/libtomahawk/utils/PixmapDelegateFader.h @@ -81,7 +81,7 @@ private: int m_startFrame; bool m_connectedToStl; float m_fadePct; - QString m_oldImageMd5; + qint64 m_oldImageMd5; bool m_defaultImage; QQueue m_pixmapQueue; diff --git a/src/libtomahawk/utils/SoundcloudParser.cpp b/src/libtomahawk/utils/SoundcloudParser.cpp index 35fc6fc22..0b331f3a4 100644 --- a/src/libtomahawk/utils/SoundcloudParser.cpp +++ b/src/libtomahawk/utils/SoundcloudParser.cpp @@ -43,6 +43,7 @@ SoundcloudParser::SoundcloudParser( const QStringList& Urls, bool createNewPlayl , m_createNewPlaylist( createNewPlaylist ) , m_browseJob( 0 ) , m_type( DropJob::All ) + , m_getLikes( false ) { foreach ( const QString& url, Urls ) @@ -57,6 +58,7 @@ SoundcloudParser::SoundcloudParser( const QString& Url, bool createNewPlaylist, , m_createNewPlaylist( createNewPlaylist ) , m_browseJob( 0 ) , m_type( DropJob::All ) + , m_getLikes( false ) { lookupUrl( Url ); } @@ -71,10 +73,17 @@ void SoundcloudParser::lookupUrl( const QString& link ) { tDebug() << "Looking up URL..." << link; - QUrl scLink( QString( "http://api.soundcloud.com/resolve.json?client_id=TiNg2DRYhBnp01DA3zNag&url=" ) + link ); + QString url = link; + if ( link.contains( "/likes" ) ) + { + qDebug() << Q_FUNC_INFO << "Requesting likes"; + url.replace( "/likes", "" ); + m_getLikes = true; + } + QUrl scLink( QString( "http://api.soundcloud.com/resolve.json?client_id=TiNg2DRYhBnp01DA3zNag&url=" ) + url ); NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( scLink ) ) ); - connect( reply, SIGNAL( finished() ), SLOT( soundcloudBrowseFinished() ) ); + connect( reply, SIGNAL( finished() ), SLOT( soundcloudLookupFinished() ) ); m_browseJob = new DropJobNotifier( pixmap(), "Soundcloud", DropJob::All, reply ); JobStatusView::instance()->model()->addJob( m_browseJob ); @@ -89,6 +98,7 @@ SoundcloudParser::parseTrack( const QVariantMap& res ) QString title, artist; title = res.value( "title", QString() ).toString(); artist = res.value( "user" ).toMap().value( "username", QString() ).toString(); + bool streamable = res.value( "streamable" ).toBool(); if ( title.isEmpty() && artist.isEmpty() ) // don't have enough... { @@ -96,6 +106,14 @@ SoundcloudParser::parseTrack( const QVariantMap& res ) return; } + if ( !streamable ) + { + JobStatusView::instance()->model()->addJob( + new ErrorStatusMessage( tr( "Track '%1' by %2 is not streamable." ).arg( title ).arg( artist ), 5 ) ); + tLog() << "Track is not streamble, aborting." << res.value( "uri" ).toString(); + return; + } + Tomahawk::query_ptr q = Tomahawk::Query::get( artist, title, QString(), uuid(), m_trackMode ); if ( !q.isNull() ) @@ -123,13 +141,37 @@ SoundcloudParser::soundcloudLookupFinished() QJson::Parser p; bool ok; QVariantMap res = p.parse( r->reply(), &ok ).toMap(); - if ( !ok ) { tLog() << "Failed to parse json from Soundcloud browse item:" << p.errorString() << "On line" << p.errorLine(); return; } + if( res.value( "kind" ).toString() == "playlist" ) + m_type = DropJob::Playlist; + if( res.value( "kind" ).toString() == "track" ) + m_type = DropJob::Track; + if( res.value( "kind" ).toString() == "user" ) + { + QUrl url; + if ( m_getLikes ) + { + url = QUrl( QString( res.value( "uri" ).toString() + "/favorites.json?client_id=TiNg2DRYhBnp01DA3zNag" ) ); + } + else + { + url = QUrl( QString( res.value( "uri" ).toString() + "/tracks.json?client_id=TiNg2DRYhBnp01DA3zNag" ) ); + } + + NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( url ) ) ) ); + + if ( m_createNewPlaylist ) + m_userData = res; + + connect( reply, SIGNAL( finished() ), SLOT( soundcloudArtistLookupFinished() ) ); + return; + } + if ( m_type == DropJob::Track ) { parseTrack( res ); @@ -160,10 +202,6 @@ SoundcloudParser::soundcloudLookupFinished() return; } } - else if ( m_type == DropJob::Artist ) - { - // cant parse soundcloud json here atm. - } } if ( m_single && !m_tracks.isEmpty() ) @@ -185,7 +223,7 @@ SoundcloudParser::playlistCreated() void -SoundcloudParser::soundcloudBrowseFinished() +SoundcloudParser::soundcloudArtistLookupFinished() { NetworkReply* r = qobject_cast< NetworkReply* >( sender() ); Q_ASSERT( r ); @@ -194,39 +232,36 @@ SoundcloudParser::soundcloudBrowseFinished() if ( r->reply()->error() == QNetworkReply::NoError ) { - if ( r->reply()->rawHeaderList().contains( "Location" ) ) + QJson::Parser p; + bool ok; + QVariantList res = p.parse( r->reply(), &ok ).toList(); + + foreach( const QVariant& track, res ) + parseTrack( track.toMap() ); + + if ( m_createNewPlaylist ) { - QString url = r->reply()->rawHeader( "Location" ); - if ( url.contains( "tracks" ) ) - { - m_type = DropJob::Track; - } - else if ( url.contains( "users" ) ) - { - // For now, dont handle user tracklists - m_type = DropJob::All; //DropJob::Artist; - url = url.replace( ".json", "/tracks.json" ); -} - else if ( url.contains( "playlists" ) ) - { - m_type = DropJob::Playlist; - } + const QString user = m_userData.value( "full_name" ).toString(); + const QString title = user + "'s " + ( m_getLikes ? "Favorites" : "Tracks" ); + m_playlist = Playlist::create( SourceList::instance()->getLocal(), + uuid(), + title, + "", + user, + false, + m_tracks ); + + connect( m_playlist.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistCreated() ) ); + return; - if ( m_type != DropJob::All ) - { - NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( url ) ) ) ); - connect( reply, SIGNAL( finished() ), SLOT( soundcloudLookupFinished() ) ); - } } - } + if ( m_single && !m_tracks.isEmpty() ) + emit track( m_tracks.first() ); + else if ( !m_single && !m_tracks.isEmpty() ) + emit tracks( m_tracks ); - if ( m_type == DropJob::All ) - { // No good - m_queries.remove( r ); + deleteLater(); - if ( m_browseJob ) - m_browseJob->setFinished(); - return; } } diff --git a/src/libtomahawk/utils/SoundcloudParser.h b/src/libtomahawk/utils/SoundcloudParser.h index bb35b6029..e003d086e 100644 --- a/src/libtomahawk/utils/SoundcloudParser.h +++ b/src/libtomahawk/utils/SoundcloudParser.h @@ -63,7 +63,7 @@ signals: void playlist( const Tomahawk::query_ptr& playlist ); private slots: - void soundcloudBrowseFinished(); + void soundcloudArtistLookupFinished(); void soundcloudLookupFinished(); void playlistCreated(); @@ -79,6 +79,8 @@ private: int m_subscribers; QList< query_ptr > m_tracks; + QVariantMap m_userData; + bool m_getLikes; QSet< NetworkReply* > m_queries; Tomahawk::playlist_ptr m_playlist; DropJobNotifier* m_browseJob; diff --git a/src/libtomahawk/utils/StyleHelper.cpp b/src/libtomahawk/utils/StyleHelper.cpp index c4f35c7ef..cde83bb2f 100644 --- a/src/libtomahawk/utils/StyleHelper.cpp +++ b/src/libtomahawk/utils/StyleHelper.cpp @@ -26,14 +26,14 @@ QColor StyleHelper::headerUpperColor() { - return QColor( "#615858" ); + return QColor( "#25292c" ); } QColor StyleHelper::headerLowerColor() { - return QColor( "#231F1F" ); + return QColor( "#707070" ); } @@ -48,32 +48,32 @@ void StyleHelper::horizontalHeader( QPainter* painter, const QRect& r ) { painter->save(); - -/* QRect upperHalf( 0, 0, r.width(), r.height() / 2 ); - QRect lowerHalf( 0, upperHalf.height(), r.width(), r.height() ); - painter->fillRect( upperHalf, StyleHelper::headerUpperColor() ); - painter->fillRect( lowerHalf, StyleHelper::headerLowerColor() );*/ + + /* QRect upperHalf( 0, 0, r.width(), r.height() / 2 ); + QRect lowerHalf( 0, upperHalf.height(), r.width(), r.height() ); + painter->fillRect( upperHalf, StyleHelper::headerUpperColor() ); + painter->fillRect( lowerHalf, StyleHelper::headerLowerColor() );*/ QLinearGradient gradient( QPoint( 0, 0 ), QPoint( 0, 1 ) ); gradient.setCoordinateMode( QGradient::ObjectBoundingMode ); gradient.setColorAt( 0.0, StyleHelper::headerLowerColor() ); gradient.setColorAt( 1.0, StyleHelper::headerUpperColor() ); - + painter->setBrush( gradient ); painter->fillRect( r, gradient ); - -/* { - QColor lineColor( 100, 100, 100 ); - QLine line( 0, 0, r.width(), 0 ); - painter->setPen( lineColor ); - painter->drawLine( line ); - } - { - QColor lineColor( 30, 30, 30 ); - QLine line( 0, r.height() - 1, r.width(), r.height() - 1 ); - painter->setPen( lineColor ); - painter->drawLine( line ); - }*/ - + + /* { + QColor lineColor( 100, 100, 100 ); + QLine line( 0, 0, r.width(), 0 ); + painter->setPen( lineColor ); + painter->drawLine( line ); + } + { + QColor lineColor( 30, 30, 30 ); + QLine line( 0, r.height() - 1, r.width(), r.height() - 1 ); + painter->setPen( lineColor ); + painter->drawLine( line ); + }*/ + painter->restore(); } @@ -81,7 +81,7 @@ StyleHelper::horizontalHeader( QPainter* painter, const QRect& r ) QColor StyleHelper::headerTextColor() { - return Qt::white; + return QColor( "#eaeaea" ); } @@ -96,62 +96,62 @@ void StyleHelper::drawArrow( QStyle::PrimitiveElement element, QPainter* p, cons { if ( opt->rect.width() <= 1 || opt->rect.height() <= 1 ) return; - + QRect r = opt->rect; int size = qMin( r.height(), r.width() ); QPixmap pixmap; QString pixmapName; - + pixmapName.sprintf( "arrow-%s-%d-%d-%d-%lld", "$qt_ia", uint(opt->state), element, size, opt->palette.cacheKey() ); if ( !QPixmapCache::find( pixmapName, pixmap ) ) { int border = size / 5; int sqsize = 2 * ( size / 2 ); - + QImage image( sqsize, sqsize, QImage::Format_ARGB32 ); image.fill( 0 ); QPainter imagePainter( &image ); imagePainter.setRenderHint( QPainter::Antialiasing, true ); QPolygon a; - + switch ( element ) { case QStyle::PE_IndicatorArrowUp: a.setPoints( 3, border, sqsize / 2, sqsize / 2, border, sqsize - border, sqsize / 2 ); break; - + case QStyle::PE_IndicatorArrowDown: a.setPoints( 3, border, sqsize / 2, sqsize / 2, sqsize - border, sqsize - border, sqsize / 2 ); break; - + case QStyle::PE_IndicatorArrowRight: a.setPoints( 3, sqsize - border, sqsize / 2, sqsize / 2, border, sqsize / 2, sqsize - border ); break; - + case QStyle::PE_IndicatorArrowLeft: a.setPoints( 3, border, sqsize / 2, sqsize / 2, border, sqsize / 2, sqsize - border ); break; - + default: break; } - + int bsx = 0; int bsy = 0; - + if ( opt->state & QStyle::State_Sunken ) { bsx = qApp->style()->pixelMetric( QStyle::PM_ButtonShiftHorizontal ); bsy = qApp->style()->pixelMetric( QStyle::PM_ButtonShiftVertical ); } - + QRect bounds = a.boundingRect(); int sx = sqsize / 2 - bounds.center().x() - 1; int sy = sqsize / 2 - bounds.center().y() - 1; imagePainter.translate( sx + bsx, sy + bsy ); imagePainter.setPen( opt->palette.buttonText().color() ); imagePainter.setBrush( opt->palette.buttonText() ); - + if ( !( opt->state & QStyle::State_Enabled ) ) { QColor foreGround( 150, 150, 150, 150 ); @@ -170,14 +170,14 @@ void StyleHelper::drawArrow( QStyle::PrimitiveElement element, QPainter* p, cons imagePainter.setPen( foreGround ); imagePainter.setBrush( foreGround ); } - + imagePainter.drawPolygon( a ); imagePainter.end(); - + pixmap = QPixmap::fromImage( image ); QPixmapCache::insert( pixmapName, pixmap ); } - + int xOffset = r.x() + ( r.width() - size ) / 2; int yOffset = r.y() + ( r.height() - size ) / 2; p->drawPixmap( xOffset, yOffset, pixmap ); diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 77a0ccb82..baaa6874d 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -18,12 +18,12 @@ * along with Tomahawk. If not, see . */ +#include "utils/TomahawkUtils.h" + #include "TomahawkVersion.h" #include "config.h" #include "TomahawkSettings.h" -#include "utils/TomahawkUtils.h" -#include "utils/Logger.h" #include "Source.h" #include "BinaryExtractWorker.h" #include "SharedTimeLine.h" @@ -35,7 +35,6 @@ #include #include - #include #include #include @@ -46,6 +45,7 @@ #include #include #include +#include #ifdef Q_OS_WIN #include @@ -61,6 +61,8 @@ #include #endif +#include "Logger.h" + namespace TomahawkUtils { static quint64 s_infosystemRequestId = 0; @@ -774,6 +776,46 @@ crash() } +void +installTranslator( QObject* parent ) +{ +#if QT_VERSION >= 0x040800 + QString locale = QLocale::system().uiLanguages().first().replace( "-", "_" ); +#else + QString locale = QLocale::system().name(); +#endif + if ( locale == "C" ) + locale = "en"; + + // Tomahawk translations + QTranslator* translator = new QTranslator( parent ); + if ( translator->load( QString( ":/lang/tomahawk_" ) + locale ) ) + { + tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using system locale:" << locale; + } + else + { + tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using default locale, system locale one not found:" << locale; + translator->load( QString( ":/lang/tomahawk_en" ) ); + } + + QCoreApplication::installTranslator( translator ); + + // Qt translations + translator = new QTranslator( parent ); + if ( translator->load( QString( ":/lang/qt_" ) + locale ) ) + { + tDebug( LOGVERBOSE ) << "Translation: Qt: Using system locale:" << locale; + } + else + { + tDebug( LOGVERBOSE ) << "Translation: Qt: Using default locale, system locale one not found:" << locale; + } + + QCoreApplication::installTranslator( translator ); +} + + bool verifyFile( const QString& filePath, const QString& signature ) { diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h index a2afcccb2..09a003c8f 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -127,7 +127,6 @@ namespace TomahawkUtils { Original, CoverInCase, - ScaledCover, Grid, DropShadow, RoundedCorners @@ -176,6 +175,8 @@ namespace TomahawkUtils DLLEXPORT QDir appDataDir(); DLLEXPORT QDir appLogDir(); + DLLEXPORT void installTranslator( QObject* parent ); + DLLEXPORT QString timeToString( int seconds ); DLLEXPORT QString ageToString( const QDateTime& time, bool appendAgoString = false ); DLLEXPORT QString filesizeToString( unsigned int size ); diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 4a630bc01..cb61d5c11 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -193,7 +193,7 @@ drawBackgroundAndNumbers( QPainter* painter, const QString& text, const QRect& f painter->setPen( origpen ); painter->setPen( Qt::white ); - painter->drawText( figRect.adjusted( -5, 0, 6, 0 ), text, QTextOption( Qt::AlignCenter ) ); + painter->drawText( figRect.adjusted( -5, 2, 6, 0 ), text, QTextOption( Qt::AlignCenter ) ); painter->restore(); } @@ -436,7 +436,9 @@ defaultImagePath( ImageType type, ImageMode mode ) case DefaultTrackImage: if ( mode == Grid ) - return QLatin1String( RESPATH "images/track-placeholder-grid.svg" ); + pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/track-placeholder-grid.svg", size ); + else if ( mode == RoundedCorners ) + pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/track-icon.svg", size, TomahawkUtils::RoundedCorners ); else return QLatin1String( RESPATH "images/track-icon.svg" ); break; diff --git a/src/libtomahawk/utils/TomahawkUtils_Mac.mm b/src/libtomahawk/utils/TomahawkUtils_Mac.mm index 28b03e0e3..04007b63c 100644 --- a/src/libtomahawk/utils/TomahawkUtils_Mac.mm +++ b/src/libtomahawk/utils/TomahawkUtils_Mac.mm @@ -18,8 +18,7 @@ #include "mac/FileHelpers.h" -#import -#import +#import #include "TomahawkUtils.h" #include "TomahawkUtils_Mac.h" diff --git a/src/libtomahawk/widgets/BasicHeader.cpp b/src/libtomahawk/widgets/BasicHeader.cpp index ed797efdd..664aa13e8 100644 --- a/src/libtomahawk/widgets/BasicHeader.cpp +++ b/src/libtomahawk/widgets/BasicHeader.cpp @@ -130,9 +130,9 @@ BasicHeader::paintEvent( QPaintEvent* event ) QLinearGradient gradient( QPoint( 0, 0 ), QPoint( 0, 1 ) ); gradient.setCoordinateMode( QGradient::ObjectBoundingMode ); - gradient.setColorAt( 0.0, QColor( "#615858" ) ); - gradient.setColorAt( 1.0, QColor( "#231F1F" ) ); + gradient.setColorAt( 0.0, QColor( "#707070" ) ); + gradient.setColorAt( 1.0, QColor( "#25292c" ) ); painter.setBrush( gradient ); - painter.fillRect( event->rect(), gradient ); + painter.fillRect( rect(), gradient ); } diff --git a/src/libtomahawk/widgets/HeaderWidget.cpp b/src/libtomahawk/widgets/HeaderWidget.cpp index c35b86013..b40fdb68c 100644 --- a/src/libtomahawk/widgets/HeaderWidget.cpp +++ b/src/libtomahawk/widgets/HeaderWidget.cpp @@ -40,7 +40,7 @@ void HeaderWidget::paintEvent( QPaintEvent* e ) { QStylePainter p( this ); - QRect r = e->rect(); + QRect r = rect(); StyleHelper::horizontalHeader( &p, r ); } diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 20cbfd47c..74eca96f3 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -18,6 +18,7 @@ #include "PlayableCover.h" +#include "Album.h" #include "audio/AudioEngine.h" #include "widgets/ImageButton.h" #include "utils/TomahawkUtilsGui.h" @@ -28,6 +29,7 @@ PlayableCover::PlayableCover( QWidget* parent ) : QLabel( parent ) + , m_showText( false ) { setMouseTracking( true ); @@ -75,6 +77,139 @@ PlayableCover::resizeEvent( QResizeEvent* event ) } +void +PlayableCover::setPixmap( const QPixmap& pixmap ) +{ + m_pixmap = TomahawkUtils::createRoundedImage( pixmap, size() ); +} + + +void +PlayableCover::paintEvent( QPaintEvent* event ) +{ + QPainter painter( this ); + painter.setRenderHint( QPainter::Antialiasing ); + painter.drawPixmap( 0, 0, pixmap() ); + + if ( !m_showText ) + return; + + QRect r = contentsRect().adjusted( margin(), margin(), -margin(), -margin() ); + QPixmap buffer( r.size() ); + buffer.fill( Qt::transparent ); + QPainter bufpainter( &buffer ); + + QTextOption to; + to.setWrapMode( QTextOption::NoWrap ); + + QColor c1; + c1.setRgb( 0, 0, 0 ); + c1.setAlphaF( 0.00 ); + QColor c2; + c2.setRgb( 0, 0, 0 ); + c2.setAlphaF( 0.88 ); + + QString text; + QFont font = QLabel::font(); + font.setPointSize( TomahawkUtils::defaultFontSize() ); + QFont boldFont = font; + boldFont.setBold( true ); + boldFont.setPointSize( TomahawkUtils::defaultFontSize() + 5 ); + + QString top, bottom; + if ( m_artist ) + { + top = m_artist->name(); + } + else if ( m_album ) + { + top = m_album->name(); + bottom = m_album->artist()->name(); + } + else if ( m_query ) + { + top = m_query->track(); + bottom = m_query->artist(); + } + + int bottomHeight = QFontMetrics( font ).boundingRect( bottom ).height(); + int topHeight = QFontMetrics( boldFont ).boundingRect( top ).height(); + int frameHeight = bottomHeight + topHeight + 4; + + QRect gradientRect = r.adjusted( 0, r.height() - frameHeight * 3, 0, 0 ); + QLinearGradient gradient( QPointF( 0, 0 ), QPointF( 0, 1 ) ); + gradient.setCoordinateMode( QGradient::ObjectBoundingMode ); + gradient.setColorAt( 0.0, c1 ); + gradient.setColorAt( 0.6, c2 ); + gradient.setColorAt( 1.0, c2 ); + + bufpainter.save(); + bufpainter.setPen( Qt::transparent ); + bufpainter.setBrush( gradient ); + bufpainter.drawRect( gradientRect ); + bufpainter.restore(); + + bufpainter.setPen( Qt::white ); + + QRect textRect = r.adjusted( 8, r.height() - frameHeight - 16, -8, -16 ); + bool oneLiner = false; + if ( bottom.isEmpty() ) + oneLiner = true; + + bufpainter.setFont( boldFont ); + if ( oneLiner ) + { + bufpainter.save(); + QFont f = bufpainter.font(); + + while ( f.pointSizeF() > 9 && bufpainter.fontMetrics().width( top ) > textRect.width() ) + { + f.setPointSizeF( f.pointSizeF() - 0.2 ); + bufpainter.setFont( f ); + } + + to.setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); + text = bufpainter.fontMetrics().elidedText( top, Qt::ElideRight, textRect.width() - 3 ); + bufpainter.drawText( textRect, text, to ); + + bufpainter.restore(); + } + else + { + to.setAlignment( Qt::AlignHCenter | Qt::AlignTop ); + text = bufpainter.fontMetrics().elidedText( top, Qt::ElideRight, textRect.width() - 3 ); + bufpainter.drawText( textRect, text, to ); + + bufpainter.setFont( font ); + // If the user is hovering over an artist rect, draw a background so she knows it's clickable + QRect r = textRect; + r.setTop( r.bottom() - bufpainter.fontMetrics().height() ); + r.adjust( 4, 0, -4, -1 ); +/* if ( m_hoveringOver == index ) + { + TomahawkUtils::drawQueryBackground( bufpainter, opt.palette, r, 1.1 ); + bufpainter.setPen( opt.palette.color( QPalette::HighlightedText ) ); + }*/ + + to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); + text = bufpainter.fontMetrics().elidedText( bottom, Qt::ElideRight, textRect.width() - 16 ); + bufpainter.drawText( textRect.adjusted( 5, -1, -5, -1 ), text, to ); + } + + { + QBrush brush( buffer ); + QPen pen; + pen.setColor( Qt::transparent ); + pen.setJoinStyle( Qt::RoundJoin ); + + float frameWidthPct = 0.20; + painter.setBrush( brush ); + painter.setPen( pen ); + painter.drawRoundedRect( r, frameWidthPct * 100.0, frameWidthPct * 100.0, Qt::RelativeSize ); + } +} + + void PlayableCover::onClicked() { diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index 5bc505e75..9179a0f0e 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -40,13 +40,21 @@ public: PlayableCover( QWidget* parent = 0 ); virtual ~PlayableCover(); + bool showText() const { return m_showText; } + void setShowText( bool b ) { m_showText = b; } + + QPixmap pixmap() const { return m_pixmap; } + public slots: virtual void setArtist( const Tomahawk::artist_ptr& artist ); virtual void setAlbum( const Tomahawk::album_ptr& album ); virtual void setQuery( const Tomahawk::query_ptr& query ); + void setPixmap( const QPixmap& pixmap ); + protected: virtual void resizeEvent( QResizeEvent* event ); + virtual void paintEvent( QPaintEvent* event ); void leaveEvent( QEvent* event ); void enterEvent( QEvent* event ); @@ -61,6 +69,8 @@ private: Tomahawk::artist_ptr m_artist; Tomahawk::album_ptr m_album; Tomahawk::query_ptr m_query; + + bool m_showText; }; #endif diff --git a/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm b/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm index 8ae495eaf..4babab457 100644 --- a/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm +++ b/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm @@ -20,9 +20,7 @@ #include -#import -#import -#import +#import void SourceTreePopupHelper::clearBackground( QWidget* widget ) diff --git a/src/libtomahawk/widgets/WelcomeWidget.cpp b/src/libtomahawk/widgets/WelcomeWidget.cpp index 160352811..f33d0d36c 100644 --- a/src/libtomahawk/widgets/WelcomeWidget.cpp +++ b/src/libtomahawk/widgets/WelcomeWidget.cpp @@ -282,7 +282,7 @@ PlaylistDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, rect.setTop( pixmapRect.bottom() - painter->fontMetrics().height() - 1 ); rect.setBottom( pixmapRect.bottom() + 1 ); - QColor figColor( "#464b55" ); + QColor figColor( "#454e59" ); painter->setPen( figColor ); painter->setBrush( figColor ); diff --git a/src/libtomahawk/widgets/WhatsHotWidget.cpp b/src/libtomahawk/widgets/WhatsHotWidget.cpp index 9e4347c85..31704a062 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.cpp +++ b/src/libtomahawk/widgets/WhatsHotWidget.cpp @@ -123,7 +123,7 @@ WhatsHotWidget::~WhatsHotWidget() { qDebug() << "Deleting whatshot"; // Write the settings - qDebug() << "Writing chartIds to settings: " << m_currentVIds; + qDebug() << "Writing chartIds to settings:" << m_currentVIds; TomahawkSettings::instance()->setLastChartIds( m_currentVIds ); qDeleteAll( m_workers ); m_workers.clear(); @@ -175,7 +175,6 @@ WhatsHotWidget::jumpToCurrentTrack() void WhatsHotWidget::fetchData() { - Tomahawk::InfoSystem::InfoStringHash criteria; Tomahawk::InfoSystem::InfoRequestData requestData; @@ -384,7 +383,6 @@ WhatsHotWidget::infoSystemFinished( QString target ) void WhatsHotWidget::leftCrumbIndexChanged( QModelIndex index ) { - tDebug( LOGVERBOSE ) << "WhatsHot: left crumb changed" << index.data(); QStandardItem* item = m_crumbModelLeft->itemFromIndex( m_sortedProxy->mapToSource( index ) ); if ( !item ) @@ -530,13 +528,13 @@ WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, cons return sourceItem; } + void WhatsHotWidget::setLeftViewAlbums( PlayableModel* model ) { ui->albumsView->setPlayableModel( model ); ui->albumsView->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsViewLeft->setTreeModel ui->stackLeft->setCurrentIndex( 2 ); - } diff --git a/src/libtomahawk/widgets/WhatsHotWidget.h b/src/libtomahawk/widgets/WhatsHotWidget.h index 96ea99848..d42b34f10 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.h +++ b/src/libtomahawk/widgets/WhatsHotWidget.h @@ -97,8 +97,8 @@ private: void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewTracks( PlaylistModel* trackModel ); - QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ); + Ui::WhatsHotWidget *ui; Tomahawk::playlistinterface_ptr m_playlistInterface; diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp index 1719160b1..cbece81f8 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp @@ -26,6 +26,7 @@ #include "database/Database.h" #include "playlist/TreeModel.h" #include "playlist/PlayableModel.h" +#include "playlist/AlbumItemDelegate.h" #include "playlist/GridItemDelegate.h" #include "Source.h" #include "MetaPlaylistInterface.h" @@ -50,7 +51,7 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par ui->setupUi( widget ); QPalette pal = palette(); - pal.setColor( QPalette::Window, QColor( "#454e59" ) ); + pal.setColor( QPalette::Window, QColor( "#272b2e" ) ); widget->setPalette( pal ); widget->setAutoFillBackground( true ); @@ -61,10 +62,14 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par m_tracksModel = new TreeModel( ui->tracks ); m_tracksModel->setMode( Mixed ); - ui->tracks->setTreeModel( m_tracksModel ); ui->tracks->setRootIsDecorated( false ); ui->tracks->setEmptyTip( tr( "Sorry, we could not find any tracks for this album!" ) ); - ui->tracks->proxyModel()->setStyle( PlayableProxyModel::Collection ); + ui->tracks->proxyModel()->setStyle( PlayableProxyModel::Large ); + ui->tracks->setAutoResize( true ); + ui->tracks->setPlayableModel( m_tracksModel ); + + AlbumItemDelegate* del = new AlbumItemDelegate( ui->tracks, ui->tracks->proxyModel() ); + ui->tracks->setPlaylistItemDelegate( del ); ui->albums->setAutoFitItems( false ); ui->albums->setWrapping( false ); @@ -76,34 +81,22 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par ui->tracks->setFrameShape( QFrame::StyledPanel ); ui->tracks->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - m_iconSource = TomahawkUtils::defaultImagePath( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover ); - ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover, QSize( ui->cover->sizeHint() ) ) ); + m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, QSize( 48, 48 ) ); + ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Grid, ui->cover->size() ) ); + ui->cover->setShowText( true ); ui->biography->setFrameShape( QFrame::NoFrame ); ui->biography->setAttribute( Qt::WA_MacShowFocusRect, 0 ); TomahawkUtils::styleScrollBar( ui->biography->verticalScrollBar() ); - QFont f = font(); - f.setBold( true ); - f.setPointSize( TomahawkUtils::defaultFontSize() + 7 ); - ui->albumLabel->setFont( f ); -// ui->similarTracksLabel->setFont( f ); - - f.setPointSize( TomahawkUtils::defaultFontSize() + 4 ); - ui->artistLabel->setFont( f ); - QPalette p = ui->biography->palette(); p.setColor( QPalette::Foreground, Qt::white ); p.setColor( QPalette::Text, Qt::white ); - ui->albumLabel->setPalette( p ); - ui->artistLabel->setPalette( p ); ui->biography->setPalette( p ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); - ui->artistLabel->setType( QueryLabel::Artist ); - QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); area->setWidget( widget ); @@ -125,13 +118,12 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par ui->albums->setStyleSheet( "QListView { background-color: transparent; }" ); ui->albumFrame->setStyleSheet( "QFrame#albumFrame { background-color: transparent; }" "QFrame#albumFrame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); -// ui->topHits->setStyleSheet( "QTreeView#topHits { background-color: transparent; }" ); ui->trackFrame->setStyleSheet( "QFrame#trackFrame { background-color: transparent; }" "QFrame#trackFrame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); @@ -140,8 +132,6 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par m_playlistInterface = playlistinterface_ptr( mpl ); load( album ); - - connect( ui->artistLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) ); } @@ -197,10 +187,8 @@ AlbumInfoWidget::load( const album_ptr& album ) m_album = album; m_title = album->name(); - connect( m_album.data(), SIGNAL( updated() ), SLOT( onArtistImageUpdated() ) ); + connect( m_album.data(), SIGNAL( updated() ), SLOT( onAlbumImageUpdated() ) ); - ui->artistLabel->setArtist( album->artist() ); - ui->albumLabel->setText( album->name() ); ui->label_2->setText( tr( "Other Albums by %1" ).arg( album->artist()->name() ) ); ui->cover->setAlbum( album ); diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui index 01e71ae4e..a4d3b1b66 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui @@ -11,320 +11,202 @@ - Form + Form - + + + 16 + + + 12 + - - - 12 - - - 12 - - + + 16 - - 12 + + 0 - - - 0 + + + + 0 + 0 + - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 8 - - - - - - 18 - 75 - true - - - - Tracklist - - - 0 - - - - - - - - 0 - 300 - - - - true - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 4 - - - - - - Arial - 18 - 75 - true - - - - Other Albums - - - 0 - - - - - - - - 0 - 0 - - - - - 0 - 190 - - - - - - - - + + + 260 + 260 + + + + Cover + + + Qt::AlignCenter + + - - - -1 + + + + 0 + 0 + - - 16 + + + 0 + 240 + - - 0 + + Qt::ScrollBarAlwaysOff - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 220 - 220 - - - - Cover - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 13 - - - - - - - - 4 - - - 0 - - - - - 4 - - - 0 - - - - - Album - - - Qt::AlignCenter - - - - - - - - - 4 - - - 0 - - - - - Artist - - - Qt::AlignCenter - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 13 - - - - - - - - - 0 - 0 - - - - - 0 - 240 - - - - Qt::ScrollBarAlwaysOff - - - - + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 8 + + + + + + 18 + 75 + true + + + + Tracklist + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 300 + + + + true + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 4 + + + + + + Arial + 18 + 75 + true + + + + Other Albums + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 190 + + + + + + + @@ -334,14 +216,9 @@
playlist/GridView.h
- TreeView + TrackView QTreeView -
playlist/TreeView.h
-
- - QueryLabel - QLabel -
widgets/QueryLabel.h
+
playlist/TrackView.h
PlayableCover diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index 0657fe4fa..adff3ca25 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -51,7 +51,7 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->setupUi( widget ); QPalette pal = palette(); - pal.setColor( QPalette::Window, QColor( "#231F1F" ) ); + pal.setColor( QPalette::Window, QColor( "##272b2e" ) ); widget->setPalette( pal ); widget->setAutoFillBackground( true ); @@ -61,10 +61,6 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* TomahawkUtils::unmarginLayout( ui->layoutWidget2->layout() ); TomahawkUtils::unmarginLayout( ui->albumHeader->layout() );*/ - ui->artistLabel_2->setVisible( false ); - ui->biography_2->setVisible( false ); - ui->cover_2->setVisible( false ); - m_albumsModel = new PlayableModel( ui->albums ); ui->albums->setPlayableModel( m_albumsModel ); ui->albums->setEmptyTip( tr( "Sorry, we could not find any albums for this artist!" ) ); @@ -96,8 +92,9 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->topHits->setFrameShape( QFrame::StyledPanel ); ui->topHits->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - m_iconSource = TomahawkUtils::defaultImagePath( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover ); - ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover, QSize( ui->cover->sizeHint() ) ) ); + m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, QSize( 48, 48 ) ); + ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Grid, ui->cover->size() ) ); + ui->cover->setShowText( true ); QFont f = font(); f.setPointSize( f.pointSize() + 1 ); @@ -108,15 +105,10 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->biography->setFont( f ); TomahawkUtils::styleScrollBar( ui->biography->verticalScrollBar() ); - f.setBold( true ); - f.setPointSize( TomahawkUtils::defaultFontSize() + 8 ); - ui->artistLabel->setFont( f ); - QPalette p = ui->biography->palette(); p.setColor( QPalette::Foreground, Qt::white ); p.setColor( QPalette::Text, Qt::gray ); - ui->artistLabel->setPalette( p ); ui->biography->setPalette( p ); ui->label->setPalette( p ); ui->label_2->setPalette( p ); @@ -144,19 +136,19 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->albums->setStyleSheet( "QListView { background-color: transparent; }" ); ui->albumFrame->setStyleSheet( "QFrame#albumFrame { background-color: transparent; }" "QFrame#albumFrame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); ui->relatedArtists->setStyleSheet( "QListView { background-color: transparent; }" ); ui->artistFrame->setStyleSheet( "QFrame#artistFrame { background-color: transparent; }" "QFrame#artistFrame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); // ui->topHits->setStyleSheet( "QTreeView#topHits { background-color: transparent; }" ); ui->trackFrame->setStyleSheet( "QFrame#trackFrame { background-color: transparent; }" "QFrame#trackFrame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); connect( ui->biography, SIGNAL( anchorClicked( QUrl ) ), SLOT( onBiographyLinkClicked( QUrl ) ) ); @@ -254,7 +246,6 @@ ArtistInfoWidget::load( const artist_ptr& artist ) connect( m_artist.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ), SLOT( onTracksFound( QList, Tomahawk::ModelMode ) ) ); - ui->artistLabel->setText( artist->name() ); ui->cover->setArtist( artist ); m_topHitsModel->startLoading(); @@ -320,7 +311,7 @@ ArtistInfoWidget::onArtistImageUpdated() m_iconSource = QLatin1String( "image://albumart/" ) + m_artist->coverId(); emit pixmapChanged( m_iconSource ); - ui->cover->setPixmap( TomahawkUtils::createRoundedImage( m_artist->cover( ui->cover->sizeHint() ), QSize( 0, 0 ) ) ); + ui->cover->setPixmap( m_artist->cover( QSize( 0, 0 ) ) ); } diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui index e39bf628d..3ad93f889 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui @@ -7,446 +7,273 @@ 0 0 965 - 1242 + 1179 - Form + Form - + + + 16 + + + 12 + - - 12 - - - 12 - - + 16 - - 12 + + 0 - - - - - 16 - - - - - - - Artist - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 4 - - - - - - - - - 0 - 0 - - - - - 220 - 220 - - - - Cover - - - Qt::AlignCenter - - - - - - - - - - 0 - 0 - - - - - 0 - 240 - - - - Qt::ScrollBarAlwaysOff - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 8 - - - - - - 18 - 75 - true - - - - Top Hits - - - 0 - - - - - - - - 0 - 300 - - - - true - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 4 - - - - - - Arial - 18 - 75 - true - - - - Albums - - - 0 - - - - - - - - 0 - 0 - - - - - 0 - 190 - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 4 - - - - - - Arial - 18 - 75 - true - - - - Related Artists - - - 0 - - - - - - - - 0 - 0 - - - - - 0 - 190 - - - - - - - - + + + + 0 + 0 + + + + + 260 + 260 + + + + Cover + + + Qt::AlignCenter + + - - - 0 + + + + 0 + 0 + - - - - - 0 - 0 - - - - - 220 - 220 - - - - Cover - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 1 - 8 - - - - - - - - Artist - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 1 - 12 - - - - - - - - - 0 - 0 - - - - - 0 - 240 - - - - Qt::ScrollBarAlwaysOff - - - - + + + 0 + 240 + + + + Qt::ScrollBarAlwaysOff + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 8 + + + + + + 18 + 75 + true + + + + Top Hits + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 300 + + + + true + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 4 + + + + + + Arial + 18 + 75 + true + + + + Albums + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 190 + + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 4 + + + + + + Arial + 18 + 75 + true + + + + Related Artists + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 190 + + + + + + + diff --git a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp index aa2c55c4c..8af678994 100644 --- a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp @@ -44,61 +44,47 @@ TrackInfoWidget::TrackInfoWidget( const Tomahawk::query_ptr& query, QWidget* par ui->setupUi( widget ); QPalette pal = palette(); - pal.setColor( QPalette::Window, QColor( "#454e59" ) ); + pal.setColor( QPalette::Window, QColor( "#272b2e" ) ); widget->setPalette( pal ); widget->setAutoFillBackground( true ); - ui->rightBar->setPalette( pal ); - ui->rightBar->setAutoFillBackground( true ); ui->statsLabel->setStyleSheet( "QLabel { background-image:url(); border: 2px solid #dddddd; background-color: #faf9f9; border-radius: 4px; padding: 12px; }" ); ui->lyricsView->setStyleSheet( "QTextBrowser#lyricsView { background-color: transparent; }" ); ui->lyricsView->setFrameShape( QFrame::NoFrame ); ui->lyricsView->setAttribute( Qt::WA_MacShowFocusRect, 0 ); + ui->lyricsView->setVisible( false ); // FIXME eventually ui->similarTracksView->setAutoResize( true ); ui->similarTracksView->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); // TomahawkUtils::styleScrollBar( ui->similarTracksView->verticalScrollBar() ); TomahawkUtils::styleScrollBar( ui->lyricsView->verticalScrollBar() ); - QFont f = font(); - f.setBold( true ); - f.setPointSize( TomahawkUtils::defaultFontSize() + 7 ); - ui->trackLabel->setFont( f ); -// ui->similarTracksLabel->setFont( f ); - - f.setPointSize( TomahawkUtils::defaultFontSize() + 4 ); - ui->artistLabel->setFont( f ); - ui->albumLabel->setFont( f ); - - f.setPointSize( TomahawkUtils::defaultFontSize() + 2 ); - ui->statsLabel->setFont( f ); - // ui->similarTracksView->setStyleSheet( "QListView { background-color: transparent; } QListView::item { background-color: transparent; }" ); - QPalette p = ui->trackLabel->palette(); + QFont f = ui->statsLabel->font(); + f.setPointSize( TomahawkUtils::defaultFontSize() + 2 ); + f.setBold( true ); + ui->statsLabel->setFont( f ); + + QPalette p = ui->lyricsView->palette(); p.setColor( QPalette::Foreground, Qt::white ); p.setColor( QPalette::Text, Qt::white ); - ui->trackLabel->setPalette( p ); - ui->artistLabel->setPalette( p ); - ui->albumLabel->setPalette( p ); ui->lyricsView->setPalette( p ); ui->label->setPalette( p ); // ui->similarTracksLabel->setPalette( p ); - ui->artistLabel->setType( QueryLabel::Artist ); - ui->albumLabel->setType( QueryLabel::Album ); - m_relatedTracksModel = new PlayableModel( ui->similarTracksView ); ui->similarTracksView->setPlayableModel( m_relatedTracksModel ); ui->similarTracksView->proxyModel()->sort( -1 ); ui->similarTracksView->setEmptyTip( tr( "Sorry, but we could not find similar tracks for this song!" ) ); - m_iconSource = TomahawkUtils::defaultImagePath( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover); - ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::ScaledCover, QSize( ui->cover->sizeHint() ) ) ); - + m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::Original, QSize( 48, 48 ) ); + ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::Grid, ui->cover->size() ) ); + ui->cover->setShowText( true ); + m_scrollArea = new QScrollArea(); m_scrollArea->setWidgetResizable( true ); m_scrollArea->setWidget( widget ); @@ -116,13 +102,10 @@ TrackInfoWidget::TrackInfoWidget( const Tomahawk::query_ptr& query, QWidget* par ui->similarTracksView->setStyleSheet( "QListView { background-color: transparent; }" ); ui->frame->setStyleSheet( "QFrame#frame { background-color: transparent; }" "QFrame#frame { " - "border-image: url(" RESPATH "images/scrollbar-vertical-handle.png) 3 3 3 3 stretch stretch;" + "border-image: url(" RESPATH "images/widget-border.png) 3 3 3 3 stretch stretch;" "border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; }" ); load( query ); - - connect( ui->artistLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) ); - connect( ui->albumLabel, SIGNAL( clickedAlbum() ), SLOT( onAlbumClicked() ) ); } @@ -198,10 +181,6 @@ TrackInfoWidget::load( const query_ptr& query ) // m_query->lyrics(); onCoverUpdated(); - ui->trackLabel->setText( query->track() ); - ui->artistLabel->setQuery( query ); - ui->albumLabel->setQuery( query ); - ui->albumLabel->setVisible( !query->album().isEmpty() ); ui->cover->setQuery( query ); m_relatedTracksModel->clear(); diff --git a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui index ea9da93d5..9a36699d3 100644 --- a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui +++ b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui @@ -11,307 +11,162 @@ - Form + Form - + + + 16 + - 0 + 12 - - - 12 + + + 16 - - 0 - - - 0 - - + 0 - - - 0 + + + + 0 + 0 + - - 12 + + + 260 + 260 + - - 0 + + Cover - - 12 + + Qt::AlignCenter - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 4 - - - 8 - - - 4 - - - 8 - - - 8 - - - - - - Arial - 18 - 75 - true - - - - Similar Tracks - - - 0 - - - - - - - - 0 - 0 - - - - - - - - + - - - 4 + + + Qt::Horizontal - - 0 + + + 40 + 20 + - - - - - 0 - 0 - - - - - 300 - 500 - - - - - 0 - - - 16 - - - 12 - - - 16 - - - 12 - - - - - - 0 - 0 - - - - - 220 - 220 - - - - Cover - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 8 - - - - - - - - 4 - - - 0 - - - - - Track - - - Qt::AlignCenter - - - - - - - 4 - - - 0 - - - - - Artist - - - Qt::AlignCenter - - - - - - - - - 4 - - - 0 - - - - - Album - - - Qt::AlignCenter - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - Statistics - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 12 - - - - - - - - - 0 - 0 - - - - - 300 - 0 - - - - false - - - - - - - + + + + + + + 0 + 0 + + + + + 16777215 + 260 + + + + Statistics + + + Qt::AlignCenter + + + + + + + 0 + 0 + + + + + 300 + 0 + + + + false + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 4 + + + 8 + + + 4 + + + 8 + + + 8 + + + + + + Arial + 18 + 75 + true + + + + Similar Tracks + + + 0 + + + + + + + + 0 + 0 + + + + + + + @@ -320,11 +175,6 @@ QListView
playlist/GridView.h
- - QueryLabel - QLabel -
widgets/QueryLabel.h
-
PlayableCover QLabel diff --git a/src/mac/MacDelegate.h b/src/mac/MacDelegate.h index bf0ad9a6d..c9c0e0e3a 100644 --- a/src/mac/MacDelegate.h +++ b/src/mac/MacDelegate.h @@ -3,7 +3,7 @@ // This file inspired by clementine's MacDelegate.h -#import +#import #include "SPMediaKeyTap.h" diff --git a/src/mac/MacShortcutHandler.cpp b/src/mac/MacShortcutHandler.cpp index 41daf80e3..df470ba94 100644 --- a/src/mac/MacShortcutHandler.cpp +++ b/src/mac/MacShortcutHandler.cpp @@ -39,10 +39,12 @@ MacShortcutHandler::macMediaKeyPressed( int key ) emit playPause(); break; case NX_KEYTYPE_FAST: + case NX_KEYTYPE_NEXT: qDebug() << "emitting next pressed"; emit next(); break; case NX_KEYTYPE_REWIND: + case NX_KEYTYPE_PREVIOUS: qDebug() << "emitting prev pressed"; emit previous(); break; diff --git a/src/mac/TomahawkApp_Mac.mm b/src/mac/TomahawkApp_Mac.mm index c9ab976a6..ef4e81e07 100644 --- a/src/mac/TomahawkApp_Mac.mm +++ b/src/mac/TomahawkApp_Mac.mm @@ -24,18 +24,7 @@ #include "TomahawkWindow.h" #include "audio/AudioEngine.h" -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import +#import #ifdef HAVE_SPARKLE #import diff --git a/src/sourcetree/SourceDelegate.cpp b/src/sourcetree/SourceDelegate.cpp index 58d2f23f4..0f5286b74 100644 --- a/src/sourcetree/SourceDelegate.cpp +++ b/src/sourcetree/SourceDelegate.cpp @@ -21,13 +21,16 @@ #include "SourceDelegate.h" +#include +#include +#include + #include "items/SourceTreeItem.h" #include "items/SourceItem.h" #include "items/PlaylistItems.h" #include "items/CategoryItems.h" #include "items/TemporaryPageItem.h" -#include "utils/TomahawkUtilsGui.h" #include "audio/AudioEngine.h" #include "AnimationHelper.h" #include "Source.h" @@ -35,10 +38,8 @@ #include "ActionCollection.h" #include "ViewManager.h" #include "ContextMenu.h" - -#include -#include -#include +#include "utils/TomahawkUtilsGui.h" +#include "utils/Logger.h" #define TREEVIEW_INDENT_ADD 12 @@ -191,6 +192,7 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& bool isPlaying = !( colItem->source()->currentTrack().isNull() ); QString desc = colItem->source()->textStatus(); + QColor descColor = QColor( "#8d8d8d" ); if ( colItem->source().isNull() ) desc = tr( "All available tracks" ); @@ -249,6 +251,9 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& } else m_lockRects.remove( index ); + + if ( isPlaying ) + descColor = Qt::black; } if ( m_trackHovered == index ) @@ -261,6 +266,7 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& text = painter->fontMetrics().elidedText( desc, Qt::ElideRight, textRect.width() - 8 ); QTextOption to( Qt::AlignVCenter ); to.setWrapMode( QTextOption::NoWrap ); + painter->setPen( descColor ); painter->drawText( textRect, text, to ); if ( colItem->source() && colItem->source()->currentTrack() ) diff --git a/src/sourcetree/items/HistoryItem.cpp b/src/sourcetree/items/HistoryItem.cpp index 93be20dc1..f45143b53 100644 --- a/src/sourcetree/items/HistoryItem.cpp +++ b/src/sourcetree/items/HistoryItem.cpp @@ -28,6 +28,8 @@ using namespace Tomahawk; +const unsigned int MAX_HISTORY_ITEMS = 15; // 0 disables this feature + HistoryItem::HistoryItem( SourcesModel* model, SourceTreeItem* parent, const QString& text, int peerSortValue ) : GroupItem( model, parent, text, peerSortValue ) @@ -60,8 +62,8 @@ HistoryItem::tempPageActivated( Tomahawk::ViewPage* v ) } } - // Only keep 5 temporary pages at once - while ( m_tempItems.size() > 4 ) + // Only keep a certain amount of temporary pages at once + while ( MAX_HISTORY_ITEMS > 0 && m_tempItems.size() > (int)MAX_HISTORY_ITEMS - 1 ) { TemporaryPageItem* item = m_tempItems.takeFirst(); QTimer::singleShot( 0, item, SLOT( removeFromList() ) );