From b81e4410eaf429d1b33ee0c6ccdf7c9ab5fe5fc7 Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Fri, 21 Dec 2012 03:47:50 +0200 Subject: [PATCH 01/23] Fix showing of translations in crash reporter --- CMakeLists.txt | 2 ++ src/CMakeLists.txt | 2 +- src/TomahawkApp.cpp | 42 +---------------------- src/TomahawkApp.h | 1 - src/breakpad/CrashReporter/CMakeLists.txt | 6 +++- src/breakpad/CrashReporter/main.cpp | 9 ++--- src/libtomahawk/utils/TomahawkUtils.cpp | 39 +++++++++++++++++++++ src/libtomahawk/utils/TomahawkUtils.h | 2 ++ 8 files changed, 53 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f0283ebf..a254e8fd2 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 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d8f9e03b1..2889ce63c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -155,7 +155,7 @@ INCLUDE(GNUInstallDirs) # translations include( ${CMAKE_SOURCE_DIR}/lang/translations.cmake ) -add_tomahawk_translations(ar bg ca de en es fi 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/TomahawkApp.cpp b/src/TomahawkApp.cpp index bcf50b32a..28c148602 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -146,47 +146,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); } 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/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..6b58515e3 100644 --- a/src/breakpad/CrashReporter/main.cpp +++ b/src/breakpad/CrashReporter/main.cpp @@ -18,6 +18,8 @@ #include "CrashReporter.h" +#include "utils/TomahawkUtils.h" + #include #include @@ -36,12 +38,7 @@ int main( int argc, char* argv[] ) 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/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 77a0ccb82..5864ebe72 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef Q_OS_WIN #include @@ -773,6 +774,44 @@ crash() *a = 1; } +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 8a40e3cac..8da42e4b5 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -212,6 +212,8 @@ namespace TomahawkUtils DLLEXPORT QList< Tomahawk::query_ptr > mergePlaylistChanges( const QList< Tomahawk::query_ptr >& orig, const QList< Tomahawk::query_ptr >& newTracks, bool& changed ); DLLEXPORT void crash(); + + DLLEXPORT void installTranslator(QObject *parent); } #endif // TOMAHAWKUTILS_H From 12bea3708b65d762c4d0b29b7dc4edb767f11442 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 03:26:23 +0100 Subject: [PATCH 02/23] * TreeView now tries to fallback to playing a query when there's no online result. --- src/libtomahawk/playlist/TreeView.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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() ); + } } } From 394bda7aca4af4dd28f69815d73db45f7d3d4a31 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 05:55:34 +0100 Subject: [PATCH 03/23] * Style fixes. --- src/TomahawkApp.cpp | 2 +- src/breakpad/CrashReporter/main.cpp | 9 ++++----- src/libtomahawk/utils/TomahawkUtils.cpp | 11 +++++++---- src/libtomahawk/utils/TomahawkUtils.h | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index 28c148602..dc770846c 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -146,7 +146,7 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) setApplicationVersion( QLatin1String( TOMAHAWK_VERSION ) ); registerMetaTypes(); - TomahawkUtils::installTranslator(this); + TomahawkUtils::installTranslator( this ); } diff --git a/src/breakpad/CrashReporter/main.cpp b/src/breakpad/CrashReporter/main.cpp index 6b58515e3..7ae70acbe 100644 --- a/src/breakpad/CrashReporter/main.cpp +++ b/src/breakpad/CrashReporter/main.cpp @@ -18,11 +18,11 @@ #include "CrashReporter.h" +#include +#include + #include "utils/TomahawkUtils.h" -#include - -#include const char* k_usage = "Usage:\n" @@ -37,8 +37,7 @@ int main( int argc, char* argv[] ) QCoreApplication::setOrganizationDomain( "tomahawk-player.org" ); QApplication app( argc, argv ); - - TomahawkUtils::installTranslator(&app); + TomahawkUtils::installTranslator( &app ); if ( app.arguments().size() != 4 ) { diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 5864ebe72..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 @@ -62,6 +61,8 @@ #include #endif +#include "Logger.h" + namespace TomahawkUtils { static quint64 s_infosystemRequestId = 0; @@ -774,8 +775,9 @@ crash() *a = 1; } + void -installTranslator(QObject* parent) +installTranslator( QObject* parent ) { #if QT_VERSION >= 0x040800 QString locale = QLocale::system().uiLanguages().first().replace( "-", "_" ); @@ -813,6 +815,7 @@ installTranslator(QObject* parent) 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 8da42e4b5..c5b340184 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -169,6 +169,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 ); @@ -212,8 +214,6 @@ namespace TomahawkUtils DLLEXPORT QList< Tomahawk::query_ptr > mergePlaylistChanges( const QList< Tomahawk::query_ptr >& orig, const QList< Tomahawk::query_ptr >& newTracks, bool& changed ); DLLEXPORT void crash(); - - DLLEXPORT void installTranslator(QObject *parent); } #endif // TOMAHAWKUTILS_H From 61330e54b43426c9a65e85e01c959f81a9d49e4e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 06:10:00 +0100 Subject: [PATCH 04/23] * Cleaned up ChangeLog. --- ChangeLog | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0b624313..81045a56b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,30 +1,30 @@ Version 0.6.0: - * Ability to sync Spotify Starred Tracks with Tomahawk Loved Tracks - * Support dropping of new Soundcloud user, track, set and Likes URLs - * Remove YouTube resolver from plug-in directory on request of YouTube - * Fixed iTunes m3u playlist support - * New icons - now all vector instead of PNGs - * Lots of design cleanup - * User much higher resolution artist and album images - * Link metadata in artist bios to appropriate Tomahawk views - * Only display Jump Link if there is somewhere for it to jump too - * New AudioControl logic - only enable Prev/Skip buttons if available - * Add HotNewHipHop as available chart - * Add iTunes as available source for New Releases - * Added more options and icons to right-click/context menu - * Make friends' Now 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. - * Allow disabling of Song Change Notifications (Linux) + * 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, Artist & Track pages. - * 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 From 50daf3acbfafb8a0b34f89d0ac480c5667415b28 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sun, 23 Dec 2012 06:47:35 +0100 Subject: [PATCH 05/23] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_bg.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_bn_IN.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_ca.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_de.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_el.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_en.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_es.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_fi.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_fr.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_gl.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_hi_IN.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_hu.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_it.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_ja.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_lt.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_pl.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_pt_BR.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_ru.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_sv.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_tr.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_zh_CN.ts | 98 +++++++++++++++++++++--------------------- lang/tomahawk_zh_TW.ts | 98 +++++++++++++++++++++--------------------- 23 files changed, 1127 insertions(+), 1127 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 007675a6a..e4747977a 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -1042,31 +1042,31 @@ 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 @@ -1211,67 +1211,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 الآن @@ -1649,19 +1649,19 @@ connect and stream from you? توب ١٠ - + All available tracks جميع الأغاني المتاحة - - + + Show أظهر - - + + Hide إخفي @@ -2143,7 +2143,7 @@ connect and stream from you? مزامنة... - + Synchronization Finished المزامنة إنتهت @@ -2199,28 +2199,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... جاري تسجيل الدخول... - + Failed: %1 فشل: %1 - + Logged in as %1 مسجل تحت اسم %1 - + Log Out تسجيل الخروج - - + + Log In تسجيل الدخول @@ -2228,7 +2228,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium إسمع موسيقى و زامن قوائم أغانيك مع سبوتيفي بريميوم (Spotify Premium) @@ -2409,8 +2409,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue أضف إلى &قائمة الانتظار @@ -2426,56 +2426,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 &أحذف البند @@ -3207,7 +3207,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection مجموعتي الخاصة @@ -3698,7 +3698,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. نتأسف، نظام الترشيح لم يجد شيئا تحت عنوان '%1'. diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 2afd7c3c2..f9ee7d9a2 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -1045,31 +1045,31 @@ Tomahaw създаде доклад относно това и изпращай 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 Изпълнена %1 от %2 - + added %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> @@ -1216,67 +1216,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 току-що @@ -1656,19 +1656,19 @@ Tomahaw създаде доклад относно това и изпращай Първите 10 - + All available tracks Всички налични изпълнения - - + + Show Покажи - - + + Hide Скрий @@ -2154,7 +2154,7 @@ Tomahaw създаде доклад относно това и изпращай Синхронизирам... - + Synchronization Finished Синхронизирането приключи @@ -2210,28 +2210,28 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Влизам... - + Failed: %1 Неуспех: %1 - + Logged in as %1 Регистриран като %1 - + Log Out Изход - - + + Log In Влез @@ -2239,7 +2239,7 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Слушай музика и синхронизирай твоите списъци със Spotify Premium @@ -2422,8 +2422,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Добави към &опашката @@ -2439,56 +2439,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 &Изтрий позицията @@ -3219,7 +3219,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моята колекция @@ -3713,7 +3713,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. Съжалявам, но филтърът '%1' не върна никакви резултати. diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index f7bb61a9d..a911729d8 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? - + All available tracks - - + + Show - - + + Hide @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3687,7 +3687,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 81deee281..280d219da 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -1041,31 +1041,31 @@ 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 @@ -1209,67 +1209,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 @@ -1647,19 +1647,19 @@ connect and stream from you? Top 10 - + All available tracks Totes les cançons disponibles - - + + Show Mostra - - + + Hide Amaga @@ -2141,7 +2141,7 @@ connect and stream from you? - + Synchronization Finished @@ -2197,28 +2197,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ó @@ -2226,7 +2226,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 @@ -2407,8 +2407,8 @@ Torneu a autenticar-vos. - - + + Add to &Queue &Afegeix a la Cua @@ -2424,56 +2424,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 @@ -3205,7 +3205,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. TomahawkApp - + My Collection La meva Col·lecció @@ -3696,7 +3696,7 @@ introduïu el PIN aquí: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 435fbbcaa..acced110d 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1042,31 +1042,31 @@ 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 e.g. played 3 hours ago by SomeSource angehört %1 von %2 - + added %1 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> @@ -1210,67 +1210,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 @@ -1648,19 +1648,19 @@ erlauben sich mit dir zu verbinden? Top 10 - + All available tracks Alle verfügbaren Stücke - - + + Show Einblenden - - + + Hide Verstecken @@ -2142,7 +2142,7 @@ erlauben sich mit dir zu verbinden? Synchronisieren... - + Synchronization Finished Synchronisierung abgeschlossen @@ -2198,28 +2198,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 @@ -2227,7 +2227,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 @@ -2406,8 +2406,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue In &Warteschlange einreihen @@ -2423,56 +2423,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 @@ -3204,7 +3204,7 @@ Versuch die Filter anzupassen für neue Lieder. TomahawkApp - + My Collection Meine Sammlung @@ -3695,7 +3695,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. diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 422532901..05f4c7e0b 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -1041,31 +1041,31 @@ 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 @@ -1209,67 +1209,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 μόλις τώρα @@ -1647,19 +1647,19 @@ connect and stream from you? Κορυφαία 10 - + All available tracks Όλα τα διαθέσιμα τραγούδια - - + + Show Προβολή - - + + Hide Απόκρυψη @@ -2141,7 +2141,7 @@ connect and stream from you? Συγχρονισμός... - + Synchronization Finished Συγχρονισμός Τελείωσε @@ -2197,28 +2197,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Σύνδεση... - + Failed: %1 Αποτυχία: %1 - + Logged in as %1 Σύνδεση ως %1 - + Log Out Αποσύνδεση - - + + Log In Σύνδεση @@ -2226,7 +2226,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Αναπαράξτε μουσική από και συγχρονίστε τις λίστες αναπαραγωγής σας με το Spotify Premium @@ -2407,8 +2407,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Προσθήκη στην &Σειρά @@ -2424,56 +2424,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 &Διαγραφή Αντικειμένου @@ -3205,7 +3205,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Η Συλλογή μου @@ -3695,7 +3695,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 4dbe40d7c..d72575043 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -1042,31 +1042,31 @@ 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> @@ -1210,67 +1210,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 @@ -1651,19 +1651,19 @@ connect and stream from you? Top 10 - + All available tracks All available tracks - - + + Show Show - - + + Hide Hide @@ -2145,7 +2145,7 @@ connect and stream from you? Synchronizing... - + Synchronization Finished Synchronization Finished @@ -2201,28 +2201,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 @@ -2230,7 +2230,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 @@ -2411,8 +2411,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Add to &Queue @@ -2428,56 +2428,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 @@ -3209,7 +3209,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection My Collection @@ -3700,7 +3700,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. diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index dbf4288fc..277fe0106 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -1042,31 +1042,31 @@ conectarse a usted y transmitir música? 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 @@ -1210,67 +1210,67 @@ conectarse a usted y transmitir música? 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 @@ -1651,19 +1651,19 @@ y estaciones basadas en sus gustos personales. Top 10 - + All available tracks Todas las pistas disponibles - - + + Show Mostrar - - + + Hide Ocultar @@ -2145,7 +2145,7 @@ y estaciones basadas en sus gustos personales. Sincronizando... - + Synchronization Finished Sincronización finalizada @@ -2201,28 +2201,28 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Iniciando sesión... - + Failed: %1 Fallo: %1 - + Logged in as %1 Sesión iniciada como %1 - + Log Out Salir - - + + Log In Iniciar sesión @@ -2230,7 +2230,7 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Reproduzca música de Spotify Premium y sincronice sus listas de reprodución @@ -2411,8 +2411,8 @@ Deberá volverse a autenticar. - - + + Add to &Queue Añadir a la &cola @@ -2428,56 +2428,56 @@ Deberá volverse a autenticar. - + &Love &Favorito - - - + + + &Go to "%1" &Ir a "%1" - - - + + + Go to "%1" &Ir a "%1" - + &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 @@ -3209,7 +3209,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. TomahawkApp - + My Collection Mi colección @@ -3700,7 +3700,7 @@ introduzca su número PIN aquí: TreeView - + Sorry, your filter '%1' did not match any results. Tu filtro '%1' no produjo ningún resultado diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 6df145c1f..882e7947d 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -1042,31 +1042,31 @@ yhdistää ja toistaa sinulta virtaa? 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> @@ -1210,67 +1210,67 @@ yhdistää ja toistaa sinulta virtaa? 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 @@ -1653,19 +1653,19 @@ käyttäjäradion käyttöönottamiseksi Kymmenen kärki - + All available tracks Kaikki saatavilla olevat kappaleet - - + + Show Näytä - - + + Hide Piilota @@ -2148,7 +2148,7 @@ napsauttamalla hiiren oikealla. Synkronoidaan... - + Synchronization Finished Synkronointi valmis @@ -2204,28 +2204,28 @@ napsauttamalla hiiren oikealla. 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 @@ -2233,7 +2233,7 @@ napsauttamalla hiiren oikealla. Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Toista musiikkia Spotify Premiumin kautta ja synkronoi soittolistasi sen kanssa @@ -2414,8 +2414,8 @@ Voit haluta yrittää tunnistautumista uudelleen. - - + + Add to &Queue &Lisää jonoon @@ -2431,56 +2431,56 @@ Voit haluta yrittää tunnistautumista uudelleen. - + &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 @@ -3212,7 +3212,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< TomahawkApp - + My Collection Oma kokoelma @@ -3703,7 +3703,7 @@ anna siellä näytetty PIN-koodi tähän: TreeView - + Sorry, your filter '%1' did not match any results. Valitettavasti suodattimesi ”%1” ei tuottanut yhtään tuloksia. diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index d019035d5..005b7427a 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -1042,31 +1042,31 @@ de se connecter et streamer de vous? 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 @@ -1210,67 +1210,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 @@ -1648,19 +1648,19 @@ de se connecter et streamer de vous? Top 10 - + All available tracks Tous les titres disponibles - - + + Show Afficher - - + + Hide Masquer @@ -2142,7 +2142,7 @@ de se connecter et streamer de vous? Synchronization en cours... - + Synchronization Finished Synchronization Terminée @@ -2198,28 +2198,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 @@ -2227,7 +2227,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 @@ -2408,8 +2408,8 @@ Essayez de vous authentifier de nouveau. - - + + Add to &Queue &Ajouter à la file d'attente @@ -2425,56 +2425,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 @@ -3206,7 +3206,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. TomahawkApp - + My Collection Ma Collection @@ -3697,7 +3697,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. diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 464fd2a05..7234cb226 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -1041,31 +1041,31 @@ 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 @@ -1209,67 +1209,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 @@ -1647,19 +1647,19 @@ connect and stream from you? Os 10 primeiros - + All available tracks Tódolas pistas dispoñíbeis - - + + Show Mostrar - - + + Hide Agochar @@ -2143,7 +2143,7 @@ connect and stream from you? Sincronizando... - + Synchronization Finished Rematou a sincronización @@ -2199,28 +2199,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 @@ -2228,7 +2228,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 @@ -2409,8 +2409,8 @@ Proba a volver a autenticarte. - - + + Add to &Queue Engadir á &ringleira @@ -2426,56 +2426,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 @@ -3207,7 +3207,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. TomahawkApp - + My Collection A miña colección @@ -3698,7 +3698,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. diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 25291cefb..acb5f7203 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? - + All available tracks - - + + Show - - + + Hide @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3687,7 +3687,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index ebdbc56f2..59803e255 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? Top 10 - + All available tracks Összes elérhető zeneszám - - + + Show Mutatás - - + + Hide Elrejtés @@ -2140,7 +2140,7 @@ connect and stream from you? Szinkronizálás... - + Synchronization Finished Szinkronizálás befejezve @@ -2196,28 +2196,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 @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Saját kollekció @@ -3687,7 +3687,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 950c9e784..9abcfed19 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? Top 10 - + All available tracks Tutte le tracce disponibili - - + + Show Mostra - - + + Hide Nascondi @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,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 @@ -2225,7 +2225,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 @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Aggiungi alla &coda @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection La mia collezione @@ -3687,7 +3687,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. diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 659404f25..b6ebcb559 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -1042,31 +1042,31 @@ 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 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> @@ -1210,67 +1210,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 たった今 @@ -1651,19 +1651,19 @@ connect and stream from you? トップ10 - + All available tracks 利用可能トラック - - + + Show 表示 - - + + Hide 隠す @@ -2145,7 +2145,7 @@ connect and stream from you? 同期中... - + Synchronization Finished 同期完了 @@ -2201,28 +2201,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... ログイン中... - + Failed: %1 失敗しました: %1 - + Logged in as %1 %1としてログイン済み - + Log Out ログアウト - - + + Log In ログイン @@ -2230,7 +2230,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Spotify Premiumのアカウントを使って、音楽の再生とプレイリストの同期ができます @@ -2411,8 +2411,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue キューに追加 @@ -2428,56 +2428,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 項目を削除 @@ -3209,7 +3209,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection マイコレクション @@ -3701,7 +3701,7 @@ Meta+Ctrl+Z TreeView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 80b2f24a3..84ebf4133 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? Top 10 - + All available tracks Visi prieinami takeliai - - + + Show Rodyti - - + + Hide Slėpti @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,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 @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Pridėti į &eilę @@ -2420,56 +2420,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ą @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Mano kolekcija @@ -3687,7 +3687,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ų. diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 3e2e5c67e..d2de16bb8 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -1042,31 +1042,31 @@ połączyć się i strumieniować od ciebie? 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 @@ -1210,67 +1210,67 @@ połączyć się i strumieniować od ciebie? 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ą @@ -1648,19 +1648,19 @@ połączyć się i strumieniować od ciebie? Top 10 - + All available tracks Wszystkie dostępne utwory - - + + Show Pokaż - - + + Hide Ukryj @@ -2142,7 +2142,7 @@ połączyć się i strumieniować od ciebie? - + Synchronization Finished @@ -2198,28 +2198,28 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Loguję się... - + Failed: %1 Nie udało się: %1 - + Logged in as %1 - + Log Out - - + + Log In Zaloguj się @@ -2227,7 +2227,7 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Odtwarzaj muzykę i synchronizuj listy odtwarzania ze Spotify Premium @@ -2408,8 +2408,8 @@ Możesz spróbować ponowić uwierzytelnienie. - - + + Add to &Queue Dodaj do &kolejki @@ -2425,56 +2425,56 @@ Możesz spróbować ponowić uwierzytelnienie. - + &Love &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ę @@ -3206,7 +3206,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. TomahawkApp - + My Collection Moja Kolekcja @@ -3697,7 +3697,7 @@ wprowadź pokazany numer PIN tutaj: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index d35e76073..d56cb8de0 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -1042,31 +1042,31 @@ se conecte e faça o stream de você? 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 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> @@ -1210,67 +1210,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 @@ -1648,19 +1648,19 @@ se conecte e faça o stream de você? 10 Mais - + All available tracks Todas as faixas disponíveis - - + + Show Mostrar - - + + Hide Ocultar @@ -2142,7 +2142,7 @@ se conecte e faça o stream de você? Sincronizando... - + Synchronization Finished Sincronização concluída @@ -2198,28 +2198,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 @@ -2227,7 +2227,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 @@ -2408,8 +2408,8 @@ Você pode tentar re-autenticar. - - + + Add to &Queue Adicionar à &lista @@ -2425,56 +2425,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 @@ -3206,7 +3206,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. TomahawkApp - + My Collection Minha Coleção @@ -3697,7 +3697,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. diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 21845add0..cf3e18571 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -1042,31 +1042,31 @@ 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 @@ -1210,67 +1210,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 только что @@ -1648,19 +1648,19 @@ connect and stream from you? Топ 10 - + All available tracks Доступные песни - - + + Show Показать - - + + Hide Спрятать @@ -2142,7 +2142,7 @@ connect and stream from you? Синхронизация... - + Synchronization Finished Синхронизация Закончена. @@ -2198,28 +2198,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Вхожу... - + Failed: %1 Ошибка: %1 - + Logged in as %1 Вошли как %1 - + Log Out Выйти - - + + Log In Войти @@ -2227,7 +2227,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium Слушать музыку и синхронизировать плейлисты с Spotify Премиум @@ -2408,8 +2408,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Добавить В &Очередь @@ -2425,56 +2425,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 &Удалить Песню @@ -3204,7 +3204,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моя коллекция @@ -3694,7 +3694,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. К сожалению, '%1' фильтр не найдено ни одного результата. diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index c6acfb0c3..90d9d004f 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -1041,31 +1041,31 @@ 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 @@ -1209,67 +1209,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 @@ -1647,19 +1647,19 @@ connect and stream from you? Topp 10 - + All available tracks Alla tillgängliga spår - - + + Show Visa - - + + Hide Göm @@ -2141,7 +2141,7 @@ connect and stream from you? - + Synchronization Finished @@ -2197,28 +2197,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2226,7 +2226,7 @@ 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 @@ -2404,8 +2404,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue Lägg till i &kö @@ -2421,56 +2421,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 @@ -3202,7 +3202,7 @@ Försök att ändra i filtrerna för att få en ny låtlista TomahawkApp - + My Collection Min Samling @@ -3693,7 +3693,7 @@ anger du PIN-koden här: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index f5e1a23fd..c58ec1699 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 @@ -1646,19 +1646,19 @@ connect and stream from you? - + All available tracks - - + + Show - - + + Hide @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3687,7 +3687,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index dc6ff0a1f..f8c25d33b 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -1041,31 +1041,31 @@ 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 @@ -1209,67 +1209,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 刚刚 @@ -1649,19 +1649,19 @@ connect and stream from you? Top 10 - + All available tracks 所有可用的歌曲 - - + + Show 显示 - - + + Hide 隐藏 @@ -2143,7 +2143,7 @@ connect and stream from you? 同步中... - + Synchronization Finished 同步成功 @@ -2199,28 +2199,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... 登录中... - + Failed: %1 失败:%1 - + Logged in as %1 作为 %1 登录 - + Log Out 登出 - - + + Log In 登录 @@ -2228,7 +2228,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium 使用 Spotify Premium 播放并同步播放列表。 @@ -2409,8 +2409,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue 添加到队列 @@ -2426,56 +2426,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 删除该项 @@ -3207,7 +3207,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3698,7 +3698,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. 对不起,根据条件 '%1' 没有找到任何结果。 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index a60281ce2..22bd0e6c9 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -1041,31 +1041,31 @@ 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 @@ -1208,67 +1208,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 剛才 @@ -1646,19 +1646,19 @@ connect and stream from you? 前10名 - + All available tracks - - + + Show 顯示 - - + + Hide 隱藏 @@ -2140,7 +2140,7 @@ connect and stream from you? - + Synchronization Finished @@ -2196,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... 登錄中... - + Failed: %1 失敗:%1 - + Logged in as %1 - + Log Out - - + + Log In 登錄 @@ -2225,7 +2225,7 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountFactory - + Play music from and sync your playlists with Spotify Premium @@ -2403,8 +2403,8 @@ You may wish to try re-authenticating. - - + + Add to &Queue 添加至佇列 @@ -2420,56 +2420,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 @@ -3197,7 +3197,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3687,7 +3687,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. From e2812be73a418f6b3e1955ef2a459851651ece94 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 08:09:00 +0100 Subject: [PATCH 06/23] * previous- & nextTrackAvailable signal now emit a boolean parameter indicating whether there's another track available. --- src/libtomahawk/PlaylistInterface.cpp | 20 ++++---------------- src/libtomahawk/PlaylistInterface.h | 4 ++-- 2 files changed, 6 insertions(+), 18 deletions(-) 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(); From c61a2faa79bd4004e38674e28e37cae35264d9b9 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 08:10:43 +0100 Subject: [PATCH 07/23] * Adapted SourcePlaylistInterface & AudioEngine to PlaylistInterface's new signals. --- src/libtomahawk/SourcePlaylistInterface.cpp | 3 ++- src/libtomahawk/audio/AudioEngine.cpp | 18 +++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) 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/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 978e3e286..35af08c17 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -839,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() ) ); } } @@ -863,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(); @@ -882,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 ); From 3823774dca1c3ce1c3a36ad2456c8d14f58c789f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 08:12:06 +0100 Subject: [PATCH 08/23] * Change PlayableProxyModelPlaylistInterface's currentIndex when the underlying model's has changed. --- .../PlayableProxyModelPlaylistInterface.cpp | 31 +++++++++++++------ .../PlayableProxyModelPlaylistInterface.h | 5 ++- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp index 827e02bc7..218e07089 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 ) { @@ -195,7 +208,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; @@ -259,7 +272,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(); @@ -273,7 +286,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; From 96b9f38b2e0bc24ee52af1e51a235345d7eeda13 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 08:12:49 +0100 Subject: [PATCH 09/23] * Reset PlayableModel's currentIndex when it gets removed from the model. --- src/libtomahawk/playlist/PlayableModel.cpp | 7 ++++++- src/libtomahawk/playlist/PlayableModel.h | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index c78872f01..76f4d2016 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -312,7 +312,7 @@ PlayableModel::headerData( int section, Qt::Orientation orientation, int role ) void -PlayableModel::setCurrentItem( const QModelIndex& index ) +PlayableModel::setCurrentIndex( const QModelIndex& index ) { PlayableItem* oldEntry = itemFromIndex( m_currentIndex ); if ( oldEntry ) @@ -332,6 +332,8 @@ PlayableModel::setCurrentItem( const QModelIndex& index ) m_currentIndex = QModelIndex(); m_currentUuid = QString(); } + + emit currentIndexChanged(); } @@ -596,6 +598,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(); diff --git a/src/libtomahawk/playlist/PlayableModel.h b/src/libtomahawk/playlist/PlayableModel.h index c0b1810ed..56b5836b3 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -123,8 +123,10 @@ signals: void indexPlayable( const QModelIndex& index ); void changed(); + void currentIndexChanged(); + public slots: - virtual void setCurrentItem( const QModelIndex& index ); + virtual void setCurrentIndex( const QModelIndex& index ); virtual void clear(); From 93951bfdd417fa6458f5fcf0e13e2cd326e081aa Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 08:13:23 +0100 Subject: [PATCH 10/23] * Use PlayableModel's new currentIndex methods. --- src/libtomahawk/playlist/PlayableProxyModel.cpp | 5 +++-- src/libtomahawk/playlist/PlaylistModel.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp index 5752886ab..842b9c800 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -108,6 +108,7 @@ 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( currentIndexChanged() ), this, SIGNAL( currentIndexChanged() ) ); } m_model = sourceModel; @@ -118,6 +119,7 @@ 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( currentIndexChanged() ), SIGNAL( currentIndexChanged() ) ); } QSortFilterProxyModel::setSourceModel( m_model ); @@ -632,8 +634,7 @@ void PlayableProxyModel::setCurrentIndex( const QModelIndex& index ) { tDebug() << Q_FUNC_INFO; - m_model->setCurrentItem( mapToSource( index ) ); - emit currentIndexChanged(); + m_model->setCurrentIndex( mapToSource( index ) ); } diff --git a/src/libtomahawk/playlist/PlaylistModel.cpp b/src/libtomahawk/playlist/PlaylistModel.cpp index f470aa157..393e5fd14 100644 --- a/src/libtomahawk/playlist/PlaylistModel.cpp +++ b/src/libtomahawk/playlist/PlaylistModel.cpp @@ -270,7 +270,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() ) { From 02668de6f8731c53b2c04cd5b01e5e30c086e1a1 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 09:06:38 +0100 Subject: [PATCH 11/23] * Fixed ImageRegistry's size key. --- src/libtomahawk/utils/ImageRegistry.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/utils/ImageRegistry.cpp b/src/libtomahawk/utils/ImageRegistry.cpp index 8dc09c41e..7adf189af 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() ); } } } @@ -111,8 +111,8 @@ ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtil { tDebug() << 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 ); } From fe3a775bb7bb884b202f9967fbba20b0db8de8db Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 09:06:47 +0100 Subject: [PATCH 12/23] * Silly style fixes. --- src/sourcetree/SourceDelegate.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sourcetree/SourceDelegate.cpp b/src/sourcetree/SourceDelegate.cpp index cf994fb94..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 From e0d5a4ddb122a159c341254a91f719d8f676f4af Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 10:05:42 +0100 Subject: [PATCH 13/23] * Make ImageRegistry::putInCache() less verbose. --- src/libtomahawk/utils/ImageRegistry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/utils/ImageRegistry.cpp b/src/libtomahawk/utils/ImageRegistry.cpp index 7adf189af..4fa350e72 100644 --- a/src/libtomahawk/utils/ImageRegistry.cpp +++ b/src/libtomahawk/utils/ImageRegistry.cpp @@ -109,7 +109,7 @@ 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< qint64, QPixmap > subsubcache; QHash< int, QHash< qint64, QPixmap > > subcache; From 85b3a83144f3e127709b77ec7f328048b22305b1 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 10:06:58 +0100 Subject: [PATCH 14/23] * PlayableModel now emits signals for its queries so we don't have to store them everywhere. --- src/libtomahawk/playlist/PlayableModel.cpp | 23 +++++++++++++++++++ src/libtomahawk/playlist/PlayableModel.h | 7 ++++-- .../playlist/PlayableProxyModel.cpp | 9 ++++++++ src/libtomahawk/playlist/PlayableProxyModel.h | 2 ++ src/libtomahawk/playlist/TrackView.cpp | 2 -- 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index 76f4d2016..c76be9731 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -62,6 +62,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 ); @@ -884,6 +885,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 56b5836b3..8b0b69647 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -120,9 +120,10 @@ signals: void loadingStarted(); void loadingFinished(); + void indexResolved( const QModelIndex& index ); void indexPlayable( const QModelIndex& index ); - void changed(); + void changed(); void currentIndexChanged(); public slots: @@ -158,8 +159,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 842b9c800..2fe157d36 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -108,6 +108,7 @@ 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() ) ); } @@ -119,6 +120,7 @@ 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() ) ); } @@ -643,3 +645,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 3db7f125a..cec45783e 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -94,6 +94,7 @@ signals: void loadingFinished(); void indexPlayable( const QModelIndex& index ); + void indexResolved( const QModelIndex& index ); void currentIndexChanged(); void itemCountChanged( unsigned int items ); @@ -106,6 +107,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/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index 2a82c8d85..d4c68c50f 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -426,8 +426,6 @@ TrackView::resizeEvent( QResizeEvent* event ) { m_header->resizeSection( 0, event->size().width() ); } - - } From 3a10c530264f6a87941d71a04e0ea5c638877db5 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 10:07:32 +0100 Subject: [PATCH 15/23] * PlaylistModel's setAcceptPlayableQueriesOnly( bool ) toggles whether dropping unplayable queries is allowed. --- src/libtomahawk/playlist/PlaylistModel.cpp | 4 ++++ src/libtomahawk/playlist/PlaylistModel.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/libtomahawk/playlist/PlaylistModel.cpp b/src/libtomahawk/playlist/PlaylistModel.cpp index 393e5fd14..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() ); 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; From 301b8b88505f9e41dd350e9ef78121612c2aac02 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 10:08:00 +0100 Subject: [PATCH 16/23] * Queue's PlaylistView doesn't accept unplayable queries. --- src/libtomahawk/playlist/QueueView.cpp | 1 + src/libtomahawk/playlist/QueueView.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) 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(); From af79919485229fbdcf0086d77a11c0b2ffc7bb18 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 10:08:41 +0100 Subject: [PATCH 17/23] * QueueProxyModel removes unplayable tracks once finished resolving. --- src/libtomahawk/playlist/QueueProxyModel.cpp | 17 +++++++++++++++++ src/libtomahawk/playlist/QueueProxyModel.h | 1 + 2 files changed, 18 insertions(+) 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 ); }; From b90805234de9251377ede93045e13eab99d57184 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 11:58:00 +0100 Subject: [PATCH 18/23] * Don't try to load covers for name-less albums. --- src/libtomahawk/Album.cpp | 7 ++++++- src/libtomahawk/Album.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/Album.cpp b/src/libtomahawk/Album.cpp index 5806e3ffd..961131bb8 100644 --- a/src/libtomahawk/Album.cpp +++ b/src/libtomahawk/Album.cpp @@ -200,6 +200,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 ) @@ -299,7 +305,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 2eb2abb49..e8ff20cd3 100644 --- a/src/libtomahawk/Album.h +++ b/src/libtomahawk/Album.h @@ -94,7 +94,7 @@ private: artist_ptr m_artist; - bool m_coverLoaded; + mutable bool m_coverLoaded; mutable bool m_coverLoading; mutable QString m_uuid; From 46874ca20d67940fc49a46ebc4cde023ed87e473 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 11:59:19 +0100 Subject: [PATCH 19/23] * LastFmInfoPlugin logs which covers it fails to load. --- src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp index 0431b0319..a69bcab13 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp @@ -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"]; From a60d4dc3642fa75339d2687a4631b9377a4b189b Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 11:59:59 +0100 Subject: [PATCH 20/23] * Use displayQuery()'s for cover fetching. --- src/libtomahawk/playlist/PlayableProxyModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp index 2fe157d36..e86665a63 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -611,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 ) From 8fc92ef345a2b0c1db7f56e65b1ff22556d22eeb Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 12:02:56 +0100 Subject: [PATCH 21/23] * PixmapDelegateFader must not create rounded images before cache verification, since it creates a new QPixmap. --- src/libtomahawk/utils/PixmapDelegateFader.cpp | 23 +++++++++---------- src/libtomahawk/utils/PixmapDelegateFader.h | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/libtomahawk/utils/PixmapDelegateFader.cpp b/src/libtomahawk/utils/PixmapDelegateFader.cpp index be1c1979b..0461ceae6 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 >(); @@ -161,7 +163,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 +173,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 +183,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 +196,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 +209,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; From 9d6dde2c74b9862c4313825b601bac5b6b36ff4a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 12:03:08 +0100 Subject: [PATCH 22/23] * Remove compiler warning. --- src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp index 627e53e27..ed3858dbb 100644 --- a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp @@ -81,6 +81,8 @@ PlaylistLargeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const Q 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(); From 5c9b1cbfe83451e161c44c2efeef69862052ae9d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 12:30:34 +0100 Subject: [PATCH 23/23] * Make sure we load artist image when loading an unknown album's cover failed. --- src/libtomahawk/utils/PixmapDelegateFader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libtomahawk/utils/PixmapDelegateFader.cpp b/src/libtomahawk/utils/PixmapDelegateFader.cpp index 0461ceae6..9b0bd418d 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.cpp +++ b/src/libtomahawk/utils/PixmapDelegateFader.cpp @@ -87,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 );